Fibaro Home Center 2 et thermostat pour chauffage au sol HeatIt. Comment augmenter la température

J'ai été confronté à la tâche de contrôler un sol chaud à partir de l'interface du Fibaro Home Center 2. Cela semble être une tâche simple, mais non. À la demande du client, les thermostats doivent être basés sur la température du sol. Il a été décidé d'utiliser des thermostats HeatIt.

image

Ils étaient les plus adaptés aux besoins des clients:

  • design minimaliste
  • la possibilité d'éteindre autant que possible ce qui est allumé sur le panneau
  • la capacité de travailler en fonction de la température du sol
  • la possibilité d'association directe avec des relais externes (car le chauffage par le sol est de l'eau, vous devez contrôler les relais situés dans la chaufferie, qui ouvrent-ferment les vannes des circuits correspondants)

Après avoir étudié un peu de matériaux sur le réseau, j'ai découvert que le «cool» Fibaro Home Center 2 n'est pas en mesure de régler régulièrement les thermostats à des températures> 30 degrés dans l'interface Web et> 28 degrés dans l'application mobile. Quoi pour la température maximale du sol, bien sûr pas assez.

image

Dans le même temps, les thermostats HeatIt permettent de régler jusqu'à 40 degrés. La question est de savoir pourquoi Fibaro ne permet pas à l'installateur de régler la plage de températures possibles. Bon, d'accord, je pensais, on va trouver quelque chose. Il y avait même une idée de décaler les lectures du capteur NTC avec une résistance supplémentaire, mais alors le client devrait s'habituer aux lectures de température dans les "perroquets" conditionnels, ce qui n'est pas bon.

Il y avait une idée, mais que se passe-t-il si nous prenons et envoyons en quelque sorte une plus grande valeur?

L'échange entre le client Web et Home Center 2 est décrit dans l' API Fibaro REST
Mais j'ai trouvé plus facile d'intercepter toutes les commandes dans Wireshark.

Spécifiquement pour HeatIt:
POST / api / devices / 9 / action / setMode {"args": [1]}
POST / api / devices / 9 / action / setSetpointMode {"args": [1]}
POST / api / devices / 9 / action / setThermostatSetpoint {"args": [1,27]}
La description
setMode - sélection du mode (arguments: 1 - en chauffage, 11 - chauffage économique, 0 - en arrêt)
setSetpointMode - sélectionnez le mode d'affichage de la température d'installation (les arguments sont les mêmes)
setThermostatSetpoint - définit la température cible pour le mode (en conséquence, le premier argument est le mode, le second est la température)

Vous pouvez également envoyer des demandes comme:
GET / api / callAction? DeviceID = ID & name = setThermostatSetpoint & arg1 = MODE & arg2 = TEMP VALUE
etc.

Vous pouvez également apprendre toutes les commandes et valeurs de tous les appareils installés par une demande REST:
GET / api / devices
Donc, nous envoyons au thermostat une température de 35 degrés, et voilà, le thermostat l'a acceptée.

Maintenant, la tâche est de trouver un remplacement pour le contrôle régulier du thermostat.

La première option est une appliance virtuelle Fibaro.

J'ai esquissé le formulaire:



Commencer à écrire des scripts:

Tout d'abord, nous allons trouver l'ID de tous les appareils qui nous intéressent. Pour ce faire, accédez aux paramètres de chaque "appareil" lié à notre thermostat et regardez l'ID sur la page ou dans la barre d'adresse du navigateur.

Dans mon cas, le dispositif de réglage de la température cible (setPoint) - ID: 7

Capteur de température au sol - ID: 8

Sélection du mode de fonctionnement du thermostat - ID: 9





De plus, notre appareil virtuel a également son propre ID, il ne peut être vu que dans la barre d'adresse du navigateur, j'ai cet ID 12 . De plus, chaque élément de l'appareil virtuel a également son propre ID, dans mon cas:

"Rythme actuel." J'ai l'ID « Label1 », «Température cible» - ID « Label2 »
Boutons «+» et «-» - ID « Button1 » et ID « Button2 », respectivement. «Mode» - ID « Label1 ».
Eh bien, les boutons "OFF", "ECO" et "ON" - ID " Button3 ", ID " Button4 " et ID " Button5 ", respectivement.

La boucle principale:

--       ,       : 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 

Ensuite, nous écrivons des scripts pour les boutons:
Avec les boutons de sélection de mode, tout est simple:
«OFF»:

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

«ECO»:

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

«ON»:

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

Pour le bouton «+»:

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

Pour le bouton «-»:

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

En général, tout.

Cela fonctionne bien, le seul problème est le délai après avoir appuyé sur le bouton. Si vous gérez à partir d'un réseau local, cela prend 1 à 2 secondes, mais si vous gérez à distance, le délai peut atteindre jusqu'à 10 secondes. C'est-à-dire si nécessaire, ajouter ou abaisser la température d'une douzaine de degrés à distance peut prendre quelques minutes.

En général, c'est bien sûr une béquille, mais il n'y a pas d'autre issue. Dans d'autres domaines, pour l'avenir, je dirai que l'ensemble du système finira par être contrôlé par Iridium Mobile. Il s'agit donc d'une solution temporaire.

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


All Articles