Soletta
Soletta est un engin de travail et d’exploration solaire-pédales.
C’est un projet porté par Virage commun
Le but est ici de pouvoir recueillir les données de production et de consommation électrique afin de pouvoir :
- Les afficher dynamiquement dans un but pédagogique
- Les analyser à postériori afin de pouvoir apporter d’éventuelles optimisations
Accès aux données
- Se connecter au WiFi du système :
venux-HQ2436EC93X-aea - Avec un navigateur, visiter l’URL :
http://172.24.24.80:5000/
Mise en oeuvre
L’installation est faite sur un Raspberry Pi 4.
La Soletta étant équipée d’un Victron CerboGX, celui-ci fait office de point d’accès réseau, sur lequel est installé un broker MQTT.
Les point suivants sont abordés ci-dessous :
- Installation du système
- Configuration réseau
- Installation de PostGreSQL
- Installation des services enez : enezKreiz, enezDiaz & CerboGXkeepalive
- Installer un Module RTC pour un horodatage correct
Installation du système
L’installation du système se fait avec l’utilitaire “RaspberryPi Imager”.
- Télécharger et installer un “Raspberry Pi OS lite (64-bit) Trixie” sur une carte SD.
Le hostname est ‘Soletta’.
Définir les infos suivantes dans Raspi Imager :- Le Wifi
KAIROS_GUEST/Kairos_Guestpour accéder à Internet - Changer la locale en
fr_FRet l’utiliser comme défaut . - Définir
FRpour le WiFi
- Le Wifi
- Accèder en SSH au nouveau système.
- Avec
sudo raspi-config, choisirAdvanced options/Expand filesystempuis Reboot en quittant. - Avec
sudo raspi-config,- Choisir
Localisation options, redéfinir la locale quand mêmefr_FR.UTF-8 UTF-8, - Choisir
Localisation options, pour définir le pays du WiFi :WLAN Countryet choisr “France” - Changer le Hostname en
SolettaRPI
- Choisir
- Mettre à jour le système :
sudo apt update && sudo apt upgrade -y - Installer l’utilitaire bien pratique ‘mc’ :
sudo apt install mc
Configuration réseau
Le point d’accès est fourni par le CerboGX, dont :
- le WiFi est
venux-HQ2436EC93X-aea/xxxx - à l’adresse IP
172.24.24.1.
Le Raspberry y sera connecté via le point d’accès WiFi du CerboGX.
Pas réussi à utiliser un câble ethernet car il n’y avait pas de routage entre le WiFi et le câble au niveau du CerboGX.
Sur le WiFi, le Raspberry à pour IP 172.24.24.80
Installation de PostgresQL
- Installer un utilitaire qui sera utile si on veut utiliser les coordonnées géographiques :
sudo apt install software-properties-common -y - Installer la base de donnée :
sudo apt install postgresql - Devenir postgres :
sudo -i -u postgres psql - Changer le mot de passe de l’utilisateur ‘postgres’ :
\password postgreset entrer le nouveau mot de passexxxx, puis sortir avec :\q - Configurer l’accés distant et la base.
- Lancer mc pour trouver la version de postgresql (ici, 15) :
sudo nano /etc/postgresql/15/main/postgresql.conf
en ajoutant la lignelisten_addresses = '*'au dessus de"#listen_addresses = ’localho..."(vers la ligne 60) - S’assurer que la ligne suivante n’est pas commentée
port = 5432et sauvegarder. - Puis
sudo nano /etc/postgresql/15/main/pg_hba.confpour ajouter à la fin du fichier les lignes suivantes :
- Lancer mc pour trouver la version de postgresql (ici, 15) :
- Sauvegarder.
- Redémarrer postresql :
sudo systemctl restart postgresql - Créer les utilisateurs ‘devPi’ & ‘appli’
sudo -i -u postgres
createuser -P devPi-> mot de passexxxx
createdb -O devPi -E UTF8 piBase
createuser -P appli-> mot de passexxxx - et sortir :
exit
installation des services enez
- Installer pip :
sudo apt install python3-pip - Installer les bibliothèques requises :
sudo pip install requests Quart simplejson psycopg2-binary paho-mqtt python-dateutil --break-system-packages(avec sudo, sinon les services ne fonctionnent pas) - Créer le dossier “enez”
mkdir enez - Copier enezKreiz, enezDiaz & CerboGXkeepalive dans le dossier
/home/sol/enez/ - Supprimer les dossiers
__pycache__si présents. - Modifier les fichiers de configuration :
nano /home/sol/enez/enezDiaz/enezDiazConfig.py&nano /home/sol/enez/enezKreiz/enezKreizConfig.py - Lancer lenezKreiz afin de vérifier :
python /home/sol/enez/enezKreiz/enezKreiz.pyet aller vérifier le site web en visitanthttp://172.24.24.80:5000/ - En profiter pour configurer le broker MQTT :
172.17.24.1/8324/8423 - Lancer enezDiaz afin de vérifier :
python /home/sol/enez/enezDiaz/enezDiaz.py - Vérifier les chemins d’accès dans les fichiers de service :
nano /home/sol/enez/enezKreiz/enezKreiz.servicenano /home/sol/enez/enezDiaz/enezDiaz.service&nano /home/sol/enez/CerboGXkeepalive/CerboGXkeepalive.service. - Installer les services en copiant les fichiers
.servicedans le dossier/etc/systemd/system/:sudo cp /home/sol/enez/enezKreiz/enezKreiz.service /etc/systemd/system/,sudo cp /home/sol/enez/enezDiaz/enezDiaz.service /etc/systemd/system/&sudo cp /home/sol/enez/CerboGXkeepalive/CerboGXkeepalive.service /etc/systemd/system/ - Changer les permissions :
sudo chmod 644 /etc/systemd/system/enezDiaz.service,sudo chmod 644 /etc/systemd/system/enezKreiz,.service&sudo chmod 644 /etc/systemd/system/CerboGXkeepalive,.service - Préparer les services
sudo systemctl enable enezDiaz.service,sudo systemctl enable enezKreiz.service&sudo systemctl enable CerboGXkeepalive.service - Demander à systemd d’utiliser les nouveaux services :
sudo systemctl daemon-reload - Lancer les services :
sudo systemctl start enezKreiz.service,sudo systemctl start enezDiaz.service&sudo systemctl start CerboGXkeepalive.service
Module RTC
Afin de conserver un horodatage correct des données, il a été adjoint un module RTC DS3231 au Raspberry Pi, en s’inspirant de ce qu’a fait Alban sur son site TREVILLY.COM.
Cablage du module :
| RPI | DS3231 |
|---|---|
| 3.3 V (01) | VCC |
| I2c SDA (03) | SDA |
| I2C SCL (05) | SCL |
| GND (06 ou 09) | GND |
soit, de 1 vers 9 : blanc / noir / marron / - / gris
installation :
- Activer l’interface I2C
sudo raspi-configpuissudo reboot - Mettre à jour le système :
sudo apt update&sudo apt upgrade - Installé les outils :
sudo apt install python3-smbus i2c-tools - Vérifier le module RTC :
sudo i2cdetect -y 1. “68” doit être affiché - Configuration du module RTC :
sudo nano /boot/config.txtou plutôt du fichiersudo nano /boot/firmware/config.txt. Ajouter tout en basdtoverlay=i2c-rtc,ds3231puissudo reboot - Vérifier :
sudo i2cdetect -y 1. “68” doit être remplacé par “UU” - Supprimer le réglage horloge :
sudo apt -y remove fake-hwclockpuissudo update-rc.d -f fake-hwclock remove - Réactiver le composant matériel :
sudo nano /lib/udev/hwclock-setet commenter le bloc “if”if [ -e /run/systemd/system ] ; then - Vérifier l’heure du module :
sudo hwclock -D -r. Si pas à jour, et que l’heure du rpi est bonne, fairesudo hwclock -wet revérifier. (Pour mettre le rpi à la bonne heure :sudo date -s "16 OCT 2025 23:08:00") - Forcer l’heure du module RTC au démarrage : Modifier le fichier “rc.local” :
sudo nano /etc/rc.localet ajouter la lignesudo hwclock -s.