Hallo Leute,
Ich bin offensichtlich zu doof.
Ich möchte eine Dummy variable OUT_TEMP definieren um sie auf dem dashboard bzw. Floorplan anzuzeigen.
diese möchte ich mit einem reading eines KS300 wettersensors befüllen.
Dazu habe ich folgenden notify definiert. Aber er funktioniert nicht.
define ntfy_gtemp notify KS300 Set OUT_TEMP {ReadingsVal("KS300", "temperature", 99);;}
Was mache ich falsch?
Gruss
Ekkehard
Hast du den Dummy denn auch definiert?
Und Set schreibt sich set (klein!)
Zitat von: eburkon am 31 Mai 2014, 14:53:08
Hallo Leute,
Ich bin offensichtlich zu doof.
Ich möchte eine Dummy variable OUT_TEMP definieren um sie auf dem dashboard bzw. Floorplan anzuzeigen.
diese möchte ich mit einem reading eines KS300 wettersensors befüllen.
Dazu habe ich folgenden notify definiert. Aber er funktioniert nicht.
define ntfy_gtemp notify KS300 Set OUT_TEMP {ReadingsVal("KS300", "temperature", 99);;}
Was mache ich falsch?
Gruss
Ekkehard
Ein Perlausdruck innerhalb eines FHEM-Befehls geht so ohne Weiteres nicht, das musst du dann schon komplett in Perl ausdrücken.
Es sei denn du benutzt IF oder demnächst DOIF ;)
Gruß
Damian
Ok wenn ich Perl da nicht verwenden kann gibt es eine Methode ohne Perl auf Readings zuzugreifen?
Gruss
Ekkehard
auch ReadingsVal() ist schon perl.
Lass Dich bitte von Damians Aussage nicht verwirren. Das was Du machen möchtest, geht natürlich auch ohne IF und DOIF.
define ntfy_gtemp notify KS300 {my $t = ReadingsVal("KS300", "temperature", 99);; fhem("set OUT_TEMP ".$t);; }
Zitat von: betateilchen am 01 Juni 2014, 06:01:18
auch ReadingsVal() ist schon perl.
Lass Dich bitte von Damians Aussage nicht verwirren. Das was Du machen möchtest, geht natürlich auch ohne IF und DOIF.
define ntfy_gtemp notify KS300 {my $t = ReadingsVal("KS300", "temperature", 99);; fhem("set OUT_TEMP ".$t);; }
Ich wiederhole mich gerne an dieser Stelle:
Zitat: "Ein Perlausdruck innerhalb eines FHEM-Befehls geht so ohne Weiteres nicht, das musst du dann schon komplett in Perl ausdrücken."
denn "set..." ist ein FHEM-Befehl und da kannst du nicht ohne Weiteres Perl in geschweiften Klammern einsetzen,
{my $t = ReadingsVal("KS300", "temperature", 99);; fhem("set OUT_TEMP ".$t);; } ist dagegen in den geschweiften Klammern
komplett Perl.
Übrigens, die doppelten Semikolons am Ende kannst du weglassen.
Gruß
Damian
Servus Miteinander,
Erst mal Danke für die Hilfe.
In meiiner naiven Einfalt muss ich schon mal fragen ob es nicht gut wäre eine einfachere
Methode zu implementieren um auf readings zuzugreifen?
Auch der Umweg über eine Dummyvariable um überhaupt ein Reading im Floorplan darzustellen
finde ich, wie soll ich sagen, doof.
Wenn jetzt alle "Ketzer auf den Scheiterhaufen" schreien na dann...
Gruss
Ekkehard
wenn du im Floorplan nur ein Reading angezeigt brauchst, so verwende doch das Device Reading direkt im Floorplan. (siehe Anhang)
VG
Cool Danke!
Das ist ja schon mal was. Geht sowas auch für das dashboard?
Gruss
Ekkehard
im dashboard geht das (und mehr) mit readingsGroup.
gruss
andre
Zitat von: Damian am 01 Juni 2014, 08:19:21
Übrigens, die doppelten Semikolons am Ende kannst du weglassen.
Klugscheisser...
Man kann sogar die doppelten Semikolon in der Mitte weglassen, wenn man weiss, was man tut.
Die doppelten Semikolon werden allerdings immer funktionieren - im Gegensatz zu jeder anderen Variante.
Zitat von: betateilchen am 01 Juni 2014, 16:41:57
Man kann sogar die doppelten Semikolon in der Mitte weglassen
falsch.
define ntfy_gtemp notify KS300 {my $t = ReadingsVal("KS300", "temperature", 99);; fhem("set OUT_TEMP ".$t)}
würde funktionieren.
define ntfy_gtemp notify KS300 {my $t = ReadingsVal("KS300", "temperature", 99) fhem("set OUT_TEMP ".$t)}
würde nicht funktionieren.
und wenn wir schon am "klugscheißen" sind (ich habe mir mal deine Ausdrucksweise kurz ausgeliehen), würde auch gehen:
define ntfy_gtemp notify KS300 {fhem("set OUT_TEMP ". ReadingsVal("KS300", "temperature", 99))}
Das ist aber ein anderer Code, es ging ja hier nur um etwas wegzulassen und nicht um anderen Code zu produzieren. Mit einem solchen Vorschlag hättest du deine Wette verloren ;)
Gruß
Damian
Zitat von: Damian am 01 Juni 2014, 17:15:43
würde funktionieren:
...
würde nicht funktionieren.
...
würde auch gehen:
boah, gibst Du eine Gülle von Dir...
"würde funktionieren:" stimmt
"würde nicht funktionieren:" stimmt - hat aber mit meiner Aussage überhaupt nix zu tun. Ich habe nirgends geschrieben, dass es ganz ohne Semikolon funktioniert.
"würde auch gehen" - falsch (wenn Du es nicht glaubst: probiers aus!)
Und ich würde meine Wette gewinnen:
{my $t = ReadingsVal("KS300", "temperature", 99); fhem("set OUT_TEMP ".$t)}
funktioniert nämlich problemlos ohne doppelte Semikolon in der Mitte. Wenn Du es nicht glaubst: Kopiere den Codeschnipsel in den DEF Editor des notify.
Over & Out.
Zitat von: betateilchen am 01 Juni 2014, 17:25:04
boah, gibst Du eine Gülle von Dir...
"würde funktionieren:" stimmt
"würde nicht funktionieren:" stimmt - hat aber mit meiner Aussage überhaupt nix zu tun. Ich habe nirgends geschrieben, dass es ganz ohne Semikolon funktioniert.
"würde auch gehen" - falsch (wenn Du es nicht glaubst: probiers aus!)
Und ich würde meine Wette gewinnen:
{my $t = ReadingsVal("KS300", "temperature", 99); fhem("set OUT_TEMP ".$t)}
funktioniert nämlich problemlos ohne doppelte Semikolon in der Mitte. Wenn Du es nicht glaubst: Kopiere den Codeschnipsel in den DEF Editor des notify.
Over & Out.
dann setze ich noch einen drauf:
Es ging hier um meine ursprüngliche Aussage, Zitat: "Übrigens,
die doppelten Semikolons am Ende kannst du weglassen."
Meinte ich damit ein Semikolon weglassen oder vielleicht doch
zwei. Deutsche Sprache - schwierige Sprache.
Wobei es am Ende des Codeschnipsel völlig egal ist, ob man EIN oder BEIDE Semikolons wegläßt. In der Mitte allerdings nicht. Meine Aussage war sachlich richtig formuliert (und sogar mit dem Zusatz versehen, dass man dabei natürlich wissen muss, was man tut)
So und jetzt sind wir wieder alle Lieb und vertragen uns ...
Gruss
Ekkehard
So sehen die dummys bei mir in der fhem.cfg aus und funktionieren:
define n_Temperaturdummy_Wohnzimmer notify Sensor_Wohnzimmer:measured-temp.* { fhem "set Temperaturdummy_Wohnzimmer ".ReadingsVal("Sensor_Wohnzimmer","measured-temp",0)."°C" }
Ich wollte nicht nur mehrere Readings aus einem Gerät frei platzierbar im Floorplan anzeigen, sondern mag auch gern die Einheit dahinter stehen haben, hier Grad Celsius.
Das Ergebnis sieht dann so aus: http://forum.fhem.de/index.php/topic,22336.0.html (http://forum.fhem.de/index.php/topic,22336.0.html)
und dummys und kopieren ist gar nicht nötig wenn man readingsGroup verwendet.
gruss
andre
cool
it's popcorn time
Jehowa :-)
Zitat von: Wuppi68 am 04 Juni 2014, 14:50:45
Jehowa :-)
Ich nehm' einen Spitzen, zwei Flache und ein Paket Kies. ;-)
Ist hier Weibsvolk anwesend? ;-)
Wahrscheinlich nicht, aber trotzdem besser wie "Germanys next T.M." ;D