36_KeyValueProtocol.pm

Begonnen von habeIchVergessen, 14 Februar 2017, 22:50:22

Vorheriges Thema - Nächstes Thema

habeIchVergessen

Hallo HCS,

ich hätte gerne eine Erweiterung im Modul 36_KeyValueProtocol.pm

Bei der Suche nach dem Mapping-Attribut benötige ich eine Suche nach dem Internal [IODev-Name]_Mapping.
Dieses wird durch mein Modul 36_KVPUDP gesetzt und soll ausgewertet werden, wenn das Attribut Mapping nicht existiert.

Was denkst du über die Anpassung?

diff -p

*** ../fhem/FHEM/36_KeyValueProtocol.pm 2016-11-07 21:39:01.824147534 +0100
--- FHEM/36_KeyValueProtocol.pm 2017-02-14 22:42:40.680701471 +0100
*************** sub KeyValueProtocol_Parse($$) {
*** 132,139 ****
        my %mappings;
        # our "Mapping" attribute has priority
        my $mappingsString = AttrVal($rname, "Mapping", "");
        if ($mappingsString) {
!         %mappings = split (/[,=]/, AttrVal($rname, "Mapping", ""));
        }
        else {
          # Do we have initMessages in the IODevice?
--- 132,141 ----
        my %mappings;
        # our "Mapping" attribute has priority
        my $mappingsString = AttrVal($rname, "Mapping", "");
+       # search Mapping with IODev prefix
+       $mappingsString = InternalVal($rname, AttrVal($rname, "IODev", "") . "_Mapping", "") if (!$mappingsString);
        if ($mappingsString) {
!         %mappings = split (/[,=]/, $mappingsString);
        }
        else {
          # Do we have initMessages in the IODevice?

HCS

Zitat von: habeIchVergessen am 14 Februar 2017, 22:50:22
Was denkst du über die Anpassung?
Ich studiere sie mal und versuche dahinter zu kommen, wofür man das braucht (also der use case)
Ganz klar wurde es mir spontan nicht.

habeIchVergessen

36_KVPUDP sammelt von mehreren WLAN-Devices UDP-Multicast-Pakete ein.
Damit gibt es nur ein I/O-Device in FHEM und die Implementierung via {IODev}->{initMessage} funktioniert nicht.
Deshalb schreibt das I/O-Modul Internals an die KeyValueProtocol-Devices, die gerne auswerten möchte.

HCS


Markus Bloch

@HCS: Ich habe deine Commit-Message im SVN folgendermaßen abgeändert:

Zitat36_KeyValueProtocol: patch from "habeIchVergessen" (Forum: #67134)

vorher:

Zitat36_KeyValueProtokol: patch from ,,habeIchVergessen" (Forum: #585286)

Die Nummer für "Forum: #" ist die Thread-ID. Du hattest die Message-ID benutzt, welche damit nicht funktioniert. Damit funktioniert auch der Link wieder korrekt. => https://forum.fhem.de/index.php/topic,67134

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

HCS

Zitat von: Markus Bloch am 18 Februar 2017, 13:37:50
@HCS: Ich habe deine Commit-Message im SVN folgendermaßen abgeändert:
Super, vielen Dank. Hatte auch gemerkt, dass das so nicht geht, aber keinen Weg gefunden, es zu ändern.

habeIchVergessen


Markus Bloch

Zitat von: HCS am 18 Februar 2017, 18:19:54
Super, vielen Dank. Hatte auch gemerkt, dass das so nicht geht, aber keinen Weg gefunden, es zu ändern.

Unter Linux geht das mit folgendem Befehl:

svn propedit -r N --revprop svn:log

Wobei N die Revisionsnummer darstellt.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)