Uhrzeit: Offset berechnen

Begonnen von LaLeLu, 23 Dezember 2012, 19:25:08

Vorheriges Thema - Nächstes Thema

LaLeLu

Zur Info:

ich habe die Funktion
http://www.fhemwiki.de/wiki/Uhrzeit:_Offset_berechnen
erweitert. Sie fängt jetzt mehr falsche Parametereingaben ab und kann auch durch Eingabe von z.B.
TimeOffset("",5)
eine Uhrzeit berechnen, die 5 Minuten später als jetzt ist.

Konstrukte wie
define IT_SCHALTEN notify MEIN_SCHALTER set IT_DOSE on-till {sprintf("%%02d:%%02d:%%02d",($hour+($min+5)/60)%%24,($min+5)%%60,$sec)}
können damit durch
define IT_SCHALTEN notify MEIN_SCHALTER set Flur_Licht on-till {TimeOffset("",5)}
ersetzt werden.


LaLeLu
LaLeLu

Fhem Release: 5.6 auf RaspberryPI B (wheezy)
1xFB7390, 1xCUL, 1xHM-CFG-LAN, 4xFHT, 25xFS20 (inkl. PIRA), 18xCUL_HM, 5xCUL_WS, 2xSONOS-Player, calendar, floorplan

Zrrronggg!

So richtig verstehe ich den Sinn der ganzen Übung nicht.

"set lamp on till..." ist  - wenn ich das richtig verstehe - nur eine Art Vereinfachung für:

"set lamp on, define later_off at hh:mm:ss set lamp off"

aber mit dem Nachteil, das man für die Zeit das präfix "+"  vielleicht nicht verwenden kann.
Insbesondere hat "on till" auch nicht den Vorteil von "on-for-timer x", nämlich aus nur einem Funkkommando zu bestehen.

Anstelle nun  doch lieber
"set lamp on, define later_off at +hh:mm:ss set lamp off"

zu verwenden, nimmst du nun das doch deutlich komplexere Konstrukt
define IT_SCHALTEN notify MEIN_SCHALTER set IT_DOSE on-till {sprintf("%%02d:%%02d:%%02d",($hour+($min+5)/60)%%24,($min+5)%%60,$sec)}


Selbst wenn du  den eigentlichen Code "versteckst" (aka Funktion TimeOffset einführen)
 ist

set Flur_Licht on-till {TimeOffset("",5)}


doch nix anderes als

set Flur_Licht on, define later_off +00:05:00 set Flur_Licht off



Warum?
Ich meine wo ist das der Vorteil?





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

LaLeLu

Hi Zrrronggg!

danke für Deinen Hinweis. Es gibt ja oft mehrere Wege, die nach Rom führen ...
Deinen finde ich prima. Meiner macht das Rechnen einfacher. Insbesondere, wenn anstelle von "" eine Variable die Zeit liefert.
LaLeLu

Fhem Release: 5.6 auf RaspberryPI B (wheezy)
1xFB7390, 1xCUL, 1xHM-CFG-LAN, 4xFHT, 25xFS20 (inkl. PIRA), 18xCUL_HM, 5xCUL_WS, 2xSONOS-Player, calendar, floorplan

Zrrronggg!

Okay, das mit der Variable könnte ein Argument sein. Aber ansonsten verstehe ich einfacher Rechnen noch nicht.


"10 Minuten Später" sind halt 10 Minuten später. Da muss man ja nix rechnen. Oder verstehe ich da was falsch?
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

UliM

Genau. Wie machst Du denn 'einfach' aus der Angabe "09:10" den Wert "09:20"?
Oder aus "09:55" dann "10:05"?
Genau das kann diese Routine.
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Zrrronggg!


Na, du löst eine Aktion doch zu irgendeiner Uhrzeit aus.  Und wenn die 9:10 Uhr ist, dann ist  "+00:10:00" automatisch 10 Minuten später.

Bei mir gibt's z.b. dies:

define nachts_Flur_Licht1_aus at *02:10:00 {if (!($we)(//images/smiley_icons/icon_wink.gif) {fhem ("set Flur_Licht1 off ;; define Flur_Licht2_aus +00:05:00 set Flur_Licht2 off") }  }

Das macht eine Flurlicht um 02:10 Uhr aus und das zweite 5 Minuten später.
(Der Abstand dient nur dazu, von aussen nicht zu sehr nach  "Zeitschaltuhr" auszusehen.
Die zusätzliche Bedingung, dass es nicht Wochenende sein soll, kannst du dir ja wegdenken)

Wenn ich irgendwann mal meine, die Uhrzeit "2:10 Uhr" ist nicht gut, kann ich die auf 2 Uhr ändern, die zweite Lampe geht trotzdem genau 5 Minuten später aus.
Oder ich kann die erste Lampe durch ein Ereignis oder eine Zeit nach Sunset steuern... egal, die zweite Lampe geht immer 5 Minuten später aus.


 
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

Zrrronggg!

LOL!


Der Smiley oben soll natürlich da nicht hin, sondern "Klammer zu". Warum da ein Smiley draus geworden ist weiss ich nicht.

Hm... macht die Forum SW das irgendwie?

Mal sehen:

---{if (!($we)(//images/smiley_icons/icon_wink.gif) {fhem ("set Flur_Licht1...
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

Zrrronggg!

Tatsache, die ersetzt die Klammer. Hihi. Das kann ja lustig werden. (//images/smiley_icons/icon_twisted.gif)
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

Martin Fischer

genau dafür gibt es den BBcode code

das macht dann auch code besser lesbar!
;-)

--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Zrrronggg!

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

UliM

Hiho,
der spannende Fall ist: früher (//images/smiley_icons/icon_smile.gif)
Bei mir soll zB die Heizung 20min vor der eingestellten Weckzeit starten.
Und jetzt kommst Du ;-)
Gruß Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Zrrronggg!

Hm. Wir haben uns inzwischen aber doch recht weit von deinem Beispiel

 define IT_SCHALTEN notify MEIN_SCHALTER set Flur_Licht on-till {TimeOffset("",5)}

entfernt, gelle?

Wie willst du denn deine Heizung mit irgendwas wie  "on-till {TimeOffset("",5)"  steuern?

Nenn mir deinen konkreten Code und ich sehe ob ich das anders hinbekomme.
Obwohl das natürlich Quatsch ist; Es  lassen sich sicher immer Beispiele  konstruieren, wo andere Methoden schlechter funktionieren, aber für mich klingt das jetzt langsam ein bisschen so, als ob du jedes mal einen noch spezielleren Anwendungsfall nachschiebst. Aber zugegeben, ich mache meine Heizung einfach jeden Tag um eine bestimmte Uhrzeit an (und am WE eben etwas später) und wenn ich dann mal einem Tag 30 Minuten später aufstehe und die Heizung dann 30 Minuten zu früh an war... gut, auch nicht so schlimm.  

Warum frage ich überhaupt nach?

Mein Problem ist konkret folgendes: Als ich mit FHEM angefangen habe, habe ich bereits ein Jahr gebraucht um so einigermassen durchzublicken, was es alles für Funktionen gibt. Und habe  trotzdem jede Woche überrascht festgestellt, dass es auch noch Sachen wie (z.B.(//images/smiley_icons/icon_wink.gif) "isday" gibt. Besonders wenn man mal Rudi fragt, kann man seinen Code immer noch mal kleiner machen, weil es für Dinge die man sich gebastelt hat, irgendeine Funktion gibt, die  gelegentlich nicht mal richtig in  Commandref steht oder die man nicht ganz verstanden hat. Nun kommen gefühlt täglich neue Funktionen dazu, die zum Teil seltene Spezialfälle abdecken, oder an sich schon vorhandene Funktionen superseeden (siehe Dämmerungsmodul gegenüber sunset).

Es ist nicht an mir, den Bedarf im einzelnen zu beurteilen.  Ich sehe aber, das die Komplexität von FHEM in letzter Zeit schlagartig zunimmt und sich eine Featureitis ausbreitet.

Ich habe schon lange nicht mehr programmiert (20 Jahre nicht mehr), aber ich manage beruflich grosse SW Projekte. Und daher weiss ich, das wir hier ein Problem haben.


Es ist klar, dass es gut ist, dass so viele mitarbeiten (wie z.b. du) und ich habe auch nichts gegen deine Funktion, die sicher einen Sinn hat. Mir will aber nach unserem Gespräch scheinen, dass man schon eher recht spezielle Anwendungsfälle konstruieren muss, um zu einem Punkt zu kommen, wo einen andere Lösung tatsächlich komplizierter geschweige denn unmöglich wird.

Das ist keine Kritik an deinem konkreten Beitrag, sondern geht mir schon länger durch den Kopf. Ich habe bei dir nur noch mal explizit nachgefragt, weil ich verstehen wollte, ob ich nicht  nur einfach zu doof bin, den Sinn hinter diesen Dingen zu kapieren.  Immerhin bin ich auch was FHEM betrifft eher Laie und bewege mich bestenfalls auf mittlerem Level.  Ich stelle aber auch fest: Die Geschwindigkeit mit der FHEM derzeit an Komplexität und Funktionen zunimmt, ist grösser als die Geschwindigkeit in der mein Wissen über FHEM steigt, jedenfalls bei der Zeit die ich bereit bin zu investieren.

Ich kann nicht der Einzige sein, dem das so geht.

Und gute Software zeichnet sich nicht nur durch viel Möglichkeiten aus, sondern auch durch einen sinnvolle Beschränkung auf das Notwendige (was immer eben "notwendig" meint). Sonst enden wir wie MS Word.

Und das bedeutet dann, dass die heavy Users happy sind, weil sie ALLES machen können, aber es für Einsteiger zunehmend schwieriger wird, sich einzuarbeiten. Und irgendwann kommt der Punkt, wo wir Neueinsteiger abschrecken. Was machen wir dann? "EasyFHEM" forken?




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

LaLeLu

Also dies ist nur das Forum, in dem jeder der Hilfe oder Lösungen sucht, lesen oder fragen kann. Er kann es auch einfach ignorieren oder für schlecht halten.

Mein Beitrag bietet EINE Lösung. Nicht mehr und nicht weniger. Auch Dein Code ist ein prima Beitrag, da er eine andere Lösung anbietet.
Ist das nicht gut so?

Ich kann Deinen Hinweis auf die Komplexität von fhem durchaus nachvollziehen und denke genauso. Trotzdem freue ich mich, wenn ich eine Lösung für ein zunächst unlösbares Problem erhalte. Gerade bei Perl habe ich gelernt, dass es oft viele verschiedene Wege gibt, die zum richtigen Ergebnis führen.
LaLeLu

Fhem Release: 5.6 auf RaspberryPI B (wheezy)
1xFB7390, 1xCUL, 1xHM-CFG-LAN, 4xFHT, 25xFS20 (inkl. PIRA), 18xCUL_HM, 5xCUL_WS, 2xSONOS-Player, calendar, floorplan

borsti67

Zitat von: UliM schrieb am Do, 27 Dezember 2012 15:10Hiho,
Bei mir soll zB die Heizung 20min vor der eingestellten Weckzeit starten.
Und jetzt kommst Du ;-)

Also ich würde die Heizung steuern und 20min später den Wecker starten... =8)
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)