Optimierung von mehreren notify's

Begonnen von Markus Hermann, 07 April 2013, 17:49:22

Vorheriges Thema - Nächstes Thema

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:


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




CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

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.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

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...

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)
CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

TeeVau

Hallo,

bin jetzt kein Fachmann für Regex. Aber ändere mal "sec_*.*:open" ab zu "sec_.*:open".
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

Markus Hermann

Das war es ....fast :-)

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

Gruß Markus
CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

eppi

Hallo Markus
Das Problem liegt an den ";;".
Probier mal
set Kugelleuchte_1,Aussenlicht1 on

Viel Erfolg!
Gruss Dani

Markus Hermann

So, lüppt jetzt. Es lag wohl auch daran, dass eine Klammer } falsch gesetzt war.

Danke an alle.

CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR