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 :
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:
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 commandeifconfig
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 :
Have Fun !
Retrouvez l’ensemble de nos tests/tutos concernant Home Assistant ici
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.