NEWS
Solltemperatur +/- Button
-
Hallo,
ich hoffe ich kann mein Problem einigermaßen verständlich erklären:
Ich habe in meinem VIS-View ein Widget welches mir die Soll- und Ist-Temperatur eines Heizkörperthermostates anzeigt. Hinzu kommen ein Plus- und ein Minus-Button um die Solltemperatur schrittweise ändern zu können. Mein Problem ist nun folgendes:
Ich habe ein Widget vom Typ basic-Number, welches mir die Soll-Temperatur anzeigt (SET_TEMPERATURE). Die Buttons für Plus und Minus sind vom Typ jqui-ctrl-IconIncrement. Drücke ich nun den + Button wird die Solltemp. auch um 0.5 erhöht. Funktioniert also soweit.
Problematisch wird es, wenn ich öfter auf den Button klicke um die Temp. z.B. um 3°C zu erhöhen. Die Anzeige der Solltemperatur spielt dann verrückt. Ich denke es liegt daran, dass sich die Werte dieses Datenpunktes (?) dann "überschneiden". Zum Einen erhöhe ich den Wert wieder und wieder und zum Anderen bekommt ioBroker immer wieder die aktuellen Daten aus der CCU.
Drücke ich z.B. 6mal auf Plus, steigt der Wert in der Anzeige z.B. erstmal von 20 auf 22, springt dann zurück auf 21 -> ich drücke weiter geht wieder hoch -> springt wieder ein Stück zurück.
Ich hoffe ihr versteht was ich meine. Ansonsten muss ich mal versuchen ein Video zu machen.
Mir fällt allerdings auch nicht wirklich was ein, wie ich das besser lösen könnte.
Viele Grüße
-
Hast du mal versucht das repeat_delay (300) zu erhöhen?
Ich persönlich finde 0,5°C Schritte unnötig, 1°C Schritte reichen, musst du aber selbst wissen!
Enrico
-
Das löst ja aber mein Problem nicht, oder? Natürlich könnte ich auch einfach langsamer klicken aber das ist ja nicht wirklich eine Lösung.
-
Das Problem hier ist, dass jeder Klick SOFORT an den Aktor geschickt wird und während noch die Funkkommunikation andauert drückst du schon weitere male. Irgendwann sind Aktor und Vis dann nicht mehr synchron. Die CCU meldet irgendwann den Wert, welcher im Aktor aktuell ist, zurück an ioBroker und der Wert springt zurück.
Bei allem, wo es schnelle Änderungen gibt, ist es sinnvoll eine Art Puffer-State einzubauen, du kannst dazu solche ein Skript nutzen (nicht getestet!):
/* diese Drei Werte anpassen! */ var stateId = "hm-rpc.0.xxxxxx.2.SET_TEMPERATURE"; var bufferState = "set_temperature_puffer"; var delay = 1000; //ms var obj = getObject('stateId'); createState('puffer.' + bufferState, obj.common.def || undefined, false, obj.common, obj.native); on({id: 'puffer.' + bufferState, ack: false}, function(obj) { setStateDelayed (stateId, obj.state.val, false, delay, true); }); on({id: stateId, ack: true}, function(obj) { setState('puffer.' + bufferState, obj.state.val, true); });
-
Repeating-Problem durch die Übertragungslatenz kann man auch umgehen, in dem man-
lediglich diskrete Buttons zum Setzen verwendet [17°][18°]…[23°]
-
oder den Wert aus einem jqui-Select Value List abrufen lässt (Listinhalt 17°, 17,5°, 18°, …)
-
oder den Wert über ein jqui-Radiobuttons Valuelist setzen lässt
Dann muss man auch nicht 6x tappen, sondern max 2x
Ist keine echte Lösung für dein Problem, sondern sind lediglich Alternativen.
-
-
Danke erstmal für eure Antworten.
Das mit dem Puffer hab ich mir auch schon überlegt. Danke für den Codeschnipsel. Ich werde noch versuchen das in eine Schleife zu packen, sodass ich es nicht für alle Thermostate einzeln machen muss.
-
Gibt es dafür nicht eine bessere, saubere Lösung? Ich habe das gleiche Problem, aber mit einem Slider für die Beleuchtung.
-
Selbes Skript funktioniert auch da. Im moment gibt es dafür leider keine Universellere Lösung.
-
Ich habe das jetzt erstmal mit dem Script gelöst. Funktioniert zumindest besser als zuvor.
Was mich dennoch etwas stört: Die Bedienung (VIS) ist noch nicht richtig geschmeidig. Man kann nicht schön schnell hintereinander tippen, sondern hat immer noch eine gewisse Latenz. Ich denke die sauberste Lösung wäre, wenn dieser "Puffer" direkt im VIS-Widget integriert wäre. Soll heißen, man betätigt mehrfach den Button in VIS und erst nach einer gewissen Verzögerung wird die Änderung an ioBroker übertragen. Das hatte ich schon mal versucht, jedoch bin ich damals an einem anderen Problem gescheitert:
http://forum.iobroker.net/viewtopic.php?f=30&t=6220
Hatte dann erstmal aufgegeben…
vg
Jens
-
@nevermind Hi,
ich würde diesen Thread mal ausgraben da ich diese Buttons auch benutzen möchte. Allerdings bekomme ich es nicht hin den Wert zu senken. Ich hab mal ganz naiv -1 statt 1 eingetragen, aber das funktioniert nicht.Wie hast du das denn in der Variante ohne Script gemacht?
Danke im Voraus.
-
@xfirf sagte in Solltemperatur +/- Button:
ich würde diesen Thread mal ausgraben
bist du dir sicher, dass die bisherigen Poster nach 3 Jahren überhaupt noch existieren?
-
@Homoran Das werde ich jetzt herausfinden. Falls nein kann ich ja einfach einen neuen Thread aufmachen und schauen ob mir jmd anderes helfen kann.
-
Versuchen kann man es ja mal
Ich habe gerade versucht raus zu finden wie ich das gelöst habe ... ist schon eine Weile her. So ganz durchschaut habe ich es nicht. Im Prinzip nutze ich aber das Script, also Buffer-States. In vis habe ich ein Javascript welches beim klicken auf +/- den Wert in einem unsichtbaren Input-Feld ändert.
Wie gesagt ... so ganz genau kann ich es dir gerade nicht erklären. Müsste mich da erst mal wieder rein denken.
-
@xfirf sagte:
Ich hab mal ganz naiv -1 statt 1 eingetragen, aber das funktioniert nicht.
So funktioniert es bei mir problemlos:
-
@nevermind Achso.
Mein Plan wäre ja gewesen es über das vorhandene Widget zu machen, ohne Javascript. Wenn man im Feld eine "1" einträgt wird der Wert der Heizung auch um ein Grad erhöht. Aber ich bekomms damit nicht hin dass die Temperatur auch gesenkt werden kann.
"-1" ist da mein Ansatz, aber das klappt nicht. -
@paul53 Minmax muss auf 0 (gerade per google gefunden) oder wie bei dir auf -100 stehen, dann gehts.
DANKE.
-
@xfirf sagte:
Minmax muss auf 0 (gerade per google gefunden) oder wie bei dir auf -100 stehen
Genauer: Minmax muss beim - Button das Minimum und beim + Button das Maximum enthalten, da dort gestoppt wird.