Fibaro Home Center 2 und Thermostat für Fußbodenheizung HeatIt. Wie man die Temperatur erhöht

Ich stand vor der Aufgabe, einen warmen Boden über die Fibaro Home Center 2-Oberfläche zu steuern. Es scheint eine einfache Aufgabe zu sein, aber nein. Auf Wunsch des Kunden sollten Thermostate auf der Bodentemperatur basieren. Es wurde beschlossen, HeatIt-Thermostate zu verwenden.

Bild

Sie waren am besten für Kundenanforderungen geeignet:

  • minimalistisches Design
  • die Fähigkeit, so viel wie möglich zu löschen, was auf dem Panel leuchtet
  • die Fähigkeit, basierend auf der Bodentemperatur zu arbeiten
  • die Möglichkeit der direkten Verbindung mit externen Relais (da die Fußbodenheizung Wasser ist, müssen Sie die Relais im Kesselraum steuern, die die Ventile der entsprechenden Stromkreise öffnen und schließen)

Nachdem ich die Materialien im Netzwerk ein wenig untersucht hatte, stellte ich fest, dass das „coole“ Fibaro Home Center 2 nicht weiß, wie Thermostate in der Weboberfläche auf Temperaturen> 30 Grad und in der mobilen Anwendung auf> 28 Grad eingestellt werden. Was für die maximale Bodentemperatur natürlich nicht ausreicht.

Bild

Gleichzeitig ermöglichen HeatIt-Thermostate die Einstellung von bis zu 40 Grad. Die Frage ist, warum Fibaro dem Installateur nicht erlaubt, den Bereich möglicher Temperaturen einzustellen. Okay, dachte ich, wir werden uns etwas einfallen lassen. Es gab sogar die Idee, die Messwerte des NTC-Sensors durch einen zusätzlichen Widerstand zu verschieben, aber dann müsste sich der Kunde an die Temperaturmesswerte in den bedingten "Papageien" gewöhnen, was nicht gut ist.

Es gab eine Idee, aber was ist, wenn wir einen größeren Wert annehmen und auf irgendeine Weise senden?

Der Austausch zwischen dem Webclient und Home Center 2 wird in der Fibaro REST-API beschrieben
Aber ich fand es einfacher, alle Befehle in Wireshark abzufangen.

Speziell für HeatIt:
POST / api / device / 9 / action / setMode {"args": [1]}
POST / api / device / 9 / action / setSetpointMode {"args": [1]}
POST / api / device / 9 / action / setThermostatSetpoint {"args": [1,27]}
Beschreibung
setMode - Modusauswahl (Argumente: 1 - beim Heizen, 11 - wirtschaftliches Heizen, 0 - aus)
setSetpointMode - Wählen Sie aus, in welchem ​​Modus die Installationstemperatur angezeigt wird (die Argumente sind dieselben).
setThermostatSetpoint - Legt die Zieltemperatur für den Modus fest (dementsprechend ist das erste Argument der Modus, das zweite die Temperatur).

Sie können auch Anfragen senden wie:
GET / api / callAction? DeviceID = ID & name = setThermostatSetpoint & arg1 = MODE & arg2 = TEMP VALUE
usw.

Sie können auch alle Befehle und Werte für alle installierten Geräte durch eine REST-Anforderung lernen:
GET / api / Geräte
Also schicken wir dem Thermostat eine Temperatur von 35 Grad, und siehe da, der Thermostat hat sie akzeptiert.

Jetzt besteht die Aufgabe darin, einen Ersatz für die regelmäßige Steuerung des Thermostats zu finden.

Die erste Option ist eine virtuelle Fibaro-Appliance.

Ich habe das Formular skizziert:



Erste Schritte beim Schreiben von Skripten:

Zuerst ermitteln wir die ID aller Geräte, an denen wir interessiert sind. Gehen Sie dazu zu den Einstellungen für jedes „Gerät“ in Bezug auf unseren Thermostat und sehen Sie sich die ID auf der Seite oder in der Adressleiste des Browsers an.

In meinem Fall das Gerät zum Einstellen der Zieltemperatur (setPoint) - ID: 7

Bodentemperatursensor - ID: 8

Auswahl des Thermostat-Betriebsmodus - ID: 9





Außerdem hat unser virtuelles Gerät auch eine eigene ID, die nur in der Adressleiste des Browsers angezeigt wird. Ich habe diese ID 12 . Außerdem hat jedes Element des virtuellen Geräts in meinem Fall auch eine eigene ID:

"Aktuelles Tempo." Ich habe die ID " Label1 ", " Zieltemperatur " - ID " Label2 "
Tasten "+" und "-" - ID " Button1 " bzw. ID " Button2 ". "Mode" - ID " Label1 ".
Nun, die Tasten "OFF", "ECO" und "ON" - ID " Button3 ", ID " Button4 " und ID " Button5 ".

Die Hauptschleife:

--       ,       : floor_temp = fibaro:getValue(8, 'value') currentSetPoint = tonumber(fibaro:getValue(7, 'value')) mode = fibaro:getValue(9, 'mode') --     fibaro:call(12, "setProperty", "ui.Label1.value", floor_temp) --               if (mode == '1') then fibaro:call(12, "setProperty", "ui.Label3.value", "ON") fibaro:call(12, "setProperty", "ui.Label2.value", currentSetPoint) elseif (mode == '11') then fibaro:call(12, "setProperty", "ui.Label3.value", "ECO") fibaro:call(12, "setProperty", "ui.Label2.value", currentSetPoint) elseif (mode == '0') then fibaro:call(12, "setProperty", "ui.Label3.value", "OFF") fibaro:call(12, "setProperty", "ui.Label2.value", "OFF") end 

Als nächstes schreiben wir Skripte für die Schaltflächen:
Mit den Moduswahltasten ist alles einfach:
"AUS":

 fibaro:call(9, 'setMode',0) 

"ECO":

 fibaro:call(9, 'setMode',11) fibaro:call(7, 'setSetpointMode',11) 

"EIN":

 fibaro:call(9, 'setMode',1) fibaro:call(7, 'setSetpointMode',1) 

Für die Schaltfläche "+":

 --     currentSetPoint = tonumber(fibaro:getValue(7, 'value')) --  ,        40  if (currentSetPoint < 40) then setPoint = currentSetPoint + 1 else setPoint = 40 end --      fibaro:call(7, 'setThermostatSetpoint',11, setPoint) 

Für die Schaltfläche "-":

 currentSetPoint = tonumber(fibaro:getValue(7, 'value')) if (currentSetPoint > 5) then setPoint = currentSetPoint - 1 else setPoint = 5 end fibaro:call(7, 'setThermostatSetpoint',11, setPoint) 

Im Allgemeinen alles.

Es funktioniert gut, das einzige Problem ist die Verzögerung nach dem Drücken der Taste. Wenn Sie von einem lokalen Netzwerk aus verwalten, beträgt dies 1-2 Sekunden. Wenn Sie jedoch remote verwalten, kann die Verzögerung bis zu 10 Sekunden betragen. Das heißt, Falls erforderlich, kann das Hinzufügen oder Verringern der Temperatur um ein Dutzend Grad aus der Ferne einige Minuten dauern.

Im Allgemeinen ist dies natürlich eine Krücke, aber es gibt keinen anderen Ausweg. Mit Blick auf die Zukunft werde ich sagen, dass das gesamte System irgendwann unter die Kontrolle von Iridium Mobile geraten wird. Dies ist also eine vorübergehende Lösung.

Source: https://habr.com/ru/post/de436344/


All Articles