NEWS
Shelly mit Parser auslesen
-
@tuskam Also ich hab Dir den NodeRed Flow gepostet mit dem Du nun den String ganz easy - den Du im Browser bekommst aufdröseln kannst. Dazu sind keine Programmierkenntnisse nötig, sondern lediglich die Nodes aus der Abbildung mit der Maus rauszuziehen und mit Linien miteinander verbinden.
Im Prinzip muss das auch mit dem Blockly gehen - aber da musst Dir halt @Homoran helfen, da ich das nicht so gut beherrsche.
Im Prinzip machst Du den http Requst und nutzt das Ergebnis und machst daraus mit der Konvertierung des JSON Strings ein Objekt und kannst dann ebenfalls easy auf alle Werte zugreifen und kannst ggf. eigene Datenpunkte schreiben.
Ich kann Dir auch einen Node-Red Flow basteln, der Dir den gesamten Shellie in einzelne Datenpunkte schreibt und den Du nur noch importieren brauchst.
-
@mickym sagte in Shelly mit Parser auslesen:
Im Prinzip machst Du den http Requst und nutzt das Ergebnis und machst daraus mit der Konvertierung des JSON Strings ein Objekt und kannst dann ebenfalls easy auf alle Werte zugreifen und kannst ggf. eigene Datenpunkte schreiben.
naja so fit bin ich da auch nicht, aber so müsste der Anfang gehen (eine selbst angelegt Variable mit Bezeichnung
result
würde das Ergebnis beinhalten und dann mit dem Block "Attribut von" die entsprechenden JSON Bestandteile abrufen.
Da muss ich mich dann aber auch noch mal einarbeiten -
@tuskam Hier mal der NodeRed Flow - der schreibt Dir alle Datenpunkte Deines Shellies alle 30s unter 0_userdata.0.shelly1PM
ich hab sogar schon Deine IP Adresse eingetragen:
Du musst nur noch dem NodeRed Adapter erlauben eigene Objekte anzulegen (ich habs grün markiert)
und Du bekommst mit dem Flow die fertige Struktur unter 0_userdata.0
Anschließend sollte man nur noch das Script von @fastfoot drüber laufen lassen, um aus den nicht vorhandenen Objekten Folder zu machen.
Das ist aber auch einfach - einfach das Skript importieren:
einmal laufen lassen und dann sind die fehlende Objekte erstellt:
-
@homoran Also ich hab das mit dem Objekt bereits mit Blockly rausgefunden.
Nun muss man nur noch auf die Eigenschaften des Objektes Werte zugreifen.
-
@mickym sagte in Shelly mit Parser auslesen:
@homoran Also ich hab das mit dem Objekt bereits mit Blockly rausgefunden.
Nun muss man nur noch auf die Eigenschaften des Objektes Werte zugreifen.
jepp
und dann mal sehen was bei @Tuskam da rasukommt
-
@homoran Ha ich habs wie man auf einzelne Elemente des Objektes zugreift - hier Temperatur als Beispiel
Werde trotzdem kein Blockly-Fan.
-
@mickym sagte in Shelly mit Parser auslesen:
Ha ich habs wie man auf einzelne Elemente des Objektes zugreif
sach ich doch
@homoran sagte in Shelly mit Parser auslesen:
mit dem Block "Attribut von"
-
Nur der Vollständigkeit halber hier dann das Auslesen des aktuellen Verbrauchs:
meters[0].power funktioniert nicht - warum wissen wahrscheinlich nur die Blockly-Gurus.
-
@tuskam Und falls Du Deinen Shelly über die HTTP Schnittstelle nicht nur auslesen, sondern auch schalten willst, gibst einfach in Deinem Browser oder in Deinem HTTP Request Deiner Logikmaschine
zum Einschalten:
http://192.168.1.11/relay/0?turn=on
zum Ausschalten:
http://192.168.1.11/relay/0?turn=off
zum Umschalten:
http://192.168.1.11/relay/0?turn=toggle
ein.
-
@mickym sagte in Shelly mit Parser auslesen:
meters[0].power funktioniert nicht
ist so wie in iobroker.
Hierarchien werden durch Punkt getrennt -
@tuskam Lange Rede - kurzer Sinn. Ich würde aber trotzdem mal schauen ob Du es mit unicast und ColoT hinbekommst, indem Du
IP Adresse Deines IO-Brokers und Port des Shelly Adapters angibst. Das sollte nämlich genauso über Netzwerkgrenzen gehen, wie umgekehrt das HTTP Protokoll.
Mit dem HTTP Protokoll hast Du halt einfach den Riesennachteil, dass Du pollen musst (sprich Du musst zyklisch aktiv den Status abfragen), anstelle sich der Shelly bei Änderungen von selbst meldet. Da kann ich @crunchip nur zustimmen.
Sowie ich das verstehe läuft das CoAP Protokoll auf Port: 5683
-
-
@tuskam sagte in Shelly mit Parser auslesen:
Ich bekomme die Were im Log angezeigt.
wenn du damit weiter arbeiten willst musst du dir unter 0_userdata.0 eigene Datenpunkte erstellen und diese mit dem "aktualisiere-Block" befüllen.
-
@mickym sagte in Shelly mit Parser auslesen:
@tuskam Und falls Du Deinen Shelly über die HTTP Schnittstelle nicht nur auslesen, sondern auch schalten willst, gibst einfach in Deinem Browser oder in Deinem HTTP Request Deiner Logikmaschine
Hi, Danke. Das wir nicht über den IOBroker passieren. Ich messe mit dem Shelly, d.h. der ist immer an...
-
@homoran sagte in Shelly mit Parser auslesen:
@tuskam sagte in Shelly mit Parser auslesen:
Ich bekomme die Were im Log angezeigt.
wenn du damit weiter arbeiten willst musst du dir unter 0_userdata.0 eigene Datenpunkte erstellen und diese mit dem "aktualisiere-Block" befüllen.
oder halt den Node-Red Flow nutzen - der legt alle Datenpunkte an und befüllt sie dann auch. - Aber ich will ja niemand bekehren.
-
@mickym sagte in Shelly mit Parser auslesen:
der legt alle Datenpunkte an und befüllt sie dann auch.
das kann Blockly auch
Aber ich will ja niemanden bekehren.
-
@mickym sagte in Shelly mit Parser auslesen:
Nur der Vollständigkeit halber hier dann das Auslesen des aktuellen Verbrauchs:
meters[0].power funktioniert nicht - warum wissen wahrscheinlich nur die Blockly-Gurus.
Jungs, das läuft!!!!
Ich übergebe die Werte in Systemvariablen meiner Homematic bzw. an meine Visualisierung.Verstanden habe ich das mit der "power" noch nicht. Aber das muss man durch testen irgendwie hinbekommen.
Bis hierhin schon Super-Vielen-Dank-An-Euch!!!
Markus
Enjoy
-
@tuskam sagte in Shelly mit Parser auslesen:
Verstanden habe ich das mit der "power" noch nicht. Aber das muss man durch testen irgendwie hinbekommen.
das ist eine Variable.
statt "setze power" kannst du auch den steuere Block nehmen jnd damit in die rega id für die Homematic Systemvariable schreiben -
@homoran sagte in Shelly mit Parser auslesen:
das ist eine Variable.
statt "setze power" kannst du auch den steuere Block nehmen jnd damit in die rega id für die Homematic Systemvariable schreibenIch meine den Fehler, das "meters[0].power funktioniert nicht - warum wissen wahrscheinlich nur die Blockly-Gurus" Problem.
-
@tuskam sagte in Shelly mit Parser auslesen:
@homoran sagte in Shelly mit Parser auslesen:
das ist eine Variable.
statt "setze power" kannst du auch den steuere Block nehmen jnd damit in die rega id für die Homematic Systemvariable schreibenIch meine den Fehler, das "meters[0].power funktioniert nicht - warum wissen wahrscheinlich nur die Blockly-Gurus" Problem.
das liegt an der Struktur zum Auslesen.
Es handelt sich hier um ein Array, in dem sich jsons befinden.man kann entweder erst das Array auflösen und dann in den Elementen das json attribut suchen, oder die Ebenen über Punkte zwischen ihnen darstellen.
Die übliche Darstellung von Elementen mit Zahlen in eckigen Klammern funktioniert dort aber nicht.Das ist kein Problem, sonder "works as designed"