[gelöst] Frage zu defmod vs. define Definition

Begonnen von FHEMAN, 11 Dezember 2016, 22:55:05

Vorheriges Thema - Nächstes Thema

FHEMAN

Hallo, ich bin mir nicht ganz sicher, ob ich irgendwo einen Fehler habe. Es sieht so aus, als würde sich defmod bei der Definition anders verhalten als define.
Konkret geht es um ein Notify, in dem folgendes AT erstellt wird:

Kurzversion:
fhem("defmod at.WindowOrDoorOpen.$NAME.timer at +00:10:00 { ... }");

Langversion:
fhem("defmod at.WindowOrDoorOpen.$NAME.timer at +00:10:00 { SendMessage('Fenster '.alias($NAME).' offen', 'Offen seit '.(time - time_str2num(ReadingsTimestamp($NAME,'state',0 ))), 'Pushover,Say')}");

$NAME ist bspw. TFK.Kueche.Verschluss.Sw.01

Im Log taucht dann auf:

2016.12.11 22:37:52.468 3: at.WindowOrDoorOpen.TFK.Kueche.Verschluss.Sw.01.timer: Bareword "TFK" not allowed while "strict subs" in use at (eval 2183908) line 1.
Bareword "Kueche" not allowed while "strict subs" in use at (eval 2183908) line 1.
Bareword "Verschluss" not allowed while "strict subs" in use at (eval 2183908) line 1.
Bareword "Sw" not allowed while "strict subs" in use at (eval 2183908) line 1.


Erstelle ich es mit define, funktioniert es hingegen.
Ist das so gewollt, hat das einen Grund, oder liegt der Fehler an anderer Stelle?

Gruß
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Otto123

Hi Ronny,

zeig mal bitte ein list von dem notify.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

FHEMAN

Hi Otto,

voila:

Internals:
   DEF        TFK[\.].*[\.]Sw.(\d\d.Verschluss):(closed|open|tilt|locked) {
# Open Window Alert Timer
if (($EVENT eq "open") && (Value("Aussentemperatur") < 13) && (AttrVal("$NAME", "WindowOpenWatchdog", 1))) {
   fhem("define at.WindowOrDoorOpen.$NAME.timer at +00:10:00 { SendMessage('Fenster '.alias($NAME).' offen', 'Offen seit '.(time - time_str2num(ReadingsTimestamp($NAME,'state',0 ))), 'Pushover,SayEx')}");
} elsif (($EVENT eq "closed") && Value("at.WindowOrDoorOpen.$NAME.timer")) {
   fhem("delete at.WindowOrDoorOpen.$NAME.timer");
}
}
   NAME       notify.TFK.Alle
   NR         230
   NTFY_ORDER 50-notify.TFK.Alle
   REGEXP     TFK[\.].*[\.]Sw.(\d\d.Verschluss):(closed|open|tilt|locked)
   STATE      active
   TYPE       notify
   Readings:
     2016-12-11 23:19:58   state           active
Attributes:
   room       Fenster
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Otto123

Hi Ronny,

sorry ich dachte daran, der Fehler liegt vielleicht weiter vorn. Aber das sieht ok aus.

Da kann ich glaube ich nicht helfen.  :-X

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

igami

$NAME wird nur durch den Namen ersetzt. Wenn du das in Perl aufrufen verwendest, musst du es noch zusätzlich in Anführungszeichen setzen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

FHEMAN

Der Vollständigkeit halber, wie es bei mir nun funktioniert:

fhem("defmod at.WindowOrDoorOpen.$NAME.timer at +*{3}00:10:00 { SendMessage('$devalias ist seit '.(sprintf('%.d', (time - time_str2num(ReadingsTimestamp('$NAME','state',0 ))) / 60)).' Minuten offen.', ' ', 'Pushover,SayEx')}");

($devalias wurde vorher mittels alias($NAME) zugewiesen)
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB