NEWS
Shelly mit Parser auslesen
-
@homoran sagte in Shelly mit Parser auslesen:
dann brauche ich mal das Ergebnis um damit zu spielen, oder...
{"wifi_sta":{"connected":true,"ssid":"meineSSID","ip":"192.168.1.11","rssi":-72},"cloud":{"enabled":true,"connected":true},"mqtt":{"connected":false},"time":"12:30","unixtime":1635071423,"serial":762,"has_update":false,"mac":"8CAAB57756E9","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"source":"input"}],"meters":[{"power":147.84,"overpower":0.00,"is_valid":true,"timestamp":1635078623,"counters":[147.161, 146.558, 145.960],"total":12019}],"inputs":[{"input":0,"event":"","event_cnt":0}],"temperature":32.43,"overtemperature":false,"tmp":{"tC":32.43,"tF":90.37, "is_valid":true},"temperature_status":"Normal","ext_sensors":{},"ext_temperature":{},"ext_humidity":{},"update":{"status":"idle","has_update":false,"new_version":"20210909-145919/v1.11.4-DNSfix-ge6b2f6d","old_version":"20210909-145919/v1.11.4-DNSfix-ge6b2f6d"},"ram_total":50464,"ram_free":38184,"fs_size":233681,"fs_free":148843,"uptime":63151}
Das ist nicht das Problem. Der Parser liest meines Erachtens genau das nicht aus, was ich mit dem Browser auslesen kann.
@tuskam sagte in Shelly mit Parser auslesen:
Im Parser exakt diese Infos eingetippt, geht es nicht
was genau geht nicht?Der Parser übernimmt die Werte, aber er liest sie selbst nicht aus. Er aktualisiert nicht. Wie soll ich es sagen? Der ist LEER
dann brauche ich das als Text
und deine Konfig im Editor als Screenshot
Den Text, den Du jetzt im Parser siehst, habe ich hineinkopiert, damit ich überhaupt testen und verstehen kann.
Wenn ich das nicht mache, komme da kein Text, da kann ich noch so viel testen, wie ich will. Reboot, keine Lösung. Neuinstallation, keine Lösung.Darum: Wenn es eine andere Lösung gibt, dann gerne. Nur ich bräuchte dann mal ein ganzes Script, keine Brocken. Mit den Brocken von @mickym komme ich nicht weiter, das habe ich gerade probiert.
Das Script muss nur das Auslesen des Status, das Auslesen der Temperatur aus dem Status enthalten (oder die Power, das ist egal) und dann kriege ich den Rest schon irgendwie zusammengefrickelt.
-
@tuskam Warum muss es unbedingt der Parser sein und nicht der shelly-Adapter mit MQTT? Kommen da nicht alle Werte rein?
-
@tuskam sagte in Shelly mit Parser auslesen:
Der Parser liest meines Erachtens genau das nicht aus, was ich mit dem Browser auslesen kann.
dann nutzt mir der Text nichts
@tuskam sagte in Shelly mit Parser auslesen:
Den Text, den Du jetzt im Parser siehst, habe ich hineinkopiert, damit ich überhaupt testen und verstehen kann.
ok!
Musst du dich beim Abfragen über den Browser mit User/passwort anmelden?- was steht denn im Log?
verstehe ich das
@crunchip sagte in Shelly mit Parser auslesen:
Meine Shellys 1PM sind in einem anderen Netz.
als ob der parser nicht ins andere Netz kommt?
Aber der kommt doch sogar in die WeiteWelt -
@dr-bakterius Hi, weil das Netz ein entferntes und isoliertes Netz ist. Das kannste im IOBroker nicht definieren. Der kann nur lokale Netze.
-
@homoran sagte in Shelly mit Parser auslesen:
@tuskam sagte in Shelly mit Parser auslesen:
Den Text, den Du jetzt im Parser siehst, habe ich hineinkopiert, damit ich überhaupt testen und verstehen kann.
ok!
Musst du dich beim Abfragen über den Browser mit User/passwort anmelden?- was steht denn im Log?
Nein, keine Passwortabfrage, wenn Du das meinst. Die habe ich deaktiviert. Das war ja gleich der erste Stolperstein
Im Log steht nichts, wenn ich die Instanz neu starte, bekomme ich
"instance system.adapter.parser.0 started with pid 10168"
im Log zusehen, danach schweigt der Parser. Das ist ja der Grund, warum ich vermute, dass der gar nicht läuft.@crunchip sagte in Shelly mit Parser auslesen:
Meine Shellys 1PM sind in einem anderen Netz.
als ob der parser nicht ins andere Netz kommt?
Aber der kommt doch sogar in die WeiteWeltDas ist nicht für mich, oder? Ich habe das auch so verstanden, dass der Parser doch nun wirklich alle Netze dieser Welt können müsste, wenn er sie erreichen kann.
Achso: Ping in der SSH geht natürlich zum Shelly. Also nix Firewall-Regel oder so.CU Markus
-
@tuskam Für den MQTT-Betrieb wird im Adapter nur Benutzername und Passwort sowie Port und Listen-IP definiert. Das sollte schon klappen. Im Shelly gibt man die MQTT-Server-IP und den Port an sowie natürlich den konfigurierten Benutzername und Passwort. Wenn das von außerhalb kommt, braucht man noch eine Portweiterleitung im Router.
-
@dr-bakterius sagte in Shelly mit Parser auslesen:
@tuskam Für den MQTT-Betrieb wird im Adapter nur Benutzername und Passwort sowie Port und Listen-IP definiert. Das sollte schon klappen. Im Shelly gibt man die MQTT-Server-IP und den Port an sowie natürlich den konfigurierten Benutzername und Passwort. Wenn das von außerhalb kommt, braucht man noch eine Portweiterleitung im Router.
Shelly und MQTT — Die originale Firmware enthält auch einen MQTT-Stack, ... Dieser Betrieb ist aber nicht zeitgleich mit der Shelly-Cloud möglich ..
MQTT ist keine Option.
CU Markus
-
@tuskam sagte in Shelly mit Parser auslesen:
Dieser Betrieb ist aber nicht zeitgleich mit der Shelly-Cloud möglich ..
Hättest auch gleich schreiben können. Wer nutzt schon die Cloud?
-
@dr-bakterius Naja, ich habe geschrieben, dass ich mit dem Parser oder mit einen Script arbeiten muss. Das sollte eigentlich reichen.
Die Cloud hat einen ganz großen Vorteil: Sie führt eine Statistik. Und darum nutze ich die Cloud.
Und es gibt "Bediener", die dürfen alles, aber nicht auf meinen IOBroker. Und auch darum nutzen die die Cloud.CU Markus
-
@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