Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Moderatoren: seppy, udo1toni

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von Wolle39 »

Ich hab´s herausgefunden :) .

bei Command URL Extension hab ich %2$s eingesetzt und bei on Value ?Sw_on=1,userpassword.
Das Ganze funktioniert nun mit OpenHAB 3 und Anel.

Gruß Wolle
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 »

Hallo udo1toni,

bin ja jetzt mit OpenHAB 3 unterwegs.
Den Status abzufragen und vorallem an die Temperatur ranzukommen wäre natürlich Weltklasse.

Du hast mir schon ein rule geschrieben.
Diese Sache ist für mich jetzt auch noch Neuland.
Wie kann ich das Ganze einbinden und mit meinen Kanälen verbinden?

Danke Dir.

Gruß Wolle

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
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Wolle39 hat geschrieben: 5. Mai 2021 08:45 Ich hab´s herausgefunden :) .

bei Command URL Extension hab ich %2$s eingesetzt und bei on Value ?Sw_on=1,userpassword.
Das Ganze funktioniert nun mit OpenHAB 3 und Anel.

Gruß Wolle
Prima!
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Wolle39 hat geschrieben: 5. Mai 2021 08:48 Hallo udo1toni,

bin ja jetzt mit OpenHAB 3 unterwegs.
Den Status abzufragen und vorallem an die Temperatur ranzukommen wäre natürlich Weltklasse.
Na, Du hattest ja schon geschrieben, dass Du den Status nur gemeinsam für alle Relais bekommst. Da muss es ja auch eine URL geben. Da der Status für alle Channel gemeinsam kommt, legst Du einen zusätzlichen Channel an (vom Typ String) der nur für die Status der Relais da ist, der Channel bekommt also nur die state extension (analog zur command extension in den anderen Channels). Wenn die Antwort so läuft, wie von Dir weiter oben beschrieben, müssen nur die passenden Bits den Relais zugeordnet werden.
Wie oben erwähnt, wäre es das Einfachste, wenn man den Namen der Channel direkt aus dem Status ablesen könnte, denn reduziert sich der notwendige Rule Code. Du solltest also im Anel die Channel generisch benennen, z.B. Relais1 bis Relais8 (ach so... sind es nun 8 oder 16 Kanäle?) Und die Items, welche die Relais schalten, benennst Du passend, so dass man den Namen des zugehörigen Items "errechnen" kann.
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 udi1toni,

hab jetzt einen weiteren Channel (String) im HTTP Binding Anel angelegt.
Unter State URL Extension ?Stat=userpassword hinzugefügt. ?Stat=userpassword gibt den Status der Anel aus.

anel1 ;192.168.200.49;NET - Power Control;1620288622;89041;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;1;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;

Soweit so gut.
Jetzt kommt meine Wissenslücke. Dein Code habe ich als per Visual Code in den Ordner rules als Anel_status.rules angelegt.
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

Wie bekomme ich jetzt den Status der einzelnen Kanäle oder auch der Temperatur zum einbinden?

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

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Na, Du musst jetzt dafür sorgen, dass die richtigen Items angesteuert werden.

Ich gehe mal davon aus, dass da nur ein Semikolon fehlt und auch keine Absätze mit in der Antwort sind.

Die Rule durchläuft alle Elemente der Antwort (ein Element beginnt jeweils nach dem Semikolon und endet jeweils vor dem Semikolon).
Wenn der Name des Kanals erkannt wird, wird das nächste Element ausgewertet und dessen Status in das passende Item geschrieben.

Eine Bitte: Wenn Du Code postest, bitte markiere ihn mit Code Tags (im vollständigen Editor ist das der Knopf mit dem </> drauf)
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 »

OK. Kapier ich nicht.

Der Code von dir, ist eine Rule der auch in den Ordner Rule gehört. Oder? Diesen habe ich dort auch so abgespeichert.

Du schreibst: "Ich gehe mal davon aus, dass da nur ein Semikolon fehlt und auch keine Absätze mit in der Antwort sind."

Was das Rule macht und wie es an die Daten kommt habe ich verstanden. Ich verstehe jetzt nicht, wie die Antwort in ein Item kommen soll.
Item hab ich bisher für die Kanäle keine gebraucht. Muss ich in dem Fall ein Item für jeden Kanal anlegen um dort den Status abgreifen zu können?

Verstehe da den zusammen hang noch nicht.

Entschuldige bitte meine blöden Fragen. Aber ich hab´s einfach noch nicht verstanden.

Gruß Wolle

PS: Das mit Code mache ich in Zukunft
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Du kannst Channel nicht verwenden, ohne dass diese an ein Item gebunden sind. openHAB legt im Zweifel selbst Items an.
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 »

Ich hab einen Channal (String) für die Status abfrage angelegt.
Deinen Code unter Rule ab gespeichert. Die Namen der Kanäle sind im Code und bei den Items identisch.

Wie verbinde ich jetzt den Status zum entsprechenden Item?
Gruß Wolle
--------------------------------------------------------
Windows 11 und openHAB 4 im Einsatz

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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Beitrag von udo1toni »

Na, Du musst den Channel mit dem Item verlinken. Wie hast Du die Things angelegt? Falls über UI, findest Du die Funktion direkt beim Channel (der leere Kreis). openHAB erlaubt nur die Verlinkung mit passenden Item Typen, Du kannst aus dem Dialog heraus auch neue Items erzeugen.
Falls Du über Textdateien konfigurierst, musst Du in der Items-Datei den Link eintragen. Aber falls Du mit Textdateien arbeitest, wäre der einfachste Weg, VSCode zu verwenden. Dieser Editor hat eine hervorragende Pluginschnittstelle, und für openHAB gibt es ein tolles Plugin, welches - korrekte Konfiguration mal vorausgesetzt - automatisch eine Liste mit allen Things und allen verfügbaren Channels anzeigt. Aus dieser Liste heraus lassen sich über das Kontextmenü Items automatisch erstellen (mitsamt Link und vernüntigem Namen), dazu muss lediglich zunächst eine *.items Datei geöffnet, und der Cursor in einer Leeren Zeile positioniert sein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten