Hallo zusammen, ich habe mein Projekt ,,Alarmanlage" weiterverfolgt und bin auf einem guten Weg.
Ich habe ein dummy Alarm_Status worüber ich den Status der Alarmanlage über die Anwesenheit bzw. den dummy Alarm_Taster steuere.
Status
0 es ist jemand zu Hause unscharf
1 manuell unscharf
2 manuell scharf
3 es ist niemand zu Hause scharf
Ich Werte verschiedene Kontakte mit einem DOIF Alarm_Kontakte_DOIF aus. Das DOIF sendet auch die erwarteten pushmsg.
State sind alle geschlossen bzw.
Ich wollte dann mit dem DOIF Alarm_send_DOIF ggf. einen Alarm auslösen, wenn Alarm_Kontakte_DOIF nicht ,,sind alle geschlossen" und Alarm_Taster 2 oder 3 ist. Dazu sollten mehrere Befehle ausgeführt werden, welcher jeder für sich schon funktioniert.
1. set FHEM_gong_Mp3 playTone 254,016
2. set LED_aussen on,set LED blink 30 2
3. set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.
4. set Rolladen01 down
5. set Rolladen02 down
6. set Rauchmelder_Team alarmOn
Am besten wären wenn 1-3 mit einer Verzögerung vom 60 Sekunden einsetzen würde und 5-6 mit 120 Sekunden; sobald Alarm_Status 0 oder 1 ist soll abgebrochen werden. Bei 3 wäre auch das ,, set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]"" wünschenswert aber das hat mit der Syntax gar nicht funktioniert. Das DOIF wie es jetzt ist löst nicht aus. Ich hatte es auch mit der KI probiert aber auch mit der bin ich nicht zum Ziel gekommen.
List Alarm_Status
Internals:
FUUID 67807828-f33f-be1a-6f3e-56d9bde8e61ee267
NAME Alarm_Status
NR 68
STATE 3
TYPE dummy
eventCount 51
READINGS:
2025-12-30 17:49:55 state 3
Attributes:
room AppleWatch,Alarmanlage
List Alarm_Taster
Internals:
FUUID 67816ae7-f33f-be1a-7c06-39d56c9a9d1ba135
NAME Alarm_Taster
NR 69
STATE off
TYPE dummy
eventCount 44
READINGS:
2025-12-30 16:27:48 state off
Attributes:
alexaName Alarmanlage Taster
devStateIcon on:15px-red off:15px-green
room Alexa,Alarmanlage,AppleWatch
setList on off
List Alarm_Kontakte_DOIF
Internals:
DEF ([#"_Alarm$:open":state:"open"] != 0) (set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]")
DOELSEIF
([#"_Alarm$:closed":state:"open"] == 0) (set pushmsg msg "alle Kontakte geschlossen")
FUUID 678d3cd1-f33f-be1a-c7f2-dad1fd51a7b4aa33
MODEL FHEM
NAME Alarm_Kontakte_DOIF
NOTIFYDEV global,.*(_Alarm$).*
NR 78
NTFY_ORDER 50-Alarm_Kontakte_DOIF
STATE alle geschlossen
TYPE DOIF
VERSION 30659 2025-12-25 12:37:16
eventCount 23
READINGS:
2025-12-30 17:48:02 Device Aussentuer_Strasse_Alarm
2025-12-30 17:48:02 cmd 2
2025-12-30 17:48:02 cmd_event Aussentuer_Strasse_Alarm
2025-12-30 17:48:02 cmd_nr 2
2025-12-30 15:11:55 mode enabled
2025-12-30 17:48:02 state alle geschlossen
Regex:
accu:
bar:
barAvg:
collect:
cond:
:
0:
"_Alarm$:open" _Alarm$:open
1:
"_Alarm$:closed" _Alarm$:closed
attr:
cmdState:
0:
$DEVICE zuletzt geöffnet
1:
alle geschlossen
wait:
waitdel:
condition:
0 ::AggregateDoIf($hash,'#','_Alarm$','state','"open"') != 0
1 ::AggregateDoIf($hash,'#','_Alarm$','state','"open"') == 0
do:
0:
0 set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]"
1:
0 set pushmsg msg "alle Kontakte geschlossen"
2:
helper:
NOTIFYDEV global,.*(_Alarm$).*
event closed,STATE: closed,hmstate: closed
globalinit 1
last_timer 0
sleeptimer -1
timerdev Aussentuer_Strasse_Alarm
timerevent closed,STATE: closed,hmstate: closed
triggerDev Aussentuer_Strasse_Alarm
timerevents:
closed
STATE: closed
hmstate: closed
timereventsState:
state: closed
STATE: closed
hmstate: closed
triggerEvents:
closed
STATE: closed
hmstate: closed
triggerEventsState:
state: closed
STATE: closed
hmstate: closed
internals:
readings:
trigger:
uiState:
uiTable:
Attributes:
cmdState $DEVICE zuletzt geöffnet|alle geschlossen
do always
room Alarmanlage
List Alarm_send_DOIF
Internals:
CFGFN
DEF (([Alarm_Status:STATE] eq "2" or [Alarm_Status:STATE] eq "3") and (#"_Alarm$":state:"open" > 0)) (set FHEM_gong_Mp3 playTone 254,016,set LED_aussen on,set LED blink 30 2,set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.,set Rolladen01 down,set Rolladen02 down,set Rauchmelder_Team alarmOn) DOELSEIF ([Alarm_Status:STATE] eq "0" or [Alarm_Status:STATE] eq "1") (cancel)
FUUID 6953e764-f33f-be1a-da62-f7aba6284e6e4660
MODEL FHEM
NAME Alarm_send_DOIF
NOTIFYDEV global,Alarm_Status
NR 191
NTFY_ORDER 50-Alarm_send_DOIF
STATE initialized
TYPE DOIF
VERSION 30659 2025-12-25 12:37:16
eventCount 10
READINGS:
2025-12-30 16:24:58 cmd 0
2025-12-30 16:24:58 mode enabled
2025-12-30 16:24:58 state initialized
Regex:
accu:
bar:
barAvg:
collect:
cond:
Alarm_Status:
0:
STATE ^Alarm_Status$:^STATE:
1:
STATE ^Alarm_Status$:^STATE:
attr:
cmdState:
0:
{(ReadingsVal("Alarm_Status","STATE","0") eq "2" || ReadingsVal("Alarm_Status","STATE","0") eq "3") ? ((::AggregateDoIf($hash,"#","_Alarm$","state","\"open\"") > 0) ? "alarm" : "armed") : ((ReadingsVal("Alarm_Status","STATE","0") eq "0" || ReadingsVal("Alarm_Status","STATE","0") eq "1") ? "idle" : "disabled")}
repeatsame:
0
wait:
0:
60
120
condition:
0 (::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "2" or ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "3") and (#"_Alarm$":state:"open" > 0)
1 ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "0" or ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "1"
do:
0:
0 set FHEM_gong_Mp3 playTone 254,016,set LED_aussen on,set LED blink 30 2,set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.,set Rolladen01 down,set Rolladen02 down,set Rauchmelder_Team alarmOn
1:
0 cancel
2:
helper:
NOTIFYDEV global,Alarm_Status
globalinit 1
last_timer 0
sleeptimer -1
hmccu:
readings:
all Alarm_Status:STATE
uiState:
uiTable:
Attributes:
cmdState {(ReadingsVal("Alarm_Status","STATE","0") eq "2" || ReadingsVal("Alarm_Status","STATE","0") eq "3") ? ((::AggregateDoIf($hash,"#","_Alarm$","state","\"open\"") > 0) ? "alarm" : "armed") : ((ReadingsVal("Alarm_Status","STATE","0") eq "0" || ReadingsVal("Alarm_Status","STATE","0") eq "1") ? "idle" : "disabled")}
devStateIcon alarm:message_attention
armed:secur_open
idle:security
disabled:control_pause
do always
repeatsame 0
room Alarmanlage
selftrigger wait
wait 60,120
List Alarm_send_DOIF KI
define Alarm_send_DOIF DOIF (
([Alarm_Status:STATE] =~ "^(2|3)$")
and
([Alarm_Kontakte_DOIF] ne "closed")
)
(
set FHEM_gong_Mp3 playTone 254,016,
set LED_aussen on,
set LED blink 30 2,
set pushmsg msg "Alarm ausgelöst! Kontakt $DEVICE wurde geöffnet. Offene Kontakte: [@"_Alarm$":state:"open"]",
set Rolladen01 down,
set Rolladen02 down,
set Rauchmelder_Team alarmOn
)
DOELSEIF (
([Alarm_Status:STATE] =~ "^(0|1)$")
)
(
cancel
)
mit
attr Alarm_send_DOIF wait 60,120
attr Alarm_send_DOIF do always
attr Alarm_send_DOIF selftrigger
attr Alarm_send_DOIF repeatsame 0
vielleicht könnt ihr mir ja weiterhelfen, die KI ist dafür offensichtlich noch nicht bereit.
Gruß
Micha