FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Markus Hermann am 07 April 2013, 17:49:22

Titel: Optimierung von mehreren notify's
Beitrag von: Markus Hermann am 07 April 2013, 17:49:22
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:


###### 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")}  }


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


#!/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


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




Titel: Aw: Optimierung von mehreren notify's
Beitrag von: TeeVau am 08 April 2013, 09:59:28
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.
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: rudolfkoenig am 08 April 2013, 10:05:22
> system("/bin/sh FHEM/alarmscript.sh")

blockiert FHEM komplett, bis das Skript fertig ist.
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: Markus Hermann am 08 April 2013, 20:09:25
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...

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

...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)
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: TeeVau am 08 April 2013, 20:36:43
Hallo,

bin jetzt kein Fachmann für Regex. Aber ändere mal "sec_*.*:open" ab zu "sec_.*:open".
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: Markus Hermann am 08 April 2013, 21:42:37
Das war es ....fast :-)

Es wird leider nur der 2. set-Befehl ausgewertet.

Gruß Markus
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: eppi am 08 April 2013, 21:54:31
Hallo Markus
Das Problem liegt an den ";;".
Probier mal
set Kugelleuchte_1,Aussenlicht1 on

Viel Erfolg!
Gruss Dani
Titel: Aw: Optimierung von mehreren notify's
Beitrag von: Markus Hermann am 09 April 2013, 09:49:46
So, lüppt jetzt. Es lag wohl auch daran, dass eine Klammer } falsch gesetzt war.

Danke an alle.