FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Sille am 14 Februar 2016, 18:41:40

Titel: [Gelöst] Fehler- notify: return value: Bareword not allowed while "strict subs"
Beitrag von: Sille am 14 Februar 2016, 18:41:40
Hi zusammen,

ich ärgere mich gerade mal wieder mit einem notify herum und bekomme es einfach nicht hin.

define notify_HA_Alarm_Wohnzimmer notify WZ_Fenster:open {
if ( ([HomeStatus] eq "1" ) ) {
fhem ("set FLU_Lampe on" )}
}


liefert den Fehler
notify_HA_Alarm_Wohnzimmer return value: Bareword "HomeStatus" not allowed while "strict subs"

Bei einem DOIF hat es mit den eckigen Klammern geklappt, vorher hatte ich den gleichen Fehler.
Folgendes klappt tadellos:

define doif_HA_Anwesenheitcheck DOIF ([Handy1] eq "absent" and [Handy2] eq "absent" and [HomeStatus] ne "1") (set HA_Anwesenheit absent,set FLU_Camera on,{system("sudo /Data/gigaset/set_away.sh")},set pushmsg msg 'Gigaset Elements' 'Alarmanlage: Scharf geschaltet!') DOELSE ([Handy1] eq "present" or [Handy2] eq "present" or [HomeStatus] eq "1")(set HA_Anwesenheit present, set FLU_Camera off,{system("sudo /Data/gigaset/set_home.sh")},set pushmsg msg 'Gigaset Elements' 'Alarmanlage: Ausgeschaltet!')

Wo ist mein Denkfehler?
LG Sille
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: marvin78 am 14 Februar 2016, 18:45:04
Du befindests dich im Perl Teil, erkennbar an den geschweiften Klammern. Perl kennt die eckigen Klammern nicht. Du wirst mit Readingsval arbeiten müssen oder IF verwenden.
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: Sille am 14 Februar 2016, 20:26:24
Ah, jetzt habe ich den Unterschied verstanden! Danke dafür!

Was meinst du mit "du wirst IF verwenden müssen"? Meinst du DOIF? IF ist ja schon mit dabei...

if ( ([HomeStatus] eq "1" ) )

Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: marvin78 am 14 Februar 2016, 20:27:24
IF und DOIF ist nicht das gleiche (siehe commandref).
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: CoolTux am 14 Februar 2016, 21:09:51
Vielleicht sollte kurz erwähnt werden das es ein FHEM IF gibt und natürlich ein Perl if



Grüße
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: Sille am 14 Februar 2016, 22:21:42
Wieder etwas gelernt!       IF <> if   

"Beim IF-Befehl (IF in Großbuchstaben) handelt es sich um einen FHEM-Befehl. Der Befehl kann überall dort genutzt werden, wo FHEM-Befehle vorkommen dürfen. Im Gegensatz zu Perl-if (if in Kleinbuchstaben) bleibt man auf der FHEM-Ebene und muss nicht auf die Perl-Ebene, um FHEM-Befehle mit Hilfe der fhem-Funktion auszuführen."

Danke für die Infos. Da muss ich erst wieder lesen und lernen... und probieren!

LG Sille
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: marvin78 am 15 Februar 2016, 07:00:33
Zitat von: CoolTux am 14 Februar 2016, 21:09:51
Vielleicht sollte kurz erwähnt werden das es ein FHEM IF gibt und natürlich ein Perl if


Im Grunde war das durch meinen Verweis auf die commandref klar.
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: Sille am 15 Februar 2016, 13:36:34
Hi Marvin,

für mich war das - auch mit dem Hinweis auf die Commandref - nicht klar, das es ein FHEM IF und ein Perl if gibt.

An dieser Stelle entscheidend für das Verständnis war genau dieser Hinweis "das es  ein FHEM IF gibt und natürlich ein Perl if". Jetzt habe ich verstanden, dass es eine FHEM-Umgebung und einen Perl-Bereich gibt und demnach auch verschiedene Syntax/Befehle. Anfänger halt.  ;)

Besten Dank dafür!

LG Sille
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: marvin78 am 15 Februar 2016, 14:00:14
Bitte die Grundlagen lernen. Ich empfehle das Anfänger PDF. Mit durch fragen wirst du nicht weit kommen.
Titel: Antw:Fehler beim notify: return value: Bareword not allowed while "strict subs"
Beitrag von: Sille am 15 Februar 2016, 19:28:06
Mea Culpa. Ich bin soo ungeduldig beim Realisieren meiner Ideen, da habe ich beim Querlesen offensichtlich geschlampt!

Wer hier mitliest, richtig ist:

define notify_HA_Alarm_Wohnzimmer notify WZ_Fenster:open {
if ( Value("HomeStatus") eq "1" )  {
fhem ("set FLU_Lampe on" )}
}    

LG
Sille
Titel: Antw:[Gelöst] Fehler- notify: return value: Bareword not allowed while "strict subs"
Beitrag von: CoolTux am 15 Februar 2016, 19:43:27
Hallo Sille,

Bitte verwende Codetags, macht das lesen von Code einfacher.
Deweiteren ist es wohl so, man möge mic bitte korrigieren wenn ich irre, das Value absolete ist. Sprich es wird in kommenden Versionen wohl verschwinden.
Daher meine Empfehlung


define notify_HA_Alarm_Wohnzimmer notify WZ_Fenster:open {
               if ( ReadingsVal("HomeStatus", "state", "") == 1 )  {
                           fhem "set FLU_Lampe on";
               }
}



Man kann das auch kürzen


define notify_HA_Alarm_Wohnzimmer notify WZ_Fenster:open {

             fhem "set FLU_Lampe on" if( ReadingsVal("HomeStatus", "state", "") == 1 );

}



Zahlen werden immer mathematisch verglichen.

Grüße