Débutant en la matière pour la partie domotique, j’ai pu configurer Jeedom sur un Raspberry PI 4 B et y ajouter un disque dur SSD pour servir de support à l’OS.
Pour rappel, pour le moment le boot sur disque SSD n’est pas possible, il faut laisser la SDCard qui sert juste pour la phase de démarrage.
Ce « tuto » n’est pas destiné à être super détaillé sur certaines options évidentes (time zone, adresse email, …) qui peuvent être demandé à certains endroits.
Il compile toutes les commandes Linux que j’ai dû effectuer via à vis de mon matériel.
Une connaissance minimale de Linux est nécessaire.
Cette configuration fonctionne avec mon matériel, si vous désirez tester chez vous je ne saurais trop que vous conseiller de faire ceci sur une SDCard + disque SSD autres que ceux que vous utilisez en production. Car tout le contenu va être effacé.
Config Jeedom sur SSD
Matériel
Raspberry PI 4 B avec alimentation dédiée
SIGMA DESIGNS Contrôleur Z-Wave Plus dongle USB
Rfxcom Émetteur-récepteur USB 433,92 MHz avec Support Somfy Version XL
SDCard 64 Gb Classe 10 (une 8 Go devrait suffire mais j’ai pas sous la main)
Crucial CT120BX500SSD1(Z) SSD Interne BX500
UGREEN USB 3.0 Boîtier Disque Dur Externe 2.5 Pouces SATA HDD SSD 7mm à 9.5mm 6To Max 5Gbps UASP Compatible
Après l’installation les 2 clés USB ont été connectées sur un hub auto alimenté
AUKEY HUB USB 3.0 7 Ports ( 4 * USB 3.0 + 3 * Charge 2,4A ) Hub USB SuperSpeed
Les liens qui m’ont aidé
https://www.raspberrypi.org/downloads/raspbian/
https://www.tomshardware.com/news/boot-raspberry-pi-from-usb,39782.html
https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/
https://nechry-automation.ch/2018/01/22/modifier-cle-de-securite-zwave/
https://www.domo-blog.fr/securiser-jeedom-https-certificat-ssl-dote-nouveau-challenge-http-01/
https://www.domoticz.com/wiki/PersistentUSBDevices
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=196778
Actions à faire
Copier l’image Raspbian Buster Lite sur une SDCard
Utiliser Balena Etcher
Copier sur la SDCard un fichier ssh (vide et sans extension) directement dans la racine (le tout 1er niveau).
Mettre la SDCard dans le Raspberry et ne pas connecter pour le moment le SSD
Prendre la main en ssh sur le Raspberry
ssh -l pi 192.168.1.2
—> Adapter l’IP
Password par défaut : raspberry
sudo raspi-config
Changer password
Configurer wifi si nécessaire
Configurer localisation
Claviers : uniquement les 3 fr-fr, avec celui en UTF8 par défaut
Advanced option, expand file system
Update
sudo reboot
Upgrade des packages Raspbian
sudo apt update
sudo apt full-upgrade
sudo reboot
Connecter le disque SSD
sudo fdisk -l
sudo fdisk /dev/sda
—> si SSD sur sda, adapter si sdb par exemple
p —> Pour voir les partitions
d —> pour deleter les partitions (répéter pour toutes) → Attention ça efface tout ce qu’il y a sur le disque SSD
n —> pour créer une nouvelle partition. Prendre toutes les options par défaut.
w —> pour sauvegarder. Si erreur busy, rebooter et recommencer la commande
Formatage du disque
sudo mkfs.ext4 /dev/sda1
→ Ne pas oublier de rajouter le 1 à la fin de sda
Noter la valeur PARTUUID du disque SSD
sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT=« boot » LABEL=« boot » UUID=« 5203-DB74 » TYPE=« vfat » PARTUUID=« 6c586e13-01 »
/dev/mmcblk0p2: LABEL=« rootfs » UUID=« 2ab3f8e1-7dc6-43f5-b0db-dd5759d51d4e » TYPE=« ext4 » PARTUUID=« 6c586e13-02 »
/dev/sda1: UUID=« 38aea4c9-5f32-4120-80d0-fa52b79fbd91 » TYPE=« ext4 » PARTUUID=« 6c586e13-01 »
/dev/mmcblk0: PTUUID=« 6c586e13 » PTTYPE=« dos »
Afin d’éviter la confusion sur le PARTUUID de la SDCard on va changer le PARTUUID du disque SSD
sudo fdisk /dev/sda
x —> rentrer en mode expert
I —> changement de l’ID
0xd34db33f —> Nouvel ID, rajouter 0x au début et ne pas prendre le -01 de la fin
r —> quitter le mode expert
w —> pour sauvegarder
Noter la nouvelle valeur PARTUUID du disque SSD
sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT=« boot » LABEL=« boot » UUID=« 5203-DB74 » TYPE=« vfat » PARTUUID=« 6c586e13-01 »
/dev/mmcblk0p2: LABEL=« rootfs » UUID=« 2ab3f8e1-7dc6-43f5-b0db-dd5759d51d4e » TYPE=« ext4 » PARTUUID=« 6c586e13-02 »
/dev/sda1: UUID=« 38aea4c9-5f32-4120-80d0-fa52b79fbd91 » TYPE=« ext4 » PARTUUID=« d34db33f-01 »
/dev/mmcblk0: PTUUID=« 6c586e13 » PTTYPE=« dos »
Noter également la valeur ID du disque SSD
sudo lsusb
Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. Name: ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
On indique qu’on veut désormais avoir l’OS sur le disque SSD
Les informations PARTUUID et ID relevés précédemment vont nous permettre d’indiquer exactement le disque qui va contenir l’OS. Sans ceci, en cas par exemple de changement de port usb du disque, celui-ci ne pourrait plus être référencé de la même manière par l’OS (sdb à la place de sda par exemple)
sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak
→ Création d’une copie avant modification
sudo nano /boot/cmdline.txt
Ligne d’origine :
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Remplacer par :
usb-storage.quirks=174c:55aa:u console=serial0,115200 console=tty1 root=PARTUUID=d34db33f-01 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Editer également le fichier /etc/fstab
cat /etc/fstab
—> Pour voir l’état actuel du fichier
proc /proc proc defaults 0 0
PARTUUID=6c586e13-01 /boot vfat defaults 0 2
PARTUUID=6c586e13-02 / ext4 defaults,noatime 0 1
sudo nano /etc/fstab
Remplacer la deuxième ligne (celle avec ext4) par le PARTUUID d34db33f-01 du disque SSD
cat /etc/fstab
—> Pour voir le nouvel état du fichier
proc /proc proc defaults 0 0
PARTUUID=6c586e13-01 /boot vfat defaults 0 2
PARTUUID= d34db33f-01 / ext4 defaults,noatime 0 1
Copie des données de la SD Card vers le disque SSD
sudo mkdir /media/ssddrive
sudo mount /dev/sda1 /media/ssddrive
sudo rsync -avx / /media/ssddrive
sudo reboot
→ A partir de là, il faut qu’au démarrage du Rapsberry que la SDCard + le disque dur soient connectée. Sinon ça ne marche pas.
Installation Jeedom
wget -O- https://raw.githubusercontent.com/jeedom/core/master/install/install.sh | sudo bash
Notez à la fin le mot de passe MySQL, il change à chaque nouvelle installation
sudo reboot
Lancer le navigateur Internet et aller sur l’adresse http://192.168.1.2 —> Adapter l’IP
Par défaut : User = admin & Password = admin
Changer le mot de passe comme proposé
Se connecter au Jeedom Market, créer un compte si nécessaire.
Installer les modules nécessaires
Changement de la clé de sécurité par défaut de Zwave
cd /var/www/html/plugins/openzwave/resources/openzwaved/ozwave
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
Noter la clé générée et la remplacer dans le fichier manager_utils.py
sudo cp manager_utils.py manager_utils.bak
→ Création d’une copie avant modification
sudo nano manager_utils.py
Valeur d’origine (vers la ligne 24) : globals.options.addOptionString(« NetworkKey », « 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 », True)
Remplacer la chaine « 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 » par la nouvelle clé
Dans Jeedom redémarrer le démon ZWave
Sécuriser le site web Jeedom en https
Prérequis avoir un nom de domaine ( domotique.jeedom.fr dans l’exemple ci-dessous)
sudo nano /etc/hosts
Rajouter cette ligne : ServerName domotique.jeedom.fr
sudo nano /etc/apache2/apache2.conf
Rajouter cette ligne : ServerName domotique.jeedom.fr
cd /etc
sudo wget https://dl.eff.org/certbot-auto
sudo mv /etc/pip.conf /etc/pip.conf.bak
→ Renommage du fichier car dans mon cas il fait planter la génération du certificat
sudo chmod a+x ./certbot-auto
./certbot-auto --apache -d domotique.jeedom.fr
Renouvellement automatique du certificat
whereis certbot-auto
—> Permet de vérifier le chemin du certificat
sudo nano crontab -e
→ La crontab est l’équivalent du gestionnaire de taches de Windows.
Ajouter la ligne suivante : 0 1 30 * * /etc/certbot-auto renew >> /var/log/ssl-renew.log
Attribuer un port USB de manière permanente
Cela évite qu’entre deux reboot d’avoir son périphérique USB sur un autre port système. Les ports des plugins Jeedom seront configurés avec les noms symboliques créés (SYMLINK+)
sudo lsusb -v | grep 'idVendor\|idProduct\|iProduct\|iSerial
’
idVendor 0x 0658 Sigma Designs, Inc.
idProduct 0x 0200 Aeotec Z-Stick Gen5 (ZW090) - UZB
iProduct 0
iSerial 1 E3040A02-4A02-0115-201B-041600CC95C0
idVendor 0x 0403 Future Technology Devices International, Ltd
idProduct 0x 6015 Bridge(I2C/SPI/UART/FIFO)
iProduct 2 RFXtrx433XL
iSerial 3 DO3ZB3XA
Création d’un fichier de regles pour le nomage.
sudo nano /etc/udev/rules.d/99-usb-serial.rules
Ajouter les 2 lignes ci-dessous en prenant les valeurs trouvées avec la commande précédente
SUBSYSTEM=="tty",ATTRS{idVendor}=="0658",ATTRS{idProduct}=="0200",ATTRS{serial}=="E3040A02-4A02-0115-201B-041600CC95C0", SYMLINK+="ttyUSB-ZWave"
SUBSYSTEM=="tty",ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6015",ATTRS{serial}=="DO3ZB3XA", SYMLINK+="ttyUSB-RFX433"
sudo reboot
Et volià c’est fini