lundi 7 février 2022

Jeedom: "fail2ban or not to ban" là est la question ;-)



En fait, je fais cet article parce que suite à certaines installations de JeedomV4 hébergeant le fail2ban dans Raspbian 10 (donc sur Pi ;-) je suis tombé sur un hic... pour 2 raisons...

1) J'avais un plugin qui me généré des bannings :-(

2) Puis ensuite sur mobile avec Safari, j'avais encore eu des bannings... 

Donc je me suis rendu compte de cela dans mes logs (en allant fouiner en SSH):

2022-02-07 17:28:50,710 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,713 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,715 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,718 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,720 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,895 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,900 fail2ban.filter         [446]: INFO    [apache-multiport] Found 192.168.0.67 - 2022-02-07 17:28:50

2022-02-07 17:28:50,904 fail2ban.actions        [446]: NOTICE  [apache-multiport] Ban 192.168.0.67

Avec la commande suivante: 

sudo tail -f /var/log/fail2ban.log

Je me fesais bannir même mes IPs locales :-(

Donc pour faire simple, en cherchant un peu, je me suis rendu compte que le fichier de conf n'était pas parfait :-(...

Je l'ai modifié avec la commande suivante : sudo nano /etc/fail2ban/jail.d/jeedom.conf 

Et j'ai rajouté mon range d'IP locale :

[DEFAULT]
#Ne pas bloque localhost ni s'auto-bloquer.
ignoreip = 127.0.0.1/8 192.168.1.0/24 192.168.0.0/24

# ban de  60 minutes
bantime  = 28800

# on regarde les attaques sur les 2 dernières heures. Les 5 minutes par défaut, ça ne marche plus, les pirates se sont adaptés
findtime = 7200
maxretry = 3

# on surveille tous les ports
banaction = iptables-multiport

# action a prendre: ban + log détaillé
action = %(action_)s

[apache-multiport]
enabled = true
port      = http,https
filter    = apache-auth
logpath   = /var/www/html/log/http*.error
maxretry = 3

[apache-botsearch]
enabled  = true
port     = http,https
filter   = apache-botsearch
logpath   = /var/www/html/log/http*.error
maxretry = 6

[apache-overflows]
enabled  = true
port     = http,https
filter   = apache-overflows
logpath   = /var/www/html/log/http*.error
maxretry = 2
.....
Et j'avais dans les logs HTTP d'apache ceci aussi:

[Mon Feb 07 22:05:40.787174 2022] [access_compat:error] [pid 1431] [client 192.168.0.151:55326] AH01797: client denied by server configuration: /var/www/html/core/css/icon/animal/fonts/animal.eot, referer: http://192.168.0.11/index.php?v=m
[Mon Feb 07 22:05:46.658984 2022] [access_compat:error] [pid 1422] [client 192.168.0.151:55327] AH01797: client denied by server configuration: /var/www/html/core/css/icon/animal/fonts/animal.eot, referer: http://192.168.0.11/index.php?v=m
[Mon Feb 07 22:05:52.529226 2022] [access_compat:error] [pid 1390] [client 192.168.0.151:55328] AH01797: client denied by server configuration: /var/www/html/core/css/icon/animal/fonts/animal.eot, referer: http://192.168.0.11/index.php?v=m

Ensuite j'ai du débannir avec la commande suivante :

sudo fail2ban-client set apache-multiport unbanip 192.168.0.67

Attention, il y a un autre fichier ici (/var/www/html/install/fail2ban.jeedom.confmais il ne semble pas être utilisé dans mon cas (l'installation a merdé peut être ?!) mais je pense surtout que c'est un exemple.. mais j'ai pas tout compris je crois ;-) donc faite comme moi !!!

Enjoy !!!



vendredi 5 novembre 2021

Domotique: Boot sur USB/SSD avec un Raspberry Pi 2 en 2021 ;-)

Cette fois, suite à un crash de mon Pi 2 qui s'occupe de la partie chauffage, j'ai du réinstaller cette partie aussi... Pour faire simple, c'est la microSD qui a fini par mourir, j'avais eu des signes avant coureur (disfonctionnement, reboot nécessaire, lenteur)... mais cette fois, cela ne "bootait" plus :-(


Donc j'en ai profiter pour passer sur usb et un disque en mSSD pour ne plus avoir ces problèmes.


Mais sur Pi2, j'ai vu pleins de tuto plus ou moins obsolètes et ce n'est pas comme sur Pi3 (sur Pi3 ou plus, vous pouvez suivre ce tuto: https://www.domo-blog.fr/comment-installer-jeedom-sur-un-disque-dur-ssd-sur-raspberry-pi/)

Donc je me suis permis de proposer cet article pour aider d'autre dans le même cas du "vieux Pi à mettre au gout du jour".

Donc la méthode est la suivante (testé et confirmé par mes soins ;-)

Pré-requis:

- 1 disque mSSD, ou SSD en USB et flashé avec Jeedom V4 (de préférence)... voir dans ce tuto pour préparer cela: https://bozothegeek.blogspot.com/2021/10/domotique-migration-de-jeedom-v3-v4.html

- une MicroSD de faible capacité (mais souvent maintenant on a du mal à trouver en dessous de 16Go)

- un Rasbperry Pi 2 (ou Pi 1... mais j'ai pas testé)

1) Récupérer le bootcode.bin ici de la fondation raspberry pi : https://github.com/raspberrypi/firmware/raw/next/boot/bootcode.bin

2) Formater une carte micro sd en FAT32 donc avec cette unique partition (dans mon cas j'ai utilisé une 4go, c'est suffisant ... même 1go ou moins peut suffire... on a juste besoin d'une cinquantaine de Ko en f ait !!!)

3) Copier le fichier bootcode.bin sur votre partition FAT32

4) Insérer la microSD avec le bootcode.bin dans votre pi hors-tension et aussi connectez votre disque USB (avec Jeedom dessus) sur le port 0 (ttyUSB0), parce que le Pi va chercher dans l'ordre et comme souvent, c'est mieux de prendre le premier ;-)

4) Mettre sous tension le Pi et il devrait démarrer sur le disque avec Jeedom



C'est dans le cas où cela se passe bien...

Si cela ne se passe pas bien, il faudra tenter d'aller plus loin...

1) Donc avant de faire les premières étapes, il faudra booter dans un premier temps sur un microSD avec une raspbian installée dessus (avec le ssh d'activé)

2) Puis lancé la commande "rpi-update" pour espérer mettre à jour le formware de votre Pi

4) Aprés reboot (ou avant pour voir le changement), on peut lancer la commande "uname -a" pour vérifier la version

$ uname -a
Linux raspberrypi 5.10.76-v7+ #1477 SMP Tue Nov 2 13:20:09 GMT 2021 armv7l GNU/Linux

Ensuite vous pourrez retenter les premières étapes que j'ai proposé...

Voilà, c'est les plus court qui sont les meilleurs ;-)

Enjoy !!!


samedi 23 octobre 2021

Domotique : Migration de Jeedom V3 à V4

Voici donc comme je me suis pris pour migrer de V3 à V4....

Vu qu'il y a des conseils et problèmes connus pour cette migration, je vais donc vous lister dans mon cas ce que j'ai vérifié et préparé avant de migrer. 

A) préparation de la mise à jour :

1) J'ai vérifier ma version de raspbian installé (il est conseillé de rester en Raspbian 9 (stretch) pour l'instant parce que Buster peut poser problème):

pi@JeedomMaster:/var/www/html/plugins $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@JeedomMaster:/var/www/html/plugins $

2) J'ai du vérifier aussi les plugins qui ne seront plus bon après la migration... Apparement, c'est ceux qui continue d'utiliser l' object:: dans le code php. Maintenant la V4, demande d'utiliser JeeObject:: à la place, on verra ensuite si on peut modifier sur les anciens plugins si le dev ne maintient plus ce code.

Pour l'instant, on va devoir faire l'inventaire avec la commande suivante :

cd /var/www/html/plugins; grep -R "object::" *

pi@JeedomMaster:~ $ cd /var/www/html/plugins; grep -R "object::" *
alexaapi/desktop/php/alexaapi_ex.php:foreach (object::all() as $object)
clientSIP/desktop/php/panel.php:        $object = object::byId($_SESSION['user']->getOptions('defaultDashboardObject'));
clientSIP/desktop/php/panel.php:        $object = object::byId(init('object_id'));
clientSIP/desktop/php/panel.php:        $object = object::rootObject();
clientSIP/desktop/php/panel.php:$child_object = object::buildTree($object);
clientSIP/desktop/php/panel.php:                                $allObject = object::buildTree(null, true);
datatransfert/desktop/php/datatransfert.php:foreach (object::all() as $object) {
enedis_linky/desktop/php/enedis_linky.php:foreach (object::all() as $object) {
forecastio/desktop/php/forecastio.php:                  foreach (object::all() as $object) {
FreeboxCalls/desktop/php/FreeboxCalls.php:                            foreach (object::all() as $object) {
FreeboxOS/desktop/php/FreeboxOS.php:                            foreach (object::all() as $object) {
gmailinfo/desktop/php/gmailinfo.php:                            foreach (object::all() as $object) {
gmailinfo/desktop/php/pushbullet.php:                            foreach (object::all() as $object) {
JPI/desktop/php/JPI.php:                                                foreach (object::all() as $object) {
ledticker/desktop/php/ledticker.php:foreach (object::all() as $object) {
lightsManagement/desktop/php/lightsManagement.php:                            foreach (object::all() as $object) {
MiFlora/desktop/php/MiFlora.php:                                    foreach (object::all() as $object) {
Monitoring/desktop/php/Monitoring.php~:                                                 foreach (object::all() as $object) {
motion/core/ajax/motion.ajax.php:                               $object = object::byId($_SESSION['user']->getOptions('defaultDashboardObject'));
motion/core/ajax/motion.ajax.php:                               $object = object::byId(init('object_id'));
motion/core/ajax/motion.ajax.php:                               $object = object::rootObject();
motion/core/ajax/motion.ajax.php:                               foreach (object::all() as $object) {
motion/core/ajax/motion.ajax.php:                               foreach (object::buildTree($object) as $child) {
orvibo/desktop/php/orvibo.php:                  foreach (object::all() as $object) {
ping/desktop/php/ping.php:                            foreach (object::all() as $object) {
previsionpluie/desktop/php/previsionpluie.php:                            foreach (object::all() as $object) {
pushbullet/desktop/php/pushbullet.php:                            foreach (object::all() as $object) {
rcswitch/desktop/php/rcswitch.php:                                                           foreach (object::all() as $object) {
rcswitch/desktop/php/rcswitch.php.obsolete:foreach (object::all() as $object) {
RTSP/desktop/php/RTSP.php:foreach (object::all() as $object) {
script/data/Export_XML.php:if($jsonrpc->sendRequest('object::full', array())){
snmp_client/desktop/php/snmp_client.php:foreach (object::all() as $object) {
Store/desktop/php/Store.php:foreach (object::all() as $object) {
trafictransilien/desktop/php/trafictransilien.php:foreach (object::all() as $object) {
wifilight/desktop/php/wifilight.php:                            foreach (object::all() as $object) {
wifilight/desktop/php/wifilight.php~:                            foreach (object::all() as $object) {
wifilight/desktop/php/wifilight_V0.06.php:                            foreach (object::all() as $object) {
wifilight/desktop/php/wifilight - Copie.php:                            foreach (object::all() as $object) {
wifilight/desktop/php/wifilight.old.php:                            foreach (object::all() as $object) {
pi@JeedomMaster:/var/www/html/plugins $

Voici donc le résultat pour moi, j'ai des vieux plugins en fait et qui ne sont pas forcement maintenu :-(

Dans un premier temps, j'ai décider d'identifier dans cette liste ceux que je n'utilise même pas, que j'ai gardé mais qui sont inactif, j'ai :

- clientSIP

- freeboxCalls (plus de Freebox ;-)

- freeboxOS (plus de Freebox ;-)

- gmailInfo

- JPI

- Ledticker

- MiFlora

- Motion

- Previsionpluie (en fait, je ne sais pas quel est vraiment le plugin derrière ?!)

- Pushbullet (j'ai arrêté à cause du support d'iOS abandonné par le passé, maintenant j'envoi des SMS !)

- rcswitch

- RTSP (finalement, je ne l'utilise plus pour les cameras !)

- store

Et maintenant, il me reste donc ceux que j'utilise et qui pourront me poser problèmes :

- alexaapi (et celui là je l'utilise vraiment, surtout pour faire parler Alexa !)

- datatransfert (pour mes backups de jeedom dans dropbox)

- lightsManagement (pour ma simulation de présence !)

- Monitoring (pour suivre les Pis !)

- Orvibo (pour les prise et mon AllOne qui contrôle l'infra-rouge, pilotage télé/switch hdmi !)

- Ping (pour suivre la présence de device sur le réseau !)

- script (sera géré par l'équipe de Jeedom je pense à moins que cela soit un de mets scripts, à voir)

- snmp_client (pour le test de présence de mon routeur DD-WRT)

- trafic transilien (pour le train de ma femme ;-)

- wifilight (je vais devoir peut être migrer en v2 un jour ?!)

3) les widgets "custom" ne seront plus compatible, j'ai regardé, j'ai pas trouvé de widget fait par mes soins, j'ai fait des essais par le passé, mais rien de "folichon", donc je n'ai jamais vraiment utilisé des widgets spécifiques... on verra lors de la migration, si j'ai loupé un truc... mais c'est à savoir.

4) lancer un backup de la conf V3 : 


5) Télécharger le backup sur un autre appareil pour plus de sécurité :

    

6) Pour plus de sécurité, vous pouvez aussi cloner votre SD ou votre SSD : 

Pour cela j'ai suivi ce tuto: https://www.thedigitalpictureframe.com/guide-back-up-sd-card-raspberry-pi-while-running/

Et donc j'ai lancé cette commande à partir de mon linux.... attention cela peut être long, mon mSSD fait 111,8 Go et mon réseau n'est pas térrible je crois (j'ai cloné à 4/5 MBytes/s), donc mon cas c'est une Raspbian stretch (Debian 9) avec mon disque en /dev/sda :

ssh pi@192.168.0.X "sudo dd if=/dev/sda bs=1M status=progress | gzip -" | dd of=~/Desktop/$(date +%Y%m%d\_%H%M%S)\_pi_clone.gz

Et il faudra taper son mode de passe d'accès au pi pour pouvoir lancer le backup.

Et pour finir, on aura un fichier .gz ainsi :

Cela a mis plusieurs heures en fait :-( donc à vous de voir.

Si vous avez un doute vous pouvez utiliser cette commande pour vérifier si vous êtes sur le bon disque :

sudo cfdisk /dev/sda


6 bis) On peut aussi cloner avec un outil externe en installant le disque mSSD dans un "adapteur mSata <> Sata" pour le connecter à un PC comme ci-après : 


J'ai utilisé cet outil qui est gratuit et fonctionne sur windows  10 dans mon cas : https://www.ubackup.com/download.html


Mais il y en a surement d'autres ;-)

B) la mise à jour en tant que tel :

1) Pour les widgets, il est conseillé de les désactiver le plugin pour éviter les problèmes pendant la migration : 

2) Pour les designs, c'est plus radical... il est préférable de les supprimer :-( pour ma part, je m'en servait peu ou pas... j'avais juste fait un pour test : 


3) Mettez tous vos plugins à jour :

4) On peut maintenant lancer la mise à jour à partir du "centre de mise à jour" et cliquer sur "mettre à niveau V4"


5) Jeedom va analyser et donner son avis.... (il peut prendre une trentaine de secondes...)


Dans mon cas.... j'ai pris peur... et j'ai pensé qu'il était préférable de changer d'OS avant :-(... mais finalement non...

le mieux semble le processus suivant pour mon cas (et j'ai pu le vérifier maintenant ;-):
    - Garder raspbian 9.X donc mon système actuel sur mon mSSD
    - Faire un cleaning des plug-ins obsolete    
    - Migrer de v3 à v4 via l'outil de migration de Jeedom
    - Faire ensuite un backup de mon mSSD actuel et donc de cette v4 (sauvegarde jeedom standard(obligatoire) + image pour plus de sécurité (optionelle))
    - Flasher un nouvel OS en raspbian 10.X et avec Jeedom pré-installer en V4 (de préférence sur un nouveau mSSD au passage pour renouveller le hardware)
    - Restaurer le dernier backup jeedom en V4 sur cette nouvelle installation
    - "Pray for jeedom" ;-)


6) il faudra donc désinstaller déjà les plugins identifié comme "obsolete" avec le boutons suivant:


    vous pouvez aller voir la liste à la fin de la page pour comprendre mieux: 


Ensuite on peut cliquer sur le bouton et on va nous demander si on est sur ;-) !!!!



J'ai cliqué après vérification... la ligne sur les plug-ins obsoletes vont disparaitres.

On peut donc cliquer sur le bouton "Mettre à niveau V4"...


Encore une confirmation avant de lancer :



On se lance... et on prie ;-)


On commence par un backup...

On télécharge la mise à jour ;-)


On installe.... j'avais des versions de retard ;-)... J'ai une une erreur de DB ...sick :-(


Puis un packet de Fix....


Puis on check... et tout semble bon à part un plug-in beta qui me saoule :-( faurda que je le vire à l'occas !!!)



Et pour finir, je clique en haut à droite pour relancer le dashboard :




Ah oui, le chargement est différent déjà !!! Joli ce petit flouté et ce nouveau spinner !!!




C) la vérification que cela marche !!!

1) déjà, il y a des plug-ins à mettre à jour !!! (au passage apparement il est conseillé pour la suite de passer à Debian 10 Buster mais en "fresh install"... dommage :-(... mais bon on va déjà essayé de faire tournée cette installation pour avoir une bonne sauvegarde...


2) Mais avant on va supprimer le plugin "widget" qui est conseillé de virer ! (moi j'ai désactivé dans un premier temps avant de le vier, prudence... ;-)

3) Puis j'ai mis à jour de suite les plugins qui le demandait....

Mais j'ai du le faire un par un, un peu pénible... surement parce que je n'ai pas la bonne version de raspbian :-( ou sinon il n'y a plus la possibilité de le faire d'un coup :-( ?!

4) J'ai fait un redémarrage pour voir comment se comportait le système...


Encore un floutage... dans ce cas, c'est bizarre... on ne voit pas le Merci de patienter... mdr ;-)



Mais bon, cela redémarre bien pour arriver au dashboard !!!


5) j'ai quand même toujours le problème avec le plugin Xiaomi Home :-(, problème de python et/ou php... je n'arrive toujours pas à installer les dépendances !!!


6) Donc je vais faire un backup en 4.X avant de faire une fresh install pour être en Raspbian 10:


7) et puis j'ai téléchargé le backup en lieu sur !!!


D) Maintenant je me lance dans la "fresh install" !!!

1) Pour cela j'ai racheté un nouveau mSSD de 64 Go... ainsi je peux facilement remettre ma domotique existante si besoin ;-)

2) Pour la procédure, j'ai suivi le lien que l'on trouve dans le "centre de mise à jour": https://doc.jeedom.com/fr_FR/installation/#Installation
Dans mon cas, j'ai pris sur Raspberry Pi: https://doc.jeedom.com/fr_FR/installation/rpi

3) Pour l'image, j'ai pris celle-ci : https://images.jeedom.com/rpi/jeedom-debian-buster-rpi-4.1.25.zip

Pour avoir la dernière version, elle se trouve ici: https://images.jeedom.com/rpi/
(j'ai fais attention de ne pas prendre la 64 bits pour mon Pi3 et dans la même version que mon backup ;-)

4) Flashé sur le mSSD avec Pi Imager : https://www.raspberrypi.org/software/


Remarque: dans "choose OS", il faudra prendre "image personalisée" 

5) J'éteinds ma domotiqe (pi actuel), pour installer le nouveau mSSD


6) Je change le mSSD dans mon Pi Desktop ;-)




7) je relance le Pi ! (si l'IP est donné par un DHCP, cela simplifiera pour retrouver l'interface de Jeedom, ce que je conseil toujours)



8) Le login sera: admin et le mot de passe sera : admin 

9) on change le mot de passe

10) on ignore les autres étapes

11) Avant de lancer la restauration, on jete un coup d'oeil sur la santé de la bête (et pour pouvoir comparer plus tard) : 


12) on ajoute déjà la sauvegarde dans jeedom avec le bouton "Ajouter une sauvegarde"


13) On clique sur "Restaurer la sauvegarde"


14) OUPS.... dans mon cas, la restauration est resté figé... j'ai du me reloguer avec mon login/mot de passe comme dans la V3

15) Puis je suis aller voir dans les logs, et la restauration a bien été faite:


16) je suis aller voir la "santé" de jeedom aussi... un peu long mais voici !


17) J'avais donc encore 4 plugins NOK, j'ai pu en corriger 2... mais j'ai fini par en garder 2 avec problèmes... des que je n'utilise pas souvent donc j'ai décidé de remettre cela à plus tard... dans mon cas, j'ai beaucoup de plugin donc c'est normal d'avoir certains qui ne passent pas bien cette migration, certains avaient aussi des problèmes avant donc je n'ai pas considérer cela comme un problème, et cela sera à résoudre plus tard.

Dans mon cas j'ai laissé donc 2 problèmes de côté :
Le premier, c'est plus lié à des devices non accessibles dans mon réseau, donc pas un problème de migration:

Le deuxième, lié ai lancement du démon, et je sais que l'API d'Alexa est régulièrement non accessible à cause d'un cookie à renouveler :-(... donc je n'ai pas paniqué pour cela:


18) voilà c'est fini... ouf !!!

CONCLUSION: donc finalement, ce n'est pas compliqué de migrer et je n'ai pas eu vraiment de problème, je test cela depuis plusieurs semaines maintenant, et je suis super content, j'ai surtout pu retrouver mon plug-in xiaomi compatible python 3, que je ne pouvais plus utiliser sur Jeedom V3 et avec mon OS avec python 2 :-(

Enjoy !!!

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 !