Hauptmenü

[gelöst] DOIF löst nicht aus

Begonnen von andies, 19 Januar 2021, 07:44:06

Vorheriges Thema - Nächstes Thema

andies

Ich verstehe etwas nicht. Ich habe dieses einfache device
defmod Telefon DOIF ([02:31]) ({TelefonAus()})

(keine Attribute) und der Perlcode besteht aus
sub TelefonAus() {
my ($sec,$min,$hour,$dayn,$month,$year,$wday,$yday,$isdst) = localtime(time);
Log 1, "Fehlersuche Wtag=".$wday." hour".$hour;}


Ich habe aber weder um 2:31 noch danach Einträge im Logfile. Was mache ich da falsch?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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

die runden klammern sind überflüssig

defmod Telefon DOIF ([02:31]) ({TelefonAus})

andies

Aber das kann doch nicht die Ursache für den Fehler sein, oder? Ich teste jetzt mal nebenan ein at und schaue, ob das auslöst. Merkwürdig. Im schlimmsten Fall ist irgendwo in den Tiefen meines FHEM was faul.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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

Frank_Huber

Zeig mal bitte ein List vom doif

kumue

Zitat von: andies am 19 Januar 2021, 11:25:32
Aber das kann doch nicht die Ursache für den Fehler sein, oder? Ich teste jetzt mal nebenan ein at und schaue, ob das auslöst. Merkwürdig. Im schlimmsten Fall ist irgendwo in den Tiefen meines FHEM was faul.

löst aus

defmod Telefon DOIF ([11:55]) ({TelefonAus})
attr Telefon DbLogExclude .*

setstate Telefon cmd_1
setstate Telefon 2021-01-19 11:55:00 cmd 1
setstate Telefon 2021-01-19 11:55:00 cmd_event timer_1
setstate Telefon 2021-01-19 11:55:00 cmd_nr 1
setstate Telefon 2021-01-19 11:54:32 mode enabled
setstate Telefon 2021-01-19 11:55:00 state cmd_1
setstate Telefon 2021-01-19 11:55:00 timer_01_c01 20.01.2021 11:55:00

und bringt diesen Log-Eintrag
2021.01.19 11:55:00 1: Fehlersuche Wtag=2 hour11

andies

Ja, der löst aus - aber bei mir nur manchmal!

Internals:
   CFGFN     
   DEF        ([02:31]) ({TelefonAus})
   FUUID      60046257-f33f-1115-d189-09a654f8b835a2a8
   MODEL      FHEM
   NAME       Telefon1
   NOTIFYDEV  global
   NR         232377
   NTFY_ORDER 50-Telefon1
   STATE      cmd_1
   TYPE       DOIF
   VERSION    23418 2020-12-26 10:04:12
   READINGS:
     2021-01-19 11:17:22   cmd             0
     2021-01-18 02:31:04   cmd_event       timer_1
     2021-01-18 02:31:04   cmd_nr          1
     2021-01-19 11:17:22   mode            enabled
     2021-01-19 11:17:22   state           initialized
     2021-01-19 11:17:22   timer_01_c01    20.01.2021 02:31:00
   Regex:
     accu:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday)
   days:
   do:
     0:
       0          {TelefonAus}
     1:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 1
     sleeptimer -1
   intervalfunc:
   localtime:
     0          1611106260
   realtime:
     0          02:31:00
   time:
     0          02:31:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1611106260:
       localtime  1611106260
       hash:
   uiState:
   uiTable:
Attributes:
   comment    Telefon aus und danach anschalten
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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

Beta-User

Mit meinen sehr begrenzten DOIF-"Kenntnissen" wage ich mal das Stichwort "do always" (bzw. einen weiteren Zweig) in den Raum zu werfen ::) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

kumue

attr Telefon do always
damit es auch am nächsten tag auslöst...

der zustand des DOIF ändert sich ja nicht, verharrt ja in cmd_1
und damit es auch morgen passiert, dieses attribut setzen

Damian

#8
Wenn man ohne Zustandsauswertung arbeiten will und vor allem ohnehin Perlfunktionen nutzt, bietet sich der Perlmodus an. Hier kommt man meistens ohne Attribute aus, insbesondere gibt es kein do always - es gibt hier auch keine Zustände, die verwaltet werden.

DOIF {[02:31];::TelefonAus}

Edit:
Wenn die Perlfunktion nicht im DOIF-Package ist, sondern im Standard-Package main, so müssen zwei Doppelpunkte vor die eigene Funktion, es sei denn, man definiert die Funktion im DOIF-Package, das hat den Vorteil, dass man kurze Namen nehmen kann, ohne Gefahr zu laufen, dass die Funktion mit einer anderen Funktion gleichen Namens kollidiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

andies

Also doch do always, ich hatte es geahnt. Das habe ich nie richtig verstanden - ich dachte, ohne Zweige könnte ich darauf verzichten.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
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