Hauptmenü

DOIF mit Zeitraster

Begonnen von Damian, 14 März 2015, 23:54:54

Vorheriges Thema - Nächstes Thema

Damian

Ich überlege folgende Syntaxerweiterung für Zeitrasterangaben in DOIF einzubauen:

1.

[+:MM] MM sind Minutenangaben, sie sollten sinnvollerweise ein Teiler von 60 sein, also 01, 02, 03, 04, 05, 06, 10, 12, 15, 20, 30

Beispiele:

[+:30] zur vollen und zur halben Stunde
[+:10] um XX:00 XX:10 XX:20 XX:30 XX:40 XX:50
[+:15] um XX:00 XX:15 XX:30 XX:45
usw.

2.

[:MM] MM sind Minutenangaben und können zwischen 00 und 59 sein.

Beispiele:

[:00] zur vollen Stunde
[:05] immer fünf nach
[:15] immer viertel nach
[:30] immer um halb
usw.

3.

evtl. noch für Fortgeschrittene:

[[+HH]:MM] mit HH Teiler von 24 und MM zwischen 00 und 59

Beispiel:

[[+02]:10] um 00:10 02:10 04:10 06:10 08:10 usw.

Anregungen hier posten.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

digital.arts

Hallo Damian,
mir fällt zwar persönlich gerade kein konkreter Anwendungsfall dazu ein,
hört sich aber trotzdem sehr nützlich an.
Von mir daher ein klarer Daumen nach oben  ;)

vg
Karl
FHEM auf RPi; CUL868 für FHT; NanoCUL433 für IT und Revolt; Fhemduino für IT und Temp/Hum; RFXTRX433e für IT/FA20RF/Funkgong/HomeEasy; NanoFirmataEth für 1wire Temp

flurin

Hallo Damian

Ich weiss nicht wie Deine ToDo-Liste aussieht aber ich könnte mir vorstellen,
dass eine for-Loop mehr Einsatzmöglichkeiten bieten würde:

Sowas:

define di_for DOIF ([<event>] FOR [<initialize>;<test>;<step>]) (<commands>)


Beispiele:

define di_for DOIF ([10:00] FOR [$t="10:00";$t<"15:00";$t+="00:15"])
({Log(3,"time = $t")})



define di_for DOIF ([switch] eq "on" FOR [$i=1;$i<10;$i++])
({Log(3,"i = $i")})



Gruss
flurin

Damian

Zitat von: flurin am 15 März 2015, 12:17:11
Hallo Damian

Ich weiss nicht wie Deine ToDo-Liste aussieht aber ich könnte mir vorstellen,
dass eine for-Loop mehr Einsatzmöglichkeiten bieten würde:

Sowas:

define di_for DOIF ([<event>] FOR [<initialize>;<test>;<step>]) (<commands>)


Beispiele:

define di_for DOIF ([10:00] FOR [$t="10:00";$t<"15:00";$t+="00:15"])
({Log(3,"time = $t")})



define di_for DOIF ([switch] eq "on" FOR [$i=1;$i<10;$i++])
({Log(3,"i = $i")})



Gruss
flurin

Und was soll hier in der Schleife triggern?

For-Schleifen sind eine Sache von Perl. Ich hatte nicht vor eine neue Programmier-Sprache zu erfinden. Bisher übergebe ich solche Sachen immer an Perl und das soll so bleiben. Daher passt es hier nicht, weil die Bedingung und die Ausführung in DOIF getrennte Sachen sind mit unterschiedlichem Variablenraum.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Toto1973

Das mit diesem Vorschlag für die Minutenabfrage gefällt mir sehr gut.
Ich steuere ja quasi alles per DOIF und man könnte so einiges vereinfachen!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

Damian

Zitat von: Toto1973 am 15 März 2015, 17:30:19
Das mit diesem Vorschlag für die Minutenabfrage gefällt mir sehr gut.
Ich steuere ja quasi alles per DOIF und man könnte so einiges vereinfachen!

Die Anfragen nach einem "Stundengong" häuften sich gestern (du warst nicht der einzige, auch hier http://forum.fhem.de/index.php/topic,35012.0.html wollte jemand so etwas). Daher habe ich darüber genauer nachgedacht - komplizierte Lösungen gibt es ja genug :)

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF