Autor Thema: Aktuellen Zeitpunkt in DOIF  (Gelesen 748 mal)

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 10980
  • NIVEAu ist keine Creme...
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #15 am: 13 September 2021, 13:58:14 »
Er beschreibt ein wait Attribut für ein Doig, welches keine feste Wartezeit hat sondern dies aus einem Reading entnimmt.
Also an sich genau das was du beschrieben hast.

Bis auf doIG ;) stimme ich zu...
...zumindest was ich denke verstanden zu haben was denn gewünscht/gewollt ist... ;)

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)

Offline Thyraz

  • Hero Member
  • *****
  • Beiträge: 1212
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #16 am: 13 September 2021, 14:06:24 »
Kennst du das noch nicht?  ;D

Zitat
DOIG (ausgeprochen: du ig, übersetzt: tue ig) ist ein universelles Modul mit Web-Interface, welches ereignis- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt.

...

https://fhem.de/commandref_DE.html#DOIG

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, ...

Offline antonwinden

  • Full Member
  • ***
  • Beiträge: 268
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #17 am: 13 September 2021, 14:07:06 »
ist ein dummy das so definiert ist:
define BeregnungDauer dummy
attr BeregnungDauer userReadings dauer {my $t1 = ReadingsVal("BeregnungDauer","state",0);$t1*60}
und dann im DOIF regner1 (startet bei mir zu einem Zeitpunkt)
attr regner1 wait 0,[BeregnungDauer:dauer],0,[BeregnungDauer:dauer]
damit kann ich mit dem dummy die Wartezeit einstellen in Minuten
gruß Anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8681
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #18 am: 13 September 2021, 14:31:26 »
oder als Einzeiler:

DOIF {[lampe:"on"];set_Exec("timer",120,"set lampe off")}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Superposchi

  • Sr. Member
  • ****
  • Beiträge: 689
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #19 am: 13 September 2021, 14:38:20 »
Zitat
...werde ich einfach zukünftig lassen...
Bitte nicht immer gleich eingeschnappt sein. Ich habe nur gesagt das es übers Ziel hinaus schießt und zu viel ist. Was im übrigen gerade für den ganzen Thread ehrlich gesagt gilt - ich verstehe jedenfalls praktisch gar nichts mehr.

Also am einfachsten ist noch die Lösung mit dem doppelten notify von MadMax-FHEM

DOIF {[lampe:"on"];set_Exec("timer",120,"set lampe off")}Dazu hätte ich aber die Frage was ist timer und woher kommen die 120?

Offline Thyraz

  • Hero Member
  • *****
  • Beiträge: 1212
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #20 am: 13 September 2021, 14:56:56 »
Ich erlaube mir mal die Commandref für dich zu öffnen. ;)
https://fhem.de/commandref_DE.html#DOIF_set_Exec

Die 120 sind ein Beispiel für eine Verzögerung.
Das musst du durch deine Verzögerung anpassen.

Da du diese aus einem Reading lesen willst,
musst du die 120 dann eben durch den Funktionsaufruf zum Lesen einer Nummer aus einem Reading ersetzen:

Siehe die Funktion ReadingsNum in diesem Kapitel:
https://fhem.de/commandref_DE.html#perl
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, ...

Offline Sany

  • Full Member
  • ***
  • Beiträge: 274
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #21 am: 13 September 2021, 15:21:28 »
ich glaube mal superposchi wollte eine Lösung mittels (klassischem) DOIF.
Mir war anfangs nicht klar, was das DOIF genau können soll, er hat es aber nachgeliefert und die Aufgabenstellung ist schon ganz anders als im ersten Post, aber könnte in klassischem DOIF so aussehen:
defmod di_timeTest DOIF ([timeTest:"on"])\
  (set timeTest off)
attr di_timeTest uiTable {\
package ui_Table;;\
}\
\
widget([$SELF:delay],"selectnumbers,0,1,100,0,lin")\

attr di_timeTest userReadings TriggerTime,delay
attr di_timeTest wait {[$SELF:delay] * 60}
und
defmod timeTest dummy
attr timeTest setList on off

Du kannst die beiden Devices per RAW mal anlegen. Dann den Dummy einmal schalten damit er einen Zustand hat. Danach kannst Du per Dropdown im DOIF eine Zeit in Minuten auswählen, sobald Du dann den Dummy auf "on" schaltest wird im DOIF der Timer gesetzt, und zwar die eingestellen Minuten * 60. Das zeigt, dass man sehr wohl die wait-Zeit anpassen kann, allerdings geht das nur, solange der Timer noch nicht erzeugt ist. Wenn er schon läuft, und man ändert den Timer-Wert, wird der Timer gelöscht.
Ausgelöst wird per Event vom timeTest Dummy, das mußt Du für Deinen Anwendungsfall entsprechend anpassen.
Und wie Du die delay-Zeit änderst bleibt Dir auch vollständig überlassen, hier ist es als Eingabe im DOIF mit ui_Table gelöst. Du musst halt den Inhalt des Readings ändern.

Viel Erfolg!

P.S. Damians Lösung wäre auch meine gewesen, ist halt DOIF-Perl, und ich wollte Dich nicht noch mehr verwirren.
fhem auf Zotac ZBox nano als LVM unter Proxmox, Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly,   ....

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 10980
  • NIVEAu ist keine Creme...
Antw:Aktuellen Zeitpunkt in DOIF
« Antwort #22 am: 13 September 2021, 15:46:02 »
Bitte nicht immer gleich eingeschnappt sein. Ich habe nur gesagt das es übers Ziel hinaus schießt und zu viel ist. Was im übrigen gerade für den ganzen Thread ehrlich gesagt gilt - ich verstehe jedenfalls praktisch gar nichts mehr.

Alles gut.
Werde nur (versuchen) "unnötige Ausführungen" zu lassen...
(allerdings neige ich ja eher dazu versuchsweise weitere Aspekte schon mal "voreilend" zu erwähnen, weil meistens [über kurz oder lang] wird dann eh [genau darüber] "gestolpert" ;)  )

Also am einfachsten ist noch die Lösung mit dem doppelten notify von MadMax-FHEM

Aber nur für mich, weil ich (immer noch) kein DOIF nutze ;)

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 RaspiOS (Test)