Hauptmenü

Perl Reading als Variable

Begonnen von Stril, 19 Mai 2015, 14:38:22

Vorheriges Thema - Nächstes Thema

Stril

Hallo!

Ich stehe hier gerade ziemlich auf dem Schlauch. Ich möchte als Variable ein Reading eines Sensors setzen:


my $r1 = $value{"Sensor"};;\ --> funktioniert

my $r2 = $value{"Sensor:alarm"};;\ --> funktioniert leider nicht


Könnt ihr mir einen Tipp geben, wie ich das Reading "alarm" des Sensors "Sensor" in eine Variable bekomme?

Vielen Dank und Gruß
Phil

justme1968

ReadingsVal('Sensor','alarm','');

$value ist veraltet und liefert wie Value(...) den STATE. ReadingsVal liefert jedes reading.

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

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

Stril

Hallo!

Das sieht schonmal prima aus. Es scheint bei mir dann nur ein Problem mit den Dateitypen zu geben.

Hier ein Beispiel mit einem Dimmer:


2015.05.19 15:02:12 5: Cmd: >{
        my $r1 = ${ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')};
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp");
}<
2015.05.19 15:02:12 3: nL_Wohnzimmer return value: Can't use string ("59") as a SCALAR ref while "strict refs" in use at (eval 61) line 2.



Hast Du dazu auch noch einen Tipp?

Vielen Dank und Grüße
Phil

[/code]

JoWiemann

Hallo,

warum das "$" in ... = ${ReadingsVal ...

Grüße Jörg

PS. Was hast Du in der fhem.cfg stehen?
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Stril

Hallo!

Ich dachte, das "$" muss an den Anfang.
Derzeit steht in der fhem.cfg:


define nL_Wohnzimmer notify aLd_EG_Wohnzimmer.*:dim:.* {\
        my $r1 = ${ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')};;\
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp");;\
}


Wenn ich das "$" weglasse, funktioniert es leider auch nicht:


2015.05.19 15:35:54 3: eval: {
        my $r1 = {ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')};
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp");
}
2015.05.19 15:35:54 3: nL_Wohnzimmer return value: -1


Gruß
Phil




Stril

Hallo!

Hab es hinbekommen.

Hier mein Ergebnis:

        my $r1 = (ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')) ;;\


Gruß und danke!
Phil

flurin

Zitat von: Stril am 19 Mai 2015, 15:36:37
Hallo!

Ich dachte, das "$" muss an den Anfang.
Derzeit steht in der fhem.cfg:


define nL_Wohnzimmer notify aLd_EG_Wohnzimmer.*:dim:.* {\
        my $r1 = ${ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')};;\
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp");;\
}


Wenn ich das "$" weglasse, funktioniert es leider auch nicht:


2015.05.19 15:35:54 3: eval: {
        my $r1 = {ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','')};
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp");
}
2015.05.19 15:35:54 3: nL_Wohnzimmer return value: -1


Gruß
Phil

Versuchs mal so:


define nL_Wohnzimmer notify aLd_EG_Wohnzimmer.*:dim:.* {\
        my $r1 = ReadingsVal('aLd_EG_Wohnzimmer_Sofa','dim','');;\
        system("/bin/echo $r1  > /opt/fhem/ownscript/tmp/wz.tmp")}