Fensterkontakt Status

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02

Re: Fensterkontakt Status

Beitrag von tommesd »

ich habe Dein Script mal getestet. Bei val zielStat und zielNum muss es doch g.state und g.number heißen, oder?
Dann kommt wieder die members exception.

Code: Alles auswählen

2022-03-13 09:46:14.020 [INFO ] [rg.openhab.core.model.script.gwindow] - Rule ausgelöst: Fenster_Buero_VorneSTATE

2022-03-13 09:46:14.024 [INFO ] [rg.openhab.core.model.script.gwindow] - aktuelles Item: gFenster_Buero

2022-03-13 09:46:14.027 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test2-1' failed: 'members' is not a member of 'org.openhab.core.types.State'; line 23, column 20, length 15 in test2

==> /var/log/openhab/events.log <==

2022-03-13 09:46:13.825 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Fenster_Buero_VorneSTATE' changed from TILTED to OPEN
Außerdem benötige ich die Anzahl offener Fenster in einem Item, da dieses wiederum in einem Widget eingetragen werden.
Kann es sein,dass man keine dynamischen Itemnamen aus anderen Items (z.B. triggeringItem) bilden und Werte übergeben kann? Wenn dem so wäre dann muss ich eben die Rule für jeden Raum einmal schreiben und dann ist Ruhe.
Openhabian 4.0.4

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Nein...

Wie erwähnt, war ich gestern etwas in Eile...

Code: Alles auswählen

rule "update group status" 
when
    Member of gFenster_Schlafzimmer changed or
    Member of gFenster_Paul changed or
    Member of gFenster_Julia changed or
    Member of gFenster_Badezimmer changed or
    Member of gFenster_WC changed or
    Member of gFenster_Garage changed or
    Member of gFenster_Kueche changed or
    Member of gFenster_Esszimmer changed or
    Member of gFenster_Wohnzimmer changed or
    Member of gFenster_Buero changed or
    Member of gFenster_Waschkeller changed or
    Member of gFenster_Vorratskeller changed or
    Member of gFenster_Gaestezimmer changed or
    Member of gFenster_Hobbyraum changed
then
    logInfo("gwindow","Rule ausgelöst: {}",triggeringItem.name)

    val String strRaum = triggeringItem.name.split("_").get(1)                      // Format des Itemnamens: Fenster_Raum_weiteres

    val GroupItem g = gFenster_alle.members.filter[k|k.name.contains(strRaum)].head // Die Gruppe, welche die Rule getriggert hat
    logInfo("gwindow","Group Item: {}",g.name)
    val Integer intAnzahl = g.members.filter[i|i.state != "CLOSED"].size            // Anzahl der Fenster der Gruppe, die nicht geschlossen sind
    val zielStat = gstate.members.filter[j|j.name.contains(strRaum)].head           // das Item der Gruppe gstate, welches zum Raum gehört
    val zielNum = gnumber.members.filter[j|j.name.contains(strRaum)].head           // das Item der Gruppe gnumber, welches zum Raum gehört
    logInfo("gwindow","Anzahl Itemname: {} ({})",zielNum.name,intAnzahl)
    logInfo("gwindow","Zustand Itemname: {} ({})",zielStat.name,if(intAnzahl > 0) OPEN else CLOSED)
    if(intAnzahl > 0)
        zielStat.postUpdate(OPEN)
    else
        zielStat.postUpdate(CLOSED)
    zielNum.postUpdate(intAnzahl)
end
Die Items, welche die Anzahl pro Raum halten sollen (und die, welche den Status pro Raum halten sollen) müssen jeweils in eine eigene Gruppe, die ich im Code einfach gstate und gnumber genannt habe. gstate und gnumber sind also zwei Group Items.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

tommesd
Beiträge: 70
Registriert: 15. Nov 2021 10:02

Re: Fensterkontakt Status

Beitrag von tommesd »

Ich konnte es nun endlich testen und was soll ich sagen, es läuft perfekt !!!
Openhabian 4.0.4

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

:D
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Tobii
Beiträge: 53
Registriert: 18. Sep 2020 19:43

Re: Fensterkontakt Status

Beitrag von Tobii »

Hallo,

ich war eigentlich schon komplette fertig mit der Integration so wie ich es haben wollte, es hat mir nur noch die deutsche Ausgabe gefehlt. Die map Integration installiert und zack, nichts funktioniert mehr. 2 Stunden lang nach Fehlern gesucht, begonnen mit der LED am Aktor, funktioniert ohne Probleme. Sämtliche Kontakte gelöscht, nur einen Kontakt neu hinzugefügt, nichts funktioniert. Rolle rückwärts, things, item und sitemap auf switch. Funktioniert, ich kann offen und geschlossen sehen. Nur möchte ich keinen switch Button sondern nur einen Text und dieser will nicht mehr funktionieren.

Vor der Transformation hatte ich die things auf Switch, item auf Contact und sitemap auf Text. Ich bin sicher dass hier das Problem liegt, jedoch bin ich vorerst mit meinem Latein am Ende.

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

Re: Fensterkontakt Status

Beitrag von udo1toni »

Bitte sei doch so gut, wenn Du Dich schon an ein Thema hängst, welches längst erledigt ist, schreibe nicht nur "Ich habe alles mögliche gemacht", sondern zeige konkret Deine Konfiguration.
Besser wäre es, ein neues Thema aufzumachen.

Insbesondere wichtig: Welche Version von openHAB läuft? Welche Ansicht ist gemeint? Welches Binding wird genutzt (im konkreten Zusammenhang)?

"Die deutsche Ausgabe" ist leider auch zu allgemein. Es gibt einige Stellschrauben, um englische Ausgaben auf deutsch zu erhalten. Unter openHAB2 brauchst Du den MAP Transformation Service, wenn es um die Abbildung von Status in der Sitemap geht. Die Installation einer zusätzlichen Komponente (hier MAP Transormation Service) allein hat niemals Auswirkungen auf das restliche System. Erst wenn etwas konfiguriert wird, hat das Auswirkungen.
Wenn also "zack, nichts funktioniert" eintritt, ist die einzige Rolle rückwärts, den Teil der Änderungen an der Konfiguration zurückzunehmen, den man gerade vorgenommen hat.
Es bietet sich auch an, Änderungen erst mal nur an einem einzelnen Item oder Thing vorzunehmen.

Wenn Du in der Sitemap bist und nur eine Anzeige, aber keine Schaltfläche haben willst, musst Du das Text Widget nehmen. Dieses Problem hält sich hartnäckig... In der Sitemap werden Widgets konfiguriert. Ein Parameter des Widgets ist der Itemname. Aber welches Widget verwendet wird, hat nur wenig mit dem Itemtyp zu tun! Man kann ohne weiteres ein Number Item an ein Switch Widget koppeln. Oder ein Switch Item an ein Selection Widget, oder eben auch an ein Text Widget. Das Text Widget gibt nur Informationen aus, bietet aber keine Eingabemöglichkeit.

Grundsätzlich kannst Du einen Switch Channel nicht erfolgreich an ein Contact Item koppeln, jedenfalls nicht ohne weitere Maßnahmen zu ergreifen. Wenn es also vorher wie von Dir beschrieben funktioniert hat, dann hast Du noch etwas anderes (unkonventionelles) getan.

Meine erste Vermutung hier ist, dass Du MAP an der falschen Stelle verwendest. Es gibt insgesamt mindestens zwei Stellen, an denen MAP konfiguriert werden kann - abhängig vom Binding kommt noch eine weitere Stelle dazu. Es ist niemals egal, an welcher Stelle man die Transformation durchführt.
Beispiel:
Im MQTT Binding kann ich eine incomingValueTransformation setzen. Damit wird der ankommende Wert in ein bestimmtes Format gewandelt. Hier kommt gerne JSONPATH zur Anwendung, weil MQTT gerade Messwerte meist als JSON Objekt ausliefert. Alternativ kann man aber die Transformation auch im Link zum Item vornehmen, aber dann muss der Channeltyp zwingend String sein, weil im Channel das gesamte JSON Objekt gehalten wird. Gleichgültig an welcher der beiden Stellen die Transformation ausgeführt wird, wird der Wert beeinflusst, der im Item landet. Wenn ich also an einer dieser beiden Stellen aus OPEN/CLOSED ein OFFEN/GESCHLOSSEN mache, so werden anschließend exakt diese Werte im Item gespeichert. Nur kennt ein Contact Item exakt die Werte OPEN, CLOSED, NULL und UNDEV. OFFEN und GESCHLOSSEN sind hingegen keine Werte des Typs OnOffType, sondern es handelt sich um Strings.
Wenn Du die Werte auf deutsch angezeigt bekommen willst, darfst Du deshalb das Mapping auch nur in der Anzeige des Items vornehmen. Dort wird der im Item gespeicherte Status erst in dem Moment übersetzt, wo das Item angezeigt wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten