Hallo zusammen,
wenn folgendes in die DOIF Setze, dannn erhalten ich in der $a immer "0" als Value. Wenn ich {ReadingsNum('$NAME','AM2301_Temperature',0)} in der FHEM CommandBox ausführe, dann gibt es einen Rückgabewert. Woran kann das liegen, dass nur $b gefüllt ist und $a mit 0 ausgegeben wird?
ZitatMQTT2_.*:AM2301_Temperature:.* {$a=ReadingsNum('$NAME','AM2301_Temperature',0), $b=ReadingsNum("$NAME","AM2301_Humidity",0);; system("echo $a http://debian:81/input/?node='$NAME&data={Temp:$a,Humidity:$b}&apikey=xxxxxxxx'"); return}
Danke für die Hilfe.
Hallo,
ich glaube nicht, dass wenn du
{ReadingsNum('$NAME','AM2301_Temperature',0)}
in die fhem-Web Zeile eingibst, dass du bekommst was du willst: woher soll denn in dem Fall $NAME kommen ;)
Das nur am Rande... ;)
Wenn ich die beiden Abfragen $a und $b vergleiche, dann sehe ich:
$a: "Einzelhochkomma" um $NAME, also '$Name' damit wird die Variable $Name nicht "aufgelöst" und somit wird versucht im Device "$NAME" das Reading "AM2301_Temperature" zu lesen. Ich schätze du hast kein Device mit dem Namen "$NAME" -> daher die 0 ;)
$b: hier sehe ich "Anführungszeichen", also "$NAME" d.h. der Name wird "aufgelöst" und vermutlich beim gewünschten Device das entsprechende Reading abgefragt -> passt
Anmerkung: bei DOIF gibt es auch "Kurzschreibweisen", sowas wie: [DeviceName:ReadingName] statt ReadingsVal bzw. noch irgendwie mit :d statt ReadingsNum: siehe commandref DOIF
Gruß, Joachim
Hi,
also wenn sich bei DOIF nicht gerade alles geändert hat, würde ich sagen: die gepostete DEF stammt aus einem notify.
:o ;D
Gruß Otto
Zitat von: Otto123 am 24 April 2019, 17:46:19
also wenn sich bei DOIF nicht gerade alles geändert hat, würde ich sagen: die gepostete DEF stammt aus einem notify.
Hi Otto,
ja hab mich auch gewundert...
...aber ändert an dem (vermutlichen) Problem nix ;)
Gut die Anmerkung bzgl. DOIF wäre hinfällig ;)
Mal sehen...
Gruß, Joachim
Ach verdammt, ja das ist noch ein Notify und ja ich hab die "" vor lauter Klammern nicht gesehen.
Wie würde ein vernümpftiges DOIF aussehen, das bei einer änderung von MQTT2_.*:AM2301_Temperature triggert und dann ein curl in der shell ausführt (mit dem Variablenwert drin)?
Warum? Wenn das notify tut? Was soll an einem DOIF für diese Anwendung besser sein als bei einem notify.