Haz un Python Powered ChatBot #Raspberry Pi: 4 pasos (con fotos)

Haz un Python Powered ChatBot #Raspberry Pi: 4 pasos (con fotos)

Tabla de contenido:

Anonim

Hola chicos, en este instructable voy

Mostrar cómo hacer un chatbot simple basado en Python. No es tan poderosa como la amazona alexa.

Debe ver el video primero (haga clic aquí)

Suministros:

Paso 1: Requisitos

Hardware:

#Raspberry pi 3

(Nota: -Puedes usar la versión pi de la frambuesa. Asegúrate de haber conectado wiffi Dongle)

Software:

# Python2

(No es necesario instalar python, ya está instalado en la frambuesa pi)

Conecte el LED a GPIO 11.

Paso 2: Trabajando

AHORA déjame explicarte cómo funciona este chatboat aquí. Raspberry pi funciona como servidor y nuestra aplicación actúa como cliente. El servidor Python en Raspberry pi maneja todas las solicitudes del cliente. asegúrese de que el teléfono RPi y Android debe estar conectado a la misma red wiffi.

También puede acceder a su servidor fuera de la red inalámbrica de Su casa mediante el reenvío de puertos.

Paso 3: Aplicación de Android

He creado esta aplicación para Android usando la aplicación MIT inventor 2.

Esta aplicación es básicamente un cliente TCP que hace la comunicación con el servidor.

Puede descargar esta aplicación desde el siguiente enlace (haga clic aquí).

He proporcionado un archivo.aia del proyecto inventor de la aplicación MIT que puede importarlo y editarlo según sus necesidades.

Paso 4: Servidor Python

abre Python 2.7, copia este código y pégalo.

A continuación, ejecute este código.

Puedes modificarlo según tus necesidades.

zócalo de importación

importar sys importar RPi.GPIO como GPIO desde la importación de hilos *

importar fecha / hora importar solicitudes de importación aleatorias importar OS

GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (11, GPIO.OUT)

host = '' puerto = 8220 dirección = (host, puerto)

server_socket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) server_socket.bind (address) server_socket.listen (5) #Variable para el número de conexiones numbOfConn = 0

#Nombre de la lista utilizada para las conexiones addressList = clients = set () ################################## ############################################ #small database of our bot saludos = 'hola', 'hola', 'hola', 'hey' preguntas = 'cómo estás', 'cómo te va' respuestas = 'bien', 'estoy bien' base de datos = {'jarvis': 'hola, señor, ¿cómo puedo ayudarlo?' 'nombre': 'jarvis', 'cuál es su nombre': 'mi nombre es jarvis', 'hola jarvis': 'hola, señor, ¿cómo puedo ayuda ',' qué puedes hacer por mí ':' puedo hacer muchas cosas … '}

print ("Listening for client…") ####################################### ######################################## # código de chatbot aquí def chatboat (datos): si hay datos en la base de datos: imprimir (base de datos datos) # os.system ("flite -t ​​'" + base de datos datos + "'") sclient (base de datos datos) datos de elif en las preguntas: random_response = random.choice (respuestas) print (random_response) # os.system ("flite -t ​​'" + random_response + "'") sclient (random_response) datos de elif en saludos: random_greeting = random.choice (greetings) print (random_greeting) sclient (random_greeting) # os.system ("flite -t ​​'" + random_greeting + "'") elif 'light on'in data o' led on 'in data: sclient ("light light on") # os.system ("flite -t 'light turn on' ") GPIO.output (11, True) print (" Light on ") elif 'light of' en data o 'led of' in data: sclient (" light light off ") # os.system ("flite -t ​​'light off off" ") GPIO.output (11, False) imprime (" Light Off ") elif' time 'en data: now = datetime.datetime.now () time = str (now.hour) + str ("horas") + str (now.minute) + str ("minu tes ") print (time) # os.system (" flite -t ​​'"+ time +"' ") sclient (time) elif 'date'in data: now = datetime.datetime.now () date = str ("% s /% s /% s "% (now.month, now.day, now.year)) print (date) # os.system (" flite -t ​​'"+ date +"' ") sclient (date) else: conn.send ("lo siento, repita..") add_data = open ("newdata.txt", 'a') add_data.write (" n") add_data.write (data) add_data.close () #### ################################################## ######################### #Enviando respuesta a todos los clientes def sclient (mess): para c en clientes: try: c.send (mess) excepto: c.close () ########################################### ################################### # código del servidor aquí def clientthread (conn, addressList): #infinite loop para que la función no termine y el hilo no termine. mientras True: output = conn.recv (2048); if output.strip () == "disconnect": conn.close () sys.exit ("Mensaje de desconexión recibido. Apagado.") conn.send ("pérdida de conexión") salida elif: print ("Mensaje recibido del cliente: ") data = str (output).lower () print (data) print (" Respuesta del servidor: ") chatboat (data)

a la vez que Verdadero: #Acepta conexiones entrantes conn, address = server_socket.accept () print ("Connected to client at", address) clients.add (conn) #Creating new thread. Llamando a la función clientthread para esta función y pasando conn como argumento. start_new_thread (clientthread, (conn, addressList)) #start new thread toma el primer argumento como un nombre de función para ejecutar, el segundo es la tupla de argumentos de la función.

conn.close () sock.close ()

Descarga este código desde aquí.

Para más proyectos, echa un vistazo a mi canal de YouTube (Electronics Forever)

Runner Up en el

Concurso de Internet de las cosas 2017