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
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
Hallo Andre,
danke für die schnelle Antwort!
Habe mit cmdalias bisher noch nicht gearbeitet. Werde mich mal einlesen und entsprechend testen.
Gruß Jens
Hallo
könntet ihr mal ein Beispiel zeigen wie das dann funktionier?
Mfg
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
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
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