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.
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!
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!
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 ;-)
Mach bitte
list USBWX_Wohnzimmer
Und poste die Ausgabe.
Ich denke es gibt kein Event und ohne Event wir kein userreadings erzeugt.
Userreadings werden erst bei einem Event erzeugt... Gab es denn ein Event?
(Edit: Cooltux war schneller ;-))
Der Event ist ewig alt, und das list schon da...
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.
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.
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.
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...
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.
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?
Wenn das nicht geht das geht es generell nicht mit dem Modul
userreadings newTemp:temperature:.* { ReadingsNum($name,'temperature',-90) }
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 (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 ?
Zitat von: Maultier am 02 Januar 2020, 10:39:19
Eventuell gibt es hier aber einen Spezialisten, der das fixen kann :D ?
Der erste Kandidat wäre der User wherzig. Er ist der Maintainer des Moduls - allerdings finde ich ihn im Forum nicht, d.h. er hat sich entweder abgemeldet oder umbenannt.
Zitat von: Maultier am 02 Januar 2020, 10:39:19
Eventuell gibt es hier aber einen Spezialisten, der das fixen kann :D ?
Klar, normalerweise der Modul Autor :) I.d.R. reagieren die sogar auf solche Wünsche, nur hier wird es vermutlich schwierig :
Willi , letzter Login 28 Juli 2019
Jemand eine Ahnung was mit dem RFXTRX Guru los ist ?
Edit Christoph war etwas schneller nur nicht so gründlich :)
Zitat von: Wzut am 02 Januar 2020, 11:47:41
Edit Christoph war etwas schneller nur nicht so gründlich :)
Ich bin nur den offiziösen Einträgen in der Maintainers gefolgt. Sein Name ist nun also Willi?
Das Modul wurde zuletzt 2013 angefasst. Die Anpassungen sehen auf den ersten Blick nur nach Fleißarbeit aus.
Bitte einmal testen.
Dazu die Datei unter /opt/fhem/FHEM/70_USBWX.pm durch die hier angehängte ersetzen. Danach Neustart FHEM.
ACHTUNG ALLES UNGETESTET!!!
Tja, leider noch immer kein Erfolg. Ich habe nun im Modul 70_USBWX.pm die Datenübergabe an FHEM so umgebaut, dass sie via
readingsBeginUpdate($def);
....
readingsBulkUpdate($def, $sensor, $current);
....
readingsEndUpdate($def,1);
erfolgt. Läuft alles prima und liefert weiterhin das Reading "temperature". Nur leider noch immer kein erfolgreiches UserReadings :'(.
Wenn keiner mehr eine Idee hat, bleibt mit nur noch die Möglichkeit, das Modul so umzuschreiben, das es direkt meine gewünschten Werte liefert. Damit umgehe ich userReadings. Mich würde aber trotzdem interessieren, warum es nicht klappt.
Heißt das meine Anpassung hat nicht funktioniert??