Compiler depuis les sources

RBgrid est une application firmware pour ESP32, et non une bibliothèque que l'on lie à votre propre sketch. « Compiler depuis les sources » signifie compiler l'image du hub telle quelle et la flasher sur la carte ; vous configurez ensuite les capteurs et les unités à l'exécution depuis l'application web ou l'API (voir Concepts → Sensors & Units).

📦 Source : le code source du firmware est publié sur github.com/rb-amp/RBgrid, avec les fichiers LICENSE, COMMERCIAL.md et NOTICE.

Prérequis

  • Carte : un ESP32 avec PSRAM — obligatoire (RBgrid utilise la PSRAM ; il ne fonctionne pas sur un ESP32 qui en est dépourvu). Un ESP32-WROVER, ou, à partir de la v1.1.8, un ESP32-S3 sur le module N16R8. 16 Mo de flash, et sur un WROVER, 16 Mo avec PSRAM est la variante la moins courante ; vérifiez donc une carte que vous possédez déjà avant d'y compter — esptool.py -p <PORT> flash_id indique ce qu'elle contient (omettez --chip et esptool détecte la carte lui-même).
  • Chaîne d'outils : ESP-IDF v5.5.1 — avec laquelle la version est compilée à partir de la v1.1.7. v5.4.1 compile aussi le même arbre, il n'est donc pas nécessaire de modifier une installation déjà en place. Cible esp32, ou esp32s3 pour un hub ESP32-S3.
  • openssl sur la machine de compilation (utilisé une seule fois pour générer le certificat de développement).

Licence

Le firmware RBgrid est source-available sous la licence PolyForm Noncommercial 1.0.0 — utilisation, modification et compilation libres pour un usage personnel et non commercial ; l'usage commercial exige une licence (contactez info@rbamp.com). Ce n'est pas une licence OSI « open source ». Les fichiers LICENSE, COMMERCIAL.md et NOTICE se trouvent dans le dépôt ; le code source de l'application web se trouve dans webapp/ sous la même licence.

Étapes de compilation

  1. Cloner le dépôt : bash git clone https://github.com/rb-amp/RBgrid.git cd RBgrid
  2. Générer le certificat de développement (une fois, avant la première compilation). Cela écrit un certificat de développement auto-signé que la compilation intègre (rbgrid_dev_cert.pem + rbgrid_dev_key.pem, valable 10 ans) ; la clé privée n'est pas livrée dans le dépôt. Le hub sert l'application web en HTTP simple sur votre réseau local ; HTTPS n'est pas une fonctionnalité destinée à l'utilisateur. bash components/rbpower/certs/gen_dev_cert.sh
  3. (Facultatif) définir votre propre mot de passe de point d'accès de première connexion. Copiez le modèle et définissez un mot de passe de 8 à 63 caractères : bash cp components/rbpower/include/ap_provision.example.h components/rbpower/include/ap_provision.h # edit ap_provision.h and set your AP password Si vous ne le faites pas, la compilation utilise la valeur publique du modèle et affiche un avertissement ; vous pourrez définir votre propre mot de passe plus tard dans l'application (Settings → Hub access point).

  4. Compiler : bash idf.py build

  5. Flasher par USB (écrit le bootloader, la table de partitions, les données OTA et l'application) : bash idf.py -p <PORT> flash <PORT> est le port série de la carte (par exemple /dev/ttyUSB0, COM3).

Après ce premier flash USB, le hub peut être mis à jour par voie hertzienne (OTA) — vous envoyez une nouvelle image depuis l'application web. Le firmware conserve deux emplacements OTA avec retour arrière.

Pas de chaîne d'outils ? Flashez plutôt les quatre fichiers de la dernière version ; la commande esptool et le SHA-256 de chaque fichier figurent dans les notes de version.

Installer l'application web

Vous pouvez vous passer de cette étape et ouvrir l'application sur webapp.rbgrid.io (Chrome ou Edge, sur le même réseau que le hub). Pour avoir l'application sur le hub lui-même, installez-la une fois. Elle est fournie dans un paquet séparé sur la page de la version, rbgrid-ui_v1.1.5.zip (kit/ + ui-manifest.json côte à côte). Décompressez-le puis installez-le sur le hub via son API :

bash
HUB=http://<your-hub-address>     # e.g. http://192.168.4.1 on the hub's own Wi-Fi
cd kit                              # in the folder where you unpacked the zip
for f in $(find . -type f | sed 's|^\./||'); do
  curl -sf -X POST "$HUB/api/system/ui-upload?path=$f" \
       -H 'Content-Type: application/octet-stream' --data-binary "@$f" || { echo "upload failed: $f"; exit 1; }
done
curl -sf -X POST "$HUB/api/system/ui-commit" -H 'Content-Type: application/json' --data-binary @../ui-manifest.json

Si vous avez défini un jeton d'API, ajoutez -H "Authorization: Bearer <token>" aux deux appels. Pour construire le paquet vous-même depuis webapp/ : npm ci puis npm run build:embedded (voir webapp/README.md).

L'accès navigateur au hub est limité à une liste d'autorisation : les pages du hub et l'application RBgrid (https://webapp.rbgrid.io, https://demo.rbgrid.io) sont toujours autorisées. Pour lancer l'application web depuis votre propre adresse (par exemple http://localhost:5173), ajoutez-la dans l'application sous Settings → Browser access (CORS) ; 8 sites au maximum.

Premier démarrage

  1. Le hub démarre son propre réseau Wi-Fi, rbgrid-<mac4> (les quatre derniers caractères de son adresse MAC), protégé par le mot de passe de première connexion.
  2. Rejoignez-le et ouvrez 192.168.4.1.
  3. Enregistrez votre Wi-Fi domestique pour que le hub rejoigne votre réseau.
  4. Facultatif : définissez votre broker MQTT dans l'application (Settings → Home Assistant) : le hub n'en livre aucun par défaut.

Le Wi-Fi propre au hub reste actif pour que vous puissiez toujours l'atteindre. Changez son mot de passe dans l'application (Settings → Hub access point) et définissez un jeton d'API (Settings → Security), pour que personne à proximité ne puisse modifier votre hub.

Ensuite, ouvrez l'application sur webapp.rbgrid.io ou installez-la sur le hub (ci-dessus), ajoutez vos modules rbAmp et liez des canaux à des points comme dans Concepts → Sensors & Units et First Measurements. Après l'ajout de points, redémarrez le hub pour qu'ils commencent à conserver leur historique.

🔒 Sur le réseau local, les écritures dans l'API du hub restent ouvertes tant que vous n'avez pas défini de jeton d'administration (POST /api/system/token). Il est recommandé d'en définir un.