Hauptmenü

Frage zu einem Modul

Begonnen von Jörg, 30 Mai 2014, 18:09:55

Vorheriges Thema - Nächstes Thema

Jörg

Hi,
zur Zeit programmiere ich ein Modul. Damit möchte ich ein Notify erstellen:
fhem ('define notify_tempsensor notify $Sensor_:(humi.*) {}');

Das Notify wird auch erstellt, aber der Inhalt des Strings wird nicht genommen, sondern der String wird nur als String angezeigt.
Gibt es da eine Möglichkeit, oder geht das nicht?


LG Jörg

herrmannj

Hi,

anstelle von ' das doppelte Hochkomma (")

vg
jörg

Jörg

Hi,
vielen Dank, das war es. :)


Habe aber noch eine Frage.
Mit if (!$defs {d_tmp}) {...} kann man feststellen, ob ein Dummy existiert. In meinem Modul habe ich eine Schleife laufen, mit der $_sn von 1 bis 10 hochzählt.
FHEM stürzt jedoch ab, wenn die Stelle if (!$defs {d_solartmp$_sn}) erreicht wird. Mit if (!$defs {'d_solartmp$_sn'}) Stürzt FHEM nicht mehr ab, aber gibt mir immer das Ergebnis, dass d_solartmp1 nicht existiert.

         if (!$defs {'d_solartmp$_sn'}) {
               Log3($name, 3, "Solarswitch $_sn NEIN");
         }
         else {
               Log3($name, 3, "Solarswitch $_sn JA");
         }


Hast Du da noch einen Tipp für mich?

Elektrolurch

'$name' wird nicht ausgewertet
"$name" schon, daher das andere Verhalten von $defs{'...$..

configDB und Windows befreite Zone!

Jörg

Danke für den Hinweis !!!

Mit if (!$defs {"d_solartmp".$_sn}) {...} funktioniert es nun. :)

Elektrolurch

Schöner wäre allerdings:

if (!defined($defs {"d_solartmp".$_sn})) 
configDB und Windows befreite Zone!

Jörg

Inwiefern meinst Du denn, dass es schöner ist?
Ist die Abfrage dann ressourcenschonender, oder meintest Du die Optik des Codes?

Elektrolurch

Lies mal in der Perl-Dok die Unterschiede von defined und exists nach.
Wenn man die Existenz eines Hashes prüfen möchte, ist es mit "defined klarer zu lesen. Es könnte ja auch so sein, dass der Hash existiert, aber keinen Wert enthält, also undef ist. Was macht dann Deine Abfrage mit ! vor dem Hash?

Gruß


Elektrolurch
configDB und Windows befreite Zone!