Problem mit http

Von der openWB aus Schalten, hier geht es um Shelly und co.
warbird
Beiträge: 271
Registriert: Mi Sep 02, 2020 11:14 am

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von warbird »

Die Waschmaschine ist smart und kann nur über Homeconnect von Siemens/Bosch gesteuert werden. Das aber sehr gut und auch ohne PV Überschuss. Moderne Geräte haben meistens keinen mechanischen Schalter, der auf "an" bleibt, wenn der Strom getrennt wird. Heißt ich muss die Maschine am Abend beladen, Programm einstellen und Fernstart aktivieren, damit sie am nächsten Tag über die Kette OpenWb - IFTTT - Homeconnect - Waschmaschine gestartet werden kann.
Lokale Lösungen funktionieren leider nicht. Sonst könnte ich die Maschine in lokalen Netzwerk direkt oder OpenWb starten. Wäre super ist aber leider nicht drin.

Wahrscheinlich funktioniert alles in der Anzeige auch richtig, wenn ich beim HTTP Gerät auch die Möglichkeit hätte, diese Schwelle in Watt einzustellen.

nodeRED noch unbekannt aber schaue ich mal rein... Danke.
Aber trotzdem Frage an die Entwickler, ist der Punkt "Separate Leistungsmessung für das Gerät" bewusst nicht bei HTTP Gerät aufgeführt oder ist der vergessen worden?
openWB series2 standard+
openWB series2 custom inkl. Addon Platine
Goe V3
openWB EVU Kit v2 MID
18,8 kWp PV Ost / West
VW ID3
Audi Q4
rleidner
Beiträge: 956
Registriert: Mo Nov 02, 2020 9:50 am
Has thanked: 5 times
Been thanked: 9 times

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von rleidner »

Nur zur Erklärung - Oliver kann das noch besser erläutern.

Wenn das Gerät "normal" (als schaltbar) konfiguriert ist, ist der Schaltzustand ja bekannt und die Schwelle nicht notwendig - zumindest bisher.

Wenn das Gerät als "Kein Gerät" konfiguriert ist mit Separater Leistungsmessung, also nur Zähler ohne Schalten, wird die Schwelle benötigt um den Schaltzustand anzuzeigen.

7 meiner z.Zt. 8 SH2.0 Geräte sind "Kein Gerät" d.h. reine Zähler.
Zum Teil werden diese extern (NR oder HA) geschaltet, weil Parameter einfließen, die in SH2.0 nicht abbildbar sind (Temperatur, Luftfeuchtigkeit, etc.).
Die externen Logiken verwenden natürlich zusätzlich per MQTT die Daten aus der oWB zum Steuern.
openWB-2 Standard+ | openWB EVU Kit v2 MID| 9,9kWp mit Kostal Plenticore 8.5 plus | VW ID.3, Kia EV6, Smart EQ forfour
warbird
Beiträge: 271
Registriert: Mi Sep 02, 2020 11:14 am

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von warbird »

rleidner hat geschrieben: Do Nov 10, 2022 11:44 am Nur zur Erklärung - Oliver kann das noch besser erläutern.

Wenn das Gerät "normal" (als schaltbar) konfiguriert ist, ist der Schaltzustand ja bekannt und die Schwelle nicht notwendig - zumindest bisher.

Wenn das Gerät als "Kein Gerät" konfiguriert ist mit Separater Leistungsmessung, also nur Zähler ohne Schalten, wird die Schwelle benötigt um den Schaltzustand anzuzeigen.
Und genau da liegt, zumindest für mich, das Problem. Da der Schaltzustand nicht bekannt ist (Webhook per HTTP ohne die Möglichkeit einen Status zurück zu melden) müsste ich den Status/Schaltzustand mit einer Einstellung "minimum Watt" bestimmen können. Denn der kleine Shelly ist immer an, sonst wäre das Gerät dahinter nicht online und könnte nicht für den Fernstart eingestellt werden.
Ist das Gerät dahinter auf Fernstart eingestellt, zieht es 1W und damit wird es grün angezeigt.
Eine andere Möglichkeit wäre, die Geräte alle doppelt hinzuzufügen (einmal als http, damit der Webhook funktioniert und einmal als separate Leistungsmessung) aber dann werden sie auch doppelt im UI angezeigt. Ich habe bisher keine Möglichkeit gefunden, die Geräte im UI auszublenden.
openWB series2 standard+
openWB series2 custom inkl. Addon Platine
Goe V3
openWB EVU Kit v2 MID
18,8 kWp PV Ost / West
VW ID3
Audi Q4
warbird
Beiträge: 271
Registriert: Mi Sep 02, 2020 11:14 am

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von warbird »

Im allgemeinen ist das natürlich jammern auf hohem Niveau. Schalten funktioniert und ich sehe ja anhand des angezeigten Verbrauchs, ob das Gerät an ist.... Es wäre schön mit grün und rot aber natürlich kein ko!
openWB series2 standard+
openWB series2 custom inkl. Addon Platine
Goe V3
openWB EVU Kit v2 MID
18,8 kWp PV Ost / West
VW ID3
Audi Q4
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von Gero »

warbird hat geschrieben: Do Nov 10, 2022 11:24 am ...ist der Punkt "Separate Leistungsmessung für das Gerät" bewusst nicht bei HTTP Gerät aufgeführt oder ist der vergessen worden?
Ich würde es so sehen, dass beim http-Gerät es noch ein bisschen ausgefeilter ist, denn dort kann per URL explizit gesagt werden, ob das Gerät an oder aus ist. Da wäre dann eine Wattangabe sozusagen eine Alternative dazu.

In nodeRED ist so ein Status-URL für einen Shelly schnell zusammengeklickt:
stat.jpg
Abrufen tut man ihn mit <ip_der_node_red_installation>:1880/shelly_status oder man klickt auf die blau-graue Inject-Node (beschriftet mit "timestamp") und liest das Ergebnis im debug-output.

Die erste node stellt den URL bereit. Wenn dieser aufgerufen wird, geht es weiter zum http-request, der den Shelly abfragt. Da der JSON zurückliefert, geht es von dort aus in die JSON-Node, die aus dem String ein javascript-Object zusammenbaut. In der function-node wird dann aus dem Objekt der Leistungswert extrahiert und über eine Schwelle entweder 0 oder 1 ausgegeben:

Code: Alles auswählen

if ( msg.payload.meters[0].power > 2 ){
    msg.payload = 1;
}
else {
    msg.payload = 0;
};
return msg;
Die letzte http-Node schließt den ganz links begonnenen http-Request ab.

Hier noch der ganze Flow für Copy&Paste:

Code: Alles auswählen

[{"id":"b8314d012dbf1e53","type":"inject","z":"8464e9a1f0b14075","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":80,"wires":[["fbb056c5e87df507"]]},{"id":"fbb056c5e87df507","type":"http request","z":"8464e9a1f0b14075","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"192.168.8.25/status","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":330,"y":140,"wires":[["dc9ae7fe612d7360"]]},{"id":"dc9ae7fe612d7360","type":"json","z":"8464e9a1f0b14075","name":"","property":"payload","action":"","pretty":false,"x":470,"y":140,"wires":[["7222fb120b2be5fa"]]},{"id":"7222fb120b2be5fa","type":"function","z":"8464e9a1f0b14075","name":"","func":"if ( msg.payload.meters[0].power > 2 ){\n    msg.payload = 1;\n}\nelse {\n    msg.payload = 0;\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":140,"wires":[["fc39b8307e8d5e97","f9fc0b4c367bb7ec"]]},{"id":"fc39b8307e8d5e97","type":"debug","z":"8464e9a1f0b14075","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":80,"wires":[]},{"id":"f4ca577dcb9d7e3e","type":"http in","z":"8464e9a1f0b14075","name":"","url":"/shelly_status","method":"get","upload":false,"swaggerDoc":"","x":130,"y":140,"wires":[["fbb056c5e87df507"]]},{"id":"f9fc0b4c367bb7ec","type":"http response","z":"8464e9a1f0b14075","name":"","statusCode":"","headers":{},"x":770,"y":140,"wires":[]}]
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
warbird
Beiträge: 271
Registriert: Mi Sep 02, 2020 11:14 am

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von warbird »

Gero hat geschrieben: Do Nov 10, 2022 1:57 pm
warbird hat geschrieben: Do Nov 10, 2022 11:24 am ...ist der Punkt "Separate Leistungsmessung für das Gerät" bewusst nicht bei HTTP Gerät aufgeführt oder ist der vergessen worden?
Ich würde es so sehen, dass beim http-Gerät es noch ein bisschen ausgefeilter ist, denn dort kann per URL explizit gesagt werden, ob das Gerät an oder aus ist. Da wäre dann eine Wattangabe sozusagen eine Alternative dazu.

In nodeRED ist so ein Status-URL für einen Shelly schnell zusammengeklickt:

stat.jpg

Abrufen tut man ihn mit <ip_der_node_red_installation>:1880/shelly_status oder man klickt auf die blau-graue Inject-Node (beschriftet mit "timestamp") und liest das Ergebnis im debug-output.

Die erste node stellt den URL bereit. Wenn dieser aufgerufen wird, geht es weiter zum http-request, der den Shelly abfragt. Da der JSON zurückliefert, geht es von dort aus in die JSON-Node, die aus dem String ein javascript-Object zusammenbaut. In der function-node wird dann aus dem Objekt der Leistungswert extrahiert und über eine Schwelle entweder 0 oder 1 ausgegeben:

Code: Alles auswählen

if ( msg.payload.meters[0].power > 2 ){
    msg.payload = 1;
}
else {
    msg.payload = 0;
};
return msg;
Die letzte http-Node schließt den ganz links begonnenen http-Request ab.

Hier noch der ganze Flow für Copy&Paste:

Code: Alles auswählen

[{"id":"b8314d012dbf1e53","type":"inject","z":"8464e9a1f0b14075","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":80,"wires":[["fbb056c5e87df507"]]},{"id":"fbb056c5e87df507","type":"http request","z":"8464e9a1f0b14075","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"192.168.8.25/status","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":330,"y":140,"wires":[["dc9ae7fe612d7360"]]},{"id":"dc9ae7fe612d7360","type":"json","z":"8464e9a1f0b14075","name":"","property":"payload","action":"","pretty":false,"x":470,"y":140,"wires":[["7222fb120b2be5fa"]]},{"id":"7222fb120b2be5fa","type":"function","z":"8464e9a1f0b14075","name":"","func":"if ( msg.payload.meters[0].power > 2 ){\n    msg.payload = 1;\n}\nelse {\n    msg.payload = 0;\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":140,"wires":[["fc39b8307e8d5e97","f9fc0b4c367bb7ec"]]},{"id":"fc39b8307e8d5e97","type":"debug","z":"8464e9a1f0b14075","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":80,"wires":[]},{"id":"f4ca577dcb9d7e3e","type":"http in","z":"8464e9a1f0b14075","name":"","url":"/shelly_status","method":"get","upload":false,"swaggerDoc":"","x":130,"y":140,"wires":[["fbb056c5e87df507"]]},{"id":"f9fc0b4c367bb7ec","type":"http response","z":"8464e9a1f0b14075","name":"","statusCode":"","headers":{},"x":770,"y":140,"wires":[]}]
Dazu noch mal. Heißt du gehst den Umweg über nodeRED, damit du in der OpenWB den Status abfragen kannst. Dort könnte ich dann meine Schwelle definieren?

Das ist auch viel Aufwand ;)

Aktuell funktioniert es mit dem HTTP Gerät, einziger Haken, das Gerät wird bei mehr als 0W als aktiv angezeigt. Wenn ich den Shelly ausschalte, ist das Gerät auch sofort auf rot. Mache ich den Shelly wieder an, ist das Gerät sofort wieder grün, obwohl teilweise weniger als 1W durch die Leitung gehen.

Wäre die Schwelle beim HTTP Gerät machbar und evtl vorgesehen? Wenn ja, bräuchte ich nodeRED nicht als "Middleware". Wenn nein, muss cih wohl experimentieren. Ich kann mir aber nicht vorstellen, dass ich der Einzige mit diesem Anwendungsfall bin oder? :shock:
openWB series2 standard+
openWB series2 custom inkl. Addon Platine
Goe V3
openWB EVU Kit v2 MID
18,8 kWp PV Ost / West
VW ID3
Audi Q4
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von Gero »

Klar ist das aufwändig. Es geht aber so ohne dass man da diesen Parameter neu einprogrammieren muss. Ich würde dann aber auch den IFTTT-Teil mit nodeRED ersetzen.

Vielleicht schreibt @okaegi ja mal sas zu der Idee, alternativ zur status-URL auch noch eine Mindestleistung für das Eingeschaltet sein zu ermöglichen.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
okaegi
Beiträge: 2382
Registriert: Fr Mär 08, 2019 1:57 pm
Has thanked: 1 time
Been thanked: 9 times

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von okaegi »

Also das ist so:
Je nach Gerätetyp wird der onstatus anders erkannt:
Bei shelly wird explizit der on / off Status vom Shelly gemeldet, dort fliesst die aktuelle Leistungsaufnahme vom Shelly nicht in den Entscheid ein.
Bei http gibt es zwei Möglichkeiten.
Wenn nur die Leistungsurl definiert ist, wird das Device als on erkannt wenn > 50 Watt Leistungsaufnahme stattfindet.
Wenn eine Leistungsurl und eine Statusurl definiert ist, wird das Device als on erkannt wenn > 50 Watt Leistungsaufnahme stattfindet oder wenn die Statusurl 1 zurückliefert.
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
warbird
Beiträge: 271
Registriert: Mi Sep 02, 2020 11:14 am

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von warbird »

okaegi hat geschrieben: Do Nov 10, 2022 7:52 pm Also das ist so:
Je nach Gerätetyp wird der onstatus anders erkannt:
Bei shelly wird explizit der on / off Status vom Shelly gemeldet, dort fliesst die aktuelle Leistungsaufnahme vom Shelly nicht in den Entscheid ein.
Bei http gibt es zwei Möglichkeiten.
Wenn nur die Leistungsurl definiert ist, wird das Device als on erkannt wenn > 50 Watt Leistungsaufnahme stattfindet.
Wenn eine Leistungsurl und eine Statusurl definiert ist, wird das Device als on erkannt wenn > 50 Watt Leistungsaufnahme stattfindet oder wenn die Statusurl 1 zurückliefert.
Gruss Oliver
Was passiert, wenn noch zusätzlich "Separate Leistungsmessung für das Gerät" aktiviert ist?
Folgende Konfiguration habe ich:
Gerät:HTTP
Leistungs-URL:"http://ShellyIP/status"
Status-URL:"none"
Separate Leistungsmessung für das Gerät:"Shelly oder Shelly Plus" und dort die ShellyIP

Mein Gerät wird als grün angezeigt, obwohl nicht 1W fliest. Sobald der Shelly "on" ist, ist auch das Gerät grün...das widerspricht der Aussagen >50W
Also kann ich mir das nur so erklären, das durch die "Separate Leistungsmessung für das Gerät" der Response der Leistungs-URL überschrieben/ignoriert wird oder?
Ich bin aber auch überrascht, das "http://ShellyIP/status" als Leistungs-URL funktioniert. Da kommt eine ganze Menge JSON zurück. Steht zwar auch die aktuelle Leistungsaufnahem unter "power" aber das Modul weiß ja nicht, dass es dort ein Shelly abfragt und es nach "power" suchen muss, damit die Leistung gefunden wird oder?
OpenWB Status.png
openWB series2 standard+
openWB series2 custom inkl. Addon Platine
Goe V3
openWB EVU Kit v2 MID
18,8 kWp PV Ost / West
VW ID3
Audi Q4
okaegi
Beiträge: 2382
Registriert: Fr Mär 08, 2019 1:57 pm
Has thanked: 1 time
Been thanked: 9 times

Re: Nutzt ihr noch das "alte" Smart Home (nicht 2.0)?

Beitrag von okaegi »

Schau mal ins Smarthome.log
aktpowerfl = float(urllib.request.urlopen(urlrep, timeout=5).read().decode("utf-8"))
Da kann er sicher kein json output entgegennehmen.
Es funktioniert dann noch so (Ausnahme bei kein Gerät):
A) Openwb ermittelt ob das Gerät an oder aus sein sollte (nach Überschuss und Bezug).
B) Dann ermittelt openwb ob das Gerät an oder aus ist (mit der Leistungsurl).
Wenn a und b abweicht, schaltet Openwb. Die separate Leistungsaufnahme spielt bei b keine Rolle.
Ich verschieb das alles mal in den nächste Tsgen in einen seperaten Treat.
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
Antworten