Autor Thema: Gemeinsames Internal aller Devices die vom Signalduino empfangen werden?  (Gelesen 408 mal)

Offline reibuehl

  • Sr. Member
  • ****
  • Beiträge: 731
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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24732
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.

Offline reibuehl

  • Sr. Member
  • ****
  • Beiträge: 731
Das 00_SIGNALduino.pm verwendet Dispatch(). Die logischen Module scheinen das aber nicht oder nur teilweise auszuwerten.
Reiner.

Offline reibuehl

  • Sr. Member
  • ****
  • Beiträge: 731
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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24732
Zitat
Gibt 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.

Offline reibuehl

  • Sr. Member
  • ****
  • Beiträge: 731
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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24732
Zitat
das 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.