jeudi 14 janvier 2021

Domotique: J'avais refait ma(mes) box(es)...

Je vais vous expliquer comment j'ai amélioré ma propre "box domotique" que j'ai mis en place finalement, et cela il y a quelques années (je n'avais pas fini l'article à l'époque mais je le sors maintenant quand même, il est toujours valide finalement et surtout moins couteux maintenant avec le temps ;-)

Au début, je tournais avec 2 Raspberry PI (version 2B) pour différents usages (un premier Jeedom pour la chaudière qui faisait que cela ou presque ( en fait, besoin des GPIOs pour piloter la chaudière avec des relais), puis un autre Jeedom pour les scénarios et autres fonctionnalités consommatrices de ressources (camera, scenario complexe, check de présence, etc...)) mais j'ai donc voulu refaire l'architecture de ma domotique pour me simplifier à terme sa propre maintenance et le risque. Je pense que ce n'est pas parfait mais c'est ce que j'ai réussi à faire de manière raisonnable en terme de coûts et de temps ;-)

Problèmatique (mon besoin en fait ;-):
- Utiliser chaque protocol domotique via des gateways pour simplifier le remplacement du hardware et/ou la restauration du software en cas de crash. En avoir plusieurs pour gérer mieux le BLEA à terme et faire de la localisation Bluetooth plus fine ;-).
- Centraliser l'intelligences des scénarios et plug-ins surtout sur un seul jeedom si possible.
- Faire du actif-passif si possible, le actif/actif semblant presque impossible ou complexe pour une solution comme Jeedom.
- Limiter l'utilisation de carte MicroSD.

Mon choix "hardware" finalement:
J'en ai profiter pour prendre un Raspberry PI 3 B+ pour mon Jeedom "Master" (le Raspberry Pi 4 n'était pas encore disponible lors de ma migration ;-)

Voici un lien pour l'acheter si besoin: Raspberry Pi 3 Modèle B+, Carte-mère



Pour mon Jeedom "Master", j'ai utilisé un disque SSD (mSSD pour être précis) de 120 Go (pas forcement besoin d'aussi grand (c'était le meilleur rapport qualité/taille/prix) mais vous verrez que cela peut service pour un des devices que j'ai rajouté dans la box) :

Voici un lien pour l'acheter si besoin: Kingston SSD UV500 msata (SUV500MS/120G)
Il faudra donc copier l'OS sur le disque, moi j'ai opté pour une installation from scratch et j'ai donc suivi ce tuto d'un autre blog:
https://www.domo-blog.fr/comment-installer-jeedom-sur-un-disque-dur-ssd-sur-raspberry-pi/

Et pour la boite de la "box" ;-), j'ai décider de me faire plaisir et de prendre quelque chose de bien...
J'ai choisi Pi Desktop de Element14 ! Voici le lien pour l'acheter si besoin: Pi Desktop



Cela permet d'avoir un boitier bien fini, incluant la possibilité de mettre une caméra mais aussi une carte fille pour gérer l'ajout d'un disque mSSD, d'un bouton marche/arrêt et d'une horloge RTC avec une pile bouton garder la conf/etat du raspberry... c'est un vrai serveur maintenant ! (ou presque ;-)
Et pour cela en plus d'installer la distrib raspbian sur mon disque mSSD, il a fallut rajouter les softs liés au Pi Desktop. Je conseille vraiment de prendre le fork et pas la version officiel pour cette fois, parce que le fork a évoluer et se comporte mieux avec le RPi 3 B+ finalement.

Je vous conseille donc d'aller voir ici: https://github.com/hoopsurfer/pidesktop

Pour ma part, j'ai installer ainsi en téléchargeant à partir du Pi en ssh:

pi@JEEDOMMASTER:~ $: sudo wget https://github.com/hoopsurfer/pidesktop/raw/master/pidesktop-base.deb
pi@JEEDOMMASTER:~ $: sudo dpkg -i pidesktop-base.deb

et pour vérifier, je conseille de vérifier avec cette commande après un reboot ;-)

pi@JEEDOMMASTER:~ $: pd-check

Et pour finir; avec ce boitier, j'ai pu rajouté une "caméra PI" que j'ai pu relié au Raspberry Pi et dont le Pi Desktop à un emplacement prévu pour cela:



Voici le lien pour l'acheter si besoin: Raspberry Pi v2.1 8 MP 1080p Module Caméra

Attention: mais en fait... ce boitier PI-DESKTOP a un défaut finalement pour de la domotique et un serveur en générale... Si on a une coupure électrique, le raspberry pi ne redémarrera pas si on installe le soft du PI Desktop pour gérer le bouton. Je conseille néanmoins d'installer la gestion du bouton mais de rajouter un condensateur de 10 Micro-farade (en 6.3, 10v ou 25V par exemple) sur le bouton de mise sous-tension de la carte interne comme ceci :

Edit 14/01/2021: j'ai testé cette solution, et je n'ai pas trouvé cela fiable finalement et cela n'évite pas les coupure en fait et les problèmes :-(, donc j'ai du investir dans un onduleur, ainsi plus de coupure, le top !!!!
J'ai pris ce modèle que je conseille parce qu'on peut le monitorer avec Jeedom aussi : APC Back-UPS ES - BE550G-FR - Onduleur 550VA (8 Prises FR)


Un article à faire à l'occas ;-)

Mon choix "software" finalement:

Donc comment j'ai migré...
Je suis donc partie de 2 Pis pour aller vers 3 Pis à court terme.

1) Le premier j'ai pas trop touché: il est dans mon local chaudière et il va resté dédié au chauffage finalement.

2) J'ai cloné le deuxième pour en faire mon Jeedom "Master" et donc récupérer les scenarios, widgets,etc... cela sera mon front-end internet visible de l'appli mobile Jeedom ou en utilisant le Web app. Les autres jeedoms ne seront donc plus accessible d'internet.

3) Après clonage, j'ai désactivé les plug-ins/scenarios/scripts/widgets/virtuels inutiles sur le deuxième Jeedom qui va pour l'instant me servir que de gateway Z-wave/Blea.

4) Sur le nouveau Jeedom Master, j'ai gardé tout sauf le Z-wave et le Blea mais il a fallu faire des ajustements:
- Au niveau NAT, j'ai renvoyé le flux sur le port de ce nouveau jeedom Master.
- J'ai du refaire un enrolment pour la partie Alexa. (et oui, j'ai cela aussi, il faudra que je vous en parle)
- Avant de virer le zwave et le BLEA, et dans l'ordre:
     - J'ai renommé tout les devices Zwave avec le prefixe "OLD" pour les retrouver facilement dans mes automatismes (sceanrios, virtuel, etc..)
     - J'ai refait les "Jeelink" entre Jeedom 1 vers Jeedom Master, Jeedom Master vers Jeedom 1 et Jeedom 2 vers Jeedom Master. Plus besoin de lien entre Jeedom 2 et Jeedom 1.
     - J'ai donc avec les nouveaux Jeelink pour les équipements Zwave et BLEA, j'ai renommé dans les scenarios, virtuel,etc tout ce qui était préfixé par "OLD" (je n'ai pas trouvé d'autres solutions :-()
     - Puis à la fin, j'ai pu désactiver le zwave et le blea de ce Jeedom Master. (Mais je me dis qu'à terme j'aurai peut être le BLEA principal sur le master et les antennes sur les autres... à refaire à l'occas)

Mon architecture finalement après migration et avec ce que compose chaque box:



Et voilà, comment est refait ma domotique, elle tourne depuis 2 ans ainsi, et finalement, j'ai beaucoup moins de problème qu'avant... mais il va falloir s'attaquer à une autre migration maintenant, le passage de la V3 de Jeedom à la V4... un autre article à venir ;-)

Enjoy !

mardi 12 janvier 2021

Domotique : Utiliser la clé HUAWEI LTE USB Stick E3372-320 - Pour envoyer des SMS par Jeedom !

En fait, je voulais pouvoir notifier ma famille par SMS...

Donc j'ai regardé rapidement les dongles compatibles sur la doc du plug-in SMS jeedom ici : 

Et j'ai acheté ce modèle : Huawei E3372



J'ai ensuite installé le plug-in SMS de jeedom


Mais malheureusement, en Auto dans la configuration du plug-in, il ne semblait pas être bien détecté....


Le plug-in n'arrive pas à se lancer même avec les dépendances installés :


je le voyais bien en USB connecté sur le système (sur mon Pi qui me sert de "gateway" jeedom et déjà centralise mes dongles comme pour le bluetooh et le zwave) :

pi@Jeedom2:/ $ lsusb
Bus 001 Device 009: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 001 Device 013: ID 12d1:14db Huawei Technologies Co., Ltd. E353/E3131
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Donc j'ai pensé qu'il fallait mettre à jour les drivers comme expliqué ici pour activer le mode modem : https://lecrabeinfo.net/huawei-e3372-modem-usb-lte-4g-installer-firmware-hilink-routeur-firmware-stick-modem.html 

Mais finalement, le modèle que j'ai est un e3372h-320 qui pose problème... et c'est ce que l'on trouve beaucoup maintenant sur les boutiques en ligne en ce moment.

On ne peut pas le passer en mode factory donc on ne peut pas le mettre à jour avec un firmware compatible. J'ai testé sur Windows 10, il marche à merveille en routeur 4G mais sous linux, il n'est pas forcement détecté comme on le souhaite dans le cas de jeedom pour l'envoi de SMS !

Voici le firmware qui pose problème dans mon cas (confirmé par plusieurs personnes sur internet), le screenshot vient de l'outil DC - Unlocker 2 qui est expliqué dans l'url de tuto juste au dessus:


Donc il a fallu, prendre le plan B... appelé directement l'API de la clé 3G... sans utiliser le plugin SMS de jeedom malheureusement :-(

Même si les documentations sont limités sur cette API, j'ai reussi à trouver des infos :

En fait, on peux accéder, via une url: http://192.168.8.1/api/sms/send-sms

Et pour le contenu du SMS et la destination, on soumets un XML de ce format :

<?xml version='1.0' encoding='UTF-8'?>
<request>
<Index>-1</Index>
<Phones><Phone>+336123456</Phone></Phones><Sca></Sca>
<Content>Hello world</Content>
<Length>-1</Length>
<Reserved>1</Reserved>
<Date>-1</Date>
</request> 

J'ai donc pu faire le script send_sms.sh pour l'instant mais on voit qu'il faut aussi gérer la session:

#!/bin/bash
DATA=`curl http://192.168.8.1/api/webserver/SesTokInfo`
SESSION_ID=`echo "$DATA" | grep -oP '(?<=SesInfo>)[^<]+'`
TOKEN=`echo "$DATA" | grep -oP '(?<=TokInfo>)[^<]+'`
echo $DATA
echo $TOKEN
echo $SESSION_ID
curl http://192.168.8.1/api/sms/send-sms -H "Cookie: $SESSION_ID" -H "__RequestVerificationToken: $TOKEN" --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$1</Phone></Phones><Sca></Sca><Content>$2</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"


Je peux donc envoyer un sms ainsi: 

et à terme pour le mettre dans mes scenarios :

Voilà, j'espère que cela pourra vous aider.

Enjoy !

P.S: pour la réception de SMS, c'est une autre paire de manche... un autre article peut être par la suite... demandez moi si vous le voulez dans les commentaires, pour l'instant, j'en ai pas le besoin mais cela viendra sûrement ;-)