Hauptmenü

DOIF: neue Zeit-Features

Begonnen von Damian, 29 März 2015, 22:16:05

Vorheriges Thema - Nächstes Thema

flurin

@satprofi

Was ist der Zweck der Verzögerungen? Evtl. geht es ohne "at".

Gruss
flurin

satprofi

Zitat von: Ralli am 18 Mai 2015, 07:19:13
Es könnte daran liegen, dass ein weiterer auslösender Event vor Ablauf der 15 Minuten das DOIF erneut getriggert hat. Setze mal im DOIF Verbose auf 5.

Hallo.
Habe Fehler gefunden, doAlways ist hier fehl am Platz........

gruss
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Ralli

Das wiederum glaube ich nicht - zumindest nicht mit der momentanen Definition. Denn Dein DOIF kann bislang nur genau einen Status annehmen und wird daher auch nur ein einziges mal und danach nie wieder das CMD_1 ausführen.
Gruß,
Ralli

Proxmox 8.2 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.75.7.20240420) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.57), FBDECT, Siri und Alexa

satprofi

Dürfte aber so gewesen sein.
Habe anderes reading als Test für triggerung genommen. Und da kam die meldung gleich nach änderung des readings, obwohl schon next* definiert waren.
Und ich denke das myTwilight auch regelmässig triggert.
werde heute abend genaueres wissen, wenn trigger anstöst.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

Zitat von: satprofi am 18 Mai 2015, 14:08:00
Dürfte aber so gewesen sein.
Habe anderes reading als Test für triggerung genommen. Und da kam die meldung gleich nach änderung des readings, obwohl schon next* definiert waren.
Und ich denke das myTwilight auch regelmässig triggert.
werde heute abend genaueres wissen, wenn trigger anstöst.

Wenn diese Meldung "define next5 already defined, delete it first." kommt, dann ist klar, dass im DOIF-Modul das at-Define wieder aufgesetzt wird, obwohl das vorherige at noch nicht abgearbeitet ist - das hat nicht viel mit DOIF zu tun. Wie schon vorgeschlagen, das neue defmod statt define verwenden, dann wird at neu aufgesetzt, obwohl das alte noch nicht ausgeführt ist. Am besten aber, du findest heraus, warum dein Modul öfters getriggert wird, als du denkst.

Gruß

Damian

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

Christian72D

Das mit der Zeit klingt spannend.

Läßt sich folgendes realisieren: wenn meine Wohnungstür geöffnet wird (W.Tuer) und ein bestimmtes Gerät nicht innerhalb 60 Sekunden eingeschaltet wird (Strom), dann soll eine Lampe (Licht) eingeschaltet werden?
Dabei muß berücksichtigt werden daß  die Tür in der Zeit auch schon wieder geschlossen sein kann.

Stelle ich mir als eine Art Einbruchschutz vor.

Damian

#111
Zitat von: Christian72D am 28 Oktober 2015, 17:16:08
Das mit der Zeit klingt spannend.

Läßt sich folgendes realisieren: wenn meine Wohnungstür geöffnet wird (W.Tuer) und ein bestimmtes Gerät nicht innerhalb 60 Sekunden eingeschaltet wird (Strom), dann soll eine Lampe (Licht) eingeschaltet werden?
Dabei muß berücksichtigt werden daß  die Tür in der Zeit auch schon wieder geschlossen sein kann.

Stelle ich mir als eine Art Einbruchschutz vor.

Das, was du vorhast hat eigentlich nichts mit den neuen (inzwischen alten) Zeit-Features zu tun.

define di DOIF ([W.Tuer] eq "opened") (set licht on) DOELSEIF ([Strom] eq "on")
attr di wait 60


Das wait-Attribut gab es immer schon.

Gruß

Damian

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

FunkOdyssey

Zitat von: Damian am 28 Oktober 2015, 21:20:20
Das, was du vorhast hat eigentlich nichts mit den neuen (inzwischen alten) Zeit-Features zu tun.

define di DOIF ([W.Tuer] eq "opened") (set licht on) DOELSEIF ([Strom] eq "on")
attr di wait 60


Das wait-Attribut gab es immer schon.

Aber genau das wird ja nicht funktionieren, oder?
Christian72D hat ja erwähnt, dass der Alarm auch dann ausgelöst werden soll, wenn die Tür wieder geschlossen wird.

In deinem Beispiel würde das Licht nicht angehen, wenn die Tür innerhalb von 60sec wieder geschlossen wird.

Damian

Zitat von: FunkOdyssey am 29 Oktober 2015, 10:44:07
Aber genau das wird ja nicht funktionieren, oder?
Christian72D hat ja erwähnt, dass der Alarm auch dann ausgelöst werden soll, wenn die Tür wieder geschlossen wird.

In deinem Beispiel würde das Licht nicht angehen, wenn die Tür innerhalb von 60sec wieder geschlossen wird.

Ich habe nichts von "Ausschalten eines Alarms" in seiner Anforderung gesehen. Für mich ist Lampe = Alarm.

Gruß

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

FunkOdyssey

Zitat von: Christian72D am 28 Oktober 2015, 17:16:08Dabei muß berücksichtigt werden daß  die Tür in der Zeit auch schon wieder geschlossen sein kann.

Ich hatte das hier so verstanden.

rapster

Hallo Damian,

steh grad bisschen auf dem Schlauch, ich möchte zu einer Zeit welche durch eine Perl-Funktion vorgegeben ist mit DOIF schalten, der Rückgabewert dieses Perlfunktion kann sich allerdings jederzeit ändern, und sollte zumindest alle X Minuten aktualisiert werden.

Wenn ich jetzt
([{fn()}]) (set dummy on)
mache, wird das nur bei einem modify aktualisiert.

So
([{fn("[+10]")}]) (set dummy on)
habe ich es auch schonmal probiert, aktualisiert allerdings trotzdem nicht (hab ich in nem anderen thread gefunden).

i.M. bin ich bei dieser Lösung mit einem zusätzlichen dummy angekommen, was nicht gerade hübsch ist aber zumindest funktioniert :-\
([+10]) (set timeDummy {fn()}) DOELSEIF ([[timeDummy]]) (set dummy on)

Hast du einen Tipp wie das evtl. ohne zwischenspeichern in einem dummy/reading lösbar ist?

Gruß
  Claudiu

Damian

Zitat von: rapster am 02 November 2015, 23:00:16
Hallo Damian,

steh grad bisschen auf dem Schlauch, ich möchte zu einer Zeit welche durch eine Perl-Funktion vorgegeben ist mit DOIF schalten, der Rückgabewert dieses Perlfunktion kann sich allerdings jederzeit ändern, und sollte zumindest alle X Minuten aktualisiert werden.

Wenn ich jetzt
([{fn()}]) (set dummy on)
mache, wird das nur bei einem modify aktualisiert.

So
([{fn("[+10]")}]) (set dummy on)
habe ich es auch schonmal probiert, aktualisiert allerdings trotzdem nicht (hab ich in nem anderen thread gefunden).

i.M. bin ich bei dieser Lösung mit einem zusätzlichen dummy angekommen, was nicht gerade hübsch ist aber zumindest funktioniert :-\
([+10]) (set timeDummy {fn()}) DOELSEIF ([[timeDummy]]) (set dummy on)

Hast du einen Tipp wie das evtl. ohne zwischenspeichern in einem dummy/reading lösbar ist?

Gruß
  Claudiu

Wann eine Funktion ihre Ausgabe ändert, kann das Modul natürlich nicht erkennen. Deswegen ist der Umweg über einen Dummy wohl die richtige Lösung.

Gruß

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

rapster

Ok danke, dachte evtl. gibts da irgend ein attr, trigger-Anweisung oder sonstiges um die perl expressions regelmäßig auswerten zu lassen.

Gruß
  Claudiu

andies

Ich habe eine Frage zu den Zeitfunktionen. Ich möchte gern um 6 und um 18 Uhr etwas auslösen und dachte an
DOIF ([06:00] or [18:00]) (set blabla)
Allerdings wird bei mir der Befehl am Ende nicht ausgeführt. In den Readings wird er aber ,,angekündigt". Ist denn wenigstens erstmal die Syntax in Ordnung?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

kumue

Attribut do always setzen, dann geht das...