Home AssistantSécurité

Linkind Siren Hub sur Home Assistant

Vous êtes nombreux à avoir profité de l’offre à 19€ des kits de sécurité Linkind, comprenant des capteurs de contact porte/fenêtre et de mouvement. Or, la sirène restait à ce jour inutilisable indépendamment du cloud Linkind. On va gérer dans ce tuto la possibilité d’utiliser ce Linkind siren hub sur MQTT, ce qui le rendra utilisable des système tels que Home Assistant, Jeedom ou Domoticz ! Nous allons ici configurer la partie MQTT et préparer l’intégration sous Home Assistant

Explication

D’après un salon discord, ce Hub Siren tourne sous OpenWRT. OS famille des linux, il est donc possible de s’y connecter et d’effectuer certaines tâches dessus. Nous allons voir ainsi comment effectuer la 1ère connexion, désactiver les services inutiles pour ensuite configurer notre sirène à travailler avec MQTT.

Les prérequis

Il vous faudra donc

  • un Hub Siren issu des kits avec clavier ou avec bip.
  • un PC windows/linux/mac avec un client SSH (type putty ou natif sous Unix)

! Chose importante ! il faudra que votre hub n’ait jamais été connecté au cloud Linkind ! Le fait de l’avoir déjà configuré annule toute possibilité de paramétrer l’OpenWRT.

Connexion au wifi

Pour la 1ère fois, branchez votre hub au secteur, puis laissez le démarrer. La led wifi devrait clignoter lentement.

Sachez que si vous avez fait une erreur, il est possible de reset le hub en restant appuyé sur la touche sur le coté pendant 10s

A partir de là, vous devriez voir un wifi type Siren-Hub-xxxx dans votre gestionnaire wifi :

linkind hub home assistant wifi

Connectez votre PC ou téléphone à ce point d’accès, et ouvrez un navigateur pour vous rendre sur http://192.168.10.1/

Identifiez vous avec le login root et le mot de passe lds_123456. Vous arriverez ensuite sur l’interface de configuration de l’OpenWRT:

linkind hub home assistant interface web admin

Nous allons ensuite désactiver les services inutiles : rendez-vous dans System / Startup, allez en bas de page dans la section Local Startup

et collez le script :

for i in mosquitto freifunk-watchdog subdevice ota lagent smart; do
  if /etc/init.d/"$i" enabled
  then
    /etc/init.d/"$i" disable
    /etc/init.d/"$i" stop
  fi
done

if ! /etc/init.d/siren_client enabled
then
  /etc/init.d/siren_client enable
  /etc/init.d/siren_client start
fi

exit 0

Vous pouvez maintenant redémarrer votre Hub avec le menu System / Reboot et Perform reboot

Attendez de voir réapparaître le wifi Siren_Hub_xxxx et reconnectez-vous y

Nous allons maintenant connecter notre openWRT sur notre wifi. Rendez-vous dans Network / Wifi. Vous verrez alors 2 configurations: celle en mode Master qui s’occupe de diffuser le wifi de configuration, et une seconde en mode Client qui s’occupera de se connecter sur notre wifi domestique.

Cliquez sur le bouton Edit de la configuration en mode Client

Remplacez Leedarson (qui au passage est le constructeur du hub) par le nom de votre wifi domestique, laissez le mode sur Client et cochez la case lan. Allez ensuite sur l’onglet Wireless Security puis mettez votre mot de passe wifi dans la case Key :

Cliquez sur Save pour enregistrer les modifications, puis sur Enable de la ligne correspondante. Votre hub devrait maintenant se connecter d’une minute à l’autre sur votre wifi !

Il nous faut maintenant son IP sur votre réseau. 2 méthodes :

  • soit vous avez l’info sur votre routeur (box opérateur ou routeur perso)
  • soit vous vous connectez en ssh à 192.168.10.1 (en étant toujours connecté en wifi à Siren_Hub_xxx) avec les login root/lds_123456, et lancez la commande ifconfig

Je vous conseille de déclarer une réservation d’IP sur votre box, vous serez alors certain de pouvoir accéder à l’interface d’admin de votre sirène sur la même IP.

Déconnectez vous du wifi Siren-Hub-xxxx et reconnectez vous sur votre wifi. Allez maintenant sur la page http://IP.SUR.VOTRE.WIFI (remplacez par l’IP trouvée précédemment). Vous devriez maintenant arriver sur la meme interface que précédemment.

Si vous souhaitez désactiver le point d’accès Siren-Hub-xxxx, vous pouvez repartir en zone Network/Wifi puis cliquer sur Remove de la ligne en config mode Master

A ce stade, vous avez fait le plus dur ! Votre sirène est connectée et accessible sur votre Wifi !

Script MQTT

Nous allons maintenant travailler en ligne de commande. Ouvrez votre client SSH (natif ou Putty sous windows), connectez vous à l’IP du Hub Siren avec les identifiants précédents. Commençons par retirer ce qui pourrait se synchroniser avec Linkind :

root@Leedarson:~# vi /etc/lagent/lagent.conf

Si votre fichier est vide, ne faites rien et quitter avec :q! . Si il comporte quelque chose, supprimez chaque ligne en tapant dd en début de chaque ligne, passez en mode édition avec i et collez le texte suivant :

mqtt_host 0.0.0.0
srv_addr 0.0.0.0

Sortez du mode édition avec la touche echap et sauvegardez/quittez avec :wq

Une fois revenu sur la console, nous allons ajouter notre client MQTT qui pourra interagir avec la sirène locale et le système de flash:

root@Leedarson:~# touch /usr/bin/siren_client.sh
root@Leedarson:~# chmod +x /usr/bin/siren_client.sh
root@Leedarson:~# vi /usr/bin/siren_client.sh

Il faudra récupérer l’IP de votre broker MQTT, ainsi qu’un login/mot de passe d’accès.

Entrez en mode édition dans vi avec i puis collez le script suivant (sous putty, cliquez droit pour coller)

mqttserver=VOTRE_SERVEUR_MQTT
mqttuser=VOTRE_USER_MQTT
mqttpass=VOTRE_PASSWORD_MQTT

# changez ce numero a chaque nouvelle sirene
numsiren="01"

mqtt_path="linkind/siren/$numsiren"
wlan_ip=$(ip -4 addr show wlan0-1 | grep inet | tr -s " " | cut -d" " -f3 | head -n 1 | awk -F "/" '{ print $1 }')

# publish de la config de la sirene pour prise en compte automatique dans Home Assistant
mosquitto_pub -h $mqttserver -u $mqttuser -P $mqttpass -t homeassistant/siren/linkind/$numsiren/config -m '
{
  "payload_available": "online",
  "payload_not_available": "offline",
  "availability_topic": "'$mqtt_path'/status",
  "device": {
    "configuration_url": "http://'$wlan_ip'/",
    "identifiers": [
      "linkind_sirenhub_'$numsiren'"
    ],
    "manufacturer": "Linkind",
    "model": "Siren Hub ZS1200000118",
    "name": "Siren Hub '$numsiren'",
    "sw_version": "1.0"
  },
  "available_tones": ["fire","burglar","doorbell","fault","arm"],
  "command_topic": "'$mqtt_path'/command",
  "support_duration": true,
  "support_volume_set": true,
  "unique_id": "linkind_siren_hub_'$numsiren'",
  "name": "Hub Sirene '$numsiren'",
  "optimistic": true
}'

# boucle de recup des commandes vers la sirene
while true
do
  mosquitto_pub -h $mqttserver -u $mqttuser -P $mqttpass -t $mqtt_path/status -m online

  mosquitto_sub -h $mqttserver -u $mqttuser -P $mqttpass -t $mqtt_path/command --will-topic $mqtt_path/status --will-payload offline --will-retain | while read -r cmd
  do
    state=`jsonfilter -s $cmd -e @.state`
    echo $cmd

    case "$state" in
      ON)
        echo "Turn On command"
        tone=`jsonfilter -s $cmd -e @.tone`
        tone=${tone:="fire"}
        duration=`jsonfilter -s $cmd -e @.duration`
        duration=${duration:="120"}
        volume_level=`jsonfilter -s $cmd -e @.volume_level`
        volume_level=${volume_level:="1.0"}
        volume_name=low
        if [ $volume_level == "1.0" ]; then
          volume_name=high
        fi

        echo "Parameters: Tone: $tone, Duration: $duration, Volume: $volume_name"
        ubus -t 1 call device set_prop '{"siren_level":"'$volume_name'","strobe":"on","strobe_level":"high","warning_duration":'$duration',"warning_mode":"'$tone'"}'
        ;;
      OFF)
        echo "Turn Off command"
        ubus -t 1 call device set_prop '{"siren_level":"high","strobe":"off","strobe_level":"high","warning_duration":0,"warning_mode":"fire"}'
        ;;
      *)
        echo "Unknown Message: $cmd - $state"
        ;;
      esac
  done
  sleep 10
done

Nous allons ensuite ajouter le script de lancement au démarrage. Tapez :

root@Leedarson:~# touch /etc/init.d/siren_client
root@Leedarson:~# chmod +x /etc/init.d/siren_client
root@Leedarson:~# vi /etc/init.d/siren_client

puis collez le script suivant :

#!/bin/sh /etc/rc.common

USE_PROCD=1
START=99
STOP=13

start_service()
{
        procd_open_instance
        procd_set_param command /bin/sh "/usr/bin/siren_client.sh"
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_set_param respawn
        procd_close_instance
}

reload_service()
{
        stop
        start
}

activez ensuite votre service et redémarrez

root@Leedarson:~# /etc/init.d/siren_client enable
root@Leedarson:~# reboot

Récupération sous Home Assistant

Une fois redémarré, notre hub devrait resté fixe sur la led wifi, et clignoter lors d’activité réseau. Sous Home Assistant, nous découvrirons que notre sirène a été automatiquement reconnue via MQTT, en tant que sirène :

linkind hub sous home assistant

Have Fun !

Retrouvez l’ensemble de nos tests/tutos concernant Home Assistant ici

Une réflexion sur “Linkind Siren Hub sur Home Assistant

  • Finet Olivier

    Un système de sécurité complet et très intéressant. Produit qui m’intéresse. Je vous remercie pour cette présentation très détaillée.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *