Thermostat Widget setzt Desired Temp automatisch zurück

Begonnen von zap, 20 Februar 2016, 13:37:01

Vorheriges Thema - Nächstes Thema

zap

Seltsamer Effekt bei einem Thermostat Widget: Ich stelle die Zieltemperatur 1. Ich sehe links unten eingeblendet den Set-Befehl Richtung FHEM. In FHEM wird die neue Zieltemperatur gesetzt.
Tja, und nach einiger Zeit springt die Zieltemperatur im Widget auf den alten Wert zurück und auch in FHEM wird wieder der alte Wert eingestellt.

Code

<div data-type="thermostat" data-device="HM_KL_AZ_HZ"
  data-get="KL-AZ-HZ.4.SET_TEMPERATURE"
  data-set="datapoint 4.SET_TEMPERATURE"
  data-valve="KL-AZ-HZ.4.VALVE_STATE"
  data-unit="%B0"
  data-mincolor="#ff0000"
  data-maxcolor="#ff0000"
  data-fgcolor="#ff8000"
  class="large">
</div>


UPDATE: oh, interessanter Effekt. Ich habe ein Homematic Wandthermostat mit einem Heizkörperthermostat gekoppelt. Das Widget greift auf das Heizörperthermostat zu. Wenn ich also die Zieltemperatur des Heizkörperthermostaten direkt ändere, scheint diese vom Wandthermostaten nach kurzer Zeit überschrieben bzw. zurück gesetzt zu werden. Sieht also so aus, als müsste ich beim Thermostat-Widget das Device des Wandthermostaten hinterlegen. Leider hat der keinen Datenpunkt für die Ventilöffnung. Lässt sich aber verschmerzen.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

setstate

Kenne ich. Beim HM bleibt die desired-temp eine ganze Weile beim alten Wert. In der Zwischenzeit steht aber STATUS auf  set_desired-temp 25. Erst wenn der Wert auch beim Device angekommen und geändert ist, ist das Reading auch aktuell. Wenn dazwischen ein neues Versenden der Daten erfolgte, steht dann im FTUI wieder der alte Wert. Aber nach einiger Zeit kommt dann auch der neue.

In einer der vorherigen Versionen vom Thermostat habe ich STATUS "set_desired-temp xx" ausgewertet und zur Anzeige herangezogen. Jetzt passiert das nicht mehr. Es irritiere mich auch schon 2-3 mal und ich werde das wieder verbessern.

kvo1

ZitatIn einer der vorherigen Versionen vom Thermostat habe ich STATUS "set_desired-temp xx" ausgewertet und zur Anzeige herangezogen. Jetzt passiert das nicht mehr. Es irritiere mich auch schon 2-3 mal und ich werde das wieder verbessern.

Danke ! (habe auch HM)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

setstate

Das geht doch nicht zu optimieren. Wenn der Thermostat zyklisch seine Werte übermittelt, ist auch das set_desired-temp xx nicht mehr verfügbar. Man bekommt also nirgends mit, ob ein Wert geändert wurde.
Erst wenn die Änderung beim Device angekommen ist, erscheint beim nächsten Datenübermitteln der neue Wert.

rasti

man könnte vielleicht einfach immer gleich ein BurstXmit hinterherschicken...

zap

#5
Ich glaube in meinem Fall ist das Problem anders gelagert. Ich nutze ja eine CCU mit FHEM Anbindung, d.h. die Thermostate werden über die CCU gesteuert. Hier gibt es nun 2 Dinge zu beachten:

1. Per Default setze ich Werte in CCU Devices per Value(). Daher werden Änderungen erst mit einiger Verzögerung an das Thermostat weiter gegeben. Das habe ich nun auf State() geändert, das die Werte direkt an das Thermostat übermittelt.

2. Ich habe in der CCU ein virtuelles Device (Gruppe mit Thermostat, Wandthermostat und Fensterkontakten) angelegt. Wenn man nun trotzdem die Desired Temp in einem der Thermostate direkt ändert, scheint das (in manchen Fällen) von dem virtuellen Device überschrieben zu werden (scheint eine Art Master zu sein). Das werde ich lösen, indem ich die virtuellen CCU Devices in meiner FHEM-CCU Schnittstelle besser berücksichtigen werde, sodass man dann im Thermostat-Widget direkt das virtuelle Device ansprechen kann. Im Prinzip ist das in der CCU Doku auch so beschrieben: Wenn eine Gruppe angelegt wurde, soll man die darin enthaltenen Geräte nur noch über die Gruppe steuern.

Mit diesen Anpassungen in einer schnell hingefrickelten Testversion ist bei mir der beschriebene Effekt nicht mehr aufgetreten.

Wie sich das bei Einsatz von CUL_HM lösen lässt, weiß ich allerdings nicht, da ich das nicht nutze.

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

skuggy

Zitat von: rasti am 21 Februar 2016, 17:02:24
man könnte vielleicht einfach immer gleich ein BurstXmit hinterherschicken...

@rasti: Wie müsste der Befehl aussehen für BurstX?
...Gruß skuggy

FHEM 5.6 auf Raspberry Pi 2, HM-CFG-LAN, 8x HM-LC-Bl1PBU-FM, 5 x HM-CC-RT-DN, 1 x HM-LC-Sw1-Ba-PCB, 1 x HM-RC-4-2, 1 x JeeLink Clone, 10 x TX29DTH-IT, Fritzbox 7270

Thorsten Pferdekaemper

Zitat von: zap am 20 Februar 2016, 13:37:01
UPDATE: oh, interessanter Effekt. Ich habe ein Homematic Wandthermostat mit einem Heizkörperthermostat gekoppelt. Das Widget greift auf das Heizörperthermostat zu. Wenn ich also die Zieltemperatur des Heizkörperthermostaten direkt ändere, scheint diese vom Wandthermostaten nach kurzer Zeit überschrieben bzw. zurück gesetzt zu werden. Sieht also so aus, als müsste ich beim Thermostat-Widget das Device des Wandthermostaten hinterlegen. Leider hat der keinen Datenpunkt für die Ventilöffnung. Lässt sich aber verschmerzen.
Hi,
klar, wenn man Heizungs- und Wandthermostat peert, dann hat nur noch der Wandthermostat das sagen. Er setzt alle paar Minuten die desired-temp der gepeerten Heizungsthermostate wieder auf "seinen" Wert. Ich finde das auch richtig so.
Die Ventilöffnung wird immer vom Heizungsthermostat selbst berechnet. Es wäre ganz nett, wenn das Thermostat-Widget  die Möglichkeit hätte, auch etwas wie ein  data-valve_device anzubieten.

Zitat von: rasti am 21 Februar 2016, 17:02:24
man könnte vielleicht einfach immer gleich ein BurstXmit hinterherschicken...
Das dann aber bitte nur, wenn es konfigurierbar ist. Bei mir funktioniert das momentan wunderbar auch so und ich will keine unnötigen Bursts haben.

Gruß,
   Thorsten
FUIP

setstate

ZitatEs wäre ganz nett, wenn das Thermostat-Widget  die Möglichkeit hätte, auch etwas wie ein  data-valve_device anzubieten.

Man muss nur das mit Device angeben, dann wird der Wert von einem anderen Device geholt:

data-valve="DEVICE:READING

zap

Zitat von: setstate am 23 Februar 2016, 08:42:48
Man muss nur das mit Device angeben, dann wird der Wert von einem anderen Device geholt:

data-valve="DEVICE:READING

Kann man diese "DEVICE:READING" Syntax eigentlich bei allen Widget verwenden oder nur bei bestimmten?
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

zap

Zitat von: setstate am 23 Februar 2016, 08:42:48
Man muss nur das mit Device angeben, dann wird der Wert von einem anderen Device geholt:

data-valve="DEVICE:READING

Kann man diese "DEVICE:READING" Syntax eigentlich bei allen Widget verwenden oder nur bei bestimmten?
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

setstate

#11
Zitat von: zap am 23 Februar 2016, 08:54:23
Kann man diese "DEVICE:READING" Syntax eigentlich bei allen Widget verwenden oder nur bei bestimmten?

Nur bei denen, die ich schon darauf umgestellt habe. 
Zu erkennen:
im init Teil sowas:
elem.addReading('valve');

und im update Teil muss sowas stehen:
base.elements.filterDeviceReading('valve',dev,par)

Umgestellt sind u.a. : Switch, Push, Button, Spinner, Select, PageTab, Label, Input, Range ...

Thorsten Pferdekaemper

Zitat von: setstate am 23 Februar 2016, 08:42:48
Man muss nur das mit Device angeben, dann wird der Wert von einem anderen Device geholt:
data-valve="DEVICE:READING
Cool, das gibt's also schon.
...jetzt fehlt mir noch eine Lösung für Wandthermostate, die mit mehreren (bei mir bisher 2) Heizungsthermostaten gepeert sind. Vielleicht ist das aber auch nicht wirklich wichtig.
Gruß,
   Thorsten
FUIP

BasWeg

Hi,

ich hatte das bei mir so gelöst, dass ich für das Wandthermostat ein UserReading "ValvePosition" definiert hatte in welchem der Wert des Heizkörperthermostat landet.

attr BAD.Wandthermostat_Climate userReadings ValvePosition {ReadingsVal("BAD.Heizung_Clima","ValvePosition",0)}

Da bei uns Wohn- und Esszimmer sich ein Wandthermostat teilen schreibe ich dort den "Durchschnittswert" der beiden Heizkörperthermostate rein.

attr EZ.Wandthermostat_Climate userReadings ValvePosition {(ReadingsVal("EZ.Heizung_Clima","ValvePosition",0)+ReadingsVal("WZ.Heizung_Clima","ValvePosition",0))/2.0}

Somit kann ich desired_temp, measured_temp und ValvePosition direkt vom Wandthermostat abgreifen und brauche die oben genannte Brücke mit "DEVICE:READING" nicht.

Viele Grüße
Bastian


Thorsten Pferdekaemper

Zitat von: BasWeg am 23 Februar 2016, 11:15:30Da bei uns Wohn- und Esszimmer sich ein Wandthermostat teilen schreibe ich dort den "Durchschnittswert" der beiden Heizkörperthermostate rein.
Hi,
Danke für die Anregung. Das ist zumindest besser als nichts.
Gruß,
   Thorsten
FUIP