(gelöst) neues Modul (mypowerrouter), readingsBulkUpdate erzeugt keine Readings

Begonnen von macfly, 23 Januar 2021, 12:57:16

Vorheriges Thema - Nächstes Thema

macfly

Moin zusammen,

ich baue gerade ein neues Modul (als Ersatz für den abgeschalteten mypowerrouter-cloud dienst). Dieses Modul horcht auf einen Port, auf den der Wechselrichter von Nedap (powerrouter) minütlich seine Statistikwerte als json postet.

Den Post annehmen und den json-request zerlegen ist fertig, wo ich gerade dran scheitere, ist das schreiben der Daten als Reading.

Es geht in der angehängten Datei um die Zeilen 113-123 (ja, viel Debug, das kommt später raus):

my $rv;
readingsBeginUpdate( $hash);
$rv=readingsBulkUpdate( $hash, "event", $event, 1 );
Log3 $name, 1, "Mypowerrouter rv of event: $rv";
$rv=readingsBulkUpdate( $hash, "powerrouter_id", $powerrouter_id, 1 );
Log3 $name, 1, "Mypowerrouter rv of powerrouter_id: $rv";
$rv=readingsBulkUpdate( $hash, "time_send", $time_send, 1 );
Log3 $name, 1, "Mypowerrouter rv of time_send: $rv";
$rv=readingsBulkUpdate( $hash, "STATE", "received", 1);
Log3 $name, 1, "Mypowerrouter rv of STATE: $rv";
readingsEndUpdate( $hash, 1);


Die Rückgabewerte im Log sind korrekt (siehe Screenshot), allerdings finde ich die Readings nicht im Modul (siehe Screenshot). Kann mich vielleicht einer in die richtige Richtung schubsen, was ich verkehrt mache?

ein list des devices sieht wie folgt aus:
Internals:
   CONNECTS   1
   DEF        10101
   FD         135
   FUUID      600c0359-f33f-129d-4a10-00c5c29ac7a3158d
   NAME       Mypowerrouter
   NR         499
   PORT       10101
   STATE      Initialized
   TYPE       Mypowerrouter
   READINGS:
     2021-01-23 12:45:14   state           Initialized
Attributes:
   room       EG.Werkstatt


anbei das modul.


vielen Dank,
Friedhelm

macfly

Habs selber rausgefunden.

mit TcpServer_Accept wird ein neuer Kontext erzeugt, das schreiben der Readings muss dann in dem Elternkontext erfolgen.

richtig war also:

readingsBeginUpdate($defs{$hash->{SNAME}});
readingsBulkUpdate($defs{$hash->{SNAME}}, 'state', "online");
readingsBulkUpdate($defs{$hash->{SNAME}}, 'event', $event);
readingsBulkUpdate($defs{$hash->{SNAME}}, 'powerrouter_id', $powerrouter_id);
readingsBulkUpdate($defs{$hash->{SNAME}}, 'time_send', $time_send);
readingsEndUpdate($defs{$hash->{SNAME}}, 1);


gibt es dazu irgendwo doku, wo man das Verhalten nachlesen kann? Ich habe das im Wiki weder unter DevelopmentModuleIntro noch unter DevelopmentModuleAPI gefunden, sondern habe mir das ghoma-modul solange umgebaut, bis ich den Workflow verstanden habe ...

ps: falls ich zu doof zum Suchen bin, bitte gerne auch sagen ...