Seite 1 von 1

Switch "Off" mit Bestätigung möglich?

Verfasst: 12. Mai 2020 11:11
von sonic
Liebe Community,

leider habe ich nichts passendes gefunden.
Es geht darum einen bestimmten Switch erst nach erneuter Bestätigung auf "Off" zu schalten, damit dieser nicht ausversehen aus geschaltet wird.

Code: Alles auswählen

Switch item=Wildkuehlung_ label="Wildkühlung Ein/Aus" icon=own_sau
Das Einschalten soll ganz normal funktionieren. Beim Ausschalten hätte ich gerne eine erneute Abfrage wie zum Beispiel "Wirklich aussachalten" die dann nochmal bestätigt werden muss.

Ist das möglich?

Vielen Dank schonmal und liebe Grüße
Bernhard

Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 12. Mai 2020 14:17
von udo1toni
Nachfragen sind grundsätzlich nicht möglich, allerdings könntest Du etwas in der Richtung realisieren. Dazu brauchst Du ein zusätzliches Item und ein bisschen Code. So würde ich das realisieren:
Items:

Code: Alles auswählen

Switch Wildkuehlung "Wildkuehlung" { channel="..." }
Number WildKuehlungAus 
Sitemap:

Code: Alles auswählen

Switch item=Wildkuehlung label="Wildkühlung ist Aus" icon=own_sau mappings=[ON="Einschalten"] visibility=[Wildkuehlung==OFF]
Switch item=WildkuehlungAus label="Wildkühlung ist An" icon=own_sau mappings=[2="Ausschalten"] visibility=[WildkuehlungAus==1]
Switch item=WildkuehlungAus label="Wildkühlung wirklich aus?" icon=own_sau mappings=[0="OK", 1="Cancel" ] visibility=[WildkuehlungAus==2]
Rules:

Code: Alles auswählen

var Timer tTimeout = null

rule "Wildkühlung an"
when
    Item Wildkuehlung received command ON
then
    WildkuehlungAus.postUpdate(1)
end

rule "Wildkühlung aus"
when
    Item WildkuehlungAus received command
then
    if(!(receivedCommand instanceof Number)){
        WildkuehlungAus.postUpdate(1)
        return;
    }
    tTimeout?.cancel
    if(receivedCommand == 2) {
        tTimeout = createTimer(now.plusSeconds(10), [|
            WildkuehlungAus.postUpdate(1)
        ])
    } else if(receivedCommand == 0) {
        Wildkuehlung.sendCommand(OFF)
        WildkuehlungAus.postUpdate(0)
    }
end
Getestet habe ich das jetzt nicht, aber hier die Theorie dazu:

Im ausgeschalteten Zustand wird das normale Widget angezeigt, mit einer Schaltfläche zum Einschalten. Wird es eingeschaltet, so wird dieses Widget ausgeblendet und durch ein anderes Widget ersetzt, welches genauso aussieht, mit dem Untercchied, dass es mit einem anderen Item verbunden ist und die Schaltfläche zum Ausschalten dient.
Wird die Ausschaltfläche betätigt, wird auch dieses Widget ausgeblendet und durch das nächste Widget ersetzt, welches "die Nachfrage stellt".
Die Rule startet derweil einen Timer, der das Item nach 10 Sekunden wieder auf 1 setzt (Normalzustand Wildkuehlung ON)
Wird vorher die Schaltfläche Cancel betätigt, wird der Timer abgebrochen und das Item direkt auf 1 gesetzt.
Wird die Schaltfläche OK betätigt, wird Wildkuehlung OFF gesendet und das Item auf 0 gesetzt. Damit ist der Normalzustand Wildkuehlung OFF erreicht.
Man könnte auch ausschließlich mit dem Proxy Item in der Sitemap arbeiten, der Punkt ist die Verwendung der Visibility.

Beim Systemstart muss eine weitere Rule prüfen, ob Wildkuehlung ON oder OFF ist und WildkuehlungAus entsprechend auf 0 oder 1 setzen.

Achtung! Wenn man an der Sitemap arbeitet, ist es wichtig, openHAB anschließend neu zu starten, damit die Sitemap korrekt funktioniert.

Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 12. Mai 2020 17:22
von sonic
Vielen Dank für deine Mühe,

ich werde es morgen direkt testen und dann natürlich hier Rückmeldung geben. Der Workaround klingt aber logisch und sollte klappen :-)

Bis morgen und einen schönen Abend

Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 15. Mai 2020 09:37
von sonic
Leider funktioniert es so nicht,
es wird auch in der sitemap im browser etwas anders angezeigt als in der ios app.

es geht um den Frame "Test", der obere Bereich funktioniert normal. Ich werde weiter testen und bei Erfolg Rückmeldung geben.

der broker (via paper ui angelegt):

mqtt:broker:mqtt_broker

item:

Code: Alles auswählen

Switch Wildkuehlung "Wildkuehlung"  {mqtt=">[mqtt_broker:cmnd/wildkuehlung/POWER:command:*:default], <[mqtt_broker:stat/wildkuehlung/POWER:state:default]"}
Number WildKuehlungAus
IMG_0030.PNG
Bildschirmfoto 2020-05-15 um 09.33.41.png

Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 15. Mai 2020 10:01
von udo1toni
Ja ich hab einen Tippfehler drin. Die Schreibweise für die Items muss immer identisch sein, also entweder überall WildkuehlungAus oder überall WildKuehlungAus.

Gesendet von meinem SM-G973F mit Tapatalk


Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 15. Mai 2020 10:11
von sonic
Ahhhh, das habe ich auch total übersehen. PERFEKT. Damit funktioniert alles.

HERZLICHEN DANK

Re: Switch "Off" mit Bestätigung möglich?

Verfasst: 15. Mai 2020 10:12
von udo1toni

sonic hat geschrieben:Ahhhh, das habe ich auch total übersehen.
Ich ja auch [emoji6]

Gesendet von meinem SM-G973F mit Tapatalk