Introducción: Cree un ChatBot con tecnología Python #Raspberry Pi

Hola chicos, en este instructables voy

mostrarle cómo hacer un chatbot simple basado en Python. no es tan poderoso como Amazon alexa.

Primero debe ver el video (haga clic aquí)

Paso 1: requisitos

Hardware:

#Frambuesa pi 3

(Nota: -Puede usar la versión Can raspberry pi, asegúrese de haber conectado el Dongle wiffi)

Software:

# Python2

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

Conecte el LED a GPIO 11.

Paso 2: trabajar

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 esté conectado a la misma red wiffi.

También puede acceder a su servidor fuera de la red wiffi de Your Home 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 se comunica con el servidor.

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

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

Paso 4: servidor Python

abra Python 2.7, copie este código y péguelo.

luego ejecute este código.

Puede modificarlo según sus necesidades.

import socket
import sys import RPi.GPIO as GPIO from thread import *
import datetime
import random
import requests
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
host=""
port = 8220
address = (host, port)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(address)
server_socket.listen(5)
#Variable for the number of connections
numbOfConn = 0
#Name of list used for connections
addressList = []
clients = set()
##############################################################################
#small database of our bot
greetings = ['hola', 'hello', 'hi', 'hey']
questions = ['how are you', 'how are you doing']
responses = ['okay', 'i am fine']
database={
    'jarvis':'hello,sir how can i help you',
    'name':'jarvis',
    'what is your name':'my name is jarvis',
    'hello jarvis':'hello,sir how can i help you',
    'what can you do for me':'i can do many things..'
}
print ("Listening for client . . .")
###############################################################################
#chatbot code here
def chatboat(data):
    if data in database:
        print(database[data])
        #os.system("flite -t '"+ database[data] +"'")
        sclient(database[data])
    elif data in questions:
        random_response = random.choice(responses)
        print(random_response)
        #os.system("flite -t '"+ random_response +"'")
        sclient(random_response)
    elif data in greetings:
        random_greeting = random.choice(greetings)
        print(random_greeting)
        sclient(random_greeting)
        #os.system("flite -t '"+ random_greeting +"'")
    elif 'light on'in data or 'led on' in data:
        sclient("light turn on")
        #os.system("flite -t 'light turn on'")
        GPIO.output(11,True)
        print("Light on")
    elif 'light of' in data or 'led of' in data:
        sclient("light turn off")
        #os.system("flite -t 'light turn off'")
        GPIO.output(11,False)
        print("Light Off")
    elif 'time' in data:
        now = datetime.datetime.now()
        time=str(now.hour)+str("hours")+str(now.minute)+str("minutes")
        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("sorry please repeat..")
        add_data = open("newdata.txt", 'a')
        add_data.write("n")
        add_data.write(data)
        add_data.close()
###############################################################################
#Sending Reply to all clients
def sclient(mess):
    for c in clients:
        try:
            c.send(mess)
        except:
            c.close()
##############################################################################
#server code here
def clientthread(conn,addressList):
#infinite loop so that function do not terminate and thread do not end.
     while True:
        output = conn.recv(2048);
        if output.strip() == "disconnect":
            conn.close()
            sys.exit("Received disconnect message.  Shutting down.")
            conn.send("connection loss")
        elif output:
            print ("Message received from client:")
            data=str(output).lower()
            print (data)
            print("Reply from the server:")
            chatboat(data)
while True:
#Accepting incoming connections
    conn, address = server_socket.accept()
    print ("Connected to client at ", address)
    clients.add(conn)
#Creating new thread. Calling clientthread function for this function and passing conn as argument.
    start_new_thread(clientthread,(conn,addressList)) #start new thread takes 1st argument as a function name to be run, second is the tuple of arguments to the function.
conn.close()
sock.close()

Descarga este código de aquí

Para más proyectos, consulte mi canal de YouTube (Electrónica para siempre)

Archivos adjuntos

Concurso de Internet de las cosas 2017

Subcampeón en el
Concurso de Internet de las cosas 2017

¡1 persona hizo este proyecto!

  • Haga un ChatBot con Python #Raspberry Pi
    ¡saikrishnarud lo logró!

7 comentarios

0
ANKL
ANKL

hace 1 año

Probé este método, todo está bien, pero dice que hay un error de conexión de socket.¿Hay alguna solución para esto? También he leído todos los comentarios en la página de YouTube y probé todos.¿Puedo hacer que esto funcione con Internet donde pi se encuentra en otro lugar y yo? Puede operarlo desde un lugar lejano con Internet, por favor, hágalo rápido, bueno, puedo ayudarlo con eso, pero actualmente tengo un tiempo ocupado ahora, espero que resuelva mi problema.

0
Jayrawatrj
Jayrawatrj

Hace 2 años

La aplicación no está en el enlace de G-drive proporcionado … ¿cómo obtener la aplicación?

0
piyushd29
piyushd29

Hace 2 años

error de paquete para raspberry pi import.Im corriendo en la máquina de Windows

1
AAAtleur
AAAtleur

hace 3 años

Parece ser exactamente lo que estaba buscando, pero aparece un error que dice que el subproceso del módulo no existe. ¡Cualquier ayuda sería apreciada!

¡Gracias!

0
Trucos de bricolaje y procedimientos
Trucos de bricolaje y procedimientos

Hace 4 años

¡Impresionante! Me encanta lo versátiles que son las Raspberry Pi.

1 respuesta

0
saurabh47
saurabh47

Responder hace 4 años

Gracias