Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Moderatoren: seppy, udo1toni

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von sihui »

Wolle39 hat geschrieben: 30. Apr 2021 14:25 Das Problem ist das ich über PaperUI - Things neu anlegen - HTTP Binding auswählen nicht weiterkomme. Dort kann ich nichts hinzufügen oder auswählen.
Nein, weil du das http1 Binding nutzt. Things und Channels gibt es nur beim HTTP2 Binding.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Wolle39
Beiträge: 66
Registriert: 28. Apr 2021 19:46

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

:)
Zuletzt geändert von Wolle39 am 30. Apr 2021 15:43, insgesamt 2-mal geändert.
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

Wolle39
Beiträge: 66
Registriert: 28. Apr 2021 19:46

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

Bin auf den Code gekommen :)

Switch Kanal1 { http=">[ON:GET:http://192.168.200.49?Sw_on=1] >[OFF:GET:http://192.168.200.49?Sw_off=1]"}

Coole Sache wenn es funktioniert.

Top.
Danke
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von sihui »

Wolle39 hat geschrieben: 30. Apr 2021 15:42 Bin auf den Code gekommen :)
POST wäre dem GET vorzuziehen, aber wenn es so funktioniert ist ja alles gut.

https://www.ionos.de/digitalguide/websi ... t-vs-post/
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Wolle39
Beiträge: 66
Registriert: 28. Apr 2021 19:46

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

Hallo Sihui,

wollte noch Danke für deine Hilfestellung sagen.
Kann jetzt alle Kanäle über HTTP-Binding schalten.

Was noch schön wäre, ist den aktuellen Status der Kanäle auszulesen. Glaube aber nicht das hier Erfolg haben werde, da ich nur diesen Status rausbekomme.

anel1 ;192.168.200.49;NET - Power Control;1619966219;72766;h;7.0;26.4
8.Treppenlichter;0;0;7.Pumpe;0;0;5.Baumhaus;0;0;4.Wasser LED;0;0;5.Wasserlauf;0;0;6.Grillplatz;0;0;7.Baumlichter;0;0;3.Licht EIngang;0;0;
1.Alle Lichter;1;0;2.Wasser Lichter;1;0;IO.3;0;0;IO.4;0;0;IO.5;0;0;IO.6;0;0;IO.7;0;0;IO.8;0;0;

Oder kann man anhand der ; Zeichen quasi die Stelle berechnen für Number?

Gruß Wolle
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von sihui »

Wolle39 hat geschrieben: 2. Mai 2021 14:38 Oder kann man anhand der ; Zeichen quasi die Stelle berechnen für Number?
Das wird wahrscheinlich mit einer der Transformationsarten gehen, ich kann dir aber nicht sagen mit welcher:

https://www.openhab.org/docs/configurat ... formations
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Benutzeravatar
udo1toni
Beiträge: 13942
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Wenn ich es richtig verfolgt habe, bist Du mit OH 2.x unterwegs. Vermutlich ist es dann das einfachste, den Gesamtstatus mit einer Rule auf die einzelnen Items umzulegen. Du bekommst den Gesamtstatus wie im Posting in ein String Item. Dann schreibst Du eine Rule, die das String Item analysiert. Die Rule triggert auf Item anelStatus received update (oder wahlweise Item anelStatus changed)
Jetzt hast Du zwei Möglichkeiten, entweder Du zerlegst den String mit REGEX, oder Du zerlegst den String mit split().
Vorteil REGEX: Du erhältst exakt die Daten zurück, welche Du haben willst. Nachteil: Du musst für jeden Kanal ein eigenes REGEX anwenden.
Vorteil split(); Du musst nur einmal zerlegen. Dafür musst Du aber zählen.
Beispiel:

Code: Alles auswählen

rule "anel Status zerlegen"
when
    Item anelStatus changed
then
    val myList = anelStatus.state.toString.split(";")
    var i = 0
    while ((i=i+1) < myList.size) {  // myList durchlaufen
        switch(myList.get(i)) {      // i-tes Element von myList
            case "8.Treppenlichter": Relais01.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "7.Pumpe"         : Relais02.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "5.Baumhaus"      : Relais03.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "4.Wasser LED"    : Relais04.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "5.Wasserlauf"    : Relais05.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "6.Grillplatz"    : Relais06.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "7.Baumlichter"   : Relais07.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "3.Licht EIngang" : Relais08.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "1.Alle Lichter"  : Relais09.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "2.Wasser Lichter": Relais10.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.3"            : Relais11.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.4"            : Relais12.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.5"            : Relais13.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.6"            : Relais14.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.7"            : Relais15.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
            case "IO.8"            : Relais16.postUpdate(if(myList.get(i+1) == "1") ON else OFF)
        }
    }
end
Da ich nicht weiß, wie Deine Items heißen, habe ich einfach mal Items mit den generischen Namen Relais01 bis Relais16 genommen.
Die Rule durchläuft die Liste der Elemente, die im String durch Semikola voneinander getrennt sind. Falls der Inhalt dem Text entspricht, nimmt es das darauffolgende Element (i+1) und wertet es aus. bei 1 setzt es das passende Item auf ON, sonst auf OFF.
Die Rule ließe sich wesentlich eleganter gestalten, wenn die Namen in der Statusantwort generische wären (also z.B. Relais01 bis Relais16...), dann müsste man lediglich auf den identischen Teil des Namens triggern (if(myList.get(i).toString.startsWith("Relais"))), anschließend die Zahl abtrennen (relNumber = myList.get(i).toString.substring(6,2)) und das passende Item setzen (postUdate("Relais"+relNumber,if(myList.get(i+1) == "1") ON else OFF)).
Das wären dann nur drei Zeilen statt 18 (von denen etwa 90% redundant sind).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Wolle39
Beiträge: 66
Registriert: 28. Apr 2021 19:46

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

Hallo udo1toni,

vielen Dank für deine Antwort und Zeit.
Ich habe das Ganze zuvor mit OpenHAB 2.5 erfolgreich schalten können.
Also nur Schalten der Kanäle über ein angelegtes Items, das ich dann im HabPanel eingebunden habe.

Code: Alles auswählen

Switch Treppenlichter { http=">[ON:POST:http://192.168.200.49?Sw_on=1,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=1,userpassword]"}
Switch Pumpe          { http=">[ON:POST:http://192.168.200.49?Sw_on=2,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=2,userpassword]"}
Switch Baumhaus       { http=">[ON:POST:http://192.168.200.49?Sw_on=3,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=3,userpassword]"}
Switch Brunnen_LED    { http=">[ON:POST:http://192.168.200.49?Sw_on=4,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=4,userpassword]"}
Switch Wasserlauf     { http=">[ON:POST:http://192.168.200.49?Sw_on=5,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=5,userpassword]"}
Switch Grillplatz     { http=">[ON:POST:http://192.168.200.49?Sw_on=6,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=6,userpassword]"}
Switch Baumlichter    { http=">[ON:POST:http://192.168.200.49?Sw_on=7,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=7,userpassword]"}
Switch Licht_Eingang  { http=">[ON:POST:http://192.168.200.49?Sw_on=8,userpassword] >[OFF:POST:http://192.168.200.49?Sw_off=8,userpassword]"}
Darauf hin habe ich OpenHAB 3 installiert und das HTTP Binding installiert.
Jetzt funktioniert das aber mit dem oben genannten Items nicht mehr.

Komm auch nicht wirklich weiter.
Habe ein HTTP URL Thing und Channel angelegt und z.B Treppenlichter verlinkt. Leider bekomme ich nichts zu schalten.

Weiß hier nicht mehr weiter.
Vielleicht kann mir da einer gezielt unter die Arme greifen?

Danke an alle.

Gruß Wolle
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

Benutzeravatar
udo1toni
Beiträge: 13942
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Eventuell hast Du ein paar Dinge nicht korrekt eingetragen :)

Grundsätzlich sollte es ausreichen, ein Thing anzulegen, mit der Base URL http://192.168.200.49.
Unter den erweiterten Einstellungen stellst Du ein, dass für Kommandos POST verwendet wird.
Dann Legst Du 8 Switch Channel an und trägst dort als command URL Extension ?%2s, sowie als On Value Sw_on=1 und als Off Value Sw_off=1 ein (für die Kanäle 2-8 natürlich mit der jeweils anderen Ziffer)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Wolle39
Beiträge: 66
Registriert: 28. Apr 2021 19:46

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

Hallo udo1toni,

Danke für deine Antwort. Das habe ich dann gleich getestet.

Funktioniert leider nicht. Egal was ich auch sonst probiere.

HTTP Thing angelegt und dort die Base URL sowie POST, dann einen Kanal angelegt, im Cxxommand URL Extension ?%2s und bei on Value Sw_on=1 und off Value Sw_off=1 stehen. Hab hier auch schon Sw_on=1,userpassword getestet jedoch kein Erfolg.
Nach Kanal anlegen habe ich diesen mit Add Equipment to Model hinzugefügt und immer getestet.

Was kann das sein? Warum funktioniert es nicht.

Gruß Wolle
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

Antworten