readingsGroup - set an KNX senden

Begonnen von EIB-Fan, 23 August 2016, 22:44:57

Vorheriges Thema - Nächstes Thema

EIB-Fan

Hallo,

in der vergangenen Zeit habe ich vor allem der interressanten Beiträge hier im Forum meine Fhem-Installation immer weiter optimiert.

An einem Punkt war meine bisherige Suche im Forum, Commandref, Wiki, Google ... vergebens.  :(

Ich möchte aus einer readingsGroup Temperaturen aus einer Liste an KNX übergeben. Prinzipiell ist dies realisierbar wenn der Befehlsempfänger die "Gruppe 1" ist. In meinem Fall ist dies die "Gruppe 2".

Laut Commandref ist der Syntax für KNX:

set <name> <value> [g<groupnr>]


Prinzipiell funktioniert:

set HK_BAD value 21.5 g2


Alle Änderungen der Temperaturen aus der readingsGroup werden an "Gruppe 1" gesendet und natürlich falsch interpretiert.

Meine Programmierung ist deutlich umfangreicher, aber um die Thematik zu veranschaulichen habe ich diese reduziert.

List der readingsgroup:

Internals:
   CFGFN
   DEF        <>,<Status>,<SOLL-Wert-Komfort>
HK_BAD:schalten-get,soll_temp_komfort-set
   NAME       rg.HK
   NR         944
   NTFY_ORDER 50-rg.HK
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     HK_BAD     1
   Content2:
   DEVICES:
     ARRAY(0x251ecd8)
     ARRAY(0x2790638)
   Fhem:
     lastDefChange 94
     last_update 1471983909.057
   Helper:
     DEF
     Commands:
       soll_temp_komfort-set value:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0
     Positions:
       HK_BAD.schalten-get 2:1
       HK_BAD.soll_temp_komfort-set 2:2
     Valueicon:
       schalten-get %devStateIcon
     Values:
       formated:

         ARRAY(0x29e4330)
         ARRAY(0x28e7ec8)
       orig:

         ARRAY(0x24d6a88)
         ARRAY(0x2529478)
       prefixsuffix:

         ARRAY(0x27538a0)
         ARRAY(0x29906e8)
Attributes:
   commands   { 'soll_temp_komfort-set' => 'value:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0' }
   valueIcon  { 'schalten-get' => '%devStateIcon' }


List des KNX-Device:

Internals:
   CFGFN
   DEF        6/0/80:dpt1:schalten 6/1/45:dpt9:soll_temp_komfort
   DEVNAME    HK_BAD
   IODev      tul
   LASTInputDev tul
   MSGCNT     13
   NAME       HK_BAD
   NR         813
   NTFY_ORDER 50-HK_BAD
   STATE      off
   TYPE       KNX
   tul_MSGCNT 13
   tul_RAWMSG C0000w612d0c33
   tul_TIME   2016-08-23 22:11:18
   Gaddr:
     1          6/0/80
     2          6/1/45
   Gcode:
     1          6050
     2          612d
   Model:
     1          dpt1
     2          dpt9
   Readings:
     2016-08-23 22:11:18   last-sender     0/0/0
     2016-08-23 17:53:34   schalten-get    off
     2016-08-23 17:53:33   schalten-set    off
     2016-08-23 22:11:18   soll_temp_komfort-get 21.50
     2016-08-23 22:11:18   soll_temp_komfort-set 21.50
     2016-08-23 22:11:18   state           off
   Readingsname:
     1          schalten
     2          soll_temp_komfort
Attributes:
   IODev      tul
   devStateIcon on:general_an@green off:general_aus
   stateCmd   {sprintf("%s", ReadingsVal($name,"schalten-get",""))}
   webCmd     :


Kann mir hier jemand einen Tipp geben?

Gruß Jens

justme1968

#1
schau dir mal cmdalias an. damit müsste es möglich sein das set kommando so umzubiegen das es die gruppe hinter an hängt. falls das nicht nebenwirkungs frei geht kannst du mit cmdalias auch ein neues kommando mit  eigem namen definieren und dann in der readingsGroup verwenden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

EIB-Fan

Hallo Andre,

danke für die schnelle Antwort!

Habe mit cmdalias bisher noch nicht gearbeitet. Werde mich mal einlesen und entsprechend testen.

Gruß Jens

Black7king

Hallo

könntet ihr mal ein Beispiel zeigen wie das dann funktionier?

Mfg

EIB-Fan

Hallo Black7king,

ich gehe davon aus, dass du ein Beispiel mit cmdalias meinst. Hier ist justme1968 Fachmann. Da kann ich die nicht weiterhelfen. Habe mich auch noch nicht weiter mit meiner Problematik und cmdalias beschäftigen können.  :(

@justme1968: Ein Beispiel würde mich auch interessieren. Bin bei Perl noch nicht so fit.

Gruß Jens

justme1968

etwas in der art:define knx_ca cmdalias set HK_BAD value .* AS set HK_BAD $EVENT g2

mit einem dummy nachgestellt so:define knx dummy
attr knx room knx
attr knx setList state:1,2,3,4
attr knx webCmd state
define knx_rg readingsGroup knx:state
attr knx_rg commands { state => 'state:' }
attr knx_rg room knx
define knx_ca cmdalias set knx .* AS set knx $EVENT g2


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

EIB-Fan

Hallo justme1968,

habe parallel auch ein wenig herumprobiert. ;)

Bin auf folgende Lösung gekommen (sieht deiner sehr ähnlich  8) )

Um keine "Nebenwirkungen" zu erzeugen, habe ich in der readingsgroup "value" gegen "soll_komfort" augetauscht.

List rg.HK:

Internals:
   CFGFN
   DEF        <>,<Status>,<SOLL-Wert-Komfort>
HK_BAD:schalten-get,soll_temp_komfort-set
   NAME       rg.HK
   NR         944
   NTFY_ORDER 50-rg.HK
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     HK_BAD     1
   Content2:
   DEVICES:
     ARRAY(0x28c7c90)
     ARRAY(0x2738818)
   Fhem:
     lastDefChange 986
     last_update 1472230670.59807
   Helper:
     DEF
     Commands:
       soll_temp_komfort-set soll_komfort:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0
     Positions:
       HK_BAD.schalten-get 2:1
       HK_BAD.soll_temp_komfort-set 2:2
     Valueicon:
       schalten-get %devStateIcon
     Values:
       formated:

         ARRAY(0x2753d68)
         ARRAY(0x24afbb0)
       orig:

         ARRAY(0x256aca0)
         ARRAY(0x28c7e70)
       prefixsuffix:

         ARRAY(0x2990dc0)
         ARRAY(0x2a67e48)
Attributes:
   commands   { 'soll_temp_komfort-set' => 'soll_komfort:5.0,12.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0' }
   valueIcon  { 'schalten-get' => '%devStateIcon' }


Zusätzlich habe ich einen cmdalias "TEST_1" erzeugt.

Internals:
   ALIAS      set
   CFGFN
   DEF        set HK_.* soll_komfort .* AS  set $EVTPART0 value $EVTPART2 g2
   NAME       TEST_1
   NEWCMD      set $EVTPART0 value $EVTPART2 g2
   NR         125340
   PARAM      HK_.* soll_komfort .*
   STATE      defined
   TYPE       cmdalias
Attributes:


Da ich natürlich noch weitere Heizkreise "HK_" habe, musste ich dies auch noch berücksichtigen.

Ich habe es noch nicht komplett getestet, aber es sieht gut aus.  8)

Wie immer danke für deine Unterstützung. Habe in einem anderen Beitrag gelesen, dass du diese am Tag 24 Stunden gewährleistet ...  :o

Danke!

Gruß Jens