FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: habeIchVergessen am 14 Februar 2017, 22:50:22

Titel: 36_KeyValueProtocol.pm
Beitrag von: habeIchVergessen am 14 Februar 2017, 22:50:22
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?
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: HCS am 15 Februar 2017, 15:08:03
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.
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: habeIchVergessen am 15 Februar 2017, 18:08:25
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.
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: HCS am 18 Februar 2017, 12:50:38
Übernommen und eingecheckt
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: Markus Bloch am 18 Februar 2017, 13:37:50
@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 (https://forum.fhem.de/index.php/topic,67134)

Viele Grüße

Markus
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: HCS am 18 Februar 2017, 18:19:54
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.
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: habeIchVergessen am 18 Februar 2017, 22:33:57
Zitat von: HCS am 18 Februar 2017, 12:50:38
Übernommen und eingecheckt

Danke
Titel: Antw:36_KeyValueProtocol.pm
Beitrag von: Markus Bloch am 19 Februar 2017, 02:17:00
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