Weihnachtsbeleuchtung steuern mit "at-Befehl"

Begonnen von Snocksman, 30 November 2017, 15:26:58

Vorheriges Thema - Nächstes Thema

Snocksman

Hallo zusammen,

ich versuche gerade meine Weihnachtsbeleuchtung über at-Befehle zu steuern, stoße hierbei aber an ein kleines Problem...

Was soll gemacht werden ? Eigentlich ganz einfach: Die Beleuchtung soll z.B. um 06:00 Uhr ein und um 08:00 Uhr wieder ausgeschaltet werden. Problem hierbei: Es werden Intertechno Komponenten genutzt, die teilweise von der Reichweite her etwas grenzwertig sind; Deshalb soll der Ein- bzw. Aus-Schaltbefehl zweimal gesendet werden.

Hier der at-Befehl, den ich mir hierfür gebaut habe:

define Weihnachten_1_am_on at *06:00:00 { if (($month == 11) || ($month == 12) || (($month == 1) && ($wday < 15))) { fhem ("set Weihnachten_Sterne_IT on ;; set Weihnachten_Sterne_IT on ;; define Weihnachten_1_am_off at +02:00 set Weihnachten_Sterne_IT off ;; set Weihnachten_Sterne_IT off") } }

Das ganze wird auch pünktlich ausgeführt, aber der Ablauf ist etwas Problematisch:

- Ein-Signal wird gesendet
- Ein-Signal wird ein zweites mal gesendet
- "define Weihnachten_1_am_off at +02:00 set Weihnachten_Sterne_IT off" wird ausgeführt
- Aus-Signal wird gesendet
- zwei Stunden später wird das geplante Aus-Signal gesendet

Das zweite zu sendende Aus-Signal wird also nicht für die Ausführung in zwei Stunden geplant, sondern sofort ausgeführt.

Und nun die große Frage: Wie muss mein at-Befehl richtig lauten ???

helmut

Ich wuerde statt des zweiten "at" einen "sleep" nehmen und vielleicht noch zwei derer zwischen den "on" und
den "off" Kommandos spendieren, so in der Art:

define Weihnachten_1_am_on at *06:00:00 { if (($month == 11) || ($month == 12) || (($month == 1) && ($wday < 15))) { fhem ("set Weihnachten_Sterne_IT on;; sleep 1;; set Weihnachten_Sterne_IT on;; sleep 7199;; set Weihnachten_Sterne_IT off;; sleep 1;; set Weihnachten_Sterne_IT off") } }

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Benni

Ich bin bei sowas eher faul. Ich definiere mir ein at fürs Einschalten, ein weiteres fürs Ausschalten und die aktiviere ich (set active/inactive) nach Bedarf automatisiert (notify, at) oder auch manuell. Ich weiß, das ist nicht besonders elegant, aber einfach und übersichtlich ;D

Evtl. könnte man dafür auch den WeekdayTimer einsetzen.
Die month und day - Abfragen würden dabei in die condition wandern.

CoolTux

Bei Intertechno kannst du eine wieserholungsrate als Attribut direkt bei den Devices angeben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Snocksman

Danke schonmal für die Hilfe !!! Der Hinweis mit dem Sleep hat die Config schonmal deutlich verschlankt (Und noch dazu funktioniert es jetzt) !!!  :D

@CoolTux: Das Attribut für die Wiederholrate ist "ITrepetition" ? Dort dann einfach z.B. 2 angeben und das Kommando wird zwei mal gesendet ?

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Snocksman

@CoolTux: "repeat" habe ich als Attribut gar nicht. Ich habe aber mal ein bisschen rumgesucht; Es ist wohl "ITrepetition"... allerdings bringt es nichts das Attribut auf z.B. 2 zu setzen, weil sich das Intertechno Gerät dann gar nicht mehr schalten lässt. Ich habe mal ein wenig rumprobiert. Ich würde sagen, dass der default-Wert 5 sein dürfte. Wenn ich das Attribut auf 5 setze, habe ich zumindest das normale Schaltverhalten von meinen Intertechno Geräten. Ich habe es jetzt mal auf 12 gestellt und nun schaltet auch das Problematische Intertechno Gerät zuverlässig.

Jetzt kann Weihnachten kommen !!!  ;D  Danke nochmal für die Hilfe !!!