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

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_Guest pour accéder à Internet
    • Changer la locale en fr_FR et l’utiliser comme défaut .
    • Définir FR pour le WiFi
  • Accèder en SSH au nouveau système.
  • Avec sudo raspi-config, choisir Advanced options / Expand filesystem puis Reboot en quittant.
  • Avec sudo raspi-config,
    • Choisir Localisation options, redéfinir la locale quand même fr_FR.UTF-8 UTF-8,
    • Choisir Localisation options, pour définir le pays du WiFi : WLAN Country et choisr “France”
    • Changer le Hostname en SolettaRPI
  • 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 postgres et entrer le nouveau mot de passe xxxx, 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 ligne listen_addresses = '*' au dessus de "#listen_addresses = ’localho..." (vers la ligne 60)
    • S’assurer que la ligne suivante n’est pas commentée port = 5432 et sauvegarder.
    • Puis sudo nano /etc/postgresql/15/main/pg_hba.conf pour ajouter à la fin du fichier les lignes suivantes :
	host    all             all             172.17.24.1/24          md5
	local   all             devPi                                   peer
  • Sauvegarder.
  • Redémarrer postresql : sudo systemctl restart postgresql
  • Créer les utilisateurs ‘devPi’ & ‘appli’
    sudo -i -u postgres
    createuser -P devPi -> mot de passe xxxx
    createdb -O devPi -E UTF8 piBase
    createuser -P appli -> mot de passe xxxx
  • 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.py et aller vérifier le site web en visitant http://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.service nano /home/sol/enez/enezDiaz/enezDiaz.service & nano /home/sol/enez/CerboGXkeepalive/CerboGXkeepalive.service.
  • Installer les services en copiant les fichiers .service dans 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-config puis sudo 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.txt ou plutôt du fichier sudo nano /boot/firmware/config.txt. Ajouter tout en bas dtoverlay=i2c-rtc,ds3231 puis sudo reboot
  • Vérifier : sudo i2cdetect -y 1. “68” doit être remplacé par “UU”
  • Supprimer le réglage horloge : sudo apt -y remove fake-hwclock puis sudo update-rc.d -f fake-hwclock remove
  • Réactiver le composant matériel : sudo nano /lib/udev/hwclock-set et 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, faire sudo hwclock -w et 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.local et ajouter la ligne sudo hwclock -s.