zigbee2mqtt | ein false fungiert als toggle | Template zigbee2mqtt_alarm_sound

Begonnen von holle75, 08 März 2025, 16:14:38

Vorheriges Thema - Nächstes Thema

holle75

Hello,

ich versuche eine Zigbee-"Sirene" (eher sirenchen) mit zigbee2mqtt einzubinden. Das hat gut funktioniert.
Wenn ich vom z2m Dashboard aus den alarm auf true stelle und dann false, macht das Gerät was es soll. Es unterbricht den Alarm.

Wenn ich in fhem ein

set Device alarm false

absetze fungiert das als toggle und nicht dem eigentlichen Zweck. Will sagen, wenn Alarm false und man ruft false auf, wird ein true daraus.
Wenn true macht das false gar nichts. Ich dachte erst, ok, ein losgetretener Alarm muss zuende laufen. Aber das z2m Dashboard (und auch der Event-Monitor) beweisen anderes.... wenn true und man settet false im Dashboard (und sieht es im event monitor) dann ist auch Ruhe.

Das Device über Template zigbee2mqtt_alarm_sound

defmod Zigbee_Sirene MQTT2_DEVICE zigbee_Zigbee_Sirene
attr Zigbee_Sirene devicetopic zigbee2mqtt/Zigbee_Sirene
attr Zigbee_Sirene icon audio_volume_high
attr Zigbee_Sirene model zigbee2mqtt_alarm_sound
attr Zigbee_Sirene readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }\
zigbee2mqtt/Zigbee_Sirene/availability:.* { json2nameValue($EVENT) }
attr Zigbee_Sirene room Alarm,MQTT2_DEVICE
attr Zigbee_Sirene setList alarm:true,false $DEVICETOPIC/set {"alarm": "$EVTPART1"}\
volume:low,medium,high $DEVICETOPIC/set {"volume": "$EVTPART1"}\
duration:slider,0,1,1800 $DEVICETOPIC/set {"duration": "$EVTPART1"}\
melody:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 $DEVICETOPIC/set {"melody": "$EVTPART1"}
attr Zigbee_Sirene stateFormat Alarm: alarm  Volume: volume  Duration: duration  Melody: melody  Batterie: battpercentage %  Linkquality: linkquality

jemand eine Idee, warum auch ein alarm:false ein true triggert?

TomLee

#1
Hallo,
attr Zigbee_Sirene setList alarm:true,false $DEVICETOPIC/set {"alarm": "$EVTPART1"}
true/false werden hier in Anführungszeichen, also Strings gesendet. Kann sein dass das immer als true interpretiert wird, da ein boolescher Wert erwartet wird.

Geht es wenn Du die Anführungszeichen um $EVTPART1 entfernst?

Gruß Thomas

holle75

Das wars! Danke dir

Soll ich das noch irgendwo für die TemplateBerichtigung vermerken?

holle75

und für Nachleser ... diese Sirene braucht zum setten der einzelnen Parameter eine leichte Verzögerung. Reduziertes Beispiel mit wait:

defmod BlueIris_ArmDisarmDOIF DOIF ([AnwesenheitHaupt] eq "absent" and [$SELF:cmd_nr] ne "3")\   
    (set Zigbee_Sirene melody 15)\
    (set Zigbee_Sirene volume low)\
    (set Zigbee_Sirene duration 2)\
    (set Zigbee_Sirene alarm true)\
DOELSEIF ([AnwesenheitHaupt] eq "present" and [$SELF:cmd_nr] ne "3")\   
    (set Zigbee_Sirene melody 10)\
    (set Zigbee_Sirene volume medium)\
    (set Zigbee_Sirene duration 22)\
    (set Zigbee_Sirene alarm true)\
DOELSEIF (0)\   
    (set Zigbee_Sirene melody 7)\
    (set Zigbee_Sirene volume low)\
    (set Zigbee_Sirene duration 30)\
    (set Zigbee_Sirene alarm true)
attr BlueIris_ArmDisarmDOIF wait 0,0.1,0.1,0.1:0,0.1,0.1,0.1:0,0.1,0.1,0.1