Guten Morgen Rudi,
Mittlerweile kennst Du mich ein wenig und weißt das ich hin und wieder etwas zerstreut bin in meinem tun und dadurch die seltsamsten Fehler produziere.
Ich habe da mal wieder einen für Dich.
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log (1,"ACHTUNG!!! DEVICE: Nexus7SchlafzimmerICE, EVENT: $EVENT");;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log (1,"ACHTUNG!!! DEVICE: Nexus7SchlafzimmerICE, EVENT: $EVENT");;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log (1,"ACHTUNG!!! DEVICE: presenceIsabelICE, EVENT: $EVENT");;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log (1,"ACHTUNG!!! DEVICE: presenceIsabelICE, EVENT: $EVENT");;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log (1,"ACHTUNG!!! DEVICE: presenceIsabelICE, EVENT: $EVENT");;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
| LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { printf "ACHTUNG!!! DEVICE: TempFeuchtSensorAussenICE, EVENT: $EVENT";;\
if($EVENT eq 'off' or $EVENT =~ /^Long/) {\
if( $EVENT eq 'off' ) {\
\
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );;\
\
\
} else {\
\
fhem "set doifLgTV_Control power off;; set mFimPower01_Out2 off";;\
\
}\
\
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {\
\
fhem "set lightScenenLicht_Media scene TV_schauen";;\
}\
} |
Was Du hier siehst sind meine 5 letzten Versionen für eine Notify Konfiguration wie sie configdb abspeichert.
Interessant ist hierbei die erste Zeile mit Log (1... bzw printf und hierbei ganz besonders das erste Wort hinter DEVICE:
Frag mich nicht wieso aber statt einem $NAME habe ich in allen 5 Konfigurationen die Variable $DEVICE genommen und fhem.pl hat beim abspeichern aus $DEVICE einfach ein Devicenamen aus meiner Config dafür genommen und noch ein ICE hinten angehangen. Im Moment gehe ich davon aus das der verwendete Devicename das erste Device ist was ein Event beim oder kurz nach dem abspeichern erzeugt hat. Ist aber nur schlecht geraten
Kannst Du Dir das erklären?
Grüße
Hallo Leon,
auch wenn deine Frage eigentlich an Rudi ging ...
Zitat von: CoolTux am 18 April 2017, 06:47:30
Frag mich nicht wieso aber statt einem $NAME habe ich in allen 5 Konfigurationen die Variable $DEVICE genommen und fhem.pl hat beim abspeichern aus $DEVICE einfach ein Devicenamen aus meiner Config dafür genommen und noch ein ICE hinten angehangen. Im Moment gehe ich davon aus das der verwendete Devicename das erste Device ist was ein Event beim oder kurz nach dem abspeichern erzeugt hat. Ist aber nur schlecht geraten
Kannst Du Dir das erklären?
Es sieht wohl so aus, als ob "$DEVICE" an der Stelle so aufgelöst wird: $DEV.'ICE'
zu $DEV s.a.: https://fhem.de/commandref_DE.html#set
Gruß Benni.
ZitatWas Du hier siehst sind meine 5 letzten Versionen für eine Notify Konfiguration wie sie configdb abspeichert.
Ich habe geschafft bis 6 zu zaehlen :)
configDb kenne ich nicht, und das erste | Zeichen verwirrt mich: wo kommt es her?
Ich schaffe mit einem aktuellen FHEM nicht mal die stark verkuerzte Version deines notifies anzulegen, dem ab 5.8 per Voreinstellung aktivierten perlSyntaxCheck sei dank:
Zitatfhem> define n notify d { Log 1, "DEVICE: $DEVICE" }
Global symbol "$DEVICE" requires explicit package name at (eval 11) line 1.
$DEV gibt es (soweit ich sehe) nur im ReplaceSetMagic (wie Benni darauf hingewiesen hat), und perl ist eigentlich intelligent genug, $DEV und $DEVICE nicht zu verwechseln.
Ergo: keine Idee, und ich habe nicht mal eine Chance es nachzubauen.
Hallo Benni,
Vielen Dank für Deine Antwort. Deine Erklärung und das was ich dazu nachgelesen habe klingt auf jeden Fall für mich schlüssig.
Dann kürzt er also $DEVICE auf $DEV . ICE und schreibt wohl das erste $DEV rein was irgendein EVENT auslöst. Wäre zu mindest meine Erklärung.
Bin ja immer so ein Kandidat für solche lustigen Sachen.
Hallo Rudi,
Und da sind wir wieder. Du, ich und meine "drei" Probleme. Lach.
Also ich habe definitiv Feature Level 5.8 am laufen. Das Notify selbst habe ich glaube noch unter 5.7 angelegt und dann nur noch erweitert. Ich schaue es mir aber auf jeden Fall an.
Die Ausszüge, ja es sind 6, Sorry habe vergessen das 5 Sicherungen gemacht werden und der 6. ist dann der aktuelle Eintrag ;D , sind das Ergebnis einer sql select Anweisung.
Das notify selbst sieht aktuell so aus
Internals:
CFGFN
DEF LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log(1, "ACHTUNG!!! DEVICE: $NAME, EVENT: $EVENT");
if($EVENT eq 'off' or $EVENT =~ /^Long/) {
if( $EVENT eq 'off' ) {
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );
} else {
fhem "set doifLgTV_Control power off; set mFimPower01_Out2 off";
}
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {
fhem "set lightScenenLicht_Media scene TV_schauen";
}
}
NAME notifyLGTVausPowerAus
NR 525
NTFY_ORDER 50-notifyLGTVausPowerAus
REGEXP LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off)
STATE active
TYPE notify
Readings:
2017-04-18 06:33:41 state active
Attributes:
Natürlich habe ich nun $NAME genommen so wie es sich gehört ;)
Ich prüfe gleich noch ob ich es wenn ich es neu anlege abspeichern kann.
Melde mich noch mal.
Grüße
So. Gerade noch mal probiert.
define notifyTEST notify a b
Danach ein DEF und und a b ersetzt durch
LgTV.(off|on)|HM_3657EB_Btn_01:(Short|Long).*|doifLgTV_Control.power:.(on|off) { Log(1, "ACHTUNG!!! DEVICE: $NAME, EVENT: $EVENT");
if($EVENT eq 'off' or $EVENT =~ /^Long/) {
if( $EVENT eq 'off' ) {
fhem "set lightScenenLicht_Media scene Media_alles_aus" if( Value("dummyFernsehrAufnahme") eq "off" );
} else {
fhem "set doifLgTV_Control power off; set mFimPower01_Out2 off";
}
} elsif($EVENT =~ /on/ or $EVENT =~ /^Short/) {
fhem "set lightScenenLicht_Media scene TV_schauen";
}
}
Ein fheminfo gibt folgendes zum besten
Fhem info:
Release : 5.8 FeatureLevel: 5.8
OS : linux
Arch : arm-linux-gnueabihf-thread-multi-64int
Perl : v5.20.2
uniqueID : 880347d1e07431740e21cc4a08edfc06
upTime : 4 days, 19:04:27
Defined modules:
AMAD : 8
CUL_HM : 157
DOIF : 21
DbLog : 2
FB_CALLLIST : 1
FB_CALLMONITOR : 1
FHEM2FHEM : 1
FHEMWEB : 3
FRITZBOX : 1
FileLog : 1
GUEST : 1
HMLAN : 1
HMinfo : 1
HOMBOT : 1
HUEBridge : 1
HUEDevice : 16
LightScene : 1
PLAYBULB : 7
PRESENCE : 11
PROPLANTA : 1
Pushover : 1
RESIDENTS : 3
ROOMMATE : 4
SVG : 12
SYSMON : 1
TRX : 1
TRX_LIGHT : 11
TRX_WEATHER : 3
Twilight : 1
UWZ : 1
UbiquitiMP : 1
UbiquitiOut : 6
Weather : 1
XiaomiFlowerSens : 1
allowed : 2
at : 11
autocreate : 1
cloneDummy : 7
configDB : 1
dewpoint : 2
dummy : 33
eventTypes : 1
holiday : 2
msgConfig : 1
notify : 80
readingsGroup : 19
readingsProxy : 17
sequence : 1
statistics : 1
structure : 25
telnet : 1
watchdog : 39
weblink : 1
Defined models per module:
CUL_HM : ActionDetector,CCU-FHEM,HM-CC-RT-DN,HM-Dis-WM55,HM-ES-PMSw1-Pl,HM-ES-TX-WM,HM-LC-Dim1TPBU-FM,HM-LC-SW1-BA-PCB,HM-LC-SW1-FM,HM-LC-SW1-PL2,HM-LC-Sw1PBU-FM,HM-PB-2-WM55-2,HM-PB-6-WM55,HM-SEC-RHS,HM-SEC-SC-2,HM-SEC-SD,HM-TC-IT-WM-W-EU,HM-WDS40-TH-I,HM-WDS40-TH-I-2,virtual_1
HUEDevice : LCT001,LLC010,LLC020,LST001
PLAYBULB : BTL300_v5,BTL400M_v18
Transmitting this information during an update: yes
You can change this via the global attribute sendStatistics
Grüße
Und wo ist das Problem?
Das Problem war das ich immer statt $NAME $DEVICE eingetragen habe
Log(1, "ACHTUNG!!! DEVICE: $DEVICE, EVENT: $EVENT");
Und FHEM daraus ein
Log(1, "ACHTUNG!!! DEVICE: REALERDEVICENAMEICE, EVENT: $EVENT");
gemacht hat. Dabei wurde bei jedem abspeichern ein anderer realer Devicename aus meinem System genommen und nach dem Devicenamen immer noch ein ICE mit an dem Namen angehangen.
Es ist kein Problem da ich weiß das ich einfach statt $DEVICE $NAME hätte nehmen müssen. Aber es ist eine in meinen Augen Absonderheit. Wie kann es sein das $DEVICE so komisch aufgelöst wird? Ist es ein Bug? wenn ja habe ich ihn hiermit gemeldet. Wenn nicht, stempeln wir es einfach als Absonderheit ab und ich mache es in Zukunft richtig ;D
Grüße
Ja, wir wissen beide, dass $DEVICE da nicht hingehoert, und wir wollen beide vermeiden, dass wenn es irgendwie reingekommen ist, was unerwartetes passiert.
Ich habe jetzt ins fhem.cfg folgendes geschrieben:
define n notify d { Log(1, "ACHTUNG!!! DEVICE: $DEVICE, EVENT: $EVENT");; }
Das ueberlebt ein FHEM start und ein save, und wenn ich "trigger d" ausloese, kommt brav die Meldung im Log:
Zitat1: ERROR evaluating my $TYPE='dummy';my $SELF='n';my $EVENT='';my $NAME='d';{ Log(1, "ACHTUNG!!! DEVICE: $DEVICE, EVENT: $EVENT"); }: Global symbol "$DEVICE" requires explicit package name at (eval 11) line 1.
2017.04.18 08:57:25 3: n return value: Global symbol "$DEVICE" requires explicit package name at (eval 11) line 1.
-> Hypothese: das ist ein configDb Problem und damit betateilchens Baustelle.
Interessant. In der Tat könnte es auch ein Problem von configdb sein. Ich werde heute Abend mal das ganze auf meinem Testsystem laufen lassen. Da habe ich noch fhem.conf
Ich Danke Dir ganz doll für Deine Zeit und Mühen.
Mein Fazit
1. Es in Zukunft natürlich richtig machen $NAME statt $DEVICE
2. Versuchen das Mysterium zu klären
Auch an Benni ein fettes Danke für sein treffende Antwort
Mal schauen ob Udo Zeit und ein Ohr dafür hat.
Grüße
Wenn ich da mal kurz auf einen ähnlichen Vorfall verlinken darf
https://forum.fhem.de/index.php/topic,70789.0.html
;D