FHEM > Automatisierung

Optimierung von mehreren notify's

(1/2) > >>

Markus Hermann:
Hallo!

ich habe meine Alarmanlagen-Konfiguration soweit fertig und versuche sie jetzt noch zu optimieren.
Durch diese notify wird jeweils der selbe shell-script gestartet:


--- Code: ---
###### HM Fensterkontakte HM-SEC-SC rufen Alarmscript auf
define Alarmscript1 notify Terassentuer_1_Sensor.*:open {if (  Value("Alarm_sw") eq "on" && Value("Terassentuer_1_Sensor") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }
define Alarmscript2 notify Terassentuer_2_Sensor.*:open {if (  Value("Alarm_sw") eq "on" && Value("Terassentuer_2_Sensor") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }
define Alarmscript3 notify Haustuer_Sensor.*:open {if (  Value("Alarm_sw") eq "on" && Value("Haustuer_Sensor") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }
define Alarmscript4 notify WCFenster.*:open {if (  Value("Alarm_sw") eq "on" && Value("WCFenster") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }
define Alarmscript5 notify Kuechenfenster.*:open {if (  Value("Alarm_sw") eq "on" && Value("Kuechenfenster") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }
define Alarmscript6 notify Fotostudio.*:open {if (  Value("Alarm_sw") eq "on" && Value("Fotostudio") eq "open"){system("/bin/sh FHEM/alarmscript.sh")}  }

--- Ende Code ---


Der shell-script wiederum schaltet FS20/HM - Devices und ruft mein Handy an.


--- Code: ---
#!/bin/sh

## Alarmscript
## Licht einschalten und Telefonanruf auf Handy


echo "set Kugelleuchte_1 on-for-timer 360" | /sbin/socat -  TCP:127.0.0.1:7072
echo "set Aussenlicht1 on-for-timer 360" | /sbin/socat - TCP:127.0.0.1:7072
echo "set ez_Lampe_4  on-for-timer 360" | /sbin/socat - TCP:127.0.0.1:7072

echo "ATDT*129#0176123456789" | nc 127.0.0.1 1011
sleep 30
echo "ATH0" | nc 127.0.0.1 1011

--- Ende Code ---


Komischerweise wird nun erst der Anruf getätigt und anschließend werden die set-Befehle ausgeführt.
Da ich das Telefon auch noch ca. 30 Sekunden lang klingeln lassen will, dauert das halt auch so lange.

Wieso werden die set-Befehle erst nach dem Anruf ausgeführt?

Ist mein Vorgehen überhaupt so sinnvoll oder kann man das noch anders lösen bzw. optimieren?

Ich bin schon am überlegen, ob ich den Einstieg in Perl wage und mir in 99_Ulits.pm etwas reinbastel. :-)


Gruß
Markus




TeeVau:
Ist es nicht eine Alternative die set Befehle nicht in dem Shell script auszuführen, sondern in FHEM direkt?
Dann hättest du in dem Shell script nur den ATD und ATH Befehl. Warum die Reihenfolge so ist, kann ich dir leider nicht sagen, nur ggf. einen anderen Lösungsweg vorzeigen.

rudolfkoenig:
> system("/bin/sh FHEM/alarmscript.sh")

blockiert FHEM komplett, bis das Skript fertig ist.

Markus Hermann:
Danke für die Infos, ich habe jetzt die notifys aus dem shell-script entnommen und lasse sie in fhem laufen.

Nun wollte ich noch weiter optimieren und habe meine HM-SEC-SC umbenannt, sie fangen alle mit "sec_" an

mit diesem define sollten...
--- Code: ---

define Alarmscript notify sec_*.*:open {if ( Value("Alarm_sw") eq "on")} set Kugelleuchte_1 on;; set Aussenlicht1 on

--- Ende Code ---

...eigentlich Kugelleuchte_1 und Aussenlicht1 einschalten, sobald irgend ein sec_ - Device ein "open" mitteilt.

Geht aber nicht,was mache ich falsch?

(siehe Anhang / see attachement)

TeeVau:
Hallo,

bin jetzt kein Fachmann für Regex. Aber ändere mal "sec_*.*:open" ab zu "sec_.*:open".

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln