Modul 10_KNX.pm - support

Begonnen von erwin, 23 August 2021, 08:59:59

Vorheriges Thema - Nächstes Thema

baerm

Hi Erwin,
tatsächlich. Eigentlich ist mir das Problem bei anderen Devices aufgefallen die mit g1 definiert sind. Zum Testen habe ich ein Device genommen, dass ich aber von der Couch aus sehen kann. Bei dem war der set Befehl (g1 statt steuern) natürlich falsch.
Ich habe jetzt noch zwei falsche set Befehle in DOIFs entdeckt (ohne g1) und eliminiert.

Was ich aber nicht ganz verstehe ist, warum das Device auf on ging und nur der Parameter "on-for-timer 10" nicht akzeptiert wurde. Der Befehl war g1 auf on zu schalten und warum geht "steuern" auf on? Eine Fehlermeldung sollte kommen und nichts sollte auf on gehen.
Aber ok, wenn alles richig definiert ist, sollte es kein Problem geben.

Danke nochmals für die Hilfe.
lg
Matthias

erwin

Hi,
wenn der cmd: on oder off ist, kann ich das eindeutig zuordnen, falls allerdings 2 worte (oder Argumente) im cmd vorkommen,
geht das nicht mehr und ich muß checken, ob das ein valider gadName ist!
Das mit der Fehlermeldung muß ich mir in Ruhe anschauen.
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

erwin

Nächste Version ist am SVN (changes: siehe 1ster Beitrag).

Neu ist ein blink cmd für dpt1, dpt1.001 - analog zu SetExtensions
Eine zus. Errormeldung, falls ein ungültiger gadName in einem set verwendet wird.

Alle Beispiele sind jetzt auch im WIKI zu finden, die links zum wiki sind in der cmd-ref!
Die cmdref wird in der nächsten Version KEINE (erweiterten) Beispiele mehr haben!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

mgg

#33
Hallo Erwin,

mir ist eben aufgefallen, dass ich scheinbar ein Problem mit der Funktion StateRegex habe.

Ist die Szene 0 aktiv wird, wie gewünscht, der Text im state übernommen.
Sobald der Wert abweicht, wird der Text nicht angezeigt.

Habe ich irgendetwas übersehen in der CommandRef?

Ich habe für beide Zustände mal das Listing angefügt.
Update auf die aktuelle Version habe ich kurz vorher gemacht.

Viele Grüße
Markus


Szene 0

Internals:
   DEF        2/2/15:dpt5:szene:nosuffix
   DEVNAME    eg_wz_lz_lichtszene
   FIRSTGADNAME szene
   FUUID      6048e1f9-f33f-adf4-5279-d2d81283722e9e4c
   GETSTRING  szene:noArg
   IODev      KNXD
   NAME       eg_wz_lz_lichtszene
   NR         295
   SETSTRING  szene:slider,0,2,255
   STATE      Fernsehen
   TYPE       KNX
   model      dpt5
   GADDETAILS:
     szene:
       CODE       0220f
       GROUP      2/2/15
       MODEL      dpt5
       NO         1
       OPTION     
       RDNAMEGET  szene
       RDNAMEPUT  szene
       RDNAMESET  szene
       SETLIST    :slider,0,2,255
   GADTABLE:
     0220f      szene
   READINGS:
     2021-10-19 20:17:44   IODev           KNXD
     2021-10-19 21:07:08   last-sender     fhem
     2021-10-19 21:07:08   state           Fernsehen
     2021-10-19 21:07:08   szene           0
Attributes:
   alias      Lichtszene
   devStateIcon Fernsehen:scene_livingroom Lesen:scene_storeroom Alles-Aus:general_aus
   event-on-change-reading szene,state
   eventMap   /szene 0:Fernsehen/szene 1:Lesen/szene 2:Alles-Aus/szene 3:Bügeln/
   group      Licht
   room       EG->Wohnzimmer
   stateRegex /szene:0/Fernsehen/ /szene:1/Lesen/ /szene:2/Alles-Aus/ /szene:3/Bügeln/
   webCmd     Fernsehen:Lesen:Alles-Aus
   widgetOverride szene:slider,0,1,3


Szene 2

Internals:
   DEF        2/2/15:dpt5:szene:nosuffix
   DEVNAME    eg_wz_lz_lichtszene
   FIRSTGADNAME szene
   FUUID      6048e1f9-f33f-adf4-5279-d2d81283722e9e4c
   GETSTRING  szene:noArg
   IODev      KNXD
   NAME       eg_wz_lz_lichtszene
   NR         295
   SETSTRING  szene:slider,0,2,255
   STATE      2
   TYPE       KNX
   model      dpt5
   GADDETAILS:
     szene:
       CODE       0220f
       GROUP      2/2/15
       MODEL      dpt5
       NO         1
       OPTION     
       RDNAMEGET  szene
       RDNAMEPUT  szene
       RDNAMESET  szene
       SETLIST    :slider,0,2,255
   GADTABLE:
     0220f      szene
   READINGS:
     2021-10-19 20:17:44   IODev           KNXD
     2021-10-19 21:10:13   last-sender     fhem
     2021-10-19 21:10:13   state           2
     2021-10-19 21:10:13   szene           2
Attributes:
   alias      Lichtszene
   devStateIcon Fernsehen:scene_livingroom Lesen:scene_storeroom Alles-Aus:general_aus
   event-on-change-reading szene,state
   eventMap   /szene 0:Fernsehen/szene 1:Lesen/szene 2:Alles-Aus/szene 3:Bügeln/
   group      Licht
   room       EG->Wohnzimmer
   stateRegex /szene:0/Fernsehen/ /szene:1/Lesen/ /szene:2/Alles-Aus/ /szene:3/Bügeln/
   webCmd     Fernsehen:Lesen:Alles-Aus
   widgetOverride szene:slider,0,1,3

erwin

Hi Markus,

ich hab da einen Logik-Fehler eingebaut  ;D

evtl. kannst du, bis zur nächsten Version, das selbst reparieren:
In der sub-routine KNX_replaceByRegex ab zeile 1324:

                elsif (($input !~ /$regPair[0]/x) && ($regPair[0] =~ /[:]/x)) {
                        $retVal = $input;
                        next; # <- das fehlt !!!
                }

Dann natürlich ein reload 10_KNX.pm oder fhem restart!
sorry erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

mgg

Hallo Erwin,

kein Problem. Ich komme aber erst morgen Vormittag dazu es umzusetzen.
Gebe dann kurz eine Rückinfo.

Einen schönen Abend noch

Viele Grüße
Markus

mgg

Hallo Erwin,

habe es eben korrigiert und getestet.
Es funktioniert ohne ersichtliche Probleme.

Ich füge nochmal ein list mit bei.
Danke für deine schnelle Reaktion und Lösung!


Internals:
   DEF        2/2/15:dpt5:szene:nosuffix
   DEVNAME    eg_wz_lz_lichtszene
   FIRSTGADNAME szene
   FUUID      6048e1f9-f33f-adf4-5279-d2d81283722e9e4c
   GETSTRING  szene:noArg
   IODev      KNXD
   NAME       eg_wz_lz_lichtszene
   NR         295
   SETSTRING  szene:slider,0,2,255
   STATE      Alles-Aus
   TYPE       KNX
   model      dpt5
   GADDETAILS:
     szene:
       CODE       0220f
       GROUP      2/2/15
       MODEL      dpt5
       NO         1
       OPTION     
       RDNAMEGET  szene
       RDNAMEPUT  szene
       RDNAMESET  szene
       SETLIST    :slider,0,2,255
   GADTABLE:
     0220f      szene
   READINGS:
     2021-10-20 09:13:47   IODev           KNXD
     2021-10-20 09:18:46   last-sender     fhem
     2021-10-20 09:18:46   state           Alles-Aus
     2021-10-20 09:18:46   szene           2
Attributes:
   alias      Lichtszene
   devStateIcon Fernsehen:scene_livingroom Lesen:scene_storeroom Alles-Aus:general_aus
   event-on-change-reading szene,state
   eventMap   /szene 0:Fernsehen/szene 1:Lesen/szene 2:Alles-Aus/szene 3:Bügeln/
   group      Licht
   room       EG->Wohnzimmer
   stateRegex /szene:0/Fernsehen/ /szene:1/Lesen/ /szene:2/Alles-Aus/ /szene:3/Bügeln/
   webCmd     Fernsehen:Lesen:Alles-Aus
   widgetOverride szene:slider,0,1,3

Kohle77

Hallo,
ich denke das ich hier richtig bin. Ich versuche grade per KNX ein Viessmann Gate 200 in FHEM zu implementieren.
Siehe auch https://forum.fhem.de/index.php/topic,123827.msg1183908/topicseen.html#msg1183908
Denke aber es gibt keinen richtigen dpt wert für die Raw Messages darzustellen.
Ist es vielleicht möglich einen dpt Wert für ein 4 Byte message anzulegen der einzelne readings pro byte hat?

Gruß
Christian

erwin

Neue Version ist am SVN,

changes / fixes:
    rework decode- encode- ByDpt (cascading if/else != performance)
    fix stateregex once more (danke mgg)
    removed examples from cmdref -> now avail in wiki (with link from cmd-ref)
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

thorte

Hallo Erwin,

bin erst jetzt dazu gekommen, zum dpt19 via ETS mal auf den Bus zu schauen. Ich habe das Problem, dass mein mdt DaliControl IP64 Gateway Datum / Uhrzeit aus dem FHEM nicht annimmt, im Gegensatz zu den mdt Glastastern. Werte aus der ETS werden angenommen. Ich habe dazu heute mal via ETS und via FHEM jeweils den Zeitstring 06.11.2021_05:00:00 gesetzt. Die Raw-Messages ETS (1) und FHEM (2) sind leicht unterschiedlich:


(1) RawData 2B 07 03 01 07 04 02 1D BC BC E0 FF 12 20 00 09 00 80 79 0B 06 C5 00 00 00 00
(2) RawData 2B 07 03 01 05 04 02 29 79 BC E0 00 02 20 00 09 00 80 79 0B 06 C5 00 00 20 00


Die jeweils kompletten Ausgaben auf dem Busmonitor sind:

aus ETS:

Eigenschaft Wert
RawData 2B 07 03 01 07 04 02 1D BC BC E0 FF 12 20 00 09 00 80 79 0B 06 C5 00 00 00 00
MessageCode LBusmonInd
Source 15.15.18
SourceName -
Destination 4/0/0
DestinationName DatumUhrzeit
RepeatedFlag False
Acknowledge Non
RoutingCounter 6
Priority Low
FrameFormat Standard
Service vom Bus
LocalizedType GroupValueWrite
Type APciGroupValueWrite
Security
TPCI T_Data
APCI APciGroupValueWrite
DataPointType   19.001 Datum/Zeit
RawDpValue 79 0B 06 C5 00 00 00 00


aus FHEM:

Eigenschaft Wert
RawData 2B 07 03 01 05 04 02 29 79 BC E0 00 02 20 00 09 00 80 79 0B 06 C5 00 00 20 00
MessageCode LBusmonInd
Source 0.0.2
SourceName -
Destination 4/0/0
DestinationName DatumUhrzeit
RepeatedFlag False
Acknowledge Non
RoutingCounter 6
Priority Low
FrameFormat Standard
Service vom Bus
LocalizedType GroupValueWrite
Type APciGroupValueWrite
Security
TPCI T_Data
APCI APciGroupValueWrite
DataPointType   19.001 Datum/Zeit
RawDpValue 79 0B 06 C5 00 00 20 00


Bei der Eingabe der Uhrzeit in ETS ist mir aufgefallen, dass ein "Day Of Week" benötigt wird. Vielleicht eine Möglichkeit für den Unterschied?

Falls Du weitere Werte brauchst, gerne melden. Zeit ist allerdings meistens Mangelware.

Gruß Thorsten

erwin

Komisch,
der einzige Unterschied, der mir im datenpaket auffällt (abgesehen vom header) ist das vorletzte Byte:
FHEM schickt ein hex 20 vs. ETS ein hex 00

Das NWD bit=0 bedeutet lt. doku: WD - bit valid (working day)
FHEM set das auf 1->ungültig , ETS auf 0-> gültig..
allerding setzt die ETS das WD-bit auf 0 - was bedeuten würde "kein Arbeitstag" -   ich bin nicht sicher, wie ein Samstag gewertet wird....

Traust du dir zu, die 10_KNX.pm zu patchen?
Falls ja, dann ändere die Zeile  1653 von:

        my $status1 = 0x20;  # Fault=0, WD = 0, NWD = 1 (WD Field valid), NY = 0, ND = 0, NDOW= 0,NT=0, SUTI = 0
auf
        my $status1 = 0x00;  # Fault=0, WD = 0, NWD = 1 (WD Field valid), NY = 0, ND = 0, NDOW= 0,NT=0, SUTI = 0

dann natürlich ein reload 10_KNX.pm bzw. fhem restart....
dann schauen wir, was am Sonntag und am Montag passiert....
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

thorte

Asche über mein Haupt - hatte einen Dreher in den Gruppenadressen.

Dabei ist mir aufgefallen: Kann es sein, dass in der 10_KNX.pm nach Zeile 1579 ein

$numval = $secs + ($mins << 8) + ($hours << 16);

fehlt? ein set .... now setzt die Uhrzeit aktuell auf 00:00:00

Am dpt19 habe ich wieder auf den 0x20 zurück geändert und beobachte es.

Gruß Thorsten

erwin

ZitatKann es sein, dass in der 10_KNX.pm nach Zeile 1579 ein
.. Asche, Asche....
Völlig richtig - ist irgendwie beim Kopieren verlogengegangen....wird in der nächste Version wieder drin sein!
erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

lichtimc

Ich habe einen KNX-Taster folgendermaßen definiert, welcher bei mir einen KNX-Dim-Schalter im FHEM emuliert:

defmod Zimmer2_Taster_Dimmen KNX 2/4/29:dpt1.001:einaus 2/4/30:dpt3.007:reldim 2/4/31:dpt5.001:absval
attr Zimmer2_Taster_Dimmen IODev tul
attr Zimmer2_Taster_Dimmen event-on-update-reading .*
attr Zimmer2_Taster_Dimmen eventMap {\
usr=>{\
'down'=>'reldim -100',\
'stop'=>'reldim 0',\
'up'=>'reldim 100',\
'^absval-get (\d+)'=>'absval $1'\
},\
fw=>{\
'^absval-get (\d+)'=>'absval-get'\
}\
}
attr Zimmer2_Taster_Dimmen webCmd on:off:down:stop:up:absval-get
attr Zimmer2_Taster_Dimmen widgetOverride absval-get:slider,0,10,100

Ich kann somit auf "up" oder "down" klicken und es wird ein "reldim [-]100" gesendet. Leider funktioniert seit einiger Zeit das Klicken auf "stop" nicht mehr. Hier wird kein "reldim 0" gesendet, sondern aus einem mir unbekannten Grund ein "reldim 1".
Weiß jemand wo der Fehler liegt?

erwin

#44
ZitatWeiß jemand wo der Fehler liegt?
JA, fix ist im test....  ;D
und hoffentlich morgen im update....

update: fix ist im SVN, details im 1sten Beitrag!
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...