zu dumm für eine Dummy Variable

Begonnen von eburkon, 31 Mai 2014, 14:53:08

Vorheriges Thema - Nächstes Thema

eburkon

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
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

Rince

Hast du den Dummy denn auch definiert?
Und Set schreibt sich set (klein!)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

eburkon

Ok wenn ich Perl da nicht verwenden kann gibt es eine Methode ohne Perl auf Readings zuzugreifen?

Gruss
  Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

betateilchen

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);; }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

eburkon

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
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

ollir

wenn du im Floorplan nur ein Reading angezeigt brauchst, so verwende doch das Device Reading direkt im Floorplan. (siehe Anhang)

VG

eburkon

Cool Danke!
Das ist ja schon mal was. Geht sowas auch für das dashboard?

Gruss
  Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

justme1968

im dashboard geht das (und mehr) mit readingsGroup.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

Zitat von: betateilchen am 01 Juni 2014, 16:41:57
Man kann sogar die doppelten Semikolon in der Mitte weglassen

falsch.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

#13
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



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!