Guten Morgen in die Runde,
ich versuche mich schon länger mit dem Thema OldReadingsVal zu beschäftigen. Aber es gelingt mir nicht und mir den sehr sehr geringen Informationen die ich hier finden kann komme ich leider nicht weiter.
Ich möchte eigentlich nur ganz einfach einen "ZuvorWert" aus einem Device lesen. Dazu habe ich gelesen, dass ich dem Device wohl erst ein attr verpassen muss.
Aber ich komme hierzu nicht weiter. (https://forum.fhem.de/index.php?topic=87766.0 (https://forum.fhem.de/index.php?topic=87766.0))
Meine Vorstellung wäre ganz einfach:
my $last = OldReadingsVal("speicherauslastung","mntthorstenTOTAL","ERROR");;
Leider bekomme ich hier nur das ERROR zurück.
Danke für eure Hilfe.
Gruß
Steffen
Du musst das Attribut oldreadings auf den Readingnamen setzen wo du das alte haben willst. Danach muss wenigstens einmal das Reading neu gesetzt worden sein.
Jetzt habe ich es verstanden! Also da wo ich abgreife muss ich zuvor oldreadings "readingxxx" erweitern. Herzlichen Dank!
Klasse, genau das wollte ich auch gerade in Erfahrung bringen, da es mir immer wieder Kopfzerbrechen bereitet hat, warum ich das nicht nutzen konnte, bisher... ::)
Jetzt stellt sich noch die Frage, kriege ich mithilfe des attr oldreading blabla auch den OldReadingsAge abgegriffen? oder benötigt dies ein extra-Attribute?
Hallo,
ich bin nun auch mit OldReadingsVal unterwegs aber es funktioniert irgendwie nicht:
Internals:
FUUID 5df8b70f-f33f-b8ba-d651-a31566953c4dab2c
FVERSION 98_dummy.pm:0.256060/2022-02-01
NAME GeoLocation_Familie
NR 1675
STATE ???
TYPE dummy
Helper:
DBLOG:
FritzPresence_Andreas:
DBLogging:
TIME 1670872800.01845
VALUE 1
GeoDistance_Andreas:
DBLogging:
TIME 1670872800.01845
VALUE 0.025733
GeoPresence_Andreas:
DBLogging:
TIME 1670872900.29991
VALUE 1
Geolocation_Andreas:
DBLogging:
TIME 1670872800.01845
VALUE present
READINGS:
2022-12-12 20:22:40 FritzPresence_Andreas 1
2022-12-12 20:21:55 GeoDistance_Andreas 0.025733
2021-10-20 22:34:18 GeoPresAbsDistanceCfg 8
2022-12-12 20:21:55 GeoPresence_Andreas 1
2022-12-12 20:21:55 Geolocation_Andreas present
Attributes:
DbLogExclude .*
event-on-change-reading GeoPresence_Andreas, GeoPresence_Sabine
group Grp-System-Dummy
oldreadings GeoPresence_Andreas, GeoPresence_Sabine
room 9.6_System
userReadings 1
im myUtils habe ich nun:
sub PersonPresenceHasChanged($)
{
my ( $myReading ) = @_;
my $myAct = ReadingsVal( "GeoLocation_Familie", $myReading, "2" );
my $myPrev = OldReadingsVal( "GeoLocation_Familie", $myReading, "2" );
my $retValue = 0;
my $myMsg = "Msg->" . $myReading . ":" . $myAct . " " . $myPrev;
sendMsg( "TELEGRAM", "Andreas",$myMsg);
if ($myAct eq $myPrev)
{
#return 0; # has not changed
$retValue = 0;
}
else
{
#return 1; # has changed
$retValue = 1;
}
return $retValue;
}
Mein Problem:
my $myPrev = OldReadingsVal( "GeoLocation_Familie", $myReading, "2" )
liefert immer 2 zurück.
Note:
Die Sub wird zyklisch aufgerufen. Daher benötige ich die Information ob sich was bzgl Personenan/abwsenheit geändert hat oder nicht.
Daher dachte ich die OldReadingsVal ist die richtige Methode für mich.
Danke für Eure Unterstützung
entferne das leerzeichen im attr oldreadings
Danke aber ich bekomme immer noch 2 als Ergebnis von OldReadingsVal.
Daran hat's leider nicht nur gelegen.
Da ist doch mehr schräg:
Zitat
event-on-change-reading GeoPresence_Andreas, GeoPresence_Sabine
Auch ein Leerzeichen...
EDIT: es heißt kommaseparierte Liste, also alles zwischen den Kommas wird u.U. als Readingname interpretiert...
Was soll das sein:
Zitat
userReadings 1
Es gibt gar kein Reading namens "GeoPresence_Sabine"...
EDIT: taucht aber bei oldreadings und event-on-change auf...
Warum zyklisch aufrufen?
Wie?
Mit welchen Parametern?
EDIT: ein neuer Thread mit der eigentlichen Problembeschreibung bzw. was du eigentlich erreichen willst also generell wäre evtl. zielführender gewesen. Beschreibung kannst du ja immer noch liefern... :) Evtl./verm. geht was du "in Summe" tun willst einfacher (weil evtl./verm. schon der dummy unnötig ist!?)
Gruß, Joachim
Im list des devices sind doch gar keine OldReadings vorhanden - also ist doch die Rückgabe von 2 als default Wert erstmal richtig?
OldReadings werden bei einem event erzeugt. Zur Analyse und zur Einrichtung würde ich empfehlen, das Attribut event-on-change-reading komplett zu löschen.
Zitat von: MadMax-FHEM am 12 Dezember 2022, 21:11:31
Es gibt gar kein Reading namens "GeoPresence_Sabine"...
EDIT: taucht aber bei oldreadings und event-on-change auf...
Das ist doch egal.
Danke habe es dann doch für mich einfacher über ein Flag realisiert.
By the way: Ich habe aus dem List einige Namen herausgelöscht. Sind dem Problem nicht dienlich gewesen.
Ging ja nur ums Prinzip.