Hauptmenü

Code im at

Begonnen von Jojo11, 02 September 2014, 19:01:51

Vorheriges Thema - Nächstes Thema

Jojo11

Hallo,

zugegeben, der Titel sagt wenig  ::)
Ich schalte meine Rollladen mit einem at, welches vom Aufbau her ungefähr so ausschaut:

define Rollladen at *xx:xx:xx {if (!$we) {\
fhem("set R1 on;;\
sleep 5;;\
set R2 on;;\
sleep 5;;\
set R3 on");;\
}\
}

Das funktioniert seit langem tadellos. Jetzt möchte ich bei einigen Rollladen aber noch eine Bedingung einbauen, so dass ich den fhem-Teil aufteilen würde, um if-Schleifen einbauen zu können. Da ich nicht fhem blockieren möchte, habe ich mich gefragt, ob es bzgl. der "sleep"-Befehle einen Unterschied macht, ob diese in einem einzigen fhem-Block stehen oder einzeln:

define Rollladen at *xx:xx:xx {if (!$we) {\
fhem("set R1 on");;\
fhem("sleep 5");;\
fhem("set R2 on");;\
fhem("sleep 5");;\
fhem("set R3 on");;\
}\
}

Beides funktioniert  :)

schöne Grüße
Jo

Puschel74

Hallo,

ich würde das sleep vermeiden.

Versuch mal sowas:
define Rollladen at *xx:xx:xx {
  if (!$we) {
    fhem("set R1 on");
    fhem("define R2_ein at +00:00:05 set R2 on");
    fhem("define R3_ein at +00:00:10 set R3 on");
  }
}


Ja, ich bin gemein. Sorry aber ich hab die Zeilenabschlüsse rausgelöscht da ich die fhem.cfg nicht direkt bearbeite.
Ungetestet und NICHT für die fhem.cfg gedacht!

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.

Jojo11

Hallo Puschel,

daran hatte ich auch schon gedacht, aber bei 15 Rollläden und verschiedenen at's für Wochenende usw. kann ich dann nicht mal eben aus den "sleep 5" ein "sleep 15" machen. Ok, kein Killer-Argument aber ich hatte mich so dran gewöhnt  :-\ Ich meine auch mal gelesen zu haben, dass die "sleeps" eigentlich fhem nicht aufhalten, wenn sie "richtig" eingesetzt werden. Allerdings weiß ich nicht mehr, was man dabei falsch machen kann.

schöne Grüße
Jo

betateilchen

wenn Du den von Puschel74 vorgeschlagenen Code in eine sub() in die 99_myUtls auslagerst, kannst Du mit einer Schleife arbeiten, und sehr viel komplexere Bedingungen sehr viel übersichtlicher entwickeln.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jojo11

Das ist wohl die beste Lösung. Werde mich gleich mal dran setzen, die Routinen auszulagern. Danke!

schöne Grüße
Jo