Hallo,
ich habe mit folgendem Code eine Schalter gebaut, der bei jedem Klick eine Variable um eins runterzählt. Das ganze funktioniert auch soweit, allerdings wird der Wert im Floorplan nicht sofort aktualisiert sonder erst nach einem Refresh der Seite. Longpoll ist aktiviert, bei allen anderen Schaltern, etc. habe ich keine Probleme:
define taster dummy
attr taster devStateIcon on:rc_MINUS@red off:rc_MINUS@blue
attr taster fp_Dachgeschoss 400,900,1,
attr taster setList on off
define zaehlerrunter notify taster {my $Wert=ReadingsVal("taster","solltemperatur",0);;\
if ($EVENT eq "on" && $Wert >= 17) {\
$Wert = $Wert-1;;\
fhem("setreading taster solltemperatur $Wert");;\
}}
define zaehlerrunter1 notify taster {my $Wert=ReadingsVal("taster","solltemperatur",0);;\
if ($EVENT eq "off" && $Wert >= 17) {\
$Wert = $Wert-1;;\
fhem("setreading taster solltemperatur $Wert");;\
}}
Vielleicht kann man das ganze auch ein wenig eleganter lösen.
Sascha
Versuch mal webCmd statt setList.
das hatte ich schon versucht. Dann ist das Icon im Floorplan nicht mehr anklickbar und es passiert nichts mehr.
Gerade noch mal getestet:
statt: attr taster setList on off
mit webCmd: attr taster webCmd on:off
-> Icon nicht mehr anklickbar
Dafür gibt es ja dann devStateIcon wenn mich nicht alles täuscht.
das habe ich ja auch im Code. Mit setList ist das Icon anklickbar aber der angezeigte Wert in der Readingsgroup wird er nach einem Refresh aktualisiert, mit webCmd ist es gar nicht erst anklickbar.
Hier noch der Code der dazugehörigen Readingsgroup:
define Heizungsteuerung readingsGroup taster:state taster2:state taster:solltemperatur
attr Heizungsteuerung alias Heizung
attr Heizungsteuerung fp_Dachgeschoss 50,900,0,
attr Heizungsteuerung group Heizung
attr Heizungsteuerung mapping %ALIAS
attr Heizungsteuerung nameStyle style="width:120px"
attr Heizungsteuerung nolinks 1
attr Heizungsteuerung notime 1
attr Heizungsteuerung style style="border-width:1px;;border-style:solid;;background:rgba(0, 0, 0, .3);;font-size:14px"
attr Heizungsteuerung valueIcon { state => '%devStateIcon' }
attr Heizungsteuerung valueStyle style="width:50px"
Hallo,
du weisst aber das du per devStateIcon auch mitgeben kannst WAS bei einem klick auf das Icon geschehen soll?
Dieser Beitrag
http://forum.fhem.de/index.php/topic,26521.msg197326.html#msg197326 (http://forum.fhem.de/index.php/topic,26521.msg197326.html#msg197326)
ist im Wiki unter devStateIcon verlinkt.
attr taster devStateIcon on:rc_MINUS@red:off off:rc_MINUS@blue:on
Versuch mal das und dann schau bitte ab ob es ein Problem in RG oder FP ist oder ob es in FHEMWEB auch nicht geht.
Also erst der Dummy alleine in FHEMWEB -
dann der Dummy in der RG -
dann die RG in FP ODER wenn der Dummy in der RG schon nicht klappt
der Dummy in FP.
Grüße
in FHEMWEB geht es auch nicht. Was ich allerdings festgestellt habe, ist das in den Readings des Dummys die Variabel "state" sofort mit "on" oder "off" und der aktuellen Zeit beim anlicken gesetzt wird, die Variable "solltemperatur" aber erst mit einem Refresh der Seite aktualisiert wird.
http://forum.fhem.de/index.php/topic,31225.msg237373.html#msg237373 (http://forum.fhem.de/index.php/topic,31225.msg237373.html#msg237373)
Hatten wir doch schonmal.
Edith:
Grad nochmal versucht (wie im verlinkten Beitrag) und es klappt.
...langsam verstehe ich nur noch Bahnhof.
Wenn ich folgendes einsetze geht nichts mehr:
attr taster stateFormat {sprintf("Wert: %.0f",ReadingsVal("taster","solltemperatur",0))}
das ganze sieht dann so aus:
define taster dummy
attr taster devStateIcon on:rc_MINUS@red:off off:rc_MINUS@blue:on
attr taster fp_Dachgeschoss 400,900,1,
attr taster webCmd :
attr taster stateFormat {sprintf("Wert: %.0f",ReadingsVal("taster","solltemperatur",0))}
define zaehlerrunter notify taster {my $Wert=ReadingsVal("taster","solltemperatur",0);;\
if ($EVENT eq "on" && $Wert >= 17) {\
$Wert = $Wert-1;;\
fhem("setreading taster solltemperatur $Wert");;\
}}
define zaehlerrunter1 notify taster {my $Wert=ReadingsVal("taster","solltemperatur",0);;\
if ($EVENT eq "off" && $Wert >= 17) {\
$Wert = $Wert-1;;\
fhem("setreading taster solltemperatur $Wert");;\
}}
Ich möchte das Minus-Icon ja haben um den Wert verändern zu können.... Ich verstehe meinen Denkfehler immer noch nicht.
Hallo,
dieser Dummy:
define Dummy1 dummy
attr Dummy1 stateFormat {sprintf("Wert: %.0f",ReadingsVal("Dummy1","solltemperatur",0))}
attr Dummy1 webCmd hoch:runter
und dieses notify:
Dummy1 {
my $Wert=ReadingsVal("Dummy1","solltemperatur",0);
if (($EVENT eq "hoch") && ($Wert < 100)) {
$Wert = $Wert+1;
fhem("setreading Dummy1 solltemperatur $Wert");
}
if (($EVENT eq "runter") && ($Wert > 1)) {
$Wert = $Wert-1;
fhem("setreading Dummy1 solltemperatur $Wert");
}
}
führen nach einem Klick auf hoch zur Anzeige im Screenshot - ganz ohne Browserreload.
Grüße
Edith: Notify für hoch und runter angepasst.
das läuft, allerdings kann ich mit dieser Version keine zwei getrennten, anklickbare Icons für + und - im Floorplan darstellen, da mir ja nur der jeweilige Zustand angezeigt wird. Demnach würde mir bei jedem Klick erst einer addiert und beim nächsten Klick wieder einer abgezogen werden.
Schematisch soll das ganze dann im Floorplan so aussehen:
________________
| |
| Solltemperatur |
| |
| [-] 20°C
Hallo,
das geht mWn so auch nicht im FP.
Pro Device lässt sich nur ein Status/oder Icon anzeigen.
Du wirst dafür wohl oder übel 2 Dummys nehmen müssen.
I-wo hab ich da was gelesen im Forum.
Grüße
Edith: Aber da ich keinen FP nutze kann ich dir dabei leider nicht helfen.
Ich such nachher mal - vielleicht find ich den Beitrag noch.
danke für deine Hilfe. Es läuft jetzt wie es soll. Ich habe es jetzt wie folgt gelöst:
##########
# Heizungssteuerung
#
define Dummy1 dummy
attr Dummy1 stateFormat {sprintf("Wert: %.0f",ReadingsVal("Dummy1","solltemperatur",0))}
attr Dummy1 webCmd hoch:runter
define Dummy2 dummy
attr Dummy2 fp_Dachgeschoss 400,900,0,
attr Dummy2 devStateIcon on:rc_MINUS@red:off off:rc_MINUS@blue:on
attr Dummy2 webCmd on:off
define zaehlerrunter notify Dummy2 {\
my $Wert=ReadingsVal("Dummy1","solltemperatur",0);;\
if (($EVENT eq "on") && ($Wert > 1)) {\
$Wert = $Wert-1;;\
fhem("setreading Dummy1 solltemperatur $Wert");;\
}\
if (($EVENT eq "off") && ($Wert > 1)) {\
$Wert = $Wert-1;;\
fhem("setreading Dummy1 solltemperatur $Wert");;\
}\
}
define Dummy3 dummy
attr Dummy3 fp_Dachgeschoss 400,950,0,
attr Dummy3 devStateIcon on:rc_PLUS@red:off off:rc_PLUS@blue:on
attr Dummy3 webCmd on:off
define zaehlerhoch notify Dummy3 {\
my $Wert=ReadingsVal("Dummy1","solltemperatur",0);;\
if (($EVENT eq "on") && ($Wert < 100)) {\
$Wert = $Wert+1;;\
fhem("setreading Dummy1 solltemperatur $Wert");;\
}\
if (($EVENT eq "off") && ($Wert < 100)) {\
$Wert = $Wert+1;;\
fhem("setreading Dummy1 solltemperatur $Wert");;\
}\
}
define Heizungsteuerung readingsGroup Dummy2:state,solltemperatur@Dummy1,state@Dummy3
attr Heizungsteuerung alias Heizung
attr Heizungsteuerung fp_Dachgeschoss 50,900,0,
attr Heizungsteuerung group Heizung
attr Heizungsteuerung mapping  
attr Heizungsteuerung nolinks 1
attr Heizungsteuerung notime 1
attr Heizungsteuerung style style="border-width:1px;;border-style:solid;;background:rgba(0, 0, 0, .3);;font-size:14px"
attr Heizungsteuerung valueIcon { state => '%devStateIcon' }
attr Heizungsteuerung valueStyle style="width:50px"
#
##########
Jetzt muß ich nur noch die Readingsgroup optisch anpassen.