FHEM Forum

FHEM => Automatisierung => Thema gestartet von: eburkon am 31 Mai 2014, 14:53:08

Titel: zu dumm für eine Dummy Variable
Beitrag 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
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Rince am 31 Mai 2014, 20:11:10
Hast du den Dummy denn auch definiert?
Und Set schreibt sich set (klein!)
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Damian am 31 Mai 2014, 23:09:52
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
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: eburkon am 01 Juni 2014, 05:21:44
Ok wenn ich Perl da nicht verwenden kann gibt es eine Methode ohne Perl auf Readings zuzugreifen?

Gruss
  Ekkehard
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag 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);; }

Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Damian am 01 Juni 2014, 08:19:21
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
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: eburkon am 01 Juni 2014, 09:13:35
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
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: ollir am 01 Juni 2014, 09:42:02
wenn du im Floorplan nur ein Reading angezeigt brauchst, so verwende doch das Device Reading direkt im Floorplan. (siehe Anhang)

VG
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: eburkon am 01 Juni 2014, 10:15:20
Cool Danke!
Das ist ja schon mal was. Geht sowas auch für das dashboard?

Gruss
  Ekkehard
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: justme1968 am 01 Juni 2014, 11:37:57
im dashboard geht das (und mehr) mit readingsGroup.

gruss
  andre
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: betateilchen am 01 Juni 2014, 16:41:57
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.
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Damian am 01 Juni 2014, 16:54:12
Zitat von: betateilchen am 01 Juni 2014, 16:41:57
Man kann sogar die doppelten Semikolon in der Mitte weglassen

falsch.

Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: betateilchen am 01 Juni 2014, 17:04:35
Zitat von: Damian am 01 Juni 2014, 16:54:12
falsch.

Worum willst Du wetten?
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Damian am 01 Juni 2014, 17:15:43
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



Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: betateilchen am 01 Juni 2014, 17:25:04
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.
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Damian am 01 Juni 2014, 17:42:01
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.



Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: betateilchen am 01 Juni 2014, 17:55:02
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)

Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: eburkon am 02 Juni 2014, 12:16:50
So und jetzt sind wir wieder alle Lieb und vertragen uns ...

Gruss
    Ekkehard
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: MaJu am 04 Juni 2014, 11:19:54
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)
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: justme1968 am 04 Juni 2014, 11:38:05
und dummys und kopieren ist gar nicht nötig wenn man readingsGroup verwendet.

gruss
  andre
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Wuppi68 am 04 Juni 2014, 14:50:45
cool

it's popcorn time

Jehowa :-)
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: eburkon am 05 Juni 2014, 00:11:25
Zitat von: Wuppi68 am 04 Juni 2014, 14:50:45
Jehowa :-)

Ich nehm' einen Spitzen, zwei Flache und ein Paket Kies. ;-)
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: P.A.Trick am 05 Juni 2014, 00:42:13
Ist hier Weibsvolk anwesend? ;-)
Titel: Antw:zu dumm für eine Dummy Variable
Beitrag von: Navigator am 07 Juni 2014, 09:55:29
Wahrscheinlich nicht, aber trotzdem besser wie "Germanys next T.M."  ;D