Hello,
Je me lance dans un truc un peu complexe, relier un objet Chauffage dans HomeKit avec un radiateur fil pilote géré par IPX800v5 et X4FP.
Ma config fonctionnelle actuelle :
- IPX800v5 en version 4.4.1
- serveur Mosquitto fonctionnel sur Raspberry Pi
- serveur Homebridge avec plugin MQTTThing fonctionnel
- AppleTV comme master HomeKit
L’objectif est d’interagir via MQTT avec l’objet HomeKit Heater Cooler.
Pour cela, il faut faire interagir les IO du X4FP pour le radiateur concerné avec 3 variables :
ActiveState : False / True
State : Inactive / Heat
HeatingThresholdTemperature : température en degré Celsius
L’idée est que cela fonctionne dans les 2 sens :
Un choix dans le widget du radiateur sur l’IPX met a jour l’objet HomeKit et une modification dans Maison sur iOS met à jour l’objet X4FP sur l’IPX.
La logique retenue est la suivante, sachant que la température de consigne est définie sur le thermostat du radiateur lui-même :
X4FP sur stop :
- ActiveState : False
- State : Inactive
- HeatingThresholdTemperature : 20
X4FP sur stop frost
- ActiveState : True
- State : Heat
- HeatingThresholdTemperature : 8
X4FP sur confort :
- ActiveState : True
- State : Heat
- HeatingThresholdTemperature : 20
X4FP sur confort-1 :
- ActiveState : True
- State : Heat
- HeatingThresholdTemperature : 19
X4FP sur confort-2:
- ActiveState : True
- State : Heat
- HeatingThresholdTemperature : 18
X4FP sur eco :
- ActiveState : True
- State : Heat
- HeatingThresholdTemperature : 16
Et dans l’autre sens de commande
- Si ActiveState = False alors X4FP sur Frost
- Si ActivateState = True HeatingThresholdTemperature > 19.5 alors X4FP sur confort
- Si ActivateState = True HeatingThresholdTemperature <= 19.5 et > 18.5 alors X4FP sur confort-1
- Si ActivateState = True HeatingThresholdTemperature <= 18.5 et > 17.5 alors X4FP sur confort-2
- Si ActivateState = True HeatingThresholdTemperature <= 17.5 et >= 14 alors X4FP sur Eco
-Si ActivateState = True HeatingThresholdTemperature < 14 alors X4FP sur StopFrost
A ce stade, mon questionnement n’est pas de transférer l’info entre les 2 mondes, façon en MQTT ou bien avec des appels d’URL mais sur la bonne manière d’implémenter ces algos.
En prenant pour hypothèse pour chaque radiateur :
- les IOs des X4FP
- 3 variables miroir du monde HomeKit :
- ActiveState : VirtualIO
- State : String32
- HeatingThresholdTemperature : ANA16
Sachant par ailleurs que je vais répéter cela pour 6 radiateurs différents, quelle est la manière élégante et économe d’implémenter cela ? Liens, scénarios, fonctions ?
Pour ceux qui ont déjà fait des choses similaires dans l’IPX, quelle approche me conseillez-vous ?