Créez un ChatBot propulsé par Python #Raspberry Pi: 4 étapes (avec des images)

Créez un ChatBot propulsé par Python #Raspberry Pi: 4 étapes (avec des images)

Table des matières:

Anonim

Bonjour les gars, Dans cet instructables je vais

vous montrer comment faire un simple chatbot basé sur Python. ce n'est pas puissant comme Amazon alexa.

Vous devez d'abord regarder la vidéo (cliquez ici)

Provisions:

Étape 1: Exigences

Matériel:

#Raspberry Pi 3

(Remarque: -Vous pouvez utiliser la version Can framboise pi, assurez-vous d'avoir connecté le Dongle Wiffi)

Logiciel:

# Python2

(Pas besoin d'installer python, c'est déjà installé sur framboise pi)

Connectez le voyant à GPIO 11.

Étape 2: travail

MAINTENANT, laissez-moi vous expliquer comment fonctionne ce chatboat. Raspberry Pi fonctionne en tant que serveur et notre application agit en tant que client. Le serveur Python sur Raspberry Pi gère toutes les demandes du client. Assurez-vous que les téléphones RPi et Android doivent être connectés au même réseau wiffi.

Vous pouvez également accéder à votre serveur en dehors de votre réseau Home wiffi par le transfert de port.

Étape 3: application Android

J'ai créé cette application Android à l'aide de l'inventeur de l'application MIT 2.

Cette application est essentiellement un client TCP qui communique avec le serveur.

Vous pouvez télécharger cette application à partir du lien ci-dessous (cliquez ici).

J'ai fourni le fichier.aia du projet MIT App Inventor, vous pouvez l'importer et l'éditer en fonction de vos besoins.

Étape 4: Serveur Python

Ouvrez Python 2.7, copiez ce code et collez-le.

puis exécutez ce code.

Vous pouvez le modifier selon vos besoins.

prise d'importation

importer des systèmes importer RPi.GPIO en tant que GPIO à partir de l'importation de threads *

import datetime import demandes d'importation aléatoires import os

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

hôte = '' port = 8220 adresse = (hôte, port)

server_socket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) server_socket.bind (adresse) server_socket.listen (5) #Variable pour le nombre de connexions numbOfConn = 0

# Nom de la liste utilisée pour les connexions addressList = clients = set () ################################ ############################################ ############################################################ salutations = 'hola', 'bonjour', 'salut', 'hé' questions = 'comment vas-tu', 'comment vas-tu' réponses = 'ok', 'je vais bien' database = {'jarvis': 'bonjour, monsieur, comment puis-je vous aider', 'nom': 'jarvis', 'quel est votre nom': 'mon nom est jarvis', 'bonjour jarvis': 'bonjour, monsieur comment puis-je vous aider ',' que pouvez-vous faire pour moi ':' je peux faire beaucoup de choses.. '}

print ("Écoute pour le client..") ##################################### ######################################## code #chatbot ici def chatboat (données): si données dans la base de données: print (base de données données) # os.system ("flite -t ​​'" + base de données données + "'")) sclient (base de données données) elif données dans les questions: random_response = random.choice (réponses) print (random_response) # os.system ("flite -t ​​'" + random_response + "'") sclient (random_response) elif données dans les salutations: random_greeting = random.choice (salutations) print (random_greeting) sclient (random_greeting) # os.system ("flite -t ​​'" + random_greeting + "'") elif 'lumière allumée dans les données ou' allumée 'dans les données: sclient ("lumière allumée") # os.system ("flite -t 'light all on' ") GPIO.output (11, True) print (" Lumière allumée) elif "lumière de" dans les données ou "led de" dans les données: sclient ("lumière éteinte") # os.system ("flite -t ​​'light éteint" ") GPIO.output (11, False) print (" Lumière éteinte ") elif" time "dans les données: now = datetime.datetime.now () time = str (now.hour) + str ("heures") + 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) sinon: conn.send ("désolé, merci de répéter..") add_data = open ("newdata.txt", 'a') add_data.write (" n") add_data.write (data) add_data.close () #### ################################################# ######################### # Envoi d'une réponse à tous les clients def sclient (mess): pour c dans les clients: essayez: c.send (mess) sauf: c.close () ########################################## ##################################### # code serveur ici def clientthread (conn, addressList): #infinite loop de sorte que cette fonction ne se termine pas et que le thread ne se termine pas. tant que True: output = conn.recv (2048); if output.strip () == "disconnect": conn.close () sys.exit ("Message de déconnexion reçu. Fermeture.") conn.send ("perte de connexion") elif sortie: print ("Message reçu du client: ") data = str (sortie).lower () print (data) print (" Réponse du serveur: ") chatboat (data)

while True: #Accepter les connexions entrantes conn, address = server_socket.accept () print ("Connected to client at", address) clients.add (conn) #Creating new thread. Appel de la fonction clientthread pour cette fonction et transmission de conn en tant qu'argument. start_new_thread (clientthread, (conn, addressList)) #start new thread prend le 1er argument comme nom de fonction à exécuter, le second est le tuple d'arguments de la fonction.

conn.close () sock.close ()

Téléchargez ce code à partir d'ici

Pour plus de projets, consultez ma chaîne YouTube (Electronics Forever)

Runner Up dans le

Concours Internet des objets 2017