MAX! Thermostat per UI bedienen

Hallo zusammen,

ich möchte meine MAX! Thermostate mit Homegear + UI bedienen - sprich umschalten zwischen Auto/Manuell/Frostschutz und Soll-Temperatur einstellen.

Entsprechend Grundlagen Homegear / Starter-Guide - #17 by Sim
habe ich hierzu im AdminUi buildings/stories/rooms = Haus/Wohnung/Bad angelegt. Der Thermostat ist erfolgreich gekoppelt und dem “Bad” zugeordnet.

Anschliessend habe ich über das CLI folgendes konfiguriert:^

homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "ACTUAL_TEMPERATURE", 1));'
homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "SET_TEMPERATURE", 1));'
homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "CONTROL_MODE", 1));'
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "ACTUAL_TEMPERATURE", 201001));' 
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "SET_TEMPERATURE", 201002));' 
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "CONTROL_MODE", 201003));'
root@raspberrypi:/home/pi# homegear -e rc 'print_v($hg->getVariablesInRoom(1));'
(Struct length=1)
{
  [1] (Struct length=1)
  {
    [1] (Array length=3)
    [
      (String) SET_TEMPERATURE
      (String) CONTROL_MODE
      (String) ACTUAL_TEMPERATURE
    ]
  }
}
root@raspberrypi:/home/pi# homegear -e rc 'print_v($hg->checkUiElementSimpleCreation(1, 1, "SET_TEMPERATURE"));'
(Struct length=2)
{
  [reason] (String) **Could not find a matching variable set.**
  [visualizable] (Boolean) 0
}

Nach einem Reboot tauchen zusätzliche Variablen im Raum auf.

root@raspberrypi:/home/pi# homegear -e rc 'print_v($hg->getVariablesInRoom(1));'
(Struct length=1)
{
  [1] (Struct length=1)
  {
    [1] (Array length=7)
    [
      (String) SET_TEMPERATURE.RV.TEMPERATURE_MODE
      (String) SET_TEMPERATURE.RV.ECO_TEMPERATURE
      (String) SET_TEMPERATURE
      (String) SET_TEMPERATURE.RV.COMFORT_TEMPERATURE
      (String) SET_TEMPERATURE.RV.FROST_PROTECTION_TEMPERATURE
      (String) CONTROL_MODE
      (String) ACTUAL_TEMPERATURE
    ]
  }
}
root@raspberrypi:/home/pi# homegear -e rc 'print_v($hg->checkUiElementSimpleCreation(1, 1, "SET_TEMPERATURE"));'
(Struct length=2)
{
  [reason] (String) **Could not find a matching variable set.**
  [visualizable] (Boolean) 0
}

Im homegear.log/err bzw homegear-managemnet.log/err sehe ich keine weiteren Hinweise. Wie muss denn ein passendes variable set aussehen?

Hat jemand eine funktionierende Konfiguration für MAX! + UI?

Meine Config:
PI4 mit Rasbian Lite (Buster, 2020-12-02)
Homegear nightly 0.8.0-3128
CC1101 SPI Modul
MAX! Thermostat BC-RT-TRX-CyN

Viele Grüße
Olli

Hey Olli,

nutz doch bitte die Formatierungsfunktion des Forums:
grafik

Du kannst deinen Beitrag nachträglich bearbeiten.

A post was merged into an existing topic: UI: Variablen-/ Rollendefinition

Ich komme da leider auch nicht weiter…
Bei mir hat der Wandthermostat die id 2, und der Raum ist ebenfalls id 2
Die ersten 3 Eingaben funktionieren noch wie im Grundlagenartikel beschrieben.

# homegear -e rc '$hg->setRoomMetadata(2, array("icon" => "sofa_1"));'

# homegear -e rc 'print_v($hg->addVariableToRoom(2,1,"ACTUAL_TEMPERATURE",2));'
(Boolean) 1

# homegear -e rc 'print_v($hg->addRoleToVariable(2,1,"ACTUAL_TEMPERATURE",201001));'
(Boolean) 1

addUIElement geht dann aber krachen :frowning:

# homegear -e rc '$hg->addUiElement(2, 1, "ACTUAL_TEMPERATURE", "Raumtemperatur");'
PHP Fatal error:  Uncaught Homegear\HomegearException: Role has no UI definition. in
/var/libhomegear/scripts/inline.php:7
Stack trace:
#0 /var/lib/homegear/scripts/inline.php(7): Homegear\Homegear->__call('addUiElement', Array)
#1 {main}
thrown in /var/lib/homegear/scripts/inline.php on line 7

Irgendwo habe ich im Forum gelesen, dass es UI definitions nur für bestimmte roles gibt - leider stand dort nicht für welche.

Das “Beispiel für Heizung” aus dem Grundlagen Homegear / Starter-Guide - #17 by Sim habe ich nun mit einem virtual heating device im UI an den Start bekommen. Interessant ist, dass es bei mir nur mit virtual heating device, aber nicht mit virtual thermostat funktioniert. Vielleicht bringt das ja neue Erkenntnisse:

1. im Admin den room erzeugen z.B. ID=1
2. im AdminUI add device -> family=miscellaneous -> device=virtualheating
3. im AdminUI das device dem room zuordnen
homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "TEMPERATURE", 1));'
homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "SETPOINT_TEMPERATURE", 1));'
homegear -e rc 'print_v($hg->addVariableToRoom(1, 1, "CONTROL_MODE", 1));'
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "TEMPERATURE", 201001));' 
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "SETPOINT_TEMPERATURE", 201002));' 
homegear -e rc 'print_v($hg->addRoleToVariable(1, 1, "CONTROL_MODE", 201003));' 
homegear -e rc 'print_v($hg->addUiElement(1, 1, "SETPOINT_TEMPERATURE", "Heizung"));' 

Evtl. musst du einen reboot machen, damit die SETPOINT_TEMPERATURE.RV.xyz Variablen und die zugehörigen roles erzeugt werden. Das erfolgt offenbar über /var/lib/homegear/defaultroles.json.

Anschliessend sollte im UI unter devices ein heating widget mit slider auftauchen.

Warum funktioniert das mit VirtualHeating und nicht mit VirtualThermostat bzw. MAX!-Thermostat?

Man könnte jetzt natürlich über Node blue die device variables von VirtualHeating und MAX! verknüpfen, aber wie soll man das triggern? und vor allem - geht das nicht einfacher?

Ich war mal so frei deinen ersten Beitrag etwas zu formatieren. :slight_smile:
Was genau geht denn nicht mit VirtualThermostat? Den hatte ich letztens mal ausprobiert und bis auf die Eigenheit, dass sich der Slider nur in 1°C Stufen einstellen lässt war der meine ich funktionabel. Solange es mit VirtualHeating geht, ist doch alles gut.?
Der Umweg über virtuelle Geräte hat natürlich den Charme, dass man einfach noch etwas Logik dazwischen schalten kann. Aus Homegearsicht ist dann ein Gerät zu betrachten, das implemetiert sein will und die ganzen Eigenheiten der unterschiedlichen Endgeräte muss man dann eben selbst als Anwender berücksichtigen.
Was meinst du denn mit triggern? Bei einem Ereignis ausgelöst von der UI wird auf das virtuelle Gerät geschrieben und umgekehrt.
Um auf deine ursprüngliche Frage zurück zu kommen: vielleicht hilft dir das hier weiter: https://forum.homegear.eu/uploads/short-url/9taPP7vIs5c3YM3JRhfvAq7xRyZ.txt
aus deim Beitrag: Homegear UI - Wie fügt man einen Rollladen Aktor hinzu? - #4 by Sim

@fow0ryl
Wenn du nur das eingegeben hast, das du hier schreibst, kann es nicht gehen. Die anderen Variablen des Geräts müssen auch im Raum sein und eine Rolle zugewiesen bekommen haben.

3 posts were split to a new topic: UI: Variablen-/ Rollendefinition

@Sim, vielen Dank für´s Formatieren :-).

Ich habe heute nochmal alles neu aufgesetzt und jetzt funktioniert auch die Visualisierung des VirtualThermostat.

Solange es mit VirtualHeating geht, ist doch alles gut.?

Jein, warum funktioniert die Visualisierung nur mit dem VirtualThermostat bzw. VirtualHeating, aber nicht mit dem MAX!-Thermostat. Habe ich noch einen Bug in meiner o.a. Konfiguration oder geht das grundsätzlich nicht??

Was meinst du denn mit triggern?

Node Blue ist neu für mich und ich hatte so meine Bedenken wie ich z.B. SET_TEMPERATURE von MAX! zum Virtual Device und umgekehrt zuweise ohne in einer feedback loop zu enden. Aber Node Blue bringt ja die feedback loop prevention schon mit - sehr praktisch. Das konnte ich gestern nicht sehen, weil an den entsprechenden check boxes von den variable in nodes der Text fehlte. Heute gibt es dort auch Text an den check boxes :-).

Ist meine Vermutung richtig, dass man MAX!-Thermostate nicht direkt visualieren kann - hierfür braucht man zwingend ein Virtual Device?

Viele Grüße
Olli

Hallo @Olli,

Ist meine Vermutung richtig, dass man MAX!-Thermostate nicht direkt visualieren kann - hierfür braucht man zwingend ein Virtual Device?

Das war bis jetzt tatsächlich so. Seit wenigen Tagen kannst du UI-Elemente aus Node-BLUE heraus anlegen. Dann wird kein virtuelles Gerät mehr benötigt.

Viele Grüße

Sathya