NEWS
Ansteuerung S7 mit snips und ioBroker
-
Hallo liebe ioBroker-Community, freut mich hier sein zu dürfen!
Ich bin Student im 7. Semester und soll im Rahmen einer Arbeit einen Roboter per Sprache ansteuern. Dies soll über eine S7 1200 geschehen.
Nach einiger Recherche bin ich auf den Sprachassistenten snips.ai und auf die Plattform ioBroker gestoßen.
Nach Lesen des folgenden Threads:
viewtopic.php?f=20&t=16556&p=173769&hil … ai#p173769
bin ich der Ansicht, dass ich mit diesen Plattformen eine S7 ansteuern kann.
Leider hab ich noch keinen Ansatz bezüglich der Umsetzung. Mit meinen aktuellen Wissensstand hab ich bis jetzt nur folgenden Ansatz:
• snips auf einem Raspberry Pi (mit entsprechender Hardware) spielen
• ioBroker auf einen weiteren Pi spielen und dort Note-Red installieren
• snips -> ioBroker mit Note-Red -> S7
Beim letzten Punkt steh ich jedoch richtig auf den Schlauch. Leider bin ich mir nach der Recherche durch Foren / Videos noch nicht im Klaren wie ich die beidne Pi's kommunizieren lasse, bzw wie mit der S7.
Liege ich mit meinem Ansatz richtig? Brauche ich überhaupt ioBroker für mein Vorhaben? Wenn ja, wie gehe ich bezüglich der Kommunikation vor, vorallem mit der SPS?
Ich wäre um jeden Denkanstoß dankbar
Liebe Grüße!
-
Nimm doch einfach den s7 Adapter in iobroker … Dann hast Du die Anbindung und kannst den Rest per Javascript oder Node-Red machen
-
Hallo, mein Vorschlag: libnodave
Diese Bibliothek ist das Opensource Gegenstück zum mächtig kostenpflichtigigen Original von Siemens und kann z.B. unter Perl oder C alles Mögliche machen.
Transparenter Zugriff auf alle Bausteine und Register.
Ich hatte damit schon verschiedene wirklich komplexe Steuerungsvisualisierungen gebaut und aktuell vom Pi im kleinen Rahmen soetwas auf eine S7 ET200 laufen.
-
Nimm doch einfach den s7 Adapter in iobroker … Dann hast Du die Anbindung und kannst den Rest per Javascript oder Node-Red machen `
Alles klar, wusste garnicht, dass es dafür nen Adapter gibt! Brauch ich da ne Hardwaretechnishce Verbindung (Profinet?)
@!munk:Hallo, mein Vorschlag: libnodave
Diese Bibliothek ist das Opensource Gegenstück zum mächtig kostenpflichtigigen Original von Siemens und kann z.B. unter Perl oder C alles Mögliche machen.
Transparenter Zugriff auf alle Bausteine und Register.
Ich hatte damit schon verschiedene wirklich komplexe Steuerungsvisualisierungen gebaut und aktuell vom Pi im kleinen Rahmen soetwas auf eine S7 ET200 laufen. `
Schau ich mir auch mal an, Danke!
-
Nimm doch einfach den s7 Adapter in iobroker … Dann hast Du die Anbindung und kannst den Rest per Javascript oder Node-Red machen `
Alles klar, wusste garnicht, dass es dafür nen Adapter gibt! Brauch ich da ne Hardwaretechnishce Verbindung (Profinet?) `
Zitat von https://github.com/ioBroker/ioBroker.s7
` > Der Siemens S7 Adapter basiert auf Snap7, wobei Snap7 bei der Erstinstallation des S7 Adapters mitinstalliert wird und die eigentliche S7-Kommunikation zwischen ioBroker und der S7 über TCP/IP organisiert.
Es ist also notwendig, dass die S7 über eine Ethernet-Schnittstelle verfügt (in der CPU integriert oder als separater CP) und über TCP/IP mit der Hardware kommunizieren kann, auf der ioBroker läuft.
Es wird vorausgesetzt, dass der Anwender über die notwendigen Kenntnisse zur TCP/IP-Kommunikation verfügt und in der Lage ist, die S7 mittels Step7 entsprechend zu konfigurieren und zu programmieren. Der geübte Umgang mit PC und verschiedenen Betriebssystem ist ebenfalls Voraussetzung. Diese Anforderungen stellen sicherlich keine Herausforderung für jemanden dar, der die Kommunikation zwischen ioBroker und einer S7 in Erwägung zieht. `
-
@!munk:Hallo, mein Vorschlag: libnodave
Diese Bibliothek ist das Opensource Gegenstück zum mächtig kostenpflichtigigen Original von Siemens und kann z.B. unter Perl oder C alles Mögliche machen.
Transparenter Zugriff auf alle Bausteine und Register.
Ich hatte damit schon verschiedene wirklich komplexe Steuerungsvisualisierungen gebaut und aktuell vom Pi im kleinen Rahmen soetwas auf eine S7 ET200 laufen. `
Wie schon Apollon77 geschrieben hat, es gibt sehr guten und durchdachten S7 Adapter für ioBroker.
-
Nimm doch einfach den s7 Adapter in iobroker … Dann hast Du die Anbindung und kannst den Rest per Javascript oder Node-Red machen `
Alles klar, wusste garnicht, dass es dafür nen Adapter gibt! Brauch ich da ne Hardwaretechnishce Verbindung (Profinet?) `
Zitat von https://github.com/ioBroker/ioBroker.s7
` > Der Siemens S7 Adapter basiert auf Snap7, wobei Snap7 bei der Erstinstallation des S7 Adapters mitinstalliert wird und die eigentliche S7-Kommunikation zwischen ioBroker und der S7 über TCP/IP organisiert.
Es ist also notwendig, dass die S7 über eine Ethernet-Schnittstelle verfügt (in der CPU integriert oder als separater CP) und über TCP/IP mit der Hardware kommunizieren kann, auf der ioBroker läuft.
Es wird vorausgesetzt, dass der Anwender über die notwendigen Kenntnisse zur TCP/IP-Kommunikation verfügt und in der Lage ist, die S7 mittels Step7 entsprechend zu konfigurieren und zu programmieren. Der geübte Umgang mit PC und verschiedenen Betriebssystem ist ebenfalls Voraussetzung. Diese Anforderungen stellen sicherlich keine Herausforderung für jemanden dar, der die Kommunikation zwischen ioBroker und einer S7 in Erwägung zieht.
S7 Adapter runtergeladen, genau das was ich suche! Perfekt!
Diese Thematik muss ich aber noch nach hinten schieben. Sitz seit heute 07:00 Uhr vor nem anderen (wahrscheinlich peinlichen) Problem: Der Kommunikation des Raspi mit Snips und des Raspi mit ioBroker via MQTT
Im ioBroker hab ich den MQTT-Adapter runtergeladen. Durch Netzrecherche habe ich erfahren, dass Snips selbst nen Broker hat. Also werde ich ioBroker wahrscheinlich auf Client stellen müssen. Habe auch rausgefunden, dass snips den Broker auf Port 9898 laufen lässt.
EDIT: der Befehl sam mqtt (vorgeschlagener Befehl) ruft auch nix auf
Also im Browser die ip des Snips-Pi mit den Port eingegeben - nix geschieht.
Beide Raspis sind in nem Netzwerk.
Im Netz finde ich ausschließlich Tutorials für snips-OpenHab bzw snips-HAAS.
Hier im Forum hab ich noch was von nem Snips Adapter gelesen - hab ich gleich auf den Pi mit ioBroker gespielt, aber der Adapter ist in der Oberfläche nicht zu sehen.
https://github.com/Bettman66/ioBroker.snips
Muss ich da bei meinem snips-Pi noch was konfigurieren? Oder bin ich gerade einfach zu blöd dafür :? :mrgreen:
Verwirrte Grüße
-
### Configure Snips Adapter - Url : Address of the Snips-MQTT-Servers - Port : Port of the Snips-MQTT-Servers - Instanz : Text2Command-Instanz (for example 0) - Filter : for example understand - ClientID : ID (for example 0)
URL: localhost oder IP port: 1883 instanz: 0 filter: * clientId: 0
-
### Configure Snips Adapter - Url : Address of the Snips-MQTT-Servers - Port : Port of the Snips-MQTT-Servers - Instanz : Text2Command-Instanz (for example 0) - Filter : for example understand - ClientID : ID (for example 0)
URL: localhost oder IP port: 1883 instanz: 0 filter: * clientId: 0 ```` `
Ok, dass kommt in ein Verzeichnis des snips pi oder?
EDIT: Oder doch in den pi mit iobroker? der snipsadapter wird mir nicht angezeigt
Im Verzeichnis ist er auch nicht unter "node_modules" wie die anderen. Hab den Ordner nun händisch reingeschoben
Oder war das jetzt falsch?
EDIT EDIT:
Hab jetzt im MQTT Adapter die IP des snips mit port :1883 eingegeben und die Verbindung getestet. Daraufhin erscheint die Meldung "verbunden", unter Instanzen steht aber bei Verbindung MQTT "FALSCH"
Hilft mir eh noch nicht weiter denke ich, da mir noch jeder blasse Schimmer fehlt, was ich bei snips machen muss :shock: :? Peinlich Peinlich von mir..
habe den snips-adapter nun gefunden (Expertenmodus anklicken). Jedoch kann ich ihn nicht runterladen (siehe Bild)
9155_forum.png
9155_forum_2.png
9155_forum3.png -
UPDATE:
Konnte nun den snips-Adapter installieren (Hab beide Pis platt gemacht). Jedoch kann ich mich nicht mit den Host verbinden (ich hänge ein paar Screenshots an, zur Übersicht wies bei mir grade aussieht). MQTT verbindet sich auch noch nicht. IP-Adresse des Snips-Pi und der Host stimmen aber.. :?
Im Logfile steht folgendes in knallrot (sieht aus, als fehle ne Installation bzw ein Paket aufm Pi??)
` > undefined2018-10-17 15:10:38.976 - info: snips.0 starting. Version 0.0.4 in /opt/iobroker/node_modules/iobroker.snips, node: v8.11.1
2018-10-17 15:10:39.013 - error: snips.0 uncaught exception: Cannot find module 'mqtt'
2018-10-17 15:10:39.014 - error: snips.0 Error: Cannot find module 'mqtt'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object. (/opt/iobroker/node_modules/iobroker.snips/lib/client.js:3:25)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
2018-10-17 15:10:39.521 - info: snips.0 terminating
2018-10-17 15:10:39.538 - error: Caught by controller[0]: { Error: Cannot find module 'mqtt'
2018-10-17 15:10:39.539 - error: Caught by controller[0]: at Function.Module._resolveFilename (module.js:547:15)
2018-10-17 15:10:39.539 - error: Caught by controller[0]: at Function.Module._load (module.js:474:25)
2018-10-17 15:10:39.540 - error: Caught by controller[0]: at Module.require (module.js:596:17)
2018-10-17 15:10:39.540 - error: Caught by controller[0]: at require (internal/module.js:11:18)
2018-10-17 15:10:39.540 - error: Caught by controller[0]: at Object. (/opt/iobroker/node_modules/iobroker.snips/lib/client.js:3:25)
2018-10-17 15:10:39.541 - error: Caught by controller[0]: at Module._compile (module.js:652:30)
2018-10-17 15:10:39.541 - error: Caught by controller[0]: at Object.Module._extensions..js (module.js:663:10)
2018-10-17 15:10:39.541 - error: Caught by controller[0]: at Module.load (module.js:565:32)
2018-10-17 15:10:39.542 - error: Caught by controller[0]: at tryModuleLoad (module.js:505:12)
2018-10-17 15:10:39.542 - error: Caught by controller[0]: at Function.Module._load (module.js:497:3) code: 'MODULE_NOT_FOUND' }
2018-10-17 15:10:39.542 - error: host.iobroker instance system.adapter.snips.0 terminated with code 0 (OK)
2018-10-17 15:10:39.543 - info: host.iobroker Restart adapter system.adapter.snips.0 because enabled `
Habe nun in der Snips Console einen Assistenten erstellt (mit ein paar trainierten Sätzen keine Slots, keine Intents).
Wenn ich auf dem Snips-Pi mir das ganze via sam watch anschau kommt nach erkennen meines Intents immer: "The session was ended because one of the components didn't respond in a timely manner."
Zu guter letzt will ich ja nur Eingänge der SPS setzen, den Rest mach ich dann dort. In meinem Leichtsinn dachte ich mir, ich mach hier zum Anfang 2 Intents (An/Aus), schicke sie mit meinem Snips-Assistenten zu ioBroker und mit note-red, text2command und den S7-Assistenten ein Bit (oder Zahlenwert) zur S7. Und je mehr ich recherchiere desto größer die Verwirrung und die Erkenntnis, das es nicht so einfach sein wird.
Muss ich in snips noch files mit der "Funktionalität" erstellen? In Github finde ich leider nix, was nur an und aus schaltet, bzw bits setzt. In der Theorie ist die Aktion ja kein großer Akt. Hoffe ich mal :shock: :?
Kurzum mein Stand:
GEKLAPPT:
-
Snips installiert
-
simplen Assistenten erstellt
-
ioBroker installiert
-
auf ioBroker den snips, sowie mqtt und S7 Assistenten installiert. Ebenso node-red
-
text2command installiert
PROBLEME:
-
Wie "schicke" ich den Befehl zu ioBroker und wie verarbeite ich diesen?
-
In welcher Reihenfolge muss ich die Komponenten einsetzen?
-
Wie bring ich den snips-Adapter zu laufen? Muss ich an den Pis in der Kommandozeile noch was machen? Vllt. was installieren?
-
Und die oben beschriebenen Probleme
Sprich: snips läuft auf Pi 1, ioBroker auf Pi 2, die beiden reden einfach nicht.
Und das nach 3 Sitzungen a 12 Stunden :?
9155_forum_2.png
9155_forum_4.png
9155_forum_5.png
9155_forum_6.png
9155_forum.png
9155_forum3.png -