Wiederholungen von Befehlen

Begonnen von uron, 14 November 2013, 09:55:52

Vorheriges Thema - Nächstes Thema

uron

Hallo,
bei meinen ersten Versuchen die Syntax von Befehlen in FHEM zu ergründen, stoße ich leider schon an meine Grenzen:
Ich versuche durch Anwendung von selbst gestellten Fragestellungen mich der Thematik zu nähern und habe folgende Aufgabenstellung erdacht:
In meinem Garten steht zu Dekorationszwecken ein kleiner Leuchtturm den ich alle 5 Minuten 3x blinken lassen möchte. Dies jedoch nur in der Zeit zwischen 6.30 Uhr bis 23.30 Uhr.

Nach einigen Recherchen habe ich folgenden Befehl gefunden und entsprechend verändert:
define blink3x at +*{3}00:00:02 set ug_Licht_Hof on-for-timer 1 Ergebnis: einmalig blinkt die Leuchte 3x

Um dies nun ab 6.30 Uhr 3x blinken zu lassen habe ich den Befehl mit Hilfe der Zeitschaltuhr verändert:
define Blinkerstart at *06:30:00 { { fhem("define blink3x at +*{3}00:00:02 set ug_Licht_Hof on-for-timer 1") } } Ergebnis: einmaliges Blinken der Leuchte (3x) um 6.30 Uhr

Nun fehlt mir noch das permanente Blinken alle 5 Minuten.
Lösungsansätze wären für mich 184 Wiederholung (alle 5 Minuten bis 23.30 Uhr) oder eine Schleife die abfragt, ob die Urzeit 23.30 Uhr erreicht ist.
Denkbar wäre auch, den Schaltzyklus über einen Google-Kalender zu steuern.
Das bekomme ich aber nicht hin! Könnt ihr helfen?

Eine weitere Frage geht in die Richtung der exaten Erläuterung der Syntax von Befehlen im FHEM.
Im Moment reime ich mir beispielhaft die Befehlsbestandteile "*", "{", "}" "fhem" "+" o.ä. zusammen. Bei manchen klappt das mit meinem Horizont, bei anderen nicht.
Wo finde ich exakte Beschreibungen? Die commandref hilft in dieser Tiefe gerade bei verschachtelten Befehlen nicht immer weiter. Gibt es da eine entsprechende Dokumentation?

Edith: Code-Tag eingefügt
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

franky08

Hallo uron,
nachdem ich mich auch oft genug mit Perl Programmierung verrannt habe, habe ich mir ein Perl Handbuch sowie die Perl Referenz zugelegt. Ist wirklich empfehlenswert, da das absolutes Neuland für mich war.
Hier ist z.B. ein Einstieg: http://de.selfhtml.org/perl/index.htm

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

uron

#2
Na, das sieht ja schon mal gut aus - da habe ich ja etwas vor mir. Danke für den Tipp - vielleicht komme ich ja damit klar.
Ich hoffe nur, dass mein erstes Erfolgserlebnis nicht zu lange auf sich warten lässt  :P
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Jaydee

Hallo Frank,

Gibt es ein Perl-Handbuch, das du empfehlen kannst?

Gruß
Jan

franky08

@Jaydee
Angefangen hab ich mit dem hier (hoffendlich ist der Link OK): http://www.algorilla.de/index.php?page=PLMP.con

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Jaydee

Vielen Dank, ich werde es mir mal ansehen!

Puschel74

Hallo,

ZitatIm Moment reime ich mir beispielhaft die Befehlsbestandteile "*", "{", "}" "fhem" "+" o.ä. zusammen.

+ und * sind in der commandref bei at aber recht gut erklärt - auch inkl. Beispielen.

Aber um Perl wirst du dennoch nicht erum kommen  :D

Grüsse
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.

uron

#7
Den at-Befehlt hatte ich zunächst nur in der deutschen Fassung gesucht - du hast recht, die Erläuterungen (im Englischen) sind detailliert.

Nun habe ich an meiner Aufgabenstellung weitergearbeitet und durch Verschachteln der define-Befehle die Lösung gesucht (testweise 8x):
define Blinkerstart at *06:30:00 {{fhem("define FuenfMinuten at +*{8}00:05:00 {{fhem("define blink3x at +*{3}00:00:02 set ug_Licht_Hof on-for-timer 1")}}")}}

Da tut sich gar nichts, auch wenn ich eine bevorstehende zeitnahe Uhrzeit statt 06:30:00 wähle! Hab ich da eine Klammer oder Leerzeichen zuviel/zu wenig oder geht das Verschachteln so nicht?

Edith: Code-Tag eingefügt
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Puschel74

Hallo,

Fehler werden gerne im FHEM-Logfile protokolliert.
Was steht den dort?

Grüsse
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.

uron

#9
Habe soeben nochmals einen Start gemacht, die Originalbefehlszeile lautete für 8 Wiederholungen jede Minute:
define Blinkerstart at *15:21:00 {{fhem("define EineMinute at +*{8}00:01:00 {{fhem("define blink3x at +*{3}00:00:02 set ug_Licht_Hof on-for-timer 1")}}")}}

Im Logfile kam Folgendes zum Vorschein
2013.11.15 15:20:00 1: Including fhem.cfg
2013.11.15 15:20:01 3: telnetPort: port 7072 opened
2013.11.15 15:20:01 3: WEB: port 8083 opened
2013.11.15 15:20:01 3: WEBphone: port 8084 opened
2013.11.15 15:20:01 3: WEBtablet: port 8085 opened
2013.11.15 15:20:01 3: Opening MyCUL device /dev/ttyACM0
2013.11.15 15:20:01 3: MyCUL device opened
2013.11.15 15:20:01 3: MyCUL: Possible commands: BCFiAZEGMRTVWXefmltux
2013.11.15 15:20:01 2: Setting CUL fhtid from 1034 to 1234
2013.11.15 15:20:01 3: Opening CUL_0 device /dev/ttyACM0
2013.11.15 15:20:01 3: Setting CUL_0 baudrate to 38400
2013.11.15 15:20:01 3: CUL_0 device opened
2013.11.15 15:20:01 3: CUL_0: Possible commands: BCFiAZEGMRTVWXefmltux
2013.11.15 15:20:01 2: Setting CUL fhtid from 1234 to 1034
2013.11.15 15:20:02 1: Including ./log/fhem.save
2013.11.15 15:21:00 3: syntax error at (eval 83) line 1, near ""define EineMinute at +*{8}00:01:00 {{fhem("define blink3x "

Da ist also offenbar etwas nicht o.k., die Interpretation gelingt mir aber nicht! Was bedeutet denn eval83 und worauf weist "near" hin?
Mir scheint die Verschachtelung der define-Befehle entweder von der Syntax nicht richtig oder überhaupt nicht möglich zu sein!
Habe auch mal die doppelte {{ und }} herausgenommen und in einfache {} umgewandelt, Ergebnis ist das gleiche.

Danke für die Bemühungen!

Edith: Code-Tag eingefügt
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Puschel74

Hallo,

so aus der Hüfte geschossen würde ich sagen das fhem(" eigentlich nicht passen dürfte.
Nimm mal die ( und ) raus.

Was sagt das LogFile dann?

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.

uron

#11
Also ich bekomme schon beim Abspeichern der fhem.cfg die Fehlermeldung "Blinkerstart already defined, delete it first" (auch nach mehrmaligem Speichern) wenn ich die Klammern () entferne.

Lt. commandref sollte hinter dem befehl fhem auch eine göffnete Klammer stehen, gefolgt von ".
Beispiel:  define a12 at +*{sunset_rel()} { fhem("set lamp on-till 23:00") if($we) }
oder bewerte ich das falsch?

Edith: Code-Tag eingefügt
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Jaydee

also daran allein kann es nicht liegen - ich nutze in allen meinen skripten die fhem(" blah ")-Syntax

Puschel74

#13
Hallo,

sorry. Blödsinn von mir.

Klar sieht der Befehl so aus:
fhem("define ...

Die ( nach fhem ist schon richtig - hab wohl zuviel gearbeitet heute  :-[

Grüße

Edith: Die Fehlermeldung already defined ist logisch weil
Zitat(auch nach mehrmaligem Speichern)
wenn das define einmal angelegt ist  - was diese Meldung ja auch besagt -  und du es immer wieder neu in die FHEM-Befehlszeile eingibst kommt immer wieder auch diese Meldung.
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.

uron

#14
Wenn ich meinen Ursprungsbefehl eingebe
define Blinkerstart at *15:21:00 {{fhem("define EineMinute at +*{8}00:01:00 {{fhem("define blink3x at +*{3}00:00:02 set ug_Licht_Hof on-for-timer 1")}}")}}
erhalte ich beim Abspeichern (auch mehrmaligem) keine Fehlermeldung

Entferne ich jedoch das Sternchen "*" vor der Uhrzeit (15:21:00) bekomme ich die Fehlermeldung beim 2. Abspeichern wieder  :-[
Ich unterstelle einmal, dass durch den "Wiederholungsbefehl" * die Variable "Blinkerstart" direkt nach der Definition und dem Abspeichern wieder auf Null gesetzt wird.
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker