Hauptmenü

Aktuellen Zeitpunkt in DOIF

Begonnen von Superposchi, 13 September 2021, 09:07:52

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Zitat von: Thyraz am 13 September 2021, 13:54:21
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+ Bullseye: 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)

Thyraz

Kennst du das noch nicht?  ;D

ZitatDOIG (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, Doorbird, ...

antonwinden

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...

Damian

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

Superposchi

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?

Thyraz

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, Doorbird, ...

Sany

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 LXC auf Proxmox, weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

MadMax-FHEM

Zitat von: Superposchi am 13 September 2021, 14:38:20
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" ;)  )

Zitat von: Superposchi am 13 September 2021, 14:38:20
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+ Bullseye: 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)