FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: LCN-User am 29 Mai 2014, 20:11:48

Titel: Nach Update funktioniert set nicht mehr
Beitrag von: LCN-User am 29 Mai 2014, 20:11:48
Hallo,

nach langer Abwesenheit habe ich heute meine 5.4-Installation auf den aktuellen Stand gebracht. Leider bekomme ich nun ein paar Warnungen und Fehlermeldungen, die ich nicht wegbekomme:

In OutsideTemp wird regelmäßig eine Temperatur von einer Pseudo-Webpage eingelesen als Text eingelesen:

define OutsideTemp at +*00:10 { \
   my $OutsideTemp =  GetHttpFile("192.168.178.1:8000","/replacestate?src=FHEM_Data.html");;\
   fhem ("set MyTemp $OutsideTemp");;\


Bis zum heutigen Update hat dies reibungslos funktioniert. Jetzt bekomme ich im Log folgende Meldungen:

ZitatUse of uninitialized value $OutsideTemp in concatenation (.) or string at (eval 151) line 3.
2014.05.29 19:53:36 3: set MyTemp  : no set value specified
2014.05.29 19:53:36 3: OutsideTemp: no set value specified

Das Concatenation interpretiere ich als Warnung wegen einer fehlenden Deklaration, habe aber keine Ahnung, wo und wie ich das deklarieren soll.
Die Fehlermeldungen bei der Zuweisung von $OutsideTemp an MyTemp verstehe ich gleichfalls nicht. Was hat sich hier gegenüber früheren Versionen geändert und wie muss die Syntax nun lauten?

Danke für eure Hilfe,
LCN-User
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: LCN-User am 30 Mai 2014, 17:37:15
So, leichte Fortschritte: ich habe das Define wie folgt geändert:

define OutsideTemp at +*00:10 { \
   my $OutsideTemp = "0.0"
  $OutsideTemp =  GetHttpFile("192.168.178.5:8000","/replacestate?src=FHEM_Data.html");;\
   fhem("set MyTemp $OutsideTemp");;\
}


Die lokale Definition der Variablen als String lässt die 'Concatenation'-Warnung verschwinden.
Das Überarbeiten der fhem-Befehlszeile (Leerzeichen zwischen fhem, und ( entfernt) eliminiert die 'no set value specified'-Meldungen.

Aber der FHEM-Befehl weist nun dem Dummy MyTemp statt dem Variableninhalt den Namen der Variablen zu, wird also mit dem Text $OutsideTemp befüllt. ??? Was mache ich denn hier falsch und wieso ging das früher?

Danke für Hilfe,
LCN-User
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: Puschel74 am 30 Mai 2014, 17:40:36
Hallo,

fhem("set MyTemp ".$OutsideTemp)
Versuchs mal so.

Grüße
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: LCN-User am 30 Mai 2014, 17:45:34
HalloPuschel74,

jetzt sind die Fehlermeldungen wieder da:

ZitatUse of uninitialized value $OutsideTemp in concatenation (.) or string at (eval 205) line 4.
2014.05.30 17:44:57 3: set MyTemp  : no set value specified
2014.05.30 17:44:57 3: OutsideTemp: no set value specified
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: Puschel74 am 30 Mai 2014, 17:49:39
Hallo,

grad nachgeschaut.
Ich setze den set-Befehl aus so zusammen wie du:
fhem("set $sensor $sensor_temp $zeichen");
Das klappt bei mir einwandfrei.

Sorry für die Falschinfo vorher.

Grüße
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: LCN-User am 30 Mai 2014, 17:53:26
Na ja, wie ich eingangs schrieb, hat es ja vorher auch funktioniert. Das Problem existiert erst seit gestern Nachmittag, als ich in einem Anflug von feiertäglichem Wahnsinn "update" ins Webfront eingegeben habe...
Titel: Antw:Nach Update funktioniert set nicht mehr
Beitrag von: LCN-User am 30 Mai 2014, 19:40:56
Ich verstehe es nicht.

Das Verwenden von Anführungsstrichen " im DEF bringt Fehlermeldungen:

+*00:01 {
   my $OutsideTemp = "0.0";
   $OutsideTemp =  GetHttpFile("192.168.178.1:8000", "/replacestate?src=FHEM_Data.html");
   fhem("set MyTemp $OutsideTemp");
}


bringt die oben erwähnten no set value specified-Fehler. Ersetzt man die Anführungsstriche durch Apostroph, sind die Fehler weg, wobei meinem Dummy auch weiterhin nur der Text <$OutsideTemp> statt des Inhalts zugewiesen wird.

Wo finde ich eine korrekt Syntax-Beschreibung? Es kann doch nicht sein, dass diese Implementierung für Nicht-Experten nach dem Trial and Error-Prinzip funktioniert. Eine einwandfrei funktionierende Definition (Softwarestand Sep 2013) geht mit dem neuesten Stand vom 28. Mai nicht mehr. Wiki & Co haben überall Anführungsstriche, mit denen es aber nicht funktioniert. Welche Bedeutung haben die Apostrophe?

Ich bin ein wenig frustriert...