FHEM Forum

FHEM => Automatisierung => Thema gestartet von: grappa24 am 12 September 2014, 09:39:22

Titel: Variable mit ReadingsVal belegen
Beitrag von: grappa24 am 12 September 2014, 09:39:22
Hallo, ich bräuchte mal die Hilfe der Perl-Profis. Ich möchte ein Reading auslesen und über eine Variable in ein dummy schreiben:

define FBDECT_20000_temp dummy

FBCECT_20000 {
   my $temp=ReadingsVal("FBDECT_20000","temperature","");
   fhem ("set FBCECT_20000_temp $temp");
}


Mein dummy lässt sich "davon nicht beeindrucken"   :)
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: strauch am 12 September 2014, 09:43:48
Ich hätte ein ganz anderen Ansatz (wenn es dir als Readings reicht und kein state sein muss:

attr FBDECT_20000_temp userReadings temperature {sprintf(ReadingsVal("FBDECT_20000","temperature","0"));}

Ansonsten probiere deines mal mit setstate, wenn du es als State haben willst.
FBCECT_20000 {
   my $temp=ReadingsVal("FBDECT_20000","temperature","");
   fhem ("setstate FBCECT_20000_temp $temp");
}
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: igami am 12 September 2014, 09:57:25
Was hast du denn damit vor?

Es gibt doch auch das Modul ReadinsgProxy
http://fhem.de/commandref#readingsProxy (http://fhem.de/commandref#readingsProxy)

Ansonsten liegt der fehler doch glaube ich darin, dass es heißen muss:

FBCECT_20000 {
   my $temp=ReadingsVal("FBDECT_20000","temperature","");
   {fhem ("set FBCECT_20000_temp $temp")};
}


Gruß
Igami
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: justme1968 am 12 September 2014, 10:02:42
die erste frage hierbei ist immer warum soll das reading als kopie in einen dummy? in den aller meisten fällen ist das unnötig.

ansonsten ist ein ganz einfaches notify (mit der passenden regex) auf das original device und einem set <dummy device> %EVTPART1 das mittel der wahl.

user readings sind hier keine möglichkeit weil sie nur durch events im eigenen device getriggert werden.

gruss
  andre

Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: grappa24 am 12 September 2014, 11:05:05
Zitat von: justme1968 am 12 September 2014, 10:02:42
die erste frage hierbei ist immer warum soll das reading als kopie in einen dummy?
Danke Andre, ich möchte "einfach nur" ein Reading aus einer FBDECT Instanz in einen floorplan platzieren
Titel: Variable mit ReadingsVal belegen
Beitrag von: justme1968 am 12 September 2014, 11:11:47
das geht wie oben beschrieben per notify.define FBDECT_20000_temp dummy
define myNotify notify FBCECT_20000:temperature.* set FBDECT_20000_temp %EVTPART1


ansonsten schau dir mal readingsGroup an. beispiele im forum und im wiki. damit kannst du die readings die du anzeigen willst auch formatieren. und (was bei einem einzigen reading noch nicht wirklich relevant ist) longpoll updates werden nur gemacht wenn die readingsGroup auch irgendwo angezeigt wird.

gruss
  andre
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: grappa24 am 12 September 2014, 11:42:17
Damit kommt der Fehler Unknown module FBCECT_20000:temperature.*
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: justme1968 am 12 September 2014, 11:46:44
oben hat ein notify gefehlt.

gruss
  andre
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: grappa24 am 12 September 2014, 12:05:50
Danke Andre, genau das hab ich gesucht!
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: kvo1 am 14 Dezember 2014, 12:07:15
Hallo Andre,
ich hatte ein ähnliche Problem und dank deiner erklärung gelöst.

Zitatdefine Zaehlerstand dummy
define myNotify notify HCN2_Gas:countsOverall.* set Zaehlerstand %EVTPART1

Ich benötige aber nur 1/10 von %EVTPART1  ! , bekommen das aber nicht hin hin , weder
%EVTPART1\./10
noch
%EVTPART1\/10 geht

:'(  schon klar das sind sicher Basic´s ... stehe dennoch auf dem Schlauch !

Danke
klaus
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: justme1968 am 14 Dezember 2014, 13:06:47
rechnen kannst du nur auf perl ebene. du brauchst etwas in der art:
{ fhem("set Zaelerstand ". $EVTPART1 / 10 ) }

gruß
  andre
Titel: Antw:Variable mit ReadingsVal belegen
Beitrag von: kvo1 am 14 Dezember 2014, 14:10:10
genau das war´s

define myNotify notify HCN2_Gas:countsOverall.* { fhem("set Zaehlerstand ". $EVTPART1 / 10 ) }

Danke & Gruss
klaus