Hallo zusammen,
Edit: mein erster Beitrag hier.. ich fühle mich, wie wenn ich schon Jahre dabei bin.. also "Hallo erstmal, ich bin schon ne Weile dabei - als Mitleser und Lernender".
aber hier steh ich auf dem Schlauch:
Ich lese einerseits die aktuelle Sollwertverschiebung aus einem KNX-TempController und will schrittweise (+1/-1) die Sollwertverschiebung anpassen.
Das folgende WebCmd funktioniert nicht; ersetze ich aber das "+1" durch ein "-1" gibt es keine Syntaxfehler und es funktioniert. Wo liegt mein Denkfehler mit dem +1?
attr EG_AZ_raumcontroller webCmd sollwertversch_set {(ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0))+1}:sollwertversch_set {(ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0)-1)}
Fehlermeldung im Log:
2021.09.23 21:40:40 1: PERL WARNING: Number found where operator expected at (eval 6290) line 1, near ") 1"
2021.09.23 21:40:40 3: eval: my $DEV= $evalSpecials->{'%DEV'};ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0) 1
2021.09.23 21:40:40 1: ERROR evaluating my $DEV= $evalSpecials->{'%DEV'};ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0) 1: syntax error at (eval 6290) line 1, near ") 1"
Hier gern noch das komplette List:
Internals:
DEF 0/4/42:dpt9.001:ist_temp:listenonly:nosuffix
0/4/43:dpt9.001:soll_temp:set:nosuffix
0/4/41:dpt5.001:stellwert_heizung::nosuffix
0/4/45:dpt9.001:basis_sollwert_temp::nosuffix
0/4/46:dpt6.010:sollwertversch_set:set:nosuffix
0/4/47:dpt6.010:sollwertversch_get:get:nosuffix
DEVNAME EG.AZ.raumcontroller
FIRSTGADNAME ist_temp
FUUID 61407f82-f33f-b7b6-6c48-588a9c0ac0d8ff46
FVERSIONE 04.67 18-08-2021
GETSTRING stellwert_heizung:noArg sollwertversch_get:noArg basis_sollwert_temp:noArg
IODev KNX
KNX_MSGCNT 147
KNX_RAWMSG C0112fw0042a0c40
KNX_TIME 2021-09-23 21:51:20
LASTInputDev KNX
MSGCNT 147
NAME EG_AZ_raumcontroller
NOTIFYDEV global,EG.AZ.raumcontroller
NR 183
NTFY_ORDER 50-EG.AZ.raumcontroller
SETSTRING sollwertversch_set:slider,-127,2,127 soll_temp:slider,-274,6710,670760 stellwert_heizung:slider,0,1,100 basis_sollwert_temp:slider,-274,6710,670760
STATE IST: 21.76 °C SOLL: 20.50 °C HEIZUNG: 0 % BasisTemp: 21 °C Sollwert: 20.50 °C;
TYPE KNX
GADDETAILS:
basis_sollwert_temp:
CODE 0042d
GROUP 0/4/45
MODEL dpt9.001
NO 4
OPTION
RDNAMEGET basis_sollwert_temp
RDNAMEPUT basis_sollwert_temp
RDNAMESET basis_sollwert_temp
SETLIST :slider,-274,6710,670760
ist_temp:
CODE 0042a
GROUP 0/4/42
MODEL dpt9.001
NO 1
OPTION listenonly
RDNAMEGET ist_temp
RDNAMEPUT ist_temp
RDNAMESET ist_temp
SETLIST :slider,-274,6710,670760
soll_temp:
CODE 0042b
GROUP 0/4/43
MODEL dpt9.001
NO 2
OPTION set
RDNAMEGET soll_temp
RDNAMEPUT soll_temp
RDNAMESET soll_temp
SETLIST :slider,-274,6710,670760
sollwertversch_get:
CODE 0042f
GROUP 0/4/47
MODEL dpt6.010
NO 6
OPTION get
RDNAMEGET sollwertversch_get
RDNAMEPUT sollwertversch_get
RDNAMESET sollwertversch_get
SETLIST :slider,-127,2,127
sollwertversch_set:
CODE 0042e
GROUP 0/4/46
MODEL dpt6.010
NO 5
OPTION set
RDNAMEGET sollwertversch_set
RDNAMEPUT sollwertversch_set
RDNAMESET sollwertversch_set
SETLIST :slider,-127,2,127
stellwert_heizung:
CODE 00429
GROUP 0/4/41
MODEL dpt5.001
NO 3
OPTION
RDNAMEGET stellwert_heizung
RDNAMEPUT stellwert_heizung
RDNAMESET stellwert_heizung
SETLIST :slider,0,1,100
GADTABLE:
00429 stellwert_heizung
0042a ist_temp
0042b soll_temp
0042d basis_sollwert_temp
0042e sollwertversch_set
0042f sollwertversch_get
Helper:
DBLOG:
ist_temp:
DBLogging:
TIME 1632426680.43083
VALUE 21.76
soll_temp:
DBLogging:
TIME 1632426636.05229
VALUE 20.50
state:
DBLogging:
TIME 1632426680.43083
VALUE 21.76
stellwert_heizung:
DBLogging:
TIME 1632425964.47551
VALUE 0
READINGS:
2021-09-23 16:11:12 IODev KNX
2021-09-23 16:11:12 basis_sollwert_temp 21 °C
2021-09-23 21:51:20 ist_temp 21.76 °C
2021-09-23 21:51:20 last-sender 1.1.47
2021-09-23 21:50:36 soll_temp 20.50 °C
2021-09-23 21:50:36 sollwertversch_get -1
2021-09-23 21:50:35 sollwertversch_set -1
2021-09-23 21:51:20 state 21.76 °C
2021-09-23 21:39:24 stellwert_heizung 0 %
Attributes:
DbLogExclude .*
DbLogInclude state,soll_temp,ist_temp,stellwert_heizung
alias Raumcontroller Arbeitszimmer
comment GAs: { dev=>{"^ist_temp:.(.*)"=>'soll_temp: $1'}, usr=>{"^soll_temp(.*)"=>'value $1 g1'}, fw=>{"^soll_temp(.*)"=>'soll_temp: $1'} }
devstateicon: /:control_minus:sollwertversch_set {(ReadingsNum("EG.AZ.raumcontroller","sollwertversch_get",0)-1)}/:control_plus:sollwertversch_set {(ReadingsNum("EG.AZ.raumcontroller","sollwertversch_get",0)+1)}
webcmd: sollwertversch_set {(ReadingsNum("EG.AZ.raumcontroller","sollwertversch_get",0)-1)}:sollwertversch_set {(ReadingsNum("EG.AZ.raumcontroller","sollwertversch_get",0) + 1)}
room EG_AZ
stateFormat {"IST: ".ReadingsVal("$name","ist_temp", "0")." SOLL: ".ReadingsVal("$name","soll_temp", "0")." HEIZUNG: ".ReadingsVal("$name","stellwert_heizung", "0")." BasisTemp: ".ReadingsVal("$name","basis_sollwert_temp", "0").sprintf(" Sollwert: %.2f °C;", (ReadingsNum("$name","basis_sollwert_temp", 0))+(0.5*(ReadingsNum("$name","sollwertversch_get", 0))));}
webCmd sollwertversch_set {(ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0))+1}:sollwertversch_set {(ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0)-1)}
Vorab mal: Willkommen!
Das mit dem "Plus" im FHEMWEB-Kontext ist hin und wieder seltsam, weil es teils als Platzhalter für Leerzeichen verwendet wird...
Wenn es überhaupt auf diesem Weg geht, muss man das Plus vermutlich irgendwie escapen, wobei ich entweder auf \ oder ein weiteres + tippen würde. Ist aber eine recht vertrackte Sache, die du da haben willst. Evlt. kannst du im für FHEMWEB passenden Bereich (ausnahmsweise) einen neuen Thread aufmachen, darin nach hierhin verlinken und dann gleich wieder schließen? (Ungewohntes Vorgehen, aber sonst bekommt es Rudi evtl. nicht mit...).
Ansonsten: Funktion nach myUtils auslagern und dann nur "up" oder "down" übergeben?
Hallo,
vielen Dank, verschiedene Maskierungen hatte ich schon versucht: \+ , ++, Leerzeichen + Leerzeichen. Kein Erfolg.
Dann werde ich mich mal an der Funktion versuchen - Zielszenario wird ja irgendwann ohnehin eine Darstellung als <+> oder <-> sein und somit wird auch das WebCmd nicht mehr benötigt. In der Kommandozeile oben funktioniert es ja.
Dachte nur, ich hätte was übersehen.
Schöne Grüße
Oli
Zitat von: rolizer am 23 September 2021, 23:11:26
\+ , ++, Leerzeichen + Leerzeichen. Kein Erfolg.
Da es scheinbar an der FHEMWEB-Übergabe liegt, würde ich statt des + mal %2B versuchen. Sieht im Code sicher seltsam aus, sollte aber als + übertragen werden.
Zitatwürde ich statt des + mal %2B versuchen
top, das wars. Vielen Dank für die Hilfe!
Nur, falls jemand in der Suche drauf stößt: Am Ende sieht es jetzt so aus und funktioniert mit einem + und - Knopf. Warum ich in der eventMap 3 Zeilen benötige, hab ich nicht verstanden. Ohne die mittlere Zeile geht es aber nicht.
defmod EG_AZ_raumcontroller KNX 0/4/42:dpt9.001:ist_temp:listenonly:nosuffix \
0/4/43:dpt9.001:soll_temp:set:nosuffix \
0/4/41:dpt5.001:stellwert_heizung::nosuffix \
0/4/45:dpt9.001:basis_sollwert_temp::nosuffix \
0/4/46:dpt6.010:sollwertversch_set:set:nosuffix \
0/4/47:dpt6.010:sollwertversch_get:get:nosuffix
attr EG_AZ_raumcontroller DbLogExclude .*
attr EG_AZ_raumcontroller DbLogInclude state,soll_temp,ist_temp,stellwert_heizung
attr EG_AZ_raumcontroller alias Raumcontroller Arbeitszimmer
attr EG_AZ_raumcontroller eventMap /sollwertversch_set {((ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0))-1)}:sollwertversch_set -/\
/sollwertversch_set {((ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0))-1)}:sollwertversch_set..*/\
sollwertversch_set {((ReadingsNum("EG_AZ_raumcontroller","sollwertversch_get",0))+1)}:sollwertversch_set/
attr EG_AZ_raumcontroller icon temp_control@#FFFF00
attr EG_AZ_raumcontroller room EG_AZ
attr EG_AZ_raumcontroller stateFormat {"IST: ".ReadingsVal("$name","ist_temp", "0")." SOLL: ".ReadingsVal("$name","soll_temp", "0")." HEIZUNG: ".ReadingsVal("$name","stellwert_heizung", "0")." BasisTemp: ".ReadingsVal("$name","basis_sollwert_temp", "0").sprintf(" Sollwert: %.2f °C;;", (ReadingsNum("$name","basis_sollwert_temp", 0))+(0.5*(ReadingsNum("$name","sollwertversch_get", 0))));;}
attr EG_AZ_raumcontroller webCmd sollwertversch_set
attr EG_AZ_raumcontroller widgetOverride sollwertversch_set:uzsuSelect,+,-
Schönen Gruß
Oli