Bir Python Powered Sohbet Yapın #Raspberry Pi: 4 Adım (Resimlerle)

Bir Python Powered Sohbet Yapın #Raspberry Pi: 4 Adım (Resimlerle)

İçindekiler:

Anonim

Merhaba Çocuklar, Bu eğitimlerde ben gidiyorum

basit Python tabanlı bir chatbot nasıl yapılacağını göstermek. Amazon alexa kadar güçlü değil.

Önce videoyu izlemelisiniz (buraya tıklayın)

Gereçler:

1. Adım: Gereksinimler

Donanım:

#Raspberry pi 3

(Not: -Kullanabilirsiniz ahududu pi versiyonu wiffi Dongle bağlı olduğundan emin olun)

Yazılım:

# Python2

(Ahududu pi üzerine zaten yüklü olan python yüklemeye gerek yok)

LED'i GPIO 11'e bağlayın.

2. Adım: Çalışmak

ŞİMDİ bu sohbet teknesinin burada nasıl çalıştığını açıklamama izin verin, ahududu pi sunucu olarak çalışıyor ve bizim uygulamamız da müşteri olarak davranıyor. Raspberry pi'deki Python sunucusu istemciden gelen tüm istekleri yerine getirir. emin olun RPI ve android telefon aynı wiffi ağına bağlanmalıdır.

Ayrıca, Port yönlendirme ile sunucunuza Evinizdeki wiffi ağının dışından da erişebilirsiniz.

Adım 3: Android Uygulaması

MIT uygulaması mucit 2 kullanarak bu android uygulaması yarattık.

Bu uygulama temelde sunucu ile iletişim kuran bir TCP istemcisidir.

Bu uygulamayı aşağıdaki linkten indirebilirsiniz (buraya tıklayın).

MIT app mucit projesinin.aia dosyasını, içe aktarabilirsiniz ve ihtiyaçlarınıza göre düzenleyebilirsiniz.

Adım 4: Python Sunucusu

Python 2.7'yi açın, Bu kodu kopyalayın ve yapıştırın.

daha sonra bu kodu çalıştırın.

Gereksinimlerinize göre değiştirebilirsiniz.

ithalat soketi

sys import RPi.GPIO’yu thread import'dan GPIO olarak al

datetime ithalat rasgele ithalat istekleri ithalat os

GPIO.setwarnings (Yanlış) GPIO.setmode (GPIO.BOARD) GPIO.setup (11, GPIO.OUT)

host = '' port = 8220 address = (ana bilgisayar, bağlantı noktası)

server_socket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) server_socket.bind (adres) server_socket.listen (5) # Bağlantı sayısı için değişken numbOfConn = 0

# Bağlantılar için kullanılan listenin adı addressList = clients = set () ################################# # botumuzun küçük veritabanının ######################################## # # selamlar = 'hola', 'merhaba', 'merhaba', 'hey' soru = 'nasılsın', 'nasılsın' yanıtlar = 'tamam', 'iyiyim' veritabanı = {'jarvis': 'merhaba efendim size nasıl yardımcı olabilirim', 'isim': 'jarvis', 'adınız nedir': 'adım jarvis', 'merhaba jarvis': 'merhaba efendim nasıl yapabilirim sana yardım ediyorum ',' benim için ne yapabilirsin ':' birçok şey yapabilirim.. '}

Yazdır ("Müşteri için Dinleme.") ##################################### ###################################### #chatbot kodunu burada def chatboat (data): eğer veritabanındaki veriler ise: print (database data) # os.system ("flite -t ​​'" + database data + "'") sclient (database data) sorulardaki elif verileri: random_response = random.choice (yanıtlar) print (random_response) # os.system ("flite -t ​​'" + random_response + "'")) tebrik (random_response) elif verilerini selamlar: random_greeting = random.choice (tebrikler) print (random_greeting) sclient (random_greeting) # os.system ("flite -t ​​'" + random_greeting + "'") elif 'light on'in verisinin ışığı veya' led'inin verisi: sclient ("light open") # os.system ("flite -t 'ışık açık' ") GPIO.output (11, Gerçek) baskı (" Işık açık ") elif 'verideki' ışık 'ya da verideki' led ': sclient (" ışık kapatma ") # os.system ("flite -t ​​'light off'") GPIO.output (11, False) yazdır ("Light Off") veride 'time' elif: now = datetime.datetime.now () time = str (now.hour) str ("saat") + str (now.minute) + str + ("minu tes ") print (time) # os.system (" flite -t ​​'"+ time +"' ") sclient (time) elif 'date'in verileri: now = datetime.datetime.now () date = str ("% s /% s /% s "% (now.month, now.day, now.year)) print (date) # os.system (" flite -t ​​'"+ date +"' ") başka bir (tarih) conn.send ("üzgünüm lütfen tekrarla..") add_data = açık ("newdata.txt", 'a') add_data.write (" n") add_data.write (data) add_data.close () #### ################################################## ######################### # # Tüm istemcilere yanıt gönderme def sclient (mess): istemcilerde c için: try: c.send (mess) hariç: c.close () ##################################### ################################## # burada sunucu kodu def clientthread (conn, addressList): # sonsuz döngü Böylece bu fonksiyon sonlandırılmaz ve iplik bitmez. true iken: output = conn.recv (2048); output.strip () == "bağlantıyı kes" ise: conn.close () sys.exit ("Bağlantıyı kes. mesajı alındı. Kapatılıyor.") conn.send ("bağlantı kaybı") elif çıktısı: yazdır ("İstemciden gelen ileti: ") data = str (output).lower () print (data) print (" Sunucudan yanıtla: ") sohbet botu (data)

true iken: # Gelen bağlantıları kabul etme conn, address = server_socket.accept () print ("Müşteriye bağlı", adres) clients.add (conn) # Yeni iş parçacığı yaratılıyor. Bu işlev için clientthread işlevini çağırmak ve conn argümanını iletmek. start_new_thread (clientthread, (conn, addressList)) #start new thread, çalıştırılacak bir işlev adı olarak 1. argümanı alır, ikincisi, işlevin argümanları dizisidir.

conn.close () sock.close ()

Bu kodu buradan indirin

Daha fazla proje için YouTube Kanalıma göz atın (Electronics Forever Forever)

İkincisi

Nesnelerin İnterneti Yarışması 2017