Intégrer serrures The Keys dans Home Assistant

Bonjour,

Cela maintenant presqu’un an que je suis passé de Jeedom à Home Assistant.
Mais il me reste une application à transférer.
Je possède deux serrures The KEYS ( une pour ma porte d’entrée et une pour mon portaill) ainsi qu’une gateway qui fait la liaison vers le cloud de The Keys
Il existe un plugin pour Jeedom développé par Lunarok.
Je n’ai pas les connaissances suffisantes pour développer un tel « module complémentaire » pour Home Assistant.
Quelqu’un est-il capable de s’y coller ?
Dans l’immédiat je vois une solution pour piloter mes serrures à partir d’HA c’est d’utiliser HA companion avec command_activity.
J’ai en effet dans mon réseau un raspberrypi équipé d’un dongle avec carte sim et du logiciel gammu. J’envoie un SMS avec un code (ici £1 qui demande l’état de la serrure de la porte d’entrée) qui est traité par un script bash sur le raspberrypi en question. La réponse est envoyée à la fois par mail et par sms à mon smartphone.
J’ai fait une automation :

alias: Etat porte d'entrée
description: ""
triggers:
  - trigger: time
    at: "19:15:00"
conditions: []
actions:
  - action: notify.mobile_app_sm_g970f
    data:
      message: command_activity
      data:
        intent_uri: smsto:0749xxxxxx
        intent_package_name: com.google.android.apps.messaging
        intent_extras: sms_body:£1
        intent_action: android.intent.action.SENDTO
mode: single

MAIS il y a un problème le SMS « £1 » apparait dans Messages de Google mais il faut que je valide pour que le SMS soit envoyé. Commment faire pour que ce soit envoyé automatiquement?
Cordialement.
Gérard

salut,
donc tu nous fait comprendre qu’avec un script bash tu peux interragir avec tes serrures ?

alors pourquoi cette couche gammu/raspberry ? pourquoi ne pas faire tout ça directement dans HA

Salut,
Sur le raspberrypi gammu (qui est un daemon) guette les arrivées de SMS et les envoient au script bash parseSMS.sh qui traite le SMS. Ici le code du cas £1 :

# Avec le caractère £ on communique avec la serrure connectée de la porte
d'entrée
if [[ $carac1 == "£" ]]
then
carac2=${sms_text:1:1}
if [[ $carac2 == "1" ]]
then
sujet="situation actuelle de la serrure de la porte d'entrée"
texte=`sudo python3 $chemin/statut.py $key_user $key_mdp`
fi

Tu vois qu’est invoqué le script python3 statut.py situé sur le même raspberrypi
sujet et texte sont traités en fin de script pour l’envoyer en mail et en SMS à mon smartphone.
Bien sûr si on pouvait faire tout ça directement sous HA je suis preneur mais je suis incapable d’écrire un tel module complémentaire d’où ma demande de se rabattre sur command_activity.
J’ai par ailleurs développé un apk « commandes dispositifs » sur mon smartphone android qui envoie les bons sms au bon endroit donc je ne suis pas démuni quand j’arrive chez moi pour ouvrir portail et porte d’entrée mais j’aimerai bien tout concentrer sur HA.
Bonne journée.
Gérard

donc ton script python il sais interagir avec ta serrure ouvrir/fermer ou juste avoir son statut ?

car si ton script permet cela tu peux l’utiliser dans HA il est possible depuis HA d’utiliser des scripts pythons/bash/…

Non seulement mon script bash demandent les états des deux serrures mais aussi les ouvrent ou les ferment. Il fait aussi plein d’autres choses avec des SMS débutant par #, $ ou &.
Il faudrait que j’élague dans le cas de HA.
J’ai vu que HA pouvait écrire des scripts python mais je ne sais pas faire notamment importer
exemple du script test.py invoqué par le SMS £2 qui ouvre la porte.

#!/usr/bin/python3

import gateway
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-d", "--debug", help="", action="store_true")
parser.add_argument("-i", "--identifier", help="locker identifier", type=str)
parser.add_argument("--host", help="host", type=str)
parser.add_argument("-c", "--code", help="code", type=str)
parser.add_argument("action", help="open, close, search, synchronize, update, synchronize_locker, update_locker")


args = parser.parse_args()

gw = gateway.Gateway(args.debug)
if args.host:
    gw.set_host(args.host)

if args.action == "open":
    gw.open(args.identifier, args.code.encode("ascii"))
elif args.action == "close":
    gw.close(args.identifier, args.code.encode("ascii"))
elif args.action == "search":
    gw.search()
elif args.action == "synchronize":
    gw.synchronize()
elif args.action == "update":
    gw.update()
elif args.action == "synchronize_locker":
    gw.synchronize_locker(args.identifier)
elif args.action == "update_locker":
    gw.update_locker(args.identifier)
elif args.action == "locker_status":
    gw.locker_status(args.identifier, args.code.encode("ascii"))
elif args.action == "status":
    gw.status()
else:
    print("Command not implemented.")


Si j’arrivais à écrire ces scripts python dans HA plus besoin des SMS et du script bash
Gérard

tu peux tout a fait réutiliser ces scripts avec HA en adaptant peut etre mais ça ne semble pas etre le bout du monde, ou as tu récupéré ces scripts ?

les scripts viennent de The Keys il y a quatre, cinq ans mais j’ai l’impression qu’il n’y a plus personne. Ce qui me fait souci c’est le import gateway ou le import argparse.
Pour tout te dire j’ai bientôt 87 ans et j’étais avant 1997 prof d’informatique mais je n’ai pas évolué avec les progrès de l’informatique. Maintenant les élèves de la spécialité « informatique » programment tous (toutes ??) en python et je ne comprends plus rien aux sujets du bac !!! :joy:

J’ai lu ça : Python Scripts - Home Assistant
mais justement :
It is not possible to use Python imports with this integration
Je vais regarder pyscript ou Appdaemon

Je vois beaucoup d’articles qui datent de 2019 et depuis plus rien effectivement

toutes mes félicitations, deja avec mes 52 ans je suis une dinosaure :wink:

pyscript semble etre un bon choix

Je me suis lancé dans AppDaemon mais je n’arrive pas à importer des modules Python.
J’ai envoyé un ticket à TheKeys.
Dans pyscript le test.py dont j’ai parlé plus haut me dit qu’il ne peut pas importer gateway.

Il te faut les modules pour les importer ?

J’avance. J’ai réussi à exécuter en ligne de commande le script test.py avec comme arguments ceux que j’appelais dans mon script bash pour ouvrir et fermer la portée d’entrée ou ouvrir et fermer le portail.
dans /config/pyscript dans le terminal j’envoie cette ligne :
essai=./test.py --host $gateway -i $code_serrure -c $code_partage close
le fichier test.py est exécutable et la porte s’est bien fermée. Ce sera open pour ouvrir et ça marche.
Dans le répertoire /config/pyscript j’ai mis gateway.py que j’ai récupéré sur mon raspberrypi et j’ai importé les autres modules qui vont bien par :
python3 -m pip install requests pour importer requests
Il me restera demain à voir comment exécuter ça par l’intégration pyscript
Bonne nuit.
Gérard

1 « J'aime »

Bonjour,
Je reprends ce matin. Je vais utiliser plutôt ceci :

à condition de comprendre comment ça marche.
Bonne journée.
Gérard

Re,
J’ai créé ces lignes dans configuration.yaml :

command_line:
  - switch:
      command_on: "python3 /config/pyscript/test.py --host ip_de_la_gateway -i code_serrure -c 'code_partage' open"
      command_off: "python3 /config/pyscript/test.py --host ip_de_la_gateway -i code_serrure -c 'code_partage' close"
      name: "porte_entree"
  - switch:
      command_on: "python3 /config/pyscript/test.py --host ip_de_la_gateway -i code_serrure_portail -c 'code_partage_portail' open"
      name: "portail"

J’ai maintenant dans la partie télécommande de mon lovelace :


Et dans android-auto j’ai mis ces switchs dans les favoris.

2 « J'aime »

Super boulot :+1:
Bravo à toi

Bonjour,
Avec le script statut.py j’ai créé dans configuration.yaml et sous command_line un sensor de name: etat_entree
J’ai désormais 3 entités dans l’integration command_line


et entree_etat me donne ça :

Je suis très content d’avoir pu surmonter mon inquiétude de ne pas y arriver. Tu m’as redonné confiance. Merci.
Gérard

3 « J'aime »

Bonjour,
Hier j’ai fait encore quelques modifs et surtout j’ai écrit à Benoit DECHERF le directeur de The Keys. Mon dernier contact avec lui remontait à août 2020.
Dans l’annuaire des entreprises elle est toujours active et située à Saint Mandé
Bon dimanche.
Gérard

1 « J'aime »

Bonjour @Gerard_Blanchet.
J’ai aussi une serrure connecté The_Keys, et Home-Assistant, et je ne savais même pas qu’on pouvait à l’aide de script, piloté la serrure depuis home-assistant.

Tu donnes un script pythons qui tu as utilisé sur ton Raspberry, est-ce le même que tu as importer dans home-assistant? Tu as utilisé quel module pour pouvoir faire un script avec import?

Merci par avance pour tes précisions.
Bonne journée.

Bonjour @sterua32 ,
En fait maintenant j’ai deux intégrations de The_Keys :

  1. celle que j’ai décrite ici avec command_line mais ça nécessite d’importer les library python à la mano : python3 -m pip install requests pour importer requests
    Ensuite j’ai installé le module complémentaire pyscript (est-il utile je n’en sais rien!!) pour avoir le répertoire /config/pyscript dans lequel j’ai copié scripts test.py, statut.py, statut_portail.py mais aussi gateway.py utile notamment pour test.py qui l’appelle.
  2. Je décris dans le sujet suivant une autre intégration réalisée par Kevin Bonnoron :
    Integrer gateway et serrures The Keys à Home Assistant
    A la fin de la discussion sur ce fil j’indique que j’ai contacté Kevin et qu’il va réaliser dans la semaine les 2 modifications que je lui ai suggéré. Donc peut-être attendre un peu qu’il l’ai fait.

Cette deuxième intégration me plait dantage. En fait si tu n’a pas de serrure sans batterie tu peux déjà l’installer avec la procédure git clone
Bonne journée.
Gérard

Super ! Je vais regarder cela immédiatement (je n’ai qu’une serrure connecté avec batterie pour ma porte d’entrée et une gateway the keys). Merci pour les infos^^

Bonsoir
Kevin vient de faire des modifs sur github. Cela s’installe désormais depuis HACS avec recherche d’un dépôt personnalisé GitHub - KevinBonnoron/the_keys: TheKeys integration for Home Assistant
Gérard

1 « J'aime »