Hauptmenü

OldReadingsVal ???

Begonnen von steffen83, 06 April 2020, 08:35:24

Vorheriges Thema - Nächstes Thema

steffen83

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)

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
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

steffen83

Jetzt habe ich es verstanden! Also da wo ich abgreife muss ich zuvor oldreadings "readingxxx" erweitern. Herzlichen Dank!
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

kotaro

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?

Hackstall

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

frank

entferne das leerzeichen im attr oldreadings
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Hackstall

Danke aber ich bekomme immer noch 2 als Ergebnis von OldReadingsVal.
Daran hat's leider nicht nur gelegen.

MadMax-FHEM

#7
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Hackstall

#10
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.