Gemeinsames Internal aller Devices die vom Signalduino empfangen werden?

Begonnen von reibuehl, 10 Juli 2021, 12:34:15

Vorheriges Thema - Nächstes Thema

reibuehl

Hallo,

ist es möglich, das Devices, die von einem Signalduino empfangen und per autocreate angelegt werden, irgendein gemeinsames Internal erhalten, über die man sie filtern kann?
Je nach Typ gibt es mal ein LastIODev=<signalduino dev> (SD_WS07), ein IODev=<signalduino dev> (IT) oder auch gar nichts (CUL_TCM97001), was auf das IO Device hindeutet.
Kann man das irgendwie lokal per Konfiguration hin bekommen oder geht das nur durch die Entwickler der jeweiligen Module?

Gruß,
Reiner
Reiner.

rudolfkoenig

Wenn das IO-Modul die Framework Funktion Dispatch() verwendet, um die logischen Module zu informieren, dann wird das LASTInputDev Internal vom Framework eingetragen, zusaetzlich zu <IODEVName>_TIME und <IODEVName>_MSGCNT.

reibuehl

Das 00_SIGNALduino.pm verwendet Dispatch(). Die logischen Module scheinen das aber nicht oder nur teilweise auszuwerten.
Reiner.

reibuehl

Gibt es ein Gegenstück zu Dispatch() in den logischen Modulen? Ich hab mir mal den Source von den zwei Beispielen angesehen, die zumindest eines der Internals setzen, konnte aber im Modul selbst keinen Code finden, der das explizit macht...
In 14_SD_WS07.pm kommt LastIODev nirgends vor, obwohl das Internal bei einem Device dieses Moduls bei mir gesetzt ist.
Reiner.

rudolfkoenig

ZitatGibt es ein Gegenstück zu Dispatch() in den logischen Modulen?
Ja, IOWrite(), und sollte fuer dieses Problem irrelevant sein.

Die erwaehnten Internals werden vom Framework (vulgo fhem.pl, in Dispatch) gesetzt, nicht von den Modulen.

reibuehl

Dann kann ich mir nicht erklären, warum die Internals nicht gesetzt werden... das 00_SIGNALduino.pm Modul ruft Dispatch() innerhalb von SIGNALduno_Dispatch() auf soweit ich das verstehe.
Reiner.

rudolfkoenig

Zitatdas 00_SIGNALduino.pm Modul ruft Dispatch() innerhalb von SIGNALduno_Dispatch() auf soweit ich das verstehe
Ja, aber nur wenn diverse Bedingungen zutreffen ($DSMgleich, SIGNALduino_getProtoProp($id,'dispatchequals',0) eq 'true'), usw.).
Ob das in deinem Fall relevant ist, weiss ich nicht. In bestimmten Faellen wird auf Loglevel 4 eine Meldung ausgegeben, wenn Dispatch nicht aufgerufen wurde.