Seite 3 von 4

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 5. Mai 2021 08:45
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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 5. Mai 2021 08:48
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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 5. Mai 2021 16:03
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!

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 5. Mai 2021 16:12
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.

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 6. Mai 2021 08:13
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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 6. Mai 2021 22:34
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)

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 7. Mai 2021 10:46
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

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 7. Mai 2021 19:46
von udo1toni
Du kannst Channel nicht verwenden, ohne dass diese an ein Item gebunden sind. openHAB legt im Zweifel selbst Items an.

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 8. Mai 2021 17:05
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?

Re: Openhab 2.5 und Anel NET-PwrCtrl HUT einbinden

Verfasst: 10. Mai 2021 15:21
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.