Intégration Custom: Centrale Somfy Protexial

Bonjour à tous,

J’ai développé une intégration Somfy Protexial pour pouvoir piloter mon bon vieux système d’alarme via Home Assistant.
Je l’ai testé pour l’instant uniquement sur une centrale Protexial RTS IO mais je suspecte que cela fonctionne également pour d’autres centrales qui ne supportent pas Tahoma comme Protexiom.
L’implémentation actuelle permet de piloter l’armement de l’alarme, ainsi que les automatismes tels que les volets roulants et la lumière.
Vous pouvez y jeter un oeil sur le repo GitHub: GitHub - the8tre/somfy-protexial: Integration Home Assistant pour centrale SOMFY Protexial
Ou encore plus rapidement par ici: Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

Tout feedback est le bienvenu !
Merci

5 « J'aime »

Bonjour the8tre,
Merci pour cette intégration. J’ai une vieille alarme Protexiom de 2011, avec commande RTS, et pour l’instant je n’ai pas trouvé mieux que de garder mon Jeedom en route pour pouvoir utiliser ce plugin (pour tout le reste j’ai réussi à basculer sur HA).
Malheureusement mon premier essai avec ton intégration n’a pas été très fructueux car il refuse de prendre l’adresse IP de ma centrale (en http:// 192.168. 2 .x) « Impossible de joindre le serveur. ». J’avais changé le port, je l’ai remis en port 80, j’ai aussi utilisé une adresse via un reverse proxy, mais pas plus de succès.
Et quand je fais : http:// 192.168.2.xxx/cfg/vers j’ai une erreur 404…

J’imagine qu’il y a donc un problème de compatibilité. Si tu as une idée, je suis preneur. Merci !

sebrer

Salut Sebrer,
As tu bien accès à l’interface web SOMFY lorsque tu te rends sur http://192.168.2.x dans ton browser ?
Si c’est le cas on doit pouvoir voir ensemble les différences par rapport à mon système Protexial.
Tu peux également mettre l’intégration en mode debug et m’envoyer les logs en privé.

Désolé pour la réponse à retardement et merci pour ton retour

Bonjour,
Je rencontre le même problème de non reconnaissance de serveur avec ma protexiom.
Les répertoires sur la protexiom sont différents: PAS de /fr/
ça donne dans protexial.py

Page(str, Enum):
    LOGIN = "/login.htm"
    LOGOUT = "/logout.htm"
    PILOTAGE = "/u_pilotage.htm"
    STATUS = "/status.xml"
    ERROR = "/error.htm"
    ELEMENTS = "/u_plistelmt.htm"
    PRINT = "/u_print.htm"
# répertoire inexistant dans protexiom
    VERSION = "/cfg/vers"
#
    DEFAULT = "/default.htm"

je ne retrouve pas d’équivalent à /cfg/vers dans protexiom :frowning_face:
En absence de VERSION la connection ne peut pas se faire.
Aurais-tu des pistes ?
Alain

Salut Alain,
Effectivement la structure des pages Protexiom est sensiblement différente de Protexial.
Je dois pouvoir adapter ça mais j’aurai certainement besoin de plus de détail vu que je n’ai pas de système Protexiom sous la main.
Pour la conception de l’intégration j’ai sniffé l’activité de l’appli mobile avec https://www.wireshark.org/
C’est comme ça que j’ai découvert l’existence de la page /cfg/vers.
Connaitre la version n’est pas indispensable car je peux tester l’existence des pages que tu mentionnes pour déterminer le type de centrale, mais ça serait tout de même un plus.

Hello
Je reviens sur le sujet après quelques temps !
Je n’ai pas réussi à « snifer » le site de l’alarme avec whiteshark.
Comment as-tu procédé ?
On pourrait contourner le problème de version peut être en modifiant protexial.py ?

Bonjour à tous,
J’ai retenté avec la nouvelle version, pas plus de succès, comme Alain.
J’ai ce message d’erreur quand je rentre la bonne adresse :
« Cette erreur provient d’une intégration personnalisée
Logger: custom_components.somfy_protexial.protexial
Source: custom_components/somfy_protexial/protexial.py:162
Integration: somfy_protexial (documentation, issues)
First occurred: 17:35:06 (10 occurrences)
Last logged: 17:47:32
Something really wrong happened! - Http error (404) »

Pas de page cfg/vers non plus, je pense que ma centrale est plus ancienne car sur la page de login je vois « Somfy 2008 ». Et il n’y pas d’appli officielle compatible, j’utilise l’appli « Xiomfy » sur Android.
Il y avait une ancienne intégration (archivée maintenant) qui marchait un peu près, mais cela n’a pas l’air d’utiliser la même approche sur github : Pschittt/HASS-Somfy-Protexiom
Peut être des références à reprendre tout de même ?

Merci en tout cas pour ton partage !
Sébastien

Salut @the8tre

Merci pour cette intégration. L’installation c’est faite sans pb en suivant les infos sur ton GitHub

Par contre je suis allé un peu vite dans la configuration et je n’ai pas activé le code d’armement et les options

  • Armement pour la nuit (optionnel): Zones A+B
  • Armement en présence (optionnel): Zones A

Est-il possible de les rajouter sans tout réinstaller ?

Je n’ai vérifié que les statuts remontés qui sont ok. Pas encore l’armement

Mon alarme est une Protexiom 5000 v10_3

@+

JC

Salut

Je me réponds à moi même :stuck_out_tongue_winking_eye:

Je n’ai pas trouver comment modifier la configuration sans supprimer et reconfigurer l’entrée

En revanche l’intégration fonctionne parfaitement avec mon alarme Protexiom 5000 v10_3

J’ai testé la mise sous alarme et l’arrêt et ça fonctionne. Les retours d’état aussi. L’alarme enclenchée à partir du clavier l’état remonte dans HA

Je me suis même amusé à rajouter le statut du signal gsm en modifiant le code directement dans HA

image

Je vais essayer de récupérer la liste et l’état des élements de l’alarme. Et rajouter la possibilité de faire un reset des défauts (Alarme, piles, …). Comme je l’avais fait dans Domoticz

Les seuls inconvénients que j’ai trouvé (pour l’instant)

  • Il faut désactiver l’intégration si on doit redémarrer HA. Si non l’intégration ne se reconnecte pas à l’alarme
  • Comme Somfy n’autorise qu’une seule connexion, il n’est plus possible de se connecter à partir de la page web ou de l’appli sur le téléphone

A suivre…

JC

Salut @jcjames_13009 ,

Désolé pour le manque de réactivité et content que tu ais pu trouver la solution par toi même.

Je confrme qu’il n’est pas possible de re-configurer l’intégration après création, il faut effectivement passer par la suppression.Si j’ai beaucoup de demandes je ferai peut-être l’efffort d’implémenter la re-configuration via l’interface, mais vu la simplicité du setup supprimer/re-créer me semble acceptable.

Si tu as fais des modifs qui te semblent valable pour les autres n’hésite pas à faire une Pull Request sur GitHub ou à me communiquer tes changements pour que je puisse les intégrer.
J’ai ajouté le support de Protexiom 5000 v10_3 dans le README et j’ai documenté le manque de support pour la re-configuration.
L’impossibilité d’utiliser la page web Somfy sans désactiver l’intégration était déjà mentionnée ici:GitHub - the8tre/somfy-protexial: Integration Home Assistant pour centrale SOMFY Protexial

Merci beaucoup pour ton retour !

1 « J'aime »

Salut @sebrer et @AlainHac

Je pense pouvoir ajouter le support pour d’autres versions de centrales (plus anciennes ou pas) et j’ai besoin de votre aide pour cela.

Un bon point de départ et d’extraire ce qui se passe lorsque vous utilisez l’appli web.
Dans votre browser passez via les interactions basiques (pilotage, liste des éléments, carte d’authentification) et extraire un fichier .har pour chacune des pages (Chrome dev tools F12).

Ci-dessous une petite vidéo de ce à quoi ça ressemble chez moi (J’ai utilisé ScreenToGif à 5fps):
somfy

L’idéal serait également d’extraire ce qui se passe lorsque vous cliquez sur des actions (activation de l’alarme etc) ainsi qu’une vidéo de ce que vous faites (pas besoin de montrer les Chrome dev tools).

Si vous avez une application dédiée (Somfy, Xiomfy) sniffer le réseau permet de découvrir des pages non exposées par l’interface web, comme par exemple les pages /cfg/vers ou encore /status.xml. Mais ça peut venir dans un second temps.

Si vous êtes partant pour donner un coup de main, la balle est dans votre camp :wink:
Merci à vous !

Merci pour ton retour
Ok je regarde pour les modifs. Je n’ai jamais utilisé GitHub… Au pire je te fais suivre les modifs
@+
JC

1 « J'aime »

Pendant que JC fait les .har, je vais essayer de sniffer non pas de la colle mais à partir de Xiomfy.
Par contre il me faudrait les outils sur Android.
Tu me conseilles quoi ?

@AlainHac JC n’a pas besoin de faire grand chose vu que ça fonctionne pour lui.

Ca me semble plus simple d’extraire les .har via ton navigateur pas besoin d’outil particulier.

Si tu y tiens vraiment tu peux utiliser https://proxyman.io/ sur Mac et Windows.
Tu lances l’appli sur ton ordi et tu configures les paramètres proxy de ton mobile pour passer via Proxyman
image

Tu peux ensuite exporter l’intégralité des échanges dans un fichier .har

Comme je le disais je ne connais pas (encore ?) GitHub ni ses fonctionnalités. Voici donc les modifs faites que tu pourras intégrer

Attention ça fonctionne pour mon modèle d’alarme Protexiom 5000 v10_3. Je te laisse le soin de voir la compatibilité avec la Protexial

Ajout des statuts :

  • Signal gsm (Connecté au réseau ou pas)
  • Réception gms (Niveau du signal de 1 à 5 de ce qu j’ai vu)
  • Opérateur gsm
  • Caméra (active ou pas)

Qund je tape le lien http://192.168.1.xxx/status.xml
J’ai ça : off off off ok ok ok ok ok GSM connecté au réseau 4 "Orange disabled

Dans le fichier protexial.py

class Status:
    zoneA = "off"
    zoneB = "off"
    zoneC = "off"
    battery = "ok"
    radio = "ok"
    door = "ok"
    alarm = "ok"
    box = "ok"
    # Signal gsm
    gsm = "GSM connecté au réseau"
    # Réception gsm
    recgsm = "4"
    # Opérateur gsm
    opegsm = "Orange"
    # Caméra
    camera = "Disabled"

    def __getitem__(self, key):
        return getattr(self, key)

    # Ajout signal gsm / réception gsm / opérateur gsm / caméra à la fin
    def __str__(self):
        return f"zoneA:{self.zoneA}, zoneB:{self.zoneB}, zoneC:{self.zoneC}, battery:{self.battery}, radio:{self.radio}, door:{self.door}, alarm:{self.alarm}, box:{self.box}, gsm:{self.gsm}, recgsm:{self.recgsm}, opegsm:{self.opegsm}, camera:{self.camera}"


    async def get_status(self):
        status_response = await self.__do_call("get", Page.STATUS)
        content = await status_response.text("latin1")
        response = ET.fromstring(content)
        status = Status()
        for child in response:
            match child.tag:
                case "defaut0":
                    status.battery = child.text
                case "defaut1":
                    status.radio = child.text
                case "defaut2":
                    status.door = child.text
                case "defaut3":
                    status.alarm = child.text
                case "defaut4":
                    status.box = child.text
                case "zone0":
                    status.zoneA = child.text
                case "zone1":
                    status.zoneB = child.text
                case "zone2":
                    status.zoneC = child.text
                # Signal gsm
                case "gsm":
                    status.gsm = child.text
                # Réception gsm
                case "recgsm":
                    status.recgsm = child.text
                # Opérateur gsm
                case "opegsm":
                    status.opegsm = child.text
                # Caméra
                case "camera":
                    status.camera = child.text
        return status

J’ai ensuite rajouté un binary sensor à la fin du fichier const.py pour le signal gsm

    {
        # Signal gsm
        "id": "gsm",
        "name": "Communication gsm",
        "device_class": BinarySensorDeviceClass.CONNECTIVITY,
        "entity_category": EntityCategory.DIAGNOSTIC,
        "icon_on": "mdi:cellphone",
        "icon_off": "mdi:cellphone-off",
        "on_if": "GSM connecté au réseau",
        "state_on": "ok",
        "state_off": "ko",
    },

Une fois HA redémarré

  • Le sensor communication gsm apparait avec l’état renvoyé par l’alarme
    image

  • Et si on active les logs on voit tous les statuts apparaître

2024-02-27 21:19:21.069 DEBUG (MainThread) [custom_components.somfy_protexial] zoneA:off, zoneB:off, zoneC:off, battery:ok, radio:ok, door:ok, alarm:ok, box:ok, gsm:GSM connecté au réseau, recgsm:4, opegsm:"Orange, camera:disabled
2024-02-27 21:19:21.069 DEBUG (MainThread) [custom_components.somfy_protexial] Finished fetching Somfy Protexial status update data in 0.922 seconds (success: True)

Voilà ma modeste contribution

Il faudrait que j’aille plus loin en créant les sensors pour la réception gsm et l’opérateur. Mais je n’ai pas encore trouvé comment faire. Je débute dans HA

A suivre donc

JC

1 « J'aime »

Salut

Petit rajout dans const.py pour ajouter un binary sensor Caméra

    {
        # Ajout caméra
        "id": "camera",
        "name": "Caméra",
        "device_class": BinarySensorDeviceClass.CONNECTIVITY,
        "entity_category": EntityCategory.DIAGNOSTIC,
        "icon_on": "mdi:webcam",
        "icon_off": "mdi:webcam-off",
        "on_if": "enabled",
        "state_on": "Connectée",
        "state_off": "Non connectée",
    },

Capture d’écran 2024-02-28 à 21.13.16

@+
JC

1 « J'aime »

Salut @sebrer et @AlainHac
Je viens de publier une version 1.1.0-beta.2 pour initier la prise en charge de vos (vieilles :stuck_out_tongue_winking_eye:) centrales.
On peut toujours rêver que tout fonctionne dès le premier coup, n’hésitez pas à activer le mode debug en cas de problème.
Pour activer les releases Bêta jetez un coup d’oeil ici: Enable beta for a repository | HACS

Enjoy :crossed_fingers:

1 « J'aime »

Bonjour à tous !!! petit souci d’installation pour ne pas changer mes habitudes :sweat_smile:, j’ai bien téléchargé somfy_protexial dans HACS, puis dézipper le fichier somfy_protexial.zip et tout mis dans le dossier custom_components/somfy_protexial et redémarrer HA mais j’ai rien quand je veux ajouter l’intégration dans appareil et service. Merci d’avance pour votre aide

bonjour @Pipiche_p
Pourquoi ne pas donner sa chance à l’installation via HACS ?
Ca simplifie le processus et rend les mises à jour plus faciles

Merci encore une fois je ne sais pas lire j’ai fais l’installation auto et manuelle c’est pour ça que ça ne marchait pas, installation ok maintenant plus qu’à remettre en route mon alarme merci

1 « J'aime »