Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
aa76443b11 |
14
.drone.yml
14
.drone.yml
@ -1,14 +0,0 @@
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
steps:
|
||||
- name: docker
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username:
|
||||
from_secret: docker_reg_greinet_username
|
||||
password:
|
||||
from_secret: docker_reg_greinet_password
|
||||
repo: reg.greinet.com/agreiner/raspibot
|
||||
registry: reg.greinet.com
|
||||
tags: latest
|
36
README.md
36
README.md
@ -1,35 +1 @@
|
||||
## Raspberry Pi 4 Chatbot
|
||||
Ein **Chatbot**, welcher Fragen zum **Raspberry Pi 4** beantwortet, hauptsächlich zu Themen wie verbauten RAM, verfügbaren Betriebssystemen oder etlichen Anschlussmöglichkeiten.
|
||||
Im Hintergrund wird die **LUIS AI** der Microsoft Azure Plattform verwendet, als User Interface dient eine Website, welche via **Websocket** mit einem **Node.js Server** kommuniziert.
|
||||
|
||||
### **Installation**
|
||||
npm install
|
||||
|
||||
### **Start**
|
||||
node staticExpress.js
|
||||
oder
|
||||
npm start
|
||||
|
||||
### **Themengebiete**
|
||||
- Betriebssystem
|
||||
- SD-Karte
|
||||
- GPIO-Pins
|
||||
- CPU
|
||||
- Arbeitsspeicher
|
||||
- Stromversorgung
|
||||
- Monitorausgänge
|
||||
- USB-Anschlüsse
|
||||
- Netzwerkkonnektivität
|
||||
- Kosten und Kaufmöglichkeiten
|
||||
|
||||
### Funktionalität
|
||||
|
||||
#### Anfragen-Handling mit LUIS-AI
|
||||
Der Node.js Server erhält **Anfragen** der Clients via **Websockets**. Diese Anfragen werden dann **an die LUIS-AI weitergeleitet**, welcher mit ermittelten **Intens (Absichten)** und dazugehörigen **Wahrscheinlichkeiten** antwortet.
|
||||
#### Antworten an Nutzer ermitteln
|
||||
Der lokale Bot wählt dann den **Intent mit der größten Wahrscheinlichkeit** aus und holt sich eine Antwort aus der **Wissensbasis**. Bei dieser Wissensbasis handelt es sich um eine Json-Datei, welche zu jedem Intent **3 verschiedene Nachrichten** liefert. Eine dieser Nachrichten wird per Zufall ausgewählt, sodass der Bot wie ein **echter Mensch** wirkt und nicht immer die gleiche Antwort liefert. Außerdem gibt es bei jedem Intent noch **2 weitere Antworten** in der Wissensbasis, welche **bei wiederholtem Fragen** als Antwort ausgewählt werden. Diese bieten genauere Informationen, da davon ausgegangen wird, dass der Nutzer Genaueres wissen will, wenn er erneut nachfrägt. Kann die LUIS-AI **keine Absicht** in der Anfrage erkennen, gibt es auch hierfür **3 verschiedene Antwortmöglichkeiten (Fallbacks)** in der Wissensbasis. Diese weisen den Nutzer darauf hin, dass die **Frage nicht verstanden** wurde und man die Frage doch **genauer stellen** sollte. Außerdem werden Beispielthemen genannt, zu welchen der Bot Antworten hätte.
|
||||
|
||||
#### Weiterentwicklung des Bots
|
||||
Der **LUIS-AI** Service **speichert alle Anfragen** und die ermittelten Intent ab. So kann man **prüfen**, ob alles **richtig funktioniert** und auch das echte Nutzerverhalten analysieren und den Bot dann gezielt darauf trainieren. Dank der Modularisierung Server, LUIS-AI und Wissensbasis ist auch das **Eingliedern neuer Informationen** problemlos möglich. Hier muss dann nur die **Wissensbasis** um Antworten **erweitert** werden und die **LUIS-AI** mit passenden Anfragen **trainiert** werden.
|
||||
|
||||

|
||||
Chatbot providing information about Raspberry Pi 4
|
BIN
bot_example.png
BIN
bot_example.png
Binary file not shown.
Before Width: | Height: | Size: 65 KiB |
@ -1,5 +1,5 @@
|
||||
var msgerChat = null;
|
||||
var socketurl = 'ws://127.0.0.1:8181/';
|
||||
var socketurl = 'wss://rpiwss.greinet.com:8083/';
|
||||
|
||||
/** Standartnachricht ausgeben und Websocket-Verbindung aufbauen */
|
||||
window.onload=function(){
|
||||
@ -104,4 +104,4 @@ function formatDate(date) {
|
||||
*/
|
||||
function random(min, max) {
|
||||
return Math.floor(Math.random() * (max - min) + min);
|
||||
}
|
||||
}
|
||||
|
@ -1,98 +1,18 @@
|
||||
{ "intents" :[
|
||||
{"intent":"kaufen",
|
||||
"answers":[
|
||||
"Der Raspberry Pi 4 wird in 3 verschiedenen Versionen verkauft. Die 2GB RAM Version kostet 35$, die 4GB RAM Version 55$ und die 8GB RAM Version 75$.",
|
||||
"Der Preis des RPI hängt von der Arbeitsspeichergröße ab, es gibt Modelle mit 2GB, 4GB und 8GB zu je 35$, 66$ und 75$.",
|
||||
"Mit 2GB Arbeitsspeicher kostet der Raspberry Pi 4 35$, mit 4GB kostet er 55$ und für 8GB RAM muss man 75$ bezahlen."],
|
||||
"repeat1": [
|
||||
"Die offiziellen Reseller werden hier aufgelistet: https://www.raspberrypi.org/products/raspberry-pi-4-model-b#find-reseller"],
|
||||
"repeat2":[
|
||||
"Ein Geheimtipp für billige Deals ist MyDealz, eine Community-Platform für Spezialangebote: https://www.mydealz.de/gruppe/raspberry-pi"]},
|
||||
{"intent":"netzwerk",
|
||||
"answers":[
|
||||
"Der Raspberry Pi 4 kann via LAN und WLAN an ein Netzwerk angebunden werden. Zudem ist er mit BLuetooth ausgestattet.",
|
||||
"Die Netzwerkkonnektivität des RPi 4 wird mittels LAN- und WLAN-Schnittstelle gewährleistet. Auch Bluetooth wird unterstützt.",
|
||||
"Die Verbindung zu anderen Geräten erfolgt über die vorhandenen LAN, WLAN und Bluetooth-Schnittstellen."],
|
||||
"repeat1": [
|
||||
"Der LAN-Port unterstützt Geschwindigkeiten bis 1Gbit/s. Bei dem WLAN Modul handelt es sich um ein 802.11ac Dual-Band Modul mit interiertem Bluetooth 5.0."],
|
||||
"repeat2":[
|
||||
"Um die Netzwerkschnitstellen zu erweitern können auch externe WLAN-Module oder LAN-Adapter angeschlossen werden."]},
|
||||
{"intent":"usb",
|
||||
"answers":[
|
||||
"Der Raspberry Pi 4 ist dank 2 USB 3.0 und 2 USB 2.0 Ports erweiterbar. So können z.B. Tastatur, Maus oder externe Festplatten angeschlossen werden.",
|
||||
"Externe Peripherie kann mittels den USB 2.0 und USB 3.0 Ports angeschlossen werden, von denen je 2 Stück verbaut sind.",
|
||||
"An die 2 USB 2.0 und 2 USB 3.0 Ports können ohne Probleme externe Geräte wie Maus, Tastatur oder Festplatten angesteckt werden."],
|
||||
"repeat1": [
|
||||
"Die USB 2.0 Ports unterstützen Geschwindigkeiten bis 0.5 GBit/s und die USB 3.0 Ports sogar bis zu 5.0 GBit/s."],
|
||||
"repeat2":[
|
||||
"Mit dem normalem Netzteil sind bis zu 500mA für die USB Geräte reserviert."]},
|
||||
{"intent":"display",
|
||||
"answers":[
|
||||
"Monitore können an die 2 verbauten micro-HDMI Ports angeschlossen werden. Es gibt zudem noch weitere, exotischere Anschlussmöglichkeiten.",
|
||||
"An die insgesamt 2 micro-HMDI Ports können Bildschirme angeschlossen werden. Außederm gibt es noch ungewöhnlichere Video-Ports.",
|
||||
"An den Raspberry Pi 4 können Monitore angeschlossen werden. Dazu dienen zwei micro-HDMI Ports und andere, eher nicht so oft genutzte Anschlüsse."],
|
||||
"repeat1": [
|
||||
"Die weiteren Anschlüsse bieten unter anderem die Möglichkeit Bildschirme mittels MIPI DSI-Port oder Composite Video anzuschließen."],
|
||||
"repeat2":[
|
||||
"Der Raspberry Pi 4 kann auch ohne Monitor im sogenannten HEADLESS-Mode betrieben werden. Via SSH hat man dann Zugriff auf die Konsole."]},
|
||||
{"intent":"strom",
|
||||
"answers":[
|
||||
"Der Raspberry Pi 4 wird mittels USB Typ-C Kabel mit Strom versorgt. Ein passendes Netzteil muss hier extra gekauft werden.",
|
||||
"Für die Stromversorgung wird ein USB Typ-C Netzteil benötigt. Dies ist meistens NICHT im Lieferumfang enthalten.",
|
||||
"Um den RPi 4 mit Strom zu versorgen, muss extra ein USb Typ-C Netzteil erworben werden. "],
|
||||
"repeat1": [
|
||||
"Das verwendete Netzteil sollte 3.0A bei 5 Volt liefern."],
|
||||
"repeat2":[
|
||||
"Der Raspberry Pi 4 kann auch über einen extra HAT vie PoE mit Strom versorgt werden. Bastler können den Strom auch direkt an die GPIO-Pins anschließen."]},
|
||||
{"intent":"ram",
|
||||
"answers":[
|
||||
"Es gibt ein Modell mit 2GB Ram, mit 4 GB und mit 8GB RAM.",
|
||||
"Insgesamt gibt es 3 verschiedene Versionen des Raspberry Pi 4: 2GB RAM, 4GB RAM und 8GB RAM.",
|
||||
"Um verschiedene Anwendungszwecke zu bedienen wird der Raspberry Pi 4 mit 2, 4 oder 8 GigaByte Arbeitsspeicher verkauft."],
|
||||
"repeat1": [
|
||||
"Bei dem Arbeitsspeicher handelt es sich um LPDDR4-3200 SDRAM Module."],
|
||||
"repeat2":[
|
||||
"Für leichte Benutzung reichen die 2GB oder 4GB Modelle locker aus. Die 8GB Variante ist zu empfehlen, wenn der Raspberry Pi 4 als Server mit eitlichen Diensten dienen soll."]},
|
||||
{"intent":"cpu",
|
||||
"answers":[
|
||||
"Der Raspberry Pi 4 hat eine Quad-Core CPU mit 1.5GHz.",
|
||||
"Der CPU des RPi 4 hat 4 Kerne und ist auf 1.5GHz getaktet.",
|
||||
"Der Quad-Kernen des Raspberry Pi 4 läuft mit einer Taktrate von 1.5GHz."],
|
||||
"repeat1": [
|
||||
"Der Prozessor ist ein Cortex-A72, basierend auf der ARM Architektur und läuft im 64Bit Modus."],
|
||||
"repeat2":[
|
||||
"Der Prozessor reicht mit Leichtigkeit aus, um simultan mehrere Services wie z.B. Webserver, Datenbank, etc zu betreiben."]},
|
||||
{"intent":"gpio",
|
||||
"answers":[
|
||||
"Die 40 General-Purpose-Input-Output-Pins dienen als steurebare Pins zum anschließen von Aktoren und Sensoren.",
|
||||
"Der Raspberry Pi 4 kommt mit 40 GPIO(General-Purpose-Input-Output)-Pins zu ansteuern und auslesen von Aktoren und Sensoren.",
|
||||
"Verschiedenste Aktoren und Sensoren können mittels 40 General-Purpose-Input-Output-Pins an den RPi angeschlossen werden."],
|
||||
"repeat1": [
|
||||
"Die einzelnen Pins haben verschiedene Funktionen. Diese werden mit dem Befehl ´pinout´ in der Konsole veranschaulicht."],
|
||||
"repeat2":[
|
||||
"Einige dieser verschiedenen Funktionen sind z.B. PWM(Software/Hardware), PSI, I2C oder serielle Schnittstelle."]},
|
||||
{"intent":"sd",
|
||||
"answers":[
|
||||
"Als Hauptspeicher wird beim Raspberry Pi 4 eine Micro-SD Karte genutzt.",
|
||||
"Meistens wird beim RPi eine Micro-SD Karte als Speicherplatz genutzt.",
|
||||
"Als Speicherplatz findet eine Micro-SD Karte Anwendung."],
|
||||
"repeat1": [
|
||||
"Auf der Micro-SD Karte wird sowohl das Betriebssystem gespeichert als auch die Daten."],
|
||||
"repeat2":[
|
||||
"Es wird empfohlen, dass die Micro-SD Karte mindestens 8GB hat. Oft wird auch eine externe SSD zusätzlich als Speicherplatz verwendet."]},
|
||||
{"intent":"os",
|
||||
"answers":[
|
||||
"Als erster Betriebssystem wird `Raspberry Pi OS` empfohlen. Es gibt etliche weitere kompatible Linux Derivate, aber auch andere Betriebssysteme.",
|
||||
"Das einfachte OS für Beginner ist wohl `Raspberry Pi OS`, die Anzahl kompatibler Betreibssysteme ist aber sehr groß. Meistens handelt es sich um Linux-basierte Betriebssysteme, aber es gibt auch etliche andere.",
|
||||
"Zum Sart wird empfohlen, mit `Raspberry Pi OS` einzusteigen. Für Fortgeschrittene gibt es dann noch etliche Linux und non-Linux Betriebssysteme."],
|
||||
"repeat1": [
|
||||
"Neben weit bekannten Betriebssystemen wie Ubuntu oder Kali Linux gibt es auch kleinere Ableger wie RetroPie für Retrospiele oder LineageOS als Android-OS."],
|
||||
"repeat2":[
|
||||
"Bei der Installation wird das Betriebssystem auf die SD-Karte geflashed. Hierbei ist das Tool `Raspberry Pi Imager` sehr hilfreich."]}
|
||||
],
|
||||
"fallbacks": [
|
||||
"Leider habe ich auf diese Frage keine Antwort. Ich beantworte dir aber weiter gerne Fragen zur Raspberry Pi 4 Hardware, wie z.B. zu den USB Ports.",
|
||||
"Auf diese Frage weiß ich leider noch keine Antwort. Wenn du aber weitere Fragen zur Raspberry Pi 4 Hardware hast, kannst due diese gerne stellen.",
|
||||
"Dazu kann ich leider keine Antwort geben. Kannst du die Frage etwas genauer formulieren? Generell habe ich auch nur Antworten zu der Hardware des Raspberry Pi 4."
|
||||
]
|
||||
{"intent":"kaufen", "answers":["kaufen answer 1","kaufen answer 1","kaufen answer 1"], "repeat1": ["kaufen repeat 1"],"repeat2":["kaufen repeat 2"]},
|
||||
{"intent":"netzwerk", "answers":["netzwerk answer 1","netzwerk answer 2","netzwerk answer 3"], "repeat1": ["netzwerk repeat 1"],"repeat2":["netzwerk repeat 2"]},
|
||||
{"intent":"usb", "answers":["usb answer 1","usb answer 2","usb answer 3"], "repeat1": ["usb repeat 1"],"repeat2":["usb repeat 2"]},
|
||||
{"intent":"display", "answers":["display answer 1","display answer 2","display answer 3"], "repeat1": ["display repeat 1"],"repeat2":["display repeat 2"]},
|
||||
{"intent":"strom", "answers":["strom answer 1","strom answer 2","strom answer 3"], "repeat1": ["strom repeat 1"],"repeat2":["strom repeat 2"]},
|
||||
{"intent":"ram", "answers":["ram answer 1","ram answer 2","ram answer 3"], "repeat1": ["ram repeat 1"],"repeat2":["ram repeat 2"]},
|
||||
{"intent":"cpu", "answers":["cpu answer 1","cpu answer 2","cpu answer 3"], "repeat1": ["cpu repeat 1"],"repeat2":["cpu repeat 2"]},
|
||||
{"intent":"gpio", "answers":["gpio answer 1","gpio answer 2","gpio answer 3"], "repeat1": ["gpio repeat 1"],"repeat2":["gpio repeat 2"]},
|
||||
{"intent":"sd", "answers":["sd answer 1","sd answer 2","sd answer 3"], "repeat1": ["sd repeat 1"],"repeat2":["sd repeat 2"]},
|
||||
{"intent":"os", "answers":["os answer 1","os answer 2","os answer 3"], "repeat1": ["os repeat 1"],"repeat2":["os repeat 2"]}
|
||||
],
|
||||
"fallbacks": [
|
||||
"fallback 1",
|
||||
"fallback 2",
|
||||
"fallback 3"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user