Seite 1 von 1

Item in mehreren Gruppen

Verfasst: 15. Sep 2019 20:03
von madmike
Hallo zusammen,

ich möchte gerne eine Gruppe machen, womit ich alle Switch Items einmal ein und wieder ausschalte, um die einsprechenden Anzeigen nach einem Reboot zu erhalten.
Meine Frage ist nun kann ich ein Item mehreren Gruppen zuordnen ? und wenn ja wie ?
Bisher habe ich den Gruppennamen einfach in ein Klammer mit eingesetzt z.B so:

Code: Alles auswählen

Switch WohnzimmerVitrine            "Vitrine []"                       <light>        (gWZ) ["Lighting"]    { channel="mqtt:topic:OH2mqtt:Wohnzimmer:ch4" }
(gWZ) ist Gruppe, wenn ich nun die Gruppe gRST zufügen möchte sieht es dann so aus ??

Code: Alles auswählen

Switch WohnzimmerVitrine            "Vitrine []"                       <light>        (gWZ ,gRST) ["Lighting"]    { channel="mqtt:topic:OH2mqtt:Wohnzimmer:ch4" }
oder so:

Code: Alles auswählen

Switch WohnzimmerVitrine  "Vitrine []"                       <light>        (gWZ) (gRST) ["Lighting"]       { channel="mqtt:topic:OH2mqtt:Wohnzimmer:ch4" }
Wer hat einen Tipp ?
Danke
Madmike

Re: Item in mehreren Gruppen

Verfasst: 15. Sep 2019 21:08
von udo1toni
Die erste Variante ist die richtige. Du kannst ein Item beliebig vielen Gruppen zuordnen. Gruppen können beliebig viele Items aufnehmen. Gruppen können Gruppenitems enthalten.

Andere Frage: Welche Bindings nutzt Du? Ich habe bei mt knx im Einsatz, das ist natürlich Luxus, aber auch andere Bindings unterstützen das Einlesen der Status ohne Schaltvorgang (kommt natürlich auf das Binding an).

Re: Item in mehreren Gruppen

Verfasst: 15. Sep 2019 21:19
von madmike
Hallo Udo,

danke für Deine schnelle Antwort. in der Hauptsache nutze ich das Mqtt-Binding 2.4. Hier musste ich feststellen wenn sich mein raspi mal aufgehängt hat, und ich ihn dann durchstarte erscheinen alle Switch zwar ausgeschaltet, aber die Schaltsignalisierung sagt sie wären eingeschaltet. Also z.B. das Icon light zeigt eingeschaltetet Modus, obwohl alles aus sein müsste. Kommt nicht oft vor, aber so kann ich das ganze einmal komplett neusetzen, anstatt von Raum zu Raum zu gehen und zu schalten bzw jedes Item einmal zu schalten. Zum anderen möchte ich so eine sprachgesteuerte Panikauslösung für Alexa bauen. Alle Geräte an und es wird verdammt hell im Haus und im Garten.
Danke nochmals und einen angenehmen Abend
madmike

Re: Item in mehreren Gruppen

Verfasst: 15. Sep 2019 22:20
von udo1toni
Bei mqtt gibt es die Retention um den Zustand auf mqtt-Ebene zu sichern.
Wenn Retention auf true gesetzt ist (das muss der Sender tun, also z.B. ein Sonoff Relais), wird der Broker den Zustand speichern.
Der Witz dabei ist, dass die Retention auch einen Neustart des Brokers überlebt.
openHAB erfährt beim Abbonieren der Topics automatisch den aktuellen Status.

Der "Alles An" Knopf geht aber natürlich auch, allerdings sollte man den Einschaltstrom im Auge behalten (je nach Größe des Objekts kommt ja schon einiges zusammen).

Man kann auch einfach nur alle Lampen ausschalten. Es gibt bei dynamischen Icons nicht nur jeweils eines für ON und OFF, sondern auch ein "default" Icon, welches angezeigt wird, wenn kein gültiger Status anliegt (also z.B. NULL) Es sollte also ausreichen, einfach alle Items auf off zu setzen (mit postUpdate).
Weiterhin könntest Du auch einfach mapdb verwenden, um den letzten bekannten Zustand wiederherzustellen. Wohlgemerkt geht es dabei ausschließlich um die Anzeige in openHAB, es werden keine Befehle nach mqtt gesendet.

Als Panikschaltung könnte man das Licht in Stufen einschalten, also z.B. so:

Code: Alles auswählen

// globale Variablen werden immer zu Beginn der Rules-Datei definiert!
var Timer tPanik = null

rule "Panik"
when
    Item Paniktaster received command ON
then
    tPanik?.cancel
    tPanik = createTimer(now.plusMillis(100),[|
        if(gPanikLicht.members.filter[l | l.state != ON].size > 0) {
            gPanikLicht.members.filter[l | l.state != ON].head.sendCommand(ON) 
            tPanik.reschedule(now.plusMillis(750))
        } else
            tPanik = null
    ])
end
Der Code wird getriggert, sobald das Item Paniktaster ein ON empfängt. Anschließend wird ein Timer gestartet, der alle nicht eingeschalteten Lichter nacheinander einschaltet, mit jeweils 750 Millisekunden Abstand. Die einzuschaltenden Lichter müssen zur Gruppe gPanikLcht gehören.

Solange noch nicht alle Lichter eingeschaltet sind, wird auch das Auschalten eines Lichts nicht funktionieren, da es fast unmittelbar wieder eingeschaltet wird.

Re: Item in mehreren Gruppen

Verfasst: 17. Sep 2019 13:30
von madmike
Hallo Udo,

eine sehr geile Lösung, darüber habe ich bisher noch gar nicht nachgedacht. Die werde ich gleich mal probieren.
Vielen lieben Dank
Madmike