Hauptmenü

Zugriff auf Sensordaten

Begonnen von My-FHEM, 14 Februar 2013, 11:09:49

Vorheriges Thema - Nächstes Thema

My-FHEM

Hallo,

wie kann man aus fhem auf die zB die letzten drei Temperatur
Daten zugreifen?

Also ws300.1[akt], Also ws300.1[akt-1],ws300.1[akt-2], etc.


Grüße

MisterEltako

Hi!

So nach "langer" Bastelei und Hilfe von Reinerelein bezüglich des Array's habe ich etwas hinbekommen:


in Fhem.cfg:
define 3_LetzteTemperatur dummy
attr 3_LetzteTemperatur room Array
define 2_VorletzteTemperatur dummy
attr 2_VorletzteTemperatur room Array
define 1_DrittletzteTemperatur dummy
attr 1_DrittletzteTemperatur room Array

define Temp dummy
attr Temp room Array

define Speicher notify Temp:.* {\
my $PP = Value("Temp");;\
Tempspeicher($PP);;\
}


in 99_myUtils:
my @Speicher=("na","na","na");

sub Tempspeicher($){
my ($P)=@_;
my $delTemp=shift(@Speicher);
push (@Speicher,$P);
Log 1, "@Speicher";
my $Temp3=@Speicher[-1];
my $Temp2=@Speicher[-2];
my $Temp1=@Speicher[-3];
Log 1, "Letzte:$Temp3,Vorletzte: $Temp2,Drittletzte: $Temp1";
fhem("set 3_LetzteTemperatur $Temp3");
fhem("set 2_VorletzteTemperatur $Temp2");
fhem("set 1_DrittletzteTemperatur $Temp1");
}


Der Dummy Temp ist dabei nur als Simulation für dein Device(was ich leider nicht habe) eingebaut. Auch musst du schauen ob die Temperatur über "state" des Devices angegeben wird. Sonst musst du mit ReadingsVal arbeiten.

O.g. Beispiel funktioniert, wenn du z.B. "set Temp 22", dann set Temp 23, dann set Temp 24 eingibst (also stattdessen würde dein Temperaturdevice sich ändern und ein "notify" auslösen.

Die Dummy's im Raum "Array" zeigen die Werte an und können auch ausgelesen werden.

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

My-FHEM

Vielen Dank,

werde diesen Ansatz im Laufe des WE ausprobieren und mein
Ergebnis mitteilen

Grüße

MisterEltako

Hi!

Durch die Disskusion mit Reinerlein ist ein noch einfacheres und funktionierendes Konstrukt herausgekommen:

Einfach die letzten Werte in selbst zugefügten Readings des gleichen Device einfügen:

define ws300 dummy
attr ws300 room Array


define Speicher notify Temp:.* {\
  setReadingsVal($main::defs{ws300},'1_DrittletzteTemp',ReadingsVal('Temp','2_VorletzteTemp',''), TimeNow());;\
  setReadingsVal($main::defs{ws300},'2_VorletzteTemp', ReadingsVal('Temp','3_LetzteTemp', ''), TimeNow());;\
  setReadingsVal($main::defs{ws300}, '3_LetzteTemp', Value("Temp"), TimeNow());;\
}


Diese Lösung ist allein Reinerlein zu verdanken. Und sie ist wie ich finde perfekt. Die Readings kannst du nun schön per readingsVal auslesen und weiterberechnen....

MfG, MisterEltako.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Reinerlein

Hi MisterEltako,

danke für die Blumen :-)

Allerdings ist dir im Code ein kleiner Fehler unterlaufen. Du liest die Werte aus dem Reading des Devices "Temp" aus und speicherst sie aber in einem Reading des Devices "ws300".

Der Code müsste wohl korrekterweise so aussehen (wenn die Werte im Dummy "ws300" landen sollen):
define ws300 dummy
attr ws300 room Array

define Speicher notify Temp:.* {\
  setReadingsVal($main::defs{ws300}, '1_DrittletzteTemp',ReadingsVal('ws300','2_VorletzteTemp',''), TimeNow());;\
  setReadingsVal($main::defs{ws300}, '2_VorletzteTemp', ReadingsVal('ws300','3_LetzteTemp', ''), TimeNow());;\
  setReadingsVal($main::defs{ws300}, '3_LetzteTemp', Value("Temp"), TimeNow());;\
}
Damit wird die Reihe der alten Temperaturen innerhalb von "ws300" durchgealtert, und die neue Temperatur kommt vom Device "Temp" neu hinein.
(Das mit den Umbrüchen in der Darstellung ist ja grauselig)

Grüße Reinerlein

MisterEltako

Ja, stimmt schon wieder.... ;o)

Aber zu meiner Entlastung: Ich nutze den Code tatsächlich mit Temp. Ich habe nur für My-FHEM das auf WS300 geändert...

MfG, MisterEltako.

PS: warum findest du die Umbrüche so schlecht???? Ist doch korrekt!
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Reinerlein

Hi MisterEltako,

OT: Ich habe gerade festgestellt, das das mit den Umbrüchen von meiner automatisch gezoomten Darstellung auf meinem iPad kommt, bzw. in der Voransicht doch noch ein bißchen schmaler ist.
Ich habe es gerade im Browser auf einem normalen Monitor gesehen, dort sieht es wirklich normal aus :-)

Grüße Reinerlein