NEWS
Script um shellyplus und das addon dazu auszulesen (mqtt)
-
nur: Shellyplus
Weil sich Daten die der mqtt adapter zu shellyplus ausgibt, nicht mit meiner allgemeinen Datenverarbeitung harmonieren, hab ich mir ein Script geschrieben, das die Daten und auch einzelne Kommandos über rpc over mqtt abruft/sendet. Und diese als einzelne Datenpunkte unter "0_userdata" erstellt.
Aktuell hab ich nur den shellyplus1pm + addon im Einsatz. Damit funktioniert es.
Das Skript kann:
- schreibt alle Werte in einen eigenen Datenpunkt in einer Baumstruktur
- Relais 0 (switch) ist schaltbar, alle weiteren sollten schaltbar sein
Mit dem auslesen Intervall der Energy Daten bin ich noch nicht zufrieden. Dieses ist aktuell dem Shelly überlassen.
Das Script fordert beim Start und zur Uhrzeit Minute: 0,20,40 ein Statusupdate zu allem an.
Für mich ist dieser Intervall nötig, da ich den online Status überwachen lasse.Wenn was nicht funktioniert, melden ich behebe das dann. Falls es überhaupt jemand braucht,
https://github.com/ticaki/iobroker-skript-sammlung/blob/main/mqtt-shellyplus.js
Wie man ein Skript von github kopiert:
Und dann im iobroker Javascript editor einfügen
Einstellungen:
const prefix = '0_userdata.0.MQTT' // darunter wird gespeichert const suchPrefix = 'mqtt.0.shellies2' // hier kommen die Daten her und begrenzen das ganze auf einen subtopic... Einfach das was im Topic bei allen Shellies gleich ist, muß hier stehen und davor die mqtt instanz const topicPrefix = 'shellies2' // hier muss der Teil von suchPrefix stehen der im Topic der shellys enthalten ist. Ohne die mqtt instanz
Das erste ist wo es hinsoll, bei mir ist das unter 0_userdata.0.MQTT
Das 2. ist wo es her kommt:
Das ist der Mqtt Adapter und ein Teil von dem was unter MQTT Prefix im Shelly steht:
Bei mir ist shellies2 immer gleich, wenn das Neuland ist schreibt einfach shellies2/ und kopiert dahinter die Client id. Und last 2 und 3 einfach so wie es ist.
RPC over MQTT muß im Shelly aktiviert sein
-
@ticaki
Hallo danke für deine Info`s aber ich bekomme dein Skript nicht in den Editor vom Iobroker.
Rechte Maustaste oder Ctrl + P geht im Editor nicht. Muß ich etwas umstellen?Gruß Joachim
-
P ist das nicht ctrl - v ?
sitze hier vor einem Mac, aber dabei unterscheiden sich doch nur die Kommandotasten und nicht die Buchstaben
-
@ticaki
Sorry, klar .... Ich Idiot -
Ok !! Hab jetzt Zeile 1-3 nach meinen Bedürfnissen angepasst.
Bekomme jetzt 2 Fehler (rote Wellenlinien)
Zeile 122 " if (DEBUG) log(msg)" (unter "msg" rote Wellenlinie)
Zeile 154 " topic = topic.replaceAll('.','/') " (ReplaceAll rote Wellenlinie)Skript wurde nur gespeichert, noch nicht gestartet.
-
Kann ich hier auch einen Snip einfügen ? Bei mir kommt immer ein Error
-
-
@hasejs
Die kannst du ignorieren. Der Scripteditor markiert alles rot was er nicht erkennt oder als nicht geeignet einstuftmsg -> ist ein Objekt also nicht vom Typ string, wird aber korrekt umgewandelt und ins log geschrieben
replaceAll() ist ein Javascript string Funktion die ebenfalls ausgeführt wird.Das Skript läuft bei mir so wie du es kopiert hast und sollte wenn richtig eingestellt auch bei dir funktionieren.
Bei mir sieht das so aus.
-
Danke hat funktioniert.
Die ObjektID`s sind angelegt und werden aktualisiert.Wie kann ich die Gesamtleistung abfragen?
-
@hasejs
Ich hab keinen EM3 Pro daher kann ich das nicht bei mir nachschauen. Ich muss mal in der API Doku nachsehen wie man da den Gesamtwert bekommt. Du scheinst ja jetzt die werte für die 3 Phasen zu haben oder? -
Ja, die 3 Werte habe ich.
Momentan addiere ich sie in einem Blockly Skript. -
@hasejs
Ich glaube ich weiß wie, aber bin zu müde und traue mir nicht. Machen wir morgen -
@ticaki
Alles Gut... mir reichts auch.Bin Dir ehedem sehr Dankbar für deine Super Unterstützung.
-
@hasejs
Schau mal morgen nach ob die Daten nicht erschienen sind oder in einem anderen Ordner liegen. Eigentlich sollte die da sein. -
Hallo
Ich hab mich schon tot-gegoogelt und bin dann hier im Forum auf Deinen Betrag gestoßen. Respekt, nach ein paar Anläufen funktioniert das bei mir auch.Was ich nicht verstehe, dass ich im Netz keinen Aufschrei höre, dass die geloggten Daten von Shelly 2 Generation nicht mehr über ECharts darstellbar sind. Wer Shellys hat möchte doch auch sehen was passiert?
Ich war schon fast dabei aufzugeben…. Aber jetzt klappt es …. Vielen Dank
Armin
-
v0.11
- .ts Datenpunkte löschen vor dem ausführen oder ihr bekommt Warnungen die euch daran erinnern
- .ts und sys.unixtime mit einander verlinkt so das in ts immer die zu letztgemeldete Onlinezeit drin steht (brauche ich fürs überwachen)
- .ts wird jetzt in millisekunden angezeigt, ebenso wie unixtime denke das ist die Zeit seit dem letzten reset oder reboot
steht aber auch im Skript und da werden ich in Zukunft auch jede Änderung erwähnen... wenn sie erwähnenswert ist.
-
Hallo, am Anfang ist alles super gelaufen. Seit einer Woche gibt es keine Werte mehr. Komisch ist, wenn der MQTT Broker/Client läuft komme ich nicht mehr auf den Shelly der geloggt wird. Schalte ich MQTT Broker/Client aus, dann ist der Shelly wieder online. (Öfters probiert = leider so)
Jetzt vermute ich, dass was nicht an den Einstellungen stimmt. Kannst Du da mal drüber schauen, bin da im Thema leider nicht so fit.
Wäre Super wenn ich Hilfe bekomme
Gruß
Armin -
@arminrey
Ich bin jetzt echt nicht der MQTT Kenner, kann nur sagen was bei mir funktioniert.Ich denke das "sende auch ack" dein mqtt lahm legt. EDIT: Könnte aber auch daran liegen das du ganz oben bei prefix nix drin stehen hast.
Mein Problem bevor ich diese Einstellungen hatte, war das meine Lampen (zufällig eine oder mehrere) angingen wenn iobroker neugestartet wurde. Das lag an "sende bei verbinden"
Bei mir läufts, hab mir extra fürs "nicht laufen" das Skript geschrieben das jetzt meine Installation überwacht: https://github.com/ticaki/iobroker-skript-sammlung/blob/main/Sensorüberwachung.js
Dafür gibts aber afaik auch nen Adapter
EDIT: ich benutze aber mosquitto als broker. Daher ist mein mqtt adapter als client eingestellt
-
Werte wieder da
.... Vielen Dank .... die Antwort war min. 1 Kasten Bier
wert