Contenu de l’image E créée le 15/12/2019 :
Ajout de l’IPBX Asterisk pour permettre un filtrage des appels téléphoniques et diminuer les appels intempestifs de télévendeurs. (voir l’article spécifique sur Asterisk) Ajout des sauvegardes des fichiers de configuration d’Asterisk dans sauv.sh.
Modification du process d’init : Création d’un nouveau fichier de variables pour les scripts shell.
L’objectif de réutilisation des scripts d’un domoticz à l’autre demande un niveau de paramétrage très élevé pour que chacun puisse adapter sa configuration à ses besoins et à ses envies. Pour les scripts lua, les variables sont naturellement dans les variables utilisateurs de domoticz mais pour les scripts shell, soit les valeurs sont directement dans les shells, soit elles sont dans les paramètres d’init de la machine. Aucune de ces solutions n’est satisfaisante car in fine pour modifier les valeurs, il faut modifier un shell ou refaire un init 🙁
Donc mon idée, c’est de créer un fichier de variables pour les scripts shell qui sera modifiable simplement (c’est un fichier .txt comme le fichier qui contient les variables d’init) et qui sera pris en compte à chaque lancement d’un shell.
Exemple de fichier de variables pour les scripts shell (var_scripts_Exemple.txt) :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
###### 10 Variables pour les scripts shell du raspberry Exemple # Variable A : Adresse IP Fixe en connexion RJ45 varA="192.168.1.XX" # Variable B : Port pour accéder à Domoticz varB="8080" # Variable C : Username de Domoticz varC="domo" # Variable D : Password de Domoticz varD="pwd" # Variable E : Nom de la machine qui héberge Domoticz varE="Exemple" # Variable F : idx du switch virtuel utilisé pour stocker le débit internet en download varF="7" # Variable G : idx du switch virtuel utilisé pour stocker le débit internet en upload varG="8" # Variable H : idx du switch virtuel utilisé pour stocker le délai du ping varH="9" # Variable I : identifiant du site utilisé pour le test de débit varI="5582" # Variable J : nom du site utilisé pour le test de débit varJ="Cloudwatt-Paris" ##### Fin des variables |
Exemple de script shell utilisant le fichier de variables (perf_internet.sh) :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/bin/bash # Script shell destiné à mesurer les débits internet montant/descendant et le délai du ping # Le résultat des mesures est stocké dans des switchs virtuels de type Custom Sensor # Ils sont consultables dans l'onglet Mesures # 15/09/19 : Modification pour prise en compte d'un fichier de variables # # Prise en compte des variables du fichier var_scripts.txt sudo dos2unix /home/pi/domoticz/scripts/divers/var_scripts.txt source /home/pi/domoticz/scripts/divers/var_scripts.txt # variables host=$varA port=$varB username=$varC password=$varD pi=$varE # idx pour download, upload et ping idxdl=$varF idxul=$varG idxpng=$varH # serveur utilisé pour les tests avec speedtest-cli # https://www.speedtestserver.com/ pour trouver un serveur de test serverst=$varI libserver=$varJ # ne pas modifier speedtest --simple --server $serverst > outst.txt download=$(cat outst.txt | sed -ne 's/^Download: \([0-9]*\.[0-9]*\).*/\1/p') upload=$(cat outst.txt | sed -ne 's/^Upload: \([0-9]*\.[0-9]*\).*/\1/p') png=$(cat outst.txt | sed -ne 's/^Ping: \([0-9]*\.[0-9]*\).*/\1/p') # affichage des résultats echo "$pi Download depuis $libserver ($serverst) = $download Mbps" echo "$pi Upload vers $libserver ($serverst) = $upload Mbps" echo "$pi Ping vers $libserver ($serverst) = $png ms" # mise à jour des dispositifs download, upload et ping dans domoticz wget -q "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$idxdl&svalue=$download" >/dev/null 2>&1 wget -q "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$idxul&svalue=$upload" >/dev/null 2>&1 wget -q "http://$username:$password@$host:$port/json.htm?type=command&param=udevice&idx=$idxpng&svalue=$png" >/dev/null 2>&1 # fin |
On obtient ainsi un script shell totalement paramétrable et donc réutilisable dans toutes les installations.
Le fichier var_scripts_NOM.txt est à mettre dans le répertoire /init, il sera recopié dans /divers sous le nom générique var_scripts.txt. Ensuite à chacun de modifier directement var_scripts.txt et de reporter les modifications dans son var_scripts_NOM.txt pour une prise en compte lors du prochain init.
Les 3 dernières variables du fichier de paramètres pour l’init disparaissent puisqu’elles sont transférées dans les variables de scripts shell.
Messagerie : Remplacement du logiciel ssmtp (devenu obsolète) par msmtp pour l’envoi des mails. Une conséquence est la modification de la gestion de la crontab (ajout d’une ligne de paramétrage de l’adresse mail et plus d’utilisation de sudo pour les mises à jour de la crontab). Le shell d’init a été modifié pour prendre en compte cette évolution. Attention, lorsque vous allez restaurer votre ancienne crontab dans le processus de migration, elle ne permettra pas l’envoi de mail. Il faudra la modifier après la restauration en rajoutant la ligne ad hoc (voir dans le fichier crontab_Exemple et ci-dessous) et en remplacant domotype par votre mail.
|
1 2 |
# Adresse mail qui doit recevoir les notifications MAILTO="domotype@gmail.com" |
incron est un nouveau logiciel installé sur l’image, il permet de surveiller des événements (éléments surveillés) et d’exécuter des actions. C’est un peu comme la crontab pour les événements cycliques, d’ailleurs la syntaxe pour modifier la incrontab est : incrontab -e
Voici le contenu de la mienne (j’ai réduit les noms des fichiers pour une meilleur lisibilité) :
|
1 |
/log/asterisk/Master.csv IN_MODIFY /scripts/divers/envoi_mail.sh |
Il faut comprendre : si le fichier Master.csv est modifié alors exécuter le shell envoi_mail.sh. Ci-dessous, le shell envoi_mail.sh et un mail reçu.
|
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash # # Script qui envoie un fichier par mail # # 03/12/19 : version initiale # echo 'Le fichier Log a été modifié' | mutt -s '[Asterisk] Modification des Logs' -a /var/log/asterisk/cdr-csv/Master.csv -- mon.mail@gmail.com # fin |
Décodage : d’abord, le contenu du corps du texte du mail (echo ‘Le fichier Log a été modifié’), puis un pipe « | » pour enchaîner les commandes, la commande mutt avec les options -s pour indiquer l’objet du mail (-s ‘[Asterisk] Modification des Logs’), puis -a pour indiquer le fichier à mettre en pièce jointe (-a /var/log/asterisk/cdr-csv/Master.csv) et enfin l’adresse mail du destinataire.
|
1 2 3 4 5 6 7 |
[Asterisk] Modification des Logs domoexemple@gmail.com <domoexemple@gmail.com> 3 décembre 2019 à 18:06 À : mon.mail@gmail.com Le fichier Log a été modifié Master.csv 2K Télécharger |
Pour réaliser ce suivi de logs, j’ai rajouté à l’image E, le logiciel mutt.
Les logiciels ajoutés dans cette image (Asterisk, incron et mutt) ne sont pas encore personnalisables via le processus d’init car je n’ai pas assez de recul, ni sur leur mise au point, ni sur le degré et la facilité de paramétrage. Si vous souhaitez les utiliser, vous devrez les adapter à votre configuration, pour incron et mutt, c’est facile; pour Asterisk on verra ensemble 😉 .
Depuis la sortie du Pi 4 avec beaucoup plus de mémoire (jusqu’à 4Go), il n’est plus pertinent d’utiliser l’interface graphique sur les anciens raspberry. A partir de cette image E, les logiciels avec interface graphique seront supprimés, ce qui permettra la diminution de la taille de l’image. En parallèle, une nouvelle série d’images adaptées au Pi 4 (version bureautique) va apparaître avec l’interface graphique Pixel.
Nouvelle version de modules.lua : très très enrichie cette version facilite l’écriture des scripts lua, voir ce lien (Merci à vil1driver et papoo) et la bibliothèque de fonctions modules.lua (à télécharger).
WordPress : Mise à jour en version 5.3 et actualisation des plugins en fonction de cet article.
Changement de la version de Raspbian : passage à Raspbian Buster à la place de Stretch.
- Version maintenant installée : Linux Modele 4.19.86-v7+ #1283 SMP Fri Nov 29 18:32:25 GMT 2019 armv7l

