ZW_GET_NODE_PROTOCOL_INFO: Überarbeitung zwlib_parseNodeInfo(@)

Begonnen von krikan, 16 Mai 2016, 00:28:33

Vorheriges Thema - Nächstes Thema

krikan

Hallo Rudi!
Um möglichst viele Infos vom Node zu erhalten, bin ich dabei "zwlib_parseNodeInfo(@)" in ZWlib.pm auf ausführlichere Infos umzubauen. Die Zeile 210 in r11458:
push @list, $zw_type6{$id} if($zw_type6{$id});
verstehe ich aber leider nicht. Sie scheint funktionslos zu sein. Obwohl ich Nodes mit einer unterstützten GenericDeviceClass abfrage, tauchen die Ergebnisse nicht in den Readings auf. Auffällig ist für mich nur, dass $id nicht im Kontext der sub definiert ist. Normalerweise würde ich einen Zugriff auf den Wert aus $r[6] erwarten. Da ich aber nicht überblicke, ob dies so Absicht ist, bräuchte ich bitte Unterstützung.
Danke und Gruß, Christian

rudolfkoenig

Zitatbin ich dabei "zwlib_parseNodeInfo(@)" in ZWlib.pm auf ausführlichere Infos umzubauen
Gute Idee.

ZitatDie Zeile 210 [...] verstehe ich aber leider nicht.
Bug, entstanden beim Auslagern der Funktion ins ZWLib. Habs gefixt und eingecheckt.

krikan

Hier mein Umsetzungsversuch. Anders als bisher eingebunden (hattest Du damals zu Recht bemängelt), werden keine interpretationsbedürftigen Hexwerte mehr im Reading abgelegt, sondern Klartexte. Stehen laut zwapi mehrere Wert-Alternativen für eine bestimmte Eigenschaft zur Verfügung, dann wird dies in der Form "Eigenschaft:Wert" angezeigt/gesetzt. Ist nur die Alternative "Eigenschaft vorhanden oder nicht" in zwapi angegeben, wird die Eigenschaft nur bei "vorhanden" ins Reading aufgenommen. Nach längerem Grübeln habe ich mich in diesen Fällen gegen "Eigenschaft:yes|no" entschieden. Kann ich aber noch ändern.

SpecificDeviceClass habe ich nicht im Klartext aufgenommen, da ich Notwendigkeit derzeit nicht erkenne und das einigen neuen Code verursachen würde.

Die Auswertung und auch meine Perl-Konstrukte lehnen sich sehr eng an den AEOTEC Updater/XML an. Also bitte nicht über fehlende Verkürzung wundern. Ich hoffe, dies so auch später besser nachvollziehen zu können. Falls das zu chaotisch ist, darfst Du protestieren.

Getestet ist FHEM-Auswertung gegen AEOTEC Updater. Bei meinen Geräten passt es. Was ich nicht testen kann: insbesondere SDK 5.0x und älter-Geräte und FLIRS-Geräte.

rudolfkoenig