FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: steffen83 am 06 April 2020, 08:35:24

Titel: OldReadingsVal ???
Beitrag von: steffen83 am 06 April 2020, 08:35:24
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
Titel: Antw:OldReadingsVal ???
Beitrag von: CoolTux am 06 April 2020, 08:37:19
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.
Titel: Antw:OldReadingsVal ???
Beitrag von: steffen83 am 06 April 2020, 08:39:57
Jetzt habe ich es verstanden! Also da wo ich abgreife muss ich zuvor oldreadings "readingxxx" erweitern. Herzlichen Dank!
Titel: Antw:OldReadingsVal ???
Beitrag von: kotaro am 18 April 2020, 16:13:24
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?
Titel: Antw:OldReadingsVal ???
Beitrag von: Hackstall am 12 Dezember 2022, 20:31:11
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
Titel: Antw:OldReadingsVal ???
Beitrag von: frank am 12 Dezember 2022, 20:42:28
entferne das leerzeichen im attr oldreadings
Titel: Antw:OldReadingsVal ???
Beitrag von: Hackstall am 12 Dezember 2022, 21:03:22
Danke aber ich bekomme immer noch 2 als Ergebnis von OldReadingsVal.
Daran hat's leider nicht nur gelegen.
Titel: Antw:OldReadingsVal ???
Beitrag von: MadMax-FHEM am 12 Dezember 2022, 21:11:31
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
Titel: Antw:OldReadingsVal ???
Beitrag von: betateilchen am 12 Dezember 2022, 21:49:13
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.
Titel: Antw:OldReadingsVal ???
Beitrag von: betateilchen am 12 Dezember 2022, 21:49:54
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.
Titel: Antw:OldReadingsVal ???
Beitrag von: Hackstall am 12 Dezember 2022, 21:57:53
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.