UserReadings werden nicht angezeigt

Begonnen von Maultier, 31 Dezember 2019, 16:33:04

Vorheriges Thema - Nächstes Thema

Maultier

Wahrscheinlich sehe ich nur den Wald vor Bäumen nicht. Nach tagelangem probieren und und Suchen im Forum und im Wiki habe ich es erst mal aufgegeben und hoffe auf den entscheidenden Tipp von Euch:

Über USBWX füttere ich FHEM mit Wetterdaten. Via UserReadings möchte ich die angezeigte Temperatur ändern. Leider wird das UserREading aber nicht bei "USBWX_Wohnzimmer" unter Readings angezeigt. Warum klappt das nicht? Hier erst mal nur eine ganz einfache Variante zum testen. Säter sollen hierüber einige Berechnungen erfolgen...

Unter Readings steht zum Beispiel:
temperature  23.7  2019-12-30 22:28:01

Unter Attributes:
userReadings myTemp { ReadingsVal("USBWX_Wohnzimmer","temperature","x")

Sollte nun nicht unter Readings auftauchen:
myTemp  23.7

Tut es aber leider nicht und ich finde den Fehler nicht.

Schon mal vielen Dank.

Beta-User

Laß raten: das userReading wird in einem anderen Device erzeugt als das Ausgangsreading?
Kurzfassung: geht nicht (ist hier immer mal wieder ein Thema).

(Bitte zukünftig nicht "sparen" und lists liefern, und Code usw. bitte in entsprechenden Tags!)

Ansonsten: Willkommen im Forum und guten Rutsch!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

xenos1984

Am besten postest du hier zuerst einmal ein komplettes List des USBWX_Wohnzimmer (und zwar idealerweise in code-Tags), dann sehen wir eher, was da faul sein könnte.

Spontane Beobachtung: Dein userReadings hat aber schon noch eine schließende geschweifte Klammer, oder?

Ansonsten, willkommen im Forum!

Maultier

Das ging schnell! Auch Dir einen guten Rutsch! Nur zu Deiner Antwort:

Das Reading wird im gleichen Devive erzeugt. Hier der Code:

defmod USBWX_Wohnzimmer USBWX 3
attr USBWX_Wohnzimmer icon temp_inside
attr USBWX_Wohnzimmer loglevel 6
attr USBWX_Wohnzimmer room Wohnzimmer
attr USBWX_Wohnzimmer userReadings myTemp { ReadingsVal("USBWX_Wohnzimmer","temperature","x")  }
attr USBWX_Wohnzimmer verbose 5

setstate USBWX_Wohnzimmer T: 23.7 
setstate USBWX_Wohnzimmer 2019-12-30 22:28:01 temperature 23.7


HAllo Xenos: Dur warst schneller ;-)

CoolTux

#4
Mach bitte

list USBWX_Wohnzimmer

Und poste die Ausgabe.
Ich denke es gibt kein Event und ohne Event wir kein userreadings erzeugt.
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

KernSani

Userreadings werden erst bei einem Event erzeugt... Gab es denn ein Event?
(Edit: Cooltux war schneller ;-))
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Beta-User

Der Event ist ewig alt, und das list schon da...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Maultier

temperature tacht als Reading auf. Aber auch wenn ich T oder state oder STATE schreibe, ändert das leider nichts.

Internals:
   CODE       3
   DEF        3
   FUUID      5e09d1d3-f33f-dbce-0748-04bb8c9b02903b4b
   NAME       USBWX_Wohnzimmer
   NR         52
   STATE      T: 23.7 
   TIME       2019-12-30 22:28:01
   TYPE       USBWX
   corr1      0
   corr2      0
   corr3      0
   corr4      0
   READINGS:
     2019-12-30 22:28:01   temperature     23.7
Attributes:
   icon       temp_inside
   loglevel   6
   room       Wohnzimmer
   userReadings myTemp { ReadingsVal("USBWX_Wohnzimmer","temperature","x")  }
   verbose    5


@KernSani: es gab Events alle paar Minuten. Ich habe nur gestern Abend meine Versuche eingestellt. Deshalb steht dort der 30.12.

Maultier

Ich habe nun das ganze USBWX-Gedöns gelöscht und neu angelegt. Ich habe nun wieder (regelmäßige) aktuelle Readings und trotzdem kein UserReading.
Außerdem habe ich gleiches Vorgehen im Badezimmer versucht (dort kommen die Daten von einer FHT-Heizungssteuerung). Dort klappt es anstandslos. Ich verstehe nicht, was hier faul ist.

CoolTux

Kommt denn wirklich auch ein Event. Bitte im Eventmonitor schauen.
Ansonsten kann ich mich erinnern das wir schon mal sowas hatten, da hat das Modul irgendwas gemacht das kein userreadings ging. Lag glaube daran das die Readings nicht mit den fhem.pl internen Funktionen gesetzt wurden.
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

xenos1984

Zitat von: CoolTux am 31 Dezember 2019, 18:32:21
Ansonsten kann ich mich erinnern das wir schon mal sowas hatten, da hat das Modul irgendwas gemacht das kein userreadings ging. Lag glaube daran das die Readings nicht mit den fhem.pl internen Funktionen gesetzt wurden.

Ohne ein Experte zu sein - ich habe mal einen Blick auf den Quelltext geworfen:

http://svn.fhem.de/trac/browser/trunk/fhem/FHEM/70_USBWX.pm

Wie es scheint, werden da tatsächlich nicht die in der fhem.pl definierten Funktionen zum Update von Readings aufgerufen, sondern die Readings "von Hand" gesetzt. Und so weit ich das sehen kann, werden die userReadings in der Funktion readingsEndUpdate erstellt:

http://svn.fhem.de/trac/browser/trunk/fhem/fhem.pl#L4659

Wenn die also nie aufgerufen wird, gibt es auch keine userReadings...

Maultier

Ich wünsche Euch ein gesundes neues Jahr. Vielen Dank für Eure Mühe. Der Quellcode überfordert mich etwas  :(

Kann man dieses
readingsEndUpdate
irgendwie manuell triggern um zu prüfen, ob dort der Fehler liegt? Wie kann ich prüfen, ob readingsEndUpdate überhaupt  aufgerufen wird? Im Eventmonitor scheint es jedenfalls nicht aufzutauchen.

Gibt es eine andere Möglichkeit die Readings zu ändern? Einen Sensorkanal mißbrauche ich, um die Batteriespannung eines Sensors mit 10 multipliziert zu übertragen. Das Reading temperature muß also durch 10 geteilt werden und die richtige Einheit V bekommen.

Maultier

Nachtrag:
Ich habe nun mal im Event monitor geschaut:
2020-01-01 15:10:14 FHT heizung_kueche warnings: none
2020-01-01 15:10:15 FHT heizung_kueche ack: 29
2020-01-01 15:10:15 FHT heizung_kueche end-xmit: 29
2020-01-01 15:11:01 USBWX USBWX_Wohnzimmer temperature: 22.7
2020-01-01 15:11:01 USBWX USBWX_Wohnzimmer T: 22.7 

Es fällt auf, dass bei den FHT's ein end-xmit: 29 auftaucht, beim USBWX fehlt dies. Könnte dies die Ursache sein?

CoolTux

Wenn das nicht geht das geht es generell nicht mit dem Modul


userreadings newTemp:temperature:.* { ReadingsNum($name,'temperature',-90) }
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

Maultier

Auch dieser Vorschlag funktioniert leider nicht.

Möglicherweise war der Hinweis auf readingsEndUpdate der entscheidende: Ich habe mir den Sourcecode von 70_USBWX.pm mal angesehen. In der Tat werden dort readingsBeginUpdate und readingsEndUdate gar nicht aufgerufen. 11_FHT.pm macht dies. Leider sind meine FHEM-Kenntnisse zu rudimentär, um das selbst zu fixen. Ich werde mir aber den Source-Code noch einmal anschauen und mit dem von 11_FHT.pm bezüglich dieser Routinen vergleichen und dann unter https://wiki.fhem.de/wiki/DevelopmentModuleAPI#readingsBeginUpdate mal ausgiebig lesen. Vielleicht finde ich eine Lösung. Das scheint aber doch ziemlich komplex zu sein .....

Eventuell gibt es hier aber einen Spezialisten, der das fixen kann  :D ?