[TUTO] IPX800 V5 / HomeBridge

Bonjour à Tous,

Petit partage rapide pour ceux qui seraient désireux d’utiliser leur App Maison sur le matériel Apple.

Je ne vais pas vous décrire comment installer HomeBridge, vous pouvez trouver cela directement sur votre moteur de recherche favoris.

Pour ma pars, j’utilise un PI3B qui fait tourner HomeBridge (Mais aussi Quelques scripts/hooks pour envoyer des SMS. J’ai fini par cesser d’utiliser HA-Bridge, celui-ci n’émulant que des lumières, alors que le plugin Homebridge Alexa, prends en compte les thermomètres, prises, lumières, volets roulants,…).

La procédure ci-après est destinée à l’IPX800 V5, mais peut-être adaptée à la l’IPX800 V4 (Y compris pour le retour d’état, la différence étant dans la composition de l’url et l’absence de « body » dans les requêtes).

Pour l’instant, fonctionnent (avec retour d’état) les appareils suivants :

  • IPX800 Relais (ON / OFF);
  • IPX800 Analogiques (Température / Humidité) ;
  • X8R Relais (ON / OFF);
  • XDIMMER Relais (ON / OFF / %);
  • XTHL (Température / Humidité / Lux non testé);
  • ENTRÉES DIGITAL (X24D / X8D / IPX800 / X8R) ;
  • X4VR.

Une fois HomeBridge installé vous aurez besoin pour les relais / entrées digitales / analogiques des modules suivants (L’intérêt de l’utilisation de différents plugin réside dans la possibilité d’attribuer des icônes différentes en fonction de la fonction attendue) :

Je vous joint ci-après un exemple de configuration pour chaque module et type que vous devrez adapter :

  • Homebridge Http Lightbulb (RELAIS) :
{
    "accessory": "HTTP-LIGHTBULB",
    "name": "Votre Relais",
    "debug": true,
    "onUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65704?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":true }"
    },
    "offUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65704?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":false }"
    },
    "statusUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65704?ApiKey=xxxxx&option=filter_state",
        "method": "GET"
    },
    "statusPattern": "{\"_id\":65704,\"on\":true}"
}
  • Homebridge Http Lightbulb (XDIMMER) :
{
    "accessory": "HTTP-LIGHTBULB",
    "name": "Votre X-Dimmer",
    "onUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65853?ApiKey=xxx",
        "method": "PUT",
        "body": "{ \"on\":true }"
    },
    "offUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65853?ApiKey=xxx",
        "method": "PUT",
        "body": "{ \"on\":false }"
    },
    "brightness": {
        "statusUrl": "http://xxx.xxx.xxx.xxx/api/core/ana/196618?ApiKey=xxx&option=filter_state",
        "statusPattern": "\"value\"s*:s*([0-9]+)",
        "setUrl": {
            "url": "http://xxx.xxx.xxx.xxx/api/core/ana/196617?ApiKey=xxx",
            "method": "PUT",
            "body": "{ \"virtual\":true, \"value\": %s }"
        }
    },
    "statusUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65853?ApiKey=xxx&option=filter_state",
        "method": "GET"
    },
    "statusPattern": "{\"_id\":65853,\"on\":true}"
}
  • Pour Homebridge Http Switch (RELAIS) :
{
    "accessory": "HTTP-SWITCH",
    "name": "Votre Relais",
    "onUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":true }"
    },
    "offUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":false }"
    },
    "statusUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx&option=filter_state",
        "method": "GET"
    },
    "statusPattern": "{\"_id\":65685,\"on\":true}"
}
  • Pour Homebridge Http Outlet (RELAIS) :
{
    "accessory": "HTTP-OUTLET",
    "name": "Votre Prise",
    "onUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":true }"
    },
    "offUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx",
        "method": "PUT",
        "body": "{ \"on\":false }"
    },
    "statusUrl": {
        "url": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx&option=filter_state",
        "method": "GET"
    },
    "statusPattern": "{\"_id\":65685,\"on\":true}"
}
  • Pour Homebridge Http Temperature (Analogique / XTHL) :
{
    "accessory": "HttpTemperature",
    "name": "Votre Analogique",
    "url": "http://xxx.xxx.xxx.xxx/api/core/ana/262193?ApiKey=xxxxx",
    "http_method": "GET",
    "field_name": "value"
}
  • Pour Homebridge Http Humidity (Analogique / XTHL) :
{
    "accessory": "HttpHumidity",
    "name": "Votre Analogique",
    "url": "http://xxx.xxx.xxx.xxx/api/core/ana/262208?ApiKey=xxxxx",
    "http_method": "GET",
    "field_name": "value"
}
  • Pour Homebridge Http ReGex (Entrées digitales) :
{
    "accessory": "Regex",
    "name": "Votre ED",
    "endpoint": "http://xxx.xxx.xxx.xxx/api/core/io/65685?ApiKey=xxxxx&option=filter_state",
    "pattern": "{\"_id\":65685,\"on\":true}",
    "interval": 300000
}
  • Pour Homebridge Http Curtains (X4VR) :
        {
            "name": "Fenêtre",
            "notificationID": "X4VR1-1",
            "getCurrentPosUrl": {
                "url": "http://xxxx/api/core/ana/196623?ApiKey=xxxx&option=filter_state",
                "method": "GET"
            },
            "getCurrentPosRegEx": "\"value\"s*:s*([0-9]+)",
            "getPositionStateUrl": {},
            "setTargetPosUrl": {
                "url": "http://xxxx/api/core/ana/196619?ApiKey=xxxx&option=filter_state",
                "method": "PUT",
                "body": "{ \"virtual\":true, \"value\": %d }"
            },
            "getTargetPosUrl": {
                "url": "http://xxxx/api/core/ana/196623?ApiKey=xxxx&option=filter_state",
                "method": "GET"
            },
            "getTargetPosRegEx": "\"value\"s*:s*([0-9]+)",
            "identifyUrl": {
                "method": "GET"
            },
            "invertPosition": true,
            "accessory": "HttpCurtain"
        }
  • (En projet) Thermostat : aucun plug-in compatible, à la recherche de quelqu’un pour faire une adaptation (non prise en compte des requêtes « body » par les plug-in existants) ;

  • (En projet) Alarme : aucun plug-in compatible, à la recherche de quelqu’un pour faire une adaptation (non prise en compte des requêtes « body » par les plug-in existants) ;

NOTE :

Compatibilité Alexa avec le plugin : Homebridge Alexa par @NorthernMan54

Profitez bien !

8 « J'aime »

Merci pour ce partage, c’est une alternative à, l’usage de MQTT.

MQTT est un protocole de communication entre objets connectés. HomeBridge est une passerelle vers la solution de pilotage domotique d’Apple.

Of course, mais IPX - MQTT - Homebridge avec un plug-in as-hoc est tres efficace !

Ceci est mon avis : Utiliser les ressources de l’IPX pour passer du MQTT vers une passerelle HomeBridge, c’est un peu comme avoir un vélo à 3 pédales mais seulement 2 jambes :wink:
L’API ne consomme pas de ressource et c’est donc la voie la plus simple et efficace vers une passerelle HomeBridge (Apple) ou HA-Bridge (Alexa).

Merci @Gevaudan pour ce tuto, fort intéressant, je suis assez fan du MQTT et je ne m’étais pas encore penché sur les requêtes HTTP mais effectivement, quand la donnée n’a pas à être réutilisée dans mosquitto, c’est très simple et évite de reposer sur un broker. Je vais modifier mon HA en ce sens pour les lumières (j’utilise les datas des X-THL dans NodeRed pour archivage dans InfluxDB et comparaison à des données d’autres capteurs).

J’ai tenté de configurer un X8R sans succès.
J’ai des URL du type « http://192.168.1.xxx:xxxx/api/ebx/x8r/4259840?ApiKey=APIKEY », le numéro ID indiqué étant celui du X8R dans l’API Deck, est-ce correct? Doit-on plutôt mettre les ID des entrées et sorties du X8R. Les commandes ne correspondent pas à celle de l’API Deck, où l’état de tous les relais est récupéré et pas d’un seul :confused: Je suis un peu perdu :slight_smile:

L’URL devrait plutôt être de type http://xxx/api/core/io/xxxx?…
Comme dans mon exemple pour relais.

Ok, merci @Gevaudan , mais du coup, l’ID est celui du X8R ou celui des IO du relais concerné ? Ce qui me surprend, c’est que ça ne correspond pas du tout aux url données dans l’outil de test des API de GCE.

Je ne suis pas suffisamment connaisseur pour expliquer les raisons. Je pense que @fgtoul ou @grocrabe auraient une réponse concise à donner.


je pense que vous devez prendre l’id comme indiqué ici à droite (« _id »: 65582)

OK, donc ce serait bien les IO liées au X8R qui seraient à prendre en compte, d’où l’URL en api/core/io
Merci à vous deux, je continuerai plus tard.

tout a fait et cela marches très bien avec le mqtt « suscribe » (pas de retour d’état pour le moment donc pas de publish peut-être dans le futur !)

J’aimerai bien implémenter la fonction thermostat et volets roulants, quelqu’un maitrise le JSON pour modifier et partager les modules ?

Hello,

Mise à jour pour les entrées digitale X24D/X8R.

Je mettrai bientôt à jour pour les volets roulants !

2 « J'aime »

Merci @Gevaudan , testé et adopté pour les relais lumière et dimmer, hâte de tester avec un X-4VR.

1 « J'aime »

Merci :slight_smile:
Je cherche toujours de l’aide pour inclure la gestion des thermostats :slight_smile:
S’il y a des gens calé en JSON…

BONJOUR !
Les X4VR peuvent maintenant être ajoutés à HomeBridge !
Il ne manque plus que les « thermostats » et éventuellement un plugin « sécurité (alarme) » !!

2 « J'aime »

Super, merci pour le boulot réalisé @Gevaudan , que de temps gagné.
Je dois mettre en place mes stores à lames verticales dans quelques semaines, je pourrais tester ces appels X-4VR.

1 « J'aime »

Bonjour,

Je n’arrive plus à voir la fin du code pour le X-Dimmer (pas de scrolling).

Merci.

1 « J'aime »