Modul 10_KNX.pm - support

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

Vorheriges Thema - Nächstes Thema

erwin

#15
Sorry,
i'm afraid you have to change yr. Gad-Names - parsing user input is almost as complicated as writing the logic!
See my reply from 11 September 2021, 22:17:20 in this thread.
cmd-ref:
ZitatThe gadName must not begin with one of the following strings: on, off, on-for-timer, on-until, off-for-timer, off-until, toggle, raw, rgb, string, value, set, get, listenonly, nosuffix.
regards Erwin

PS: if you want to try an experiment, you can edit 10_KNX.pm file and change line 423:

#                       elsif ($gadArgs[0] =~ m/^$PAT_GAD_NONAME.*/ix) { # check for forbidden names
                         elsif ($gadArgs[0] =~ m/^$PAT_GAD_NONAME$/ix) {

Pls. give feedback of any side effects... thanks
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,...

baerm

Hallo Erwin,
danke für Deinen Support bzgl der Jalousie. Nach dem Anpassen scheint soweit das Logfile recht sauber zu sein.
Ich habe noch ein paar Einträge, bei denen ich nicht weiss von welchem Device diese kommen.
2021.10.01 20:59:19 3: KNX_checkAndClean: value= g3 on was casted to 3
2021.10.01 21:00:08 3: KNX_checkAndClean: value= g2 on was casted to 2

Wäre es hier möglich bei KNX_checkAndClean den Devicenamen auch anzugeben?
lg,
Matthias

erwin

Hi Matthias,
ZitatWäre es hier möglich bei KNX_checkAndClean den Devicenamen auch anzugeben?
... hab's eingebaut, bin am finalen testen der nächsten Version, bitte um ein paar Tage noch Geduld!
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

Hi KNX Community,

eine neue Version ist am SVN, change history: siehe erster 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,...

baerm

Vielen Dank. Ist schon eingespielt.
lg,
Matthias

GammaTwin


rogerknop

Hallo Erwin,

Danke erst einmal für deinen Einsatz das Modul weiter zu pflegen!
Ich habe sehr viele KNX Geräte und bisher läuft die Umstellung ohne Probleme.

Nur im Log tauchen immer die Old Syntax Meldungen bei meinen Rollos auf und ich sehe keine Abweichung zur cmdref.

Hier mal ein Rollo Define:
Internals:
   DEF        8/1/1:dpt5.001 2/2/0:dpt1.008 2/2/1:dpt1.008 8/2/1:dpt5.001
   DEVNAME    Arbeit.Rollo
   FIRSTGADNAME g1
   FUUID      5c7ab74f-f33f-d8f3-b201-c99ef7a724c3b9a1
   GETSTRING  g1:noArg g2:noArg g3:noArg g4:noArg
   IODev      KNX
   KNX_MSGCNT 3
   KNX_RAWMSG C01107w0820100
   KNX_TIME   2021-10-06 10:24:55
   LASTInputDev KNX
   MSGCNT     3
   NAME       Arbeit.Rollo
   NR         638
   SETSTRING  g1:slider,0,1,100 g2:up,down g3:up,down g4:slider,0,1,100
   STATE      0 %
   TYPE       KNX
   model      dpt5
   GADDETAILS:
     g1:
       CODE       08101
       GROUP      8/1/1
       MODEL      dpt5.001
       NO         1
       OPTION     
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :slider,0,1,100
     g2:
       CODE       02200
       GROUP      2/2/0
       MODEL      dpt1.008
       NO         2
       OPTION     
       RDNAMEGET  getG2
       RDNAMEPUT  putG2
       RDNAMESET  setG2
       SETLIST    :up,down
     g3:
       CODE       02201
       GROUP      2/2/1
       MODEL      dpt1.008
       NO         3
       OPTION     
       RDNAMEGET  getG3
       RDNAMEPUT  putG3
       RDNAMESET  setG3
       SETLIST    :up,down
     g4:
       CODE       08201
       GROUP      8/2/1
       MODEL      dpt5.001
       NO         4
       OPTION     
       RDNAMEGET  getG4
       RDNAMEPUT  putG4
       RDNAMESET  setG4
       SETLIST    :slider,0,1,100
   GADTABLE:
     02200      g2
     02201      g3
     08101      g1
     08201      g4
   READINGS:
     2021-10-06 10:01:55   BeschattungsDevice Beschatt_Buero
     2021-10-06 10:01:55   IODev           KNX
     2021-10-06 10:01:55   getG1           on
     2021-10-06 10:01:55   getG2           down
     2021-10-06 10:01:55   getG3           up
     2021-10-06 10:24:55   getG4           0 %
     2021-10-06 10:24:55   last-sender     1.1.7
     2021-10-06 10:01:55   setG1           35 %
     2021-10-06 10:24:47   setG2           off
     2021-10-06 10:21:56   setG3           on
     2021-10-06 10:24:55   state           0 %
Attributes:
   IODev      KNX
   alias      Rollladen
   devStateIcon {rolloDevStateIcon($name);}
   eventMap   /on g2:Ab/on g3:Stop/off g2:Auf/value 35 g1:Halb
   genericDeviceType blind
   group      Arbeitszimmer
   room       EG
   sortby     400
   webCmd     Ab:Stop:Auf:Halb


Sobald ich den Rollo bewege, kommt eine neue Old Syntax Warnung ins Log.
Hast Du einen Tipp, was ich in der Definition falsch mache?

Danke & Grüße,
Roger

erwin

Hi Roger,

Danke fürs Feedback,
deine def ist absout korrekt, wo das Problem ist: - bei einem Set-cmd  - der gemacht wird sobald du auf "AUF/AB/STOP/HALB" drückst!
Ändere mal die eventMap auf:
eventMap  /g2 on:Ab/g3 on:Stop/g2 off:Auf/g1 35:Halb/
...es könnte auch noch ein notify/doif,.. sein wo die alte syntax vorkommt!

Schau die bitte auch die neue wiki Seite:  https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele an, z.B. Slider mit Rückmeldung - oder Jalousie/Rolladen, da wird zwar mit gadNamen (statt Gx) definiert, ist aber sinngemäß das gleiche.
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,...

rogerknop

Super Erwin!
Dein eventMap Vorschlag hat es gelöst.
Danke :-)
Roger

Amenophis86

Oh, der Wiki Eintrag ist nice. Insbesondere die Beispiel zu den Rollos, da werde ich die Tage wohl mal umbauen müssen bei mir. Das gefällt mir gut, was du da gebaut hast. Danke
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

erwin

Hi Amenophis86,

Danke für die Blumen...
Übrigens: Es sind ALLE eingeladen, weitere (funktionierende) Beispiele in den wiki-Beitrag zu stellen. Wer keinen wiki Zugang hat, kann mir seine Vorschläge gern per pm od. mail schicken!
Ich hab das wiki bisher nicht besonders gemocht, aber mit dem VisualEditor komme ich zurecht  ;D
Der Beitrag soll einmal der Ankerpunkt fürs KNX-Modul werden, daher könnte sich der namen/link noch ändern!
Mittelfristig ist geplant, die Beispiele aus der cmd-ref zu entfernen und durch einen Link aufs wiki zu ersetzen. - Es gab schon Kritik wg. übergroßer 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,...

baerm

Hallo Erwin,
bei mir funktioniert seit dem letzten KNX Modul Update die Option "on-for-timer" nicht mehr. Wenn der Timer abgelaufen ist, dann passiert nichts. Es gibt aber keine Erroreinträge oder sonstige Hinweise im Logfile.
Hast Du etwas geändert in der Richtung?
lg
Matthias

erwin

Hi Matthias,
bitte um list <device>
und setzte das device auf loglevel5 und mach dann ein set <device> on-for-timer 2
.. und poste auch den log-Ausschnitt
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,...

baerm

Hi,
also hier der Log mit level 5:

2021.10.07 20:56:18 5: KNX_Set -enter: KNX_0101000, g1, on-for-timer, 10
2021.10.07 20:56:18 5: KNX_Set: set KNX_0101000: desired target is gad: steuern, command: g1 on-for-timer 10, args: on-for-timer 10
2021.10.07 20:56:18 5: KNX_checkAndClean -enter: value= on, gadName= steuern
2021.10.07 20:56:18 5: KNX_checkAndClean -exit: value= on, gadName= steuern, model= dpt1, pattern= (?^ix:((on)|(off)|(0?1)|(0?0)))
2021.10.07 20:56:18 5: KNX_encodeByDpt: steuern model: dpt1, code: dpt1, value: on
2021.10.07 20:56:18 5: KNX_encodeByDpt -exit: model: dpt1, code: dpt1, value: on, hexval: 01
2021.10.07 20:56:18 4: KNX_Set: KNX_0101000, cmd= g1 on-for-timer 10, value= on, translated= 01
2021.10.07 20:56:18 5: KNX_Set: -exit
2021.10.07 20:56:18 4: KNX_Parse -process: IO-name: KNX, device-name: KNX_0101000, rd-name: status, gadCode: 01103, cmd: w
2021.10.07 20:56:18 5: KNX_decodeByDpt -enter: model: dpt1, code: dpt1, value: 01, length-value: 2
2021.10.07 20:56:18 5: KNX_decodeByDpt -exit: model: dpt1, code: dpt1, value: 01, state: on
2021.10.07 20:56:18 4: KNX_Parse (wp): KNX_0101000, READINGNAME: status-get, VALUE: on, SENDER: 01115


Und das List:

Internals:
   DEF        1/1/0:dpt1:steuern 1/1/3:dpt1:status
   DEVNAME    KNX_0101000
   FIRSTGADNAME steuern
   FUUID      5c42d929-f33f-e2c0-a993-1f31f6a13dbc55c4
   GETSTRING  steuern:noArg status:noArg
   IODev      KNX
   KNX_MSGCNT 8
   KNX_RAWMSG C01115w0110300
   KNX_TIME   2021-10-07 20:57:22
   LASTInputDev KNX
   MSGCNT     8
   NAME       KNX_0101000
   NR         115
   SETSTRING  on:noArg off:noArg steuern:off,on status:off,on
   STATE      off
   TYPE       KNX
   model      dpt1
   GADDETAILS:
     status:
       CODE       01103
       GROUP      1/1/3
       MODEL      dpt1
       NO         2
       OPTION     
       RDNAMEGET  status-get
       RDNAMEPUT  status-put
       RDNAMESET  status-set
       SETLIST    :off,on
     steuern:
       CODE       01100
       GROUP      1/1/0
       MODEL      dpt1
       NO         1
       OPTION     
       RDNAMEGET  steuern-get
       RDNAMEPUT  steuern-put
       RDNAMESET  steuern-set
       SETLIST    :off,on
   GADTABLE:
     01100      steuern
     01103      status
   READINGS:
     2021-10-07 20:31:04   IODev           KNX
     2021-10-07 20:31:04   getG1           off
     2021-10-07 20:57:22   last-sender     1.1.21
     2021-10-07 20:31:04   setG1           off
     2021-10-07 20:57:22   state           off
     2021-10-07 20:57:22   status-get      off
     2021-10-07 20:31:04   steuern-get     off
     2021-10-07 20:57:21   steuern-set     off
Attributes:
   IODev      KNX
   alias      Licht Gang Keller
   devStateIcon on:on:off off:off:on
   event-on-change-reading .*
   icon       light_downlight
   room       KG->Keller
   userattr   room_map structexclude
   verbose    5
   webCmd     on:off


lg,
Matthias

erwin

Hi Matthias,
ich habs:
du definerst die 1/1/0:dpt1:steuern
aber das set: set <device> g1 on-for-timer 10

richtig wäre: set <device> steuern on-for-timer 10

woher kommt das set ??
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,...