FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fl_Indigo am 04 Januar 2017, 18:10:19

Titel: GELÖST: state von dummy in notify übergeben
Beitrag von: fl_Indigo am 04 Januar 2017, 18:10:19
beschäftige mich gerade intensiver damit meine UVR1611 in fhem zu kontrollieren, soweit funktioniert auch schon sehr viel.
ich hänge momentan dabei sollwerte für diverse temperaturen auf die UVR zu übergeben und habe folgendes konstrukt:


define Heizung_FBHNeubauSollAbsenk dummy
attr Heizung_FBHNeubauSollAbsenk alias FBH Neubau Absenktemperatur
attr Heizung_FBHNeubauSollAbsenk group Heizung
attr Heizung_FBHNeubauSollAbsenk room Spielwiese
attr Heizung_FBHNeubauSollAbsenk setList state:slider,10,1,22
attr Heizung_FBHNeubauSollAbsenk sortby 5
attr Heizung_FBHNeubauSollAbsenk webCmd state

define n_Heizung_FBHNeubauSollAbsenk notify Heizung_FBHNeubauSollAbsenk:.* {GetFileFromURL('http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto={ReadingsVal("Heizung_FBHNeubauSollAbsenk", "state", 0)}', , , , 5)}


also dummy mit slider erzeugt und im notify soll via httputils der aktuelle state auf die steuerung geschrieben werden, allerdings klappt bei der übergabe irgendwas nicht und das beschäftigt mich jetzt schon den ganze nachmittag ;)
deshalb die bitte, ob hier wer auf die schnelle erkennen kann wo der hase im pfeffer sitzt

die steuerung wird mittels

http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=

gefolgt mit dem gewünschten temperaturwert nach dem = zeichen beschrieben
Titel: Antw:state von dummy in notify übergeben
Beitrag von: fl_Indigo am 06 Januar 2017, 08:18:55
niemand? :(
ich komm hier immer noch nicht weiter...
Titel: Antw:state von dummy in notify übergeben
Beitrag von: dev0 am 06 Januar 2017, 08:57:19
Zitat von: fl_Indigo am 04 Januar 2017, 18:10:19
allerdings klappt bei der übergabe irgendwas nicht

Wenn irgendwas nicht klappt, dann muss man das irgendwie ändern ;)
Statt des GetFileFromURL(...) Aufrufs 'Log 1, ...' verwenden und ins Log schauen was irgendwie nicht funktioniert.
Titel: Antw:state von dummy in notify übergeben
Beitrag von: fl_Indigo am 07 Januar 2017, 15:37:51
danke für die aufschlussreiche antwort, ich hab weiter gespielt:


define n_Heizung_FBHNeubauSollAbsenk notify Heizung_FBHNeubauSollAbsenk:.* {my $sliderwert = ReadingsVal("Heizung_FBHNeubauSollAbsenk","state", 0);; fhem (GetFileFromURL('http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert', , , , 5));;}


aber ich komme immer noch auf keinen grünen zweig, zum verzweifeln

das log sagt nach verändern des sliders folgendes:

2017.01.07 15:34:04 5: Triggering n_Heizung_FBHNeubauSollAbsenk
2017.01.07 15:34:04 4: n_Heizung_FBHNeubauSollAbsenk exec {my $sliderwert = ReadingsVal("Heizung_FBHNeubauSollAbsenk","state","");; fhem (GetFileFromURL('http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert', , , , 5));;}
2017.01.07 15:34:04 5: Cmd: >{my $sliderwert = ReadingsVal("Heizung_FBHNeubauSollAbsenk","state",""); fhem (GetFileFromURL('http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert', , , , 5));}<
2017.01.07 15:34:04 4: HttpUtils url=http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert
2017.01.07 15:34:06 4: http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert: HTTP response code 200
2017.01.07 15:34:06 4: HttpUtils http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto=$sliderwert: Got data, length: 3
2017.01.07 15:34:06 5: Cmd: >OK
<
2017.01.07 15:34:06 3: OK
: Unknown command OK
, try help.
2017.01.07 15:34:06 3: n_Heizung_FBHNeubauSollAbsenk return value: Unknown command OK
, try help.
2017.01.07 15:34:06 4: name: /fhem?cmd=set%20Heizung_FBHNeubauSollAbsenk%2016&XHR=1&fw_id=216 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip


warum wird $sliderwert nicht durch den tatsächlichen wert ersetzt im aufruf?
Titel: Antw:state von dummy in notify übergeben
Beitrag von: Hans Franz am 07 Januar 2017, 15:57:46
Weil in perl innerhalb einfacher Hochkommata nicht ersetzt wird. Also im Aufruf entweder doppelte Hochkommata oder Stringconcatenation (die Sache mit dem Punkt) verwenden.

Gruß
Hans
Titel: Antw:state von dummy in notify übergeben
Beitrag von: fl_Indigo am 07 Januar 2017, 16:16:13
danke für den hinweis :)

damit gehts jetzt:

define n_Heizung_FBHNeubauSollAbsenk notify Heizung_FBHNeubauSollAbsenk:.* {my $sliderwert = ReadingsVal("Heizung_FBHNeubauSollAbsenk","state","");; fhem (GetFileFromURL('http://xxx:yyy@10.0.0.249/change.cgi?changeadr=01B007300D&changeto='.$sliderwert, , , , 5));;}