İçindekiler:
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