NEWS
[Aufruf] Test Shelly Adapter
-
@Sascha-Tiedemann , auch wenn Deine Shellys über http erreichbar sind, heißt es nicht, dass diese auch über CoAP erreichbar sind. CoAP nutzt Multicast. Wenn die Shellys nicht gefunden werden, liegt es z.B. an unterschiedliche Subnetze, an Deinem Netzwerkinterface von ioBroker Server, Switches, Router, ....
Um zu sehen ob CoAP funktioniert, kannst Du z.B. einmal den Shelly Adapter stoppen (darf nicht laufen!!!!) und dann folgendes ausführen:cd /opt/iobroker/node_modules/iobroker.shelly node coaptest.js
Nun sollten Deine Shellys zu sehen sein. Wenn nicht, dann suche einmal den Fehler im Netzwerk bei Dir. Kannst auch einmal versuchen ein Hardware Reset bei einem Shelly durchzuführen.
Wenn Du den Shelly Adapter wieder startest, darfnode coaptest.js
nicht mehr laufen. -
da kommt nur:
undefined
UDP Server listening on 0.0.0.0:5683 -
@Sascha-Tiedemann , es werden keine CoAP Pakete (Multicast) Pakete in Deinem Netzwerk von den Shellys an Deinen ioBroker Server weitergeleitet. Da musst Du jetzt den Fehler bei Dir suchen.
Hat nichts mit ioBroker zu tun.Als erstes würde ich testweise bei einem Shelly einen Hardware Reset durchführen.
-
GEFUNDEN!
Da ich iobroker auf einem Windows Server betreibe war der UDP Port 5683 durch die Windows Firewall gesperrt.
Gibt man den frei funktioniert auch allesDas muss aber neu sein. Bisher war diese Freigabe nicht nötig.
Habe das Ganze schon fast ein Jahr so laufen.Mein Problem hätte ich alleine nie gelöst!!!
Vielen Dank für eure Hilfe! -
Hallo,
es gibt eine neue Version des Shelly Adapter (3.0.8). Unterstützt wird nun auch der Shelly EM. Ich hoffe jemand von Euch hat diesen im Einsatz und kann ordentlich testen. Besonders der Wert Power Factor (PF) interessiert mich. Dieser wird nicht vom Shelly geliefert, sondern muss berechnet werden. Ich hoffe ich habe das richtig umgesetztHier die Neuerungen in der Version 3.0.8
- Add device Shelly EM
- Add state energy for Shelly Plug S, Shelly PM and Shelly 2.5 in CoAP mode
- Add state temperature for Shelly Plug S, Shelly PM and Shelly 2.5 in CoAP mode
- Add state overtemperature for Shelly Plug S, Shelly PM and Shelly 2.5 in CoAP and MQTT mode
- Bugfixing
Die Version steht auf GitHub ab sofort zur Verfügung, als Update bei den Adaptern wahrscheinlich morgen.
VG
Stübi -
Ich habe täglich wenn die Rollläden hoch/runter fahren folgenden Fehler im Log:
2019-07-28 21:23:59.719 - [32minfo[39m: shelly.0 Error handling Shelly data: SyntaxError: Unexpected token P in JSON at position 420 for JSON {"blk":[{"I":0,"D":"Relay0"},{"I":1,"D":"Relay1"},{"I":2,"D":"Device"}],"sen":[{"I":112,"T":"S","D":"State","R":"0/1","L":0},{"I":122,"T":"S","D":"State","R":"0/1","L":1},{"I":111,"T":"W","D":"Power","R":"0/3680","L":2},{"I":113,"T":"S","D":"Position","R":"0/100","L":2}],"act":[{"I":211,"D":"Switch","L":0,"P":[{"I":2011,"D":"ToState","R":"0/1"}]},{"I":221,"D":"Switch","L":1,"P":[{"I":2021,"D":"ToState","R":"0/1"}]}]}P 2019-07-29 21:23:01.705 - [32minfo[39m: shelly.0 Error handling Shelly data: SyntaxError: Unexpected token ` in JSON at position 420 for JSON {"blk":[{"I":0,"D":"Relay0"},{"I":1,"D":"Relay1"},{"I":2,"D":"Device"}],"sen":[{"I":112,"T":"S","D":"State","R":"0/1","L":0},{"I":122,"T":"S","D":"State","R":"0/1","L":1},{"I":111,"T":"W","D":"Power","R":"0/3680","L":2},{"I":113,"T":"S","D":"Position","R":"0/100","L":2}],"act":[{"I":211,"D":"Switch","L":0,"P":[{"I":2011,"D":"ToState","R":"0/1"}]},{"I":221,"D":"Switch","L":1,"P":[{"I":2021,"D":"ToState","R":"0/1"}]}]}`E
An sich funktioniert alles. Ist mir eben nur durch Zufall aufgefallen.
-
@Diginix , danke für den Hinweis. Wenn alles funktioniert, werde ich die Meldung nur noch im Debug Modus anzeigen lassen.
-
@Diginix hinter dem JSON kommen noch "Müllbytes". Es wäre evtl. sauberer alles nach dem letzten } abzuschneiden und dann das JSON zu parsen!?
-
@NemoN , das ist leider ein Fehler von Shelly. Die senden teilweise kaputte JSONs. Ich werde ab Version 3.0.8 diese Fehlerhaften JSONs nur noch im Debug Modus anzeigen. Eine Korrektur des Shelly JSONs in ioBroker werde ich nicht vornehmen, da diese vom Adapter nicht benötigt werden. Diese beschreiben den Aufbau der CoAP Daten-Nachrichten.
-
@Stuebi Hi Stübi,
gerade hatte ich den Fall, das mein Script nicht ging. Flott nachgeschaut und bemerkt, das der Power-Wert nicht gefüllt war. Somit ist klar warum das Script nicht geht.
Hilft MQTT dabei die Power-Werte zu übermitteln? Im Einsatz habe ich die neueste Version des Adapters -
@srkonus , kannst Du mir sagen welches Shelly Gerät du im Einsatz hast? Eigentlich sollte es mit dem Shelly 2, Shelly 2.5, Shelly PM und Shelly Plug S gehen.
-
@Stuebi Ich nutze den Shelly Plug S mit neuester Firmware und neuestem Shelly Adapter
-
@srkonus , welche ioBroker Shelly Adapter Version hast du im Einsarz?
-
@Stuebi Die neueste Version, 3.0.8
Einen Tag später funktionierte es wieder. Der Adapter wird täglich früh morgens neugestartet. -
@srkonus , noch ein paar Fragen hätte ich:
- warum wird der Adapter neu gestartet? Stürzt dieser ab?
- Schaust Du einmal im Logfile nach, ob der Shelly Adapter irgendwann einen Fehler ausgibt?
- Weisst Du ob der Shelly Plug S ab und an eine neue IP Adresse erhält?
Ich habe auch den Shelly Plug S und bei mir werden die Power Werte immer angezeigt.
-
@Stuebi vielen Dank für die schnelle Antwort. Hier mein Versuch alles zu beantworten:
1: warum wird der Adapter neu gestartet? Stürzt dieser ab?
Der Adapter stürzt nicht ab. Nachdem ich das ganze eingerichtet hatte (meine mit Adapter 3.0.3 oder so) habe ich bemerkt das mein Script (Lastabhängiges schalten eines zweiten Plug S) wieder läuft wenn der Adapter neugestartet wurde. Da kam ich auf die Idee einen täglichen Neustart einzubauen2: Schaust Du einmal im Logfile nach, ob der Shelly Adapter irgendwann einen Fehler ausgibt?
Muss ich nachschauen3: Weisst Du ob der Shelly Plug S ab und an eine neue IP Adresse erhält?
Die IP wird als Reservierung vergeben, der Adapter hat immer die gleiche Adresse -
Hier 2 Screenshots meiner PlugS. Es hat gerade nicht funktioniert und über beide PlugS fließt gerade Strom. Die angezeigten 70W von Adapter PlugS-2 hätte den anderen einschalten sollen. Gestern Abend ging das an- sowie das ausschalten. Allerdings habe ich gestern später am Abend einen Adapter (PlugS-1) über die Shelly App einmal ein- und ausgeschaltet.
Im Logfile ist zum Zeitpunkt der "Fehlfunktion" kein Eintrag vom Shelly Adapter. -
@Stuebi Das ausschalten hat gerade auch nicht funktioniert, als ob das schalten über die Shelly App das System durcheinander gebracht hat
-
Wie schaltest du denn die Shellys über ioBroker? Es gibt dazu ein Issue, da hat jemand in den Datenpunkt Switch 1 oder 0 statt true/false (boolean) über VIS reingeschrieben (ohne das er es wusste). Damit hat er den Datenpunkt Switch komplett lahmgelegt.
Kann es daran liegen? -
@Stuebi Das ist mein Script in Java, erstellt habe ich es aber mit Blockly. Da ich auf der Arbeit bin und keinen Zugang nach Hause habe, kopiere ich das Script hier noch einmal rein. Hatte es irgendwann schon einmal hier gepostet:
on({id: "shelly.0.SHPLG-S#7AE7B6#1.Relay0.Power"/*Power*/, change: "ne", ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("shelly.0.SHPLG-S#7AE7B6#1.Relay0.Power").val > 20) { setState("shelly.0.SHPLG-S#7ADFCD#1.Relay0.Switch"/*Switch*/, true); } if (getState("shelly.0.SHPLG-S#7AE7B6#1.Relay0.Power").val < 50) { setState("shelly.0.SHPLG-S#7ADFCD#1.Relay0.Switch"/*Switch*/, false); } });
Ich möchte nicht ausschließen, das im Blockly 1/0 verwendet wird, aber das würde man in Java dann auch so sehen.