at mit mehreren kommandos

Begonnen von thoweiss, 07 Februar 2013, 20:22:19

Vorheriges Thema - Nächstes Thema

thoweiss

Hallo zusammen,
ich habe mir einen Timer gebastelt der meine Lüftungsanlage für eine bestimmte zeit auf vollgas stellt.

Als Auslöser habe ich ein Dummy. Nach Ablauf der Zeit soll auch das Dummy zurückgesetzt werden.

im moment mache ich das so:

dm.lueftung.stoss:on {
    fhem("set stufe_kwl Stufe_3");
    fhem("define at.timer.stoss at +00:45 set stufe_kwl Stufe_2");
    fhem("define at.timer.stoss2 at +00:45 set dm.lueftung.stoss off");
}


jetzt habe ich da ja zweit at-Funktionen die beide nach der gleichen Zeit einmal die lüftung wieder auf stufe 2 setzen und das dummy wieder auf off.

Ich frage mich jetzt ob ich beide Rücksetzbefehle auch in einem at erschlagen kann...

Gruß,
Thorsten

 

Puschel74

Hallo

dm.lueftung.stoss:on {
    fhem("set stufe_kwl Stufe_3");
    fhem("define at.timer.stoss at +00:45 set stufe_kwl Stufe_2;;set dm.lueftung.stoss off");
}


sollte das machen was du möchtest - hoffe ich.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

thoweiss

Ui, danke - das ging fix.

Ich werde es gleich mal testen - ich hatte es mit einem komma probiert - das ging jedenfalls nicht...


thoweiss

So - gerade getestet und es funktioniert!

danke und Gruß,
Thorsten

Zrrronggg!

Wenn du dich innerhalb einer { } befindest musst du das ;  "escapen" d.h. verdoppeln.

Nochwas


dm.lueftung.stoss:on {
    fhem("set stufe_kwl Stufe_3");
    fhem("define at.timer.stoss at +00:45 set stufe_kwl Stufe_2;;set dm.lueftung.stoss off");
}


Geht auch noch Kürzer:

dm.lueftung.stoss:on {
    fhem("set stufe_kwl Stufe_3 ;; define at.timer.stoss at +00:45 set stufe_kwl Stufe_2 ;;;; set dm.lueftung.stoss off");
}



Beachte das du das letzte Semikolon hetzt sogar nochmal verdoppeln musst. Würdest du das nicht tun, also folgendes schreiben:

dm.lueftung.stoss:on {
    fhem("set stufe_kwl Stufe_3 ;; define at.timer.stoss at +00:45 set stufe_kwl Stufe_2 ;; set dm.lueftung.stoss off");
}


dann würde FEHM folgendes machen:
1. set stufe_kwl Stufe_3
2. define at.timer.stoss anlegen
3. sofort dannach set dm.lueftung.stoss off

Duch das erneute veroppeln des Semikolons hollst du aber set dm.lueftung.stoss off in das define AT mit rein.

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

rudolfkoenig

Fuer einfache Faelle wie dieser favorisiere ich:


define myNotfy notify dm.lueftung.stoss:on set stufe_kwl Stufe_3;; sleep 2700;; set stufe_kwl Stufe_2;; set dm.lueftung.stoss off"

brmpfl

Zitat von: rudolfkoenig schrieb am Fr, 08 Februar 2013 08:59Fuer einfache Faelle wie dieser favorisiere ich:
define myNotfy notify dm.lueftung.stoss:on set stufe_kwl Stufe_3;; sleep 2700;; set stufe_kwl Stufe_2;; set dm.lueftung.stoss off"


Wie verhält sich fhem hier mit sleep?
Blockiert fhem für diesen Zeitraum oder wird der Teil "geforked"?
:)
Hajo

thoweiss

Ui - so eine "einfache" Aufgabenstellung und doch so unterschiedlich die Lösungen...

Aber however ich habs ja jetzt...

Gruß,
Thorsten
 

Dirk

Ein FHEM sleep nicht mit einem Perl sleep verwechseln.
sleep als FHEM-Befehl startet intern einen Timer. Daher wird hier FHEM nicht blockiert.

Gruß
Dirk

brmpfl

Danke!

sleep followed by another command and issued in at/notify/etc is not blocking fhem.
*andiestirnklatsch*
:)
Hajo