Prise en charge Somfy Protect / SomfyProtect2MQTT

Mon problème

Bonjour à tous.
Je commence dans Home assistant, je n’ai pas de compétence de codage
et donc je pédale, je pédale…

J’aimerai intégrer mes appareils Somfy dans Home Assistant.
J’ai réussi à connecter ma box Tahoma.
Maintenant J’aimerai Intégrer ma Somfy one et surtout les capteurs d’ouvertures qui y sont attaché pour utiliser le détecteur d’ouverture de porte comme déclencheur d’une automatisation et allumer des lumières.

Malheureusement, impossible de retrouver ces capteurs…

Après quelques recherches, je suis tombé sur ce module : SomfyProtect2MQTT, qui semble faire le boulot.
J’ai du installer le module complémentaire Mosquitto broker et son intégration.

Mais ensuite je suis perdu dans les configurations et je n’arrive pas retrouver les capteurs…

Je dois probablement me tromper dans le code/ les ip erreur de noob ^^

Voici le code de SomfyProtect2MQTT

somfy_protect:
  username: xxxxx@gmail.com
  password: xxxxxxxxx
  sites:
    - Maison
homeassistant_config:
  code: 1234
  code_arm_required: false
  code_disarm_required: true
mqtt:
  host: 10.0.0.203
  port: 1883
  ssl: false
  username: Cedric
  password: XXXX
  client-id: somfy-protect
  topic_prefix: somfyProtect2mqtt
  ha_discover_prefix: homeassistant
delay_site: '10'
delay_device: '60'
manual_snapshot: false
debug: false```

Le message du journal : 
s6-overlay-suexec: fatal: can only run as pid 1

Le code de Mosquitto broker

logins:

  • username: Cedric
    password: XXXX
    require_certificate: false
    certfile: fullchain.pem
    keyfile: privkey.pem
    customize:
    active: false
    folder: mosquitto


Merci pour votre aide


## Ma configuration

j'ai la version 8.0 d'Home Assistant, je pense que la configuration a changer de place
est ce ceci ?
___
[center] Home Assistant Core 2022.5.4

### Home Assistant Supervisor 2022.05.2

### Home Assistant OS 8.0

#### Kernel version 5.15.32-v8

#### Agent version 1.2.1[/center]

Mon HA tourne sur un Raspberry Pi 4 qui est en rj44 avec le satellite d'un routeur type Mesh "Orbi RBK50" de chez netgear
___

Hello, j’ai mis l’addon à jour il y a quelques minutes en version 0.1.9.2, tu peux essayer a nouveau, ca devrait corriger cette erreur.

Par contre la Somfy One doit pas être bien géré. Essaye de démarrer comme ca. si tu as pas tout, on pourra essayer de la gérer si tu sais lancer un script python sur un raspberry ou autre.

Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.

Bonjour.,
Merci pour le retour. J’ai vu les maj passées ce soir :slight_smile:

Actuellement l’addon se lance.
Jai une carte dans le tableau de bord qui me previent sil y a une mise a jour.
Mais pas moyen de trouver la carte comme dans ton exemple /documentation

J’avoue etre perdu et ne pas savoir que faire.
L’user et le mdp de somfy protect c’est le bon
Jai mis l’ip de la somfy one que je trouve dans mon routeur.

La partie Mosquitto que je foire ? L’ip de mosquitto j’ai mis celle du raspberry/home assistant os

Par contre je n’ai aucune compétence en python
Mes seuls liens avec la somfy one sont l’app de somfy tahoma et de somfy protect

Côté matériel
J’ai un raspberry avec Home assistants os dessus. Mon routeur orbi. Un pc et un smartphone.
Et un vrai noob en informatique des qu’on rentre dans du code.

Encore merci

Rebonjour,
alors j’ai relu les codes de configurations de MQTT et de SomfyProtect2MQTT…
Et ca semble fonctionner.
J’avais mis Cédric et Cedric comme user en oubliant l’accent …

Du coup, j’ai accès à tout il me semble
dont le détecteur d’ouverture de porte

Porte d’entrée device_lost
binary_sensor.porte_d_entree_device_lost
MQTT

Un grand merci pour ton AddOn et ton travail

hello , avant tout fonctionnait bien mais je n arrive plus a avoir le snapshot de la camera. vous s aussi ? un changement ?
merci a tous

Bonjour, pour ma part, j’ai installé l’add-on SomfyProtect2MQTT et Mosquito MQTT. les messages ont l’air de bien remonter dans MQTT (j’ai MQTT Analyzer sur ma tablette)

J’ai 2 children qui remontent :

  • homeassistant
  • somfyProtect2mqtt

dans binary sensor, je vois tous mes modules (badges, intellitag, detecteur, etc)

par contre rien ne remonte dans home assistant.

Auriez-vous une piste ? j’aimerai pouvoir récupérer l’état de l’alarme et de lancer un scénario en fonction de l’état de l’alarme

merci pour votre aide

Hello,

Est ce que le discovery de MQTT est bien activé ?

tu vois ca ou ? je suppose que oui car MQTT me remonte toutes les infos de SomfyProtect2MQTT

Edit : j’ai trouvé je devais aller dans la page intégration sur l’onglet MQTT et configurer et la tout est remonté !

Merci pour l’info !

Bonjour
Je viens d’installer l’addon mais visiblement il n’arrive pas à récupérer de token
J’ai mis le même login/mdp que pour l’appli mobile
Voici les logs :


[12:48:29] INFO: Will be started in debug mode
[12:48:29] INFO: Image build
[12:48:29] INFO: starting original stuff...
2022-12-02 12:48:29,559 [INFO] [__main__:55] Starting SomfyProtect2Mqtt 0.2.4
2022-12-02 12:48:29,560 [INFO] [root:43] Reading config file /usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/config/config.yaml
2022-12-02 12:48:29,568 [INFO] [root:114] Init SSO
2022-12-02 12:48:29,569 [INFO] [somfy_protect.sso:79] Requesting Token
2022-12-02 12:48:29,570 [DEBUG] [requests_oauthlib.oauth2_session:518] Requesting url https://sso.myfox.io/oauth/oauth/v2/token using method POST.
2022-12-02 12:48:29,570 [DEBUG] [requests_oauthlib.oauth2_session:519] Supplying headers {'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'} and data {'grant_type': 'password', 'client_id': '84eddf48-2b8e-11e5-b2a5-124cfab25595_475buqrf8v8kgwoo4gow08gkkc0ck80488wo44s8o48sg84k40', 'client_secret': '4dsqfntieu0wckwwo40kw848gw4o0c8k4owc80k4go0cs0k844', 'username': 'xx@xx.fr', 'password': 'XXXXXX'}
2022-12-02 12:48:29,570 [DEBUG] [requests_oauthlib.oauth2_session:520] Passing through key word arguments {'timeout': None, 'auth': None, 'verify': True, 'proxies': None, 'cert': None}.
2022-12-02 12:48:29,574 [DEBUG] [urllib3.connectionpool:971] Starting new HTTPS connection (1): sso.myfox.io:443
2022-12-02 12:48:29,731 [DEBUG] [urllib3.connectionpool:452] https://sso.myfox.io:443 "POST /oauth/oauth/v2/token HTTP/1.1" 400 None
2022-12-02 12:48:29,732 [DEBUG] [requests_oauthlib.oauth2_session:353] Request to fetch token completed with status 400.
2022-12-02 12:48:29,732 [DEBUG] [requests_oauthlib.oauth2_session:354] Request url was https://sso.myfox.io/oauth/oauth/v2/token
2022-12-02 12:48:29,732 [DEBUG] [requests_oauthlib.oauth2_session:355] Request headers were {'User-Agent': 'Somfy Protect', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'Content-Length': '244'}
2022-12-02 12:48:29,733 [DEBUG] [requests_oauthlib.oauth2_session:356] Request body was grant_type=password&client_id=84eddf48-2b8e-11e5-b2a5-124cfab25595_475buqrf8v8kgwoo4gow08gkkc0ck80488wo44s8o48sg84k40&client_secret=4dsqfntieu0wckwwo40kw848gw4o0c8k4owc80k4go0cs0k844&username=xx%xx.fr&password=XXXXXX
2022-12-02 12:48:29,733 [DEBUG] [requests_oauthlib.oauth2_session:357] Response headers were {'Date': 'Fri, 02 Dec 2022 11:48:29 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Server': 'openresty', 'Cache-Control': 'max-age=0, must-revalidate, private', 'Expires': 'Fri, 02 Dec 2022 11:48:29 GMT'} and content {"message":"error.too_many_failed_attempts","data":[],"uid":"6389e60dae4ea"}.
2022-12-02 12:48:29,733 [DEBUG] [requests_oauthlib.oauth2_session:358] Invoking 0 token response hooks.
Traceback (most recent call last):
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/main.py", line 59, in <module>
    SSO = init_sso(config=CONFIG)
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/somfy_protect/sso/__init__.py", line 122, in init_sso
    token = sso.request_token()
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/somfy_protect/sso/__init__.py", line 80, in request_token
    return self._oauth.fetch_token(
  File "/usr/lib/python3.9/site-packages/requests_oauthlib/oauth2_session.py", line 366, in fetch_token
    self._client.parse_request_body_response(r.text, scope=self.scope)
  File "/usr/lib/python3.9/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 448, in parse_request_body_response
    self.token = parse_token_response(body, scope=scope)
  File "/usr/lib/python3.9/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 441, in parse_token_response
    validate_token_parameters(params)
  File "/usr/lib/python3.9/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 451, in validate_token_parameters
    raise MissingTokenError(description="Missing access token parameter.")
oauthlib.oauth2.rfc6749.errors.MissingTokenError: (missing_token) Missing access token parameter.
[11:48:29] WARNING: Halt add-on
[11:48:29] INFO: Service restart after closing
s6-rc: info: service legacy-services: stopping
[11:48:29] INFO: Service restart after closing
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Merci

Edit, tout est de ma faute, je me suis trompé dans le mot de passe. Fausse alerte !

1 « J'aime »

Bonjour, Je suis Noob sur HA que je découvre en l’ayant installé semaine dernière et préparer ma migration depuis jeedom que j’ai depuis plusieurs années :sweat_smile:
J’ai donc bien créé un profil utilisateur pour l’utilisation du MQTT, installé le broker MQTT, SomfyProtect2MQTT (je vois bien les infos de mon installation remonter dans les logs), et l’intégration MQTT.
Mais ensuite je bloque, que faut il faire ?
Le besoin principal étant d’avoir un état de l’alarme (pour lancer des scénarios) et de pouvoir armer/désarmer.
Merci et désolé pour ma question triviale …

personne pour m’orienter ? :sweat_smile:

Bonjour,

Je viens également d’installé le module et je sèche. Avez-vous avancer sur de votre côté ?

Est ce que vous avez rexonfiguré l’integration mQtt avec discovery ?

Oui j’ai vérifié, la découverte du MQTT est bien activé.

Hello, oui j’ai résolu le problème, c’était effectivement un problème de configuration.
@Mr Toto : bien checker que le nom de votre installation (regarder dans l’appli dans les options à "mon domicile) est bien la même chose que dans votre fichier de config (Home par défaut de mémoire)
Perso je voyais bien le plugin se connecter à mon alarme dans les logs mais rien arriver en MQTT.

@Minims : merci pour le dev, marche nikel pour moi !

Bonjour,

Je viens d’installer l’add-on, mais je n’arrive pas à le lancer.
J’ai un problème de connexion, dans les logs je vois que ma connexion est refusé.
Mes identifiants sont bien les bons (j’ai vérifié 3 fois xD).

ma config:

somfy_protect:
  username: xxx@gmail.com
  password: xxx
  sites:
    - Maison
homeassistant_config:
  code: "xxxx"
  code_arm_required: false
  code_disarm_required: true
mqtt:
  host: mqtt://core-mosquitto
  port: 1883
  ssl: false
  username: xxx
  password: xxx
  client-id: somfy-protect
  topic_prefix: somfyProtect2mqtt
  ha_discover_prefix: homeassistant
delay_site: "10"
delay_device: "60"
manual_snapshot: false
debug: false

mes logs:

[17:11:32] INFO: Image build
[17:11:32] INFO: starting original stuff...
2023-09-14 17:11:32,613 [INFO] [__main__:55] Starting SomfyProtect2Mqtt 2023.9.4
2023-09-14 17:11:32,613 [INFO] [root:41] Reading config file /usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/config/config.yaml
2023-09-14 17:11:32,615 [INFO] [root:111] Init SSO
2023-09-14 17:11:32,615 [INFO] [somfy_protect.sso:76] Requesting Token
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/urllib3/connection.py", line 203, in _new_conn
    sock = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/urllib3/util/connection.py", line 60, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/socket.py", line 962, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/urllib3/connectionpool.py", line 790, in urlopen
    response = self._make_request(
               ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/urllib3/connectionpool.py", line 491, in _make_request
    raise new_e
  File "/usr/lib/python3.11/site-packages/urllib3/connectionpool.py", line 467, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3.11/site-packages/urllib3/connectionpool.py", line 1092, in _validate_conn
    conn.connect()
  File "/usr/lib/python3.11/site-packages/urllib3/connection.py", line 611, in connect
    self.sock = sock = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/urllib3/connection.py", line 218, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f8bfe1a2f50>: Failed to establish a new connection: [Errno 13] Permission denied

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/urllib3/connectionpool.py", line 844, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/urllib3/util/retry.py", line 515, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='sso.myfox.io', port=443): Max retries exceeded with url: /oauth/oauth/v2/token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f8bfe1a2f50>: Failed to establish a new connection: [Errno 13] Permission denied'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/main.py", line 59, in <module>
    SSO = init_sso(config=CONFIG)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/somfy_protect/sso/__init__.py", line 119, in init_sso
    token = sso.request_token()
            ^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/SomfyProtect2MQTT/somfyProtect2Mqtt/somfy_protect/sso/__init__.py", line 77, in request_token
    return self._oauth.fetch_token(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/requests_oauthlib/oauth2_session.py", line 341, in fetch_token
    r = self.request(
        ^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/requests_oauthlib/oauth2_session.py", line 521, in request
    return super(OAuth2Session, self).request(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/requests/adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='sso.myfox.io', port=443): Max retries exceeded with url: /oauth/oauth/v2/token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f8bfe1a2f50>: Failed to establish a new connection: [Errno 13] Permission denied'))
[15:11:32] WARNING: Halt add-on
s6-rc: info: service legacy-services: stopping
[15:11:32] INFO: Service restart after closing
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Essaye de mettre l’adresse IP ici directement.

j’avais déjà essayé, je l’ai refait, même message d’erreur.
J’ai plus l’impression que c’est un problème de connection au niveau de somfy_protect

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='sso.myfox.io', port=443): Max retries exceeded with url: /oauth/oauth/v2/token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fd770643190>: Failed to establish a new connection: [Errno 13] Permission denied'))

On dirait que tu n’as pas le droit de faire une resolution dns depuis le container. Tu as pas de firewall, un adguard ou je ne sais qui bloquerai ca ?