Tür-/ Fensterkontakte OH2

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mike-eddk
Beiträge: 13
Registriert: 9. Mär 2020 08:41
Answers: 0

Tür-/ Fensterkontakte OH2

Beitrag von mike-eddk »

Hallo, ich habe OP2 im docker am laufen.
Für meine Türkontakte möchte ich die Daten über die API der Phoscon API einlesen und verarbeiten, die Phoscon App läuft auf einer anderen Maschine.
Die AP liefert:

Code: Alles auswählen

{
    "config": {
        "battery": 100,
        "on": true,
        "reachable": true,
        "temperature": 1800
    },
    "ep": 1,
    "etag": "342c39352e9",
    "lastannounced": null,
    "lastseen": "2022-01-26T14:42Z",

    "name": "BUE-Fenster",
    "state": {
        "lastupdated": "2022-01-26T14:42:58.136",
        "open": false
    },
    "swversion": "20161128",
    "type": "ZHAOpenClose",
}
als items habe ich

Code: Alles auswählen

String BUE_tuer_kontakt  "Büro  Test"  
Number BUE_tuer_kontakt_state "Bürofenster "  { http="<[http://10.1.5.9/api/19DAC689BB/sensors/20:1500:JSONPATH($.state)]" }
und als rule:

Code: Alles auswählen

rule "Change_BUE_kontakt"
when
	Item BUE_tuer_kontakt_state changed 
then
      var String value = transform("JSONPATH", "$.open", BUE_tuer_kontakt_stage.toString)
      if ( value == 'true'){
              switchstate = "offen"
              // Pushnachricht
      } else {
            switchstate = "geschlossen"
      }

    BUE_tuer_kontakt.postUpdate(switchstate)
end
Leider ist "state.open" immer NULL.

Ich hab schon einiges probiert, bei den Temperaturen und Luftfeuchtigkeiten über die gleiche API funktioniert das, kann mir jemand auf die Sprünge helfen?
Am Ende möchte ich einen Anzeige "offen" / "geschlossen" und ein Pushnachricht über telegram

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

Re: Tür-/ Fensterkontakte OH2

Beitrag von udo1toni »

Bitte vermeide unbedingt Doppelpostings, das ist echt sehr nervig, ständig das selbe Posting zu sehen zu bekommen, unter unterschiedlichen Titeln. Die Wahrscheinlichkeit einer Antwort steigt dadurch nicht.

Hast Du JSONPATH installiert?
Hast Du das http1 Binding installiert?

Warum openHAB2?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mike-eddk
Beiträge: 13
Registriert: 9. Mär 2020 08:41
Answers: 0

Re: Tür-/ Fensterkontakte OH2

Beitrag von mike-eddk »

Sorry, den ersten Post hab ich, so dachte ich gelöscht, weil in der falschen Kategorie.

JSONPATH und http1 Binding sind installiert, ich frag ja schon viele verschiedene Sensoren ab.

Ich hab das System schon lange am laufen und auch schon versucht auf OP3 umzusteigen, ha b da aber noch lange nicht all das umsetzen geschafft was ich bee OH2 bereits nutze.

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

Re: Tür-/ Fensterkontakte OH2

Beitrag von udo1toni »

Wo ich gerade auf Deinen Code schaue... Du lädst $.state in ein Number Item. Number Items können keine Strings aufnehmen, nur Zahlen. $.state liefert aber

Code: Alles auswählen

{
        "lastupdated": "2022-01-26T14:42:58.136",
        "open": false
    }
Es ist immer eine gute Idee, bei solchen Abfragen zunächst mit einem String Item zu beginnen, das kann jegliche Status aufnehmen. Erst wenn man so sichergestellt hat, dass der Inhalt sicher immer eine Zahl ist, ändert man den Itemtyp auf Number ab. Eigentlich möchtest Du ein Contact Item als Ziel haben, was leider mit openHAB2 nicht ohne Verrenkungen geht. Allerdings wäre die sauberer Variante diese hier:

Code: Alles auswählen

Contact BUE_tuer_kontakt  "Büro Fenster [%s]"  
String BUE_tuer_kontakt_state "Bürofenster "  { http="<[http://10.1.5.9/api/19DAC689BB/sensors/20:1500:JSONPATH($.state.open)]" }

Code: Alles auswählen

rule "Setze BUE_kontakt"
when
    Item BUE_tuer_kontakt_state changed
then
    var soll = CLOSED
    if(newState == "true")
        soll = OPEN
    BUE_tuer_kontakt.postUpdate(soll)
end
Wohlgemerkt: soll ist keine String Variable! newState ist eine implizite Variable, die zur Verfügung steht, sobald die Rule durch ein changed getriggert wurde. Wahlweise kannst Du natürlich auch den Itemnamen verwenden: if(BUE_tuer_kontakt_state.state.toString == "true")
Ginge auch als Einzeiler ;)

Code: Alles auswählen

rule "Setze BUE_kontakt"
when
    Item BUE_tuer_kontakt_state changed
then
    BUE_tuer_kontakt.postUpdate(if(BUE_tuer_kontakt_state.state.toString == "true") OPEN else CLOSED)
end
Die Verrenkung wäre übrigens, eine JS Transformation zu schreiben, welche das JSNOPATH ergebnis direkt auswertet und als Ausgabe OPEN oder CLOSED liefert. Dann kann man direkt ein Contact Item verwenden, ganz ohne Umweg über Rules.

das Contact Item kann dann direkt das Fenster-Icon dynamisch anzeigen (offen/geschlossen) und wenn Du beim Item den Text in deutsch stehen haben möchtest, nimmst Du die MAP Transformation und packst sie mit ins Label. Damit wird dann nur die Anzeige beeinflusst.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mike-eddk
Beiträge: 13
Registriert: 9. Mär 2020 08:41
Answers: 0

Re: Tür-/ Fensterkontakte OH2

Beitrag von mike-eddk »

Danke dir, funktioniert prima, hab auch die Pushnachricht mit telegram hin bekommen.
Wie bekomm ich die MAP jetzt in das Label, im transform-Ordner liegt eine de.map drin?

Bezüglich OH3 brauch ich noch mehr Unterstützung, such noch jemanden der mit mal ne Stunde über die Schulter schaut, was ich da bei den Schalten so falsch mache. Hatte versucht die alten Daten einfach zu migrieren, leider ohne Erfolg.

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

Re: Tür-/ Fensterkontakte OH2

Beitrag von udo1toni »

Na, Du definierst das Item so:

Code: Alles auswählen

Contact BUE_tuer_kontakt  "Büro Fenster [MAP(de.map):%s]"
Wahlweise kannst Du die de.map anpassen oder auch eine eigene contact.map oder meinwunschname.map im selben Verzeichnis anlegen, Inhalt ist immer Wert links vom Gleichheitszeichen wird durch Wert rechts vom Gleichheitszeichen ersetzt.
Links vom Gleichheitszeichen müssen Leerzeichen escapet werden (Dies\ ist\ ein\ Text\ mit\ Leerzeichen=Wer denkt sich denn so einen Schwachsinn aus?).
Anführungszeichen werden als Teil des Status angesehen, dürfen also nur da stehen, wenn sie auch im Status vorkommen (also eher nicht...).
Die Schreibweise ist exakt anzugeben, ON, On, on und oN sind vier verschiedene Zustände...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mike-eddk
Beiträge: 13
Registriert: 9. Mär 2020 08:41
Answers: 0

Re: Tür-/ Fensterkontakte OH2

Beitrag von mike-eddk »

Funktioniert leider noch nicht, es wird immer noch CLOSED / OPEN angezeigt

Code: Alles auswählen

Contact BUE_tuer_kontakt  "Büro Fenster [MAP(zimmer.map):%s]"  
String  BUE_tuer_kontakt_state "Bürofenster" { http="<[http://10.1.5.9/api/19DAC689BB/sensors/20:1000:JSONPATH($.state.open)]" }
meine transform/zimmer.map

Code: Alles auswählen

CLOSED=geschlossen
OPEN=geöffnet
Eine weitere Frage wäre, wie bekomme ich das Mapping auch bei den Nachrichten hin?
telegram.rules

Code: Alles auswählen

rule "Status BUE_kontakt"
when
    Item BUE_tuer_kontakt changed
then
        sendTelegram("bot1", "Bürofenster Status geändert: %s",BUE_tuer_kontakt.state)

end

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

Re: Tür-/ Fensterkontakte OH2

Beitrag von udo1toni »

Hast Du die MAP Transformation auch installiert?

Innerhalb er Rule kannst Du den Transformation Service ebenfalls aufrufen, dort als Action:

Code: Alles auswählen

val String state_de = transform("MAP", "zimmer.map", BUE_tuer_kontakt.state.toString)
Anschließend kannst Du den String im sendTelegram einfach zusammensetzen.

Code: Alles auswählen

sendTelegram("bot1", "Bürofenster Status geändert: " + state_de)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mike-eddk
Beiträge: 13
Registriert: 9. Mär 2020 08:41
Answers: 0

Re: Tür-/ Fensterkontakte OH2

Beitrag von mike-eddk »

MAP Transformation installiert und schon gehts, Danke Dir!

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

Re: Tür-/ Fensterkontakte OH2

Beitrag von udo1toni »

:)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten