FakeWallThermostat beeinflusst alle(!) HeizkörperThermostate im Haus

Begonnen von Tobias, 15 März 2013, 13:58:24

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
ich bediene mittels FakeWallThermostat alle Heizkörperthermostate in jedem Raum mit dem im jeweiligen Raum vorhandenen externen Temperatursensor.
Solange ich nur ein Raum damit bediene ist alles i.o. Sobald ich aber mehr als ein Raum damit steuern möchte, wirbeln alle DesiredTemp Werte durcheinander.
Mittels:
set CULMAX0 fakeWT Kueche_Heizung 15.5 18.0
setze ich desiredTemp und Aktuelle Temp in der Küche. Das Heizkörperthermostet bestätigt dies und schickt ggf ca 60sek später eine Nachricht raus über die aktuelle Valveposition etc. Und genau auf diese Nachricht reagieren alle anderen Thermostate die ich ebenfalls mit dem FakeWallThermostat ansteuere. Auf einmal habe ich im Wohnzimmer, Kinderzimmer,Bad ebenfalls eine DesiredTemp von 15,5°C.
Erst wenn ich wieder ein Deassociate vom FakeWallThermostat durchführe ist wieder alles io, allerdings auch ohne externen TempSensor :(

Ich denke das ist das "Feature" von MAX mit dem Raumthermostat mehrere HeizThermostate anzusteuern. Schön und gut, aber bei einem CUL nicht wirklich immer nutzbar.
Ich denke man muss die Möglcihkeit haben X-Verschiedene FakeWallThermostate definieren zu können. Ev. einen neuen Typ deklarieren??

Edit: leider hilft´s auch nicht jedem HeizThermostat eine andere groupid (1,2,3,etc..) zu geben
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre

Hast du groupId's gesetzt?
Hast du ein richtiges Wandthermostat, sodass du die Pakete vergleichen kannst?

Matthias Gehre

Sonst mal mit gesetzter groupid
in Zeile 204 in 14_CUL_MAX.pm
return CUL_MAX_Send($hash,"WallThermostatControl",$dest,
        sprintf("%02x%02x",$arg1,$arg2),flags => "04", src => CUL_MAX_fakeWTaddr($hash))
mit dem groupid ergänzen (genauso wie in 10_MAX für set desiredTemperature).

Tobias

ich probiers aus.
Groupid hatte ich bei jedem Thermostat verschieden gesetzt, allerdings taucht die groupid nicht in den Readings auf. Demzufolge kann man sie auch nicht auslesen wie in 10:MAX.pm:  
my $groupid = MAX_ReadingsVal($hash,"groupid");

Ein echtes Wandthermostat habe ich nicht.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre

Nach dem Update mit dem groupid handling muss man dire groupid nochmal setzen, damit FHEM sich das merkt. (Stand im Changelog)

Tobias

stimmt, nach dem 2ten set groupid kams auch in die Readings ;)
Ich teste sobald als möglich die codeänderung...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

auf diesen Code habe ich es geändert:
my $groupid = ReadingsVal($hash,"groupid",0);

      return CUL_MAX_Send($hash,"WallThermostatControl",$dest,
        sprintf("%02x%02x",$arg1,$arg2), groupId => sprintf("%02x",$groupid), flags => ( $groupid ? "04" : "00" ), src => CUL_MAX_fakeWTaddr($hash));


nach dem ersten Test schauts erstmal gut aus, muss es aber einen Tag beobachten.

Könnte es bei der Ermittlung der Groupid eine Schwachstelle geben? Wenn nach einem fhem-Neustart die groupid nicht vom Thermostat mitgeteilt wird und somit fehlt, wird 0 stattdessen genommen. Eine potentielle Fehlerquelle bei den wieder alle DesiredTemp durcheinander geraten??
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre

Die groupId wie viele Dinge (ecoTemperature, weekProfile, ...) werden uns nie mitgeteilt, also hilft nur "merken", nachdem wir neu gesetzt haben

Tobias

es funktioniert, du kannst die codeänderung einchecken :)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

habs gerade im Log gefunden:
Use of uninitialized value $groupid in sprintf at ./FHEM/14_CUL_MAX.pm line 206.
Versteh ich nur nicht da es in Zeile 204 definiert wird.... hmm
Edit: nach einem Reload war´s komischerweise weg :)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter


Shadow3561

Hallo,
Ich muss diesen Fred noch einmal pushen.

Ich habe mehrer Räume mit Max Themostaten ausgestattet.
Im Wohnzimmer habe ich alle mit einem FakeWallThermostat gekoppelt.
Dies funktioniert soweit ganz gut, bis auf eine Sache.

Ich muss bei jedem Neustart von FHEM die Thermostate erneut mit dem FakeWT assozieren.

1.  Gibt es eine Möglichkeit dies automatisch ablaufen zu lassen?

2.  Wie kann ich ,z.B. die Thermostate aus dem Schlafzimmer, einen zweiten FakeWT zuordnen in weiteren Räumen.

Habe in diesem Threat gedacht die Antwort zu finden, jedoch verstehe ich es nicht ganz mit dem bearbeiten der Dateien und weiß auch nicht ob es überhaupt noch möglich ist.

Habe bereits die GroupID's im Wohnzimmer auf 1 und im Schlafzimer auf 2 gesetzt.

Wäre schön wenn mir jemand erklären könnte wie ich weiter verfahren muss (bitte für dummies)

Mit freundlichen Grüßen