NeoBerry : un tableau de bord Web complet pour votre Raspberry Pi

Facebook Twitter Google Plus Instagram YouTube Twitch

✨ NeoBerry est un projet open-source ambitieux, pensé pour transformer votre Raspberry Pi en véritable station de contrôle numérique. Ce tableau de bord moderne et modulaire permet une gestion complète des fonctionnalités matérielles et systèmes : GPIO, Bluetooth, performances du processeur, température, accès réseau, tout y est centralisé.

Conçu en Python avec Flask pour le backend et JavaScript pour le frontend, NeoBerry offre une expérience utilisateur fluide, avec une interface pastel douce et responsive, adaptée à une utilisation tactile comme desktop.

 


🗂️ Architecture du projet

Le projet suit une organisation propre et modulaire, permettant une maintenance aisée, ainsi qu’un développement collaboratif :


NeoBerry/
├── LICENSE
├── NeoBerryTree.txt
├── README.txt
├── run_neoBerry.sh
├── install_neoBerry.sh
└── app/
    ├── app.py
    ├── core/
    │   ├── __init__.py
    │   ├── auth.py
    │   ├── battery.py
    │   ├── bluetooth.py
    │   ├── gpio.py
    │   ├── graph.py
    │   ├── infosys.py
    │   ├── network.py
    │   ├── system.py
    │   └── voltage.py
    ├── static/
    │   ├── css/
    │  	│    ├── animations.css
    │  	│    ├── battery.css
    │  	│    ├── bluetooth.css
    │  	│    ├── gpio.css
    │  	│    ├── infosys.css
    │  	│    ├── index.css
    │  	│    ├── layout.css
    │  	│    ├── metrics.css
    │  	│    ├── reset.css
    │  	│    ├── terminal.css
    │  	│    ├── time.css
    │   │    └── voltage.css
    │   ├── img/
    │   └── js/
    │       ├── battery.js
    │       ├── bluetooth.js
    │       ├── gauges.js
    │       ├── gpio.js
    │       ├── graph.js
    │       ├── infosys.js
    │       ├── list.js
    │       ├── main.js
    │       ├── network.js
    │       ├── status.js
    │       ├── time.js
    │       ├── utils.js
    │       ├── voltage.js
    │       └── watchdog.js
    ├── templates/
    │   ├── index.html
    │   └── login.html
    └── utils/
        ├── __init__.py
        └── gpio_helpers.py

Chaque fichier a une fonction précise, aucun répertoire n’est laissé vide ou inutile. Les fichiers core/ encapsulent les fonctionnalités métier (Bluetooth, GPIO, réseau, etc.), tandis que le JS est découpé intelligemment pour ne charger que ce qui est nécessaire.

*Vue de l’interface depuis le mode DEV – Via VMWare « Linux Ubuntu 25.04″*


🌐 Fonctionnalités détaillées

🔹 Gestion GPIO

NeoBerry vous permet de contrôler toutes les broches GPIO via une interface visuelle :

  • Lecture des entrées numériques
  • Activation/désactivation des sorties
  • Support des interruptions futures
  • Mode simulation automatique si lancé hors Raspberry Pi

🔹 Interface terminal simulé

Une zone inspirée d’un terminal UNIX, mais entièrement dynamique :

  • Résultats du scan Bluetooth affichés en temps réel
  • Curseur clignotant (▮) et scroll automatique
  • Surlignage des périphériques sélectionnés (fond rose, texte blanc)
  • Barre de scroll pastel personnalisée (teinte turquoise/rose)

Extrait JS côté client pour afficher les résultats :

function injectBluetoothDevices(devices) {
  const list = document.getElementById("paired-devices-list");
  list.innerHTML = "";

  devices.forEach(device => {
    const li = document.createElement("li");
    li.textContent = `[ ${device.name} - ${device.mac} ]`;
    li.classList.add("device-line");
    li.onclick = () => li.classList.toggle("selected");
    list.appendChild(li);
  });
}

🔹 Bluetooth complet

Le module Bluetooth de NeoBerry est un des plus complets jamais proposés dans une interface Raspberry Pi :

  • Activation/désactivation via rfkill
  • Scan avec bluetoothctl ou hcitool
  • Affichage live dans la zone terminal
  • Appairage via agent on et gestion PIN personnalisée
  • Suppression des appareils appairés
  • Affichage de la puissance RSSI sous forme de jauge

🔹 Système et performances

  • CPU, RAM, température, swap
  • Module Batterie + Surveillance tension électrique
  • Graphiques sur les dernières 24H : connexion internet + stabilité tension
  • Interface canvas personnalisée (Cadran avec jauges aux couleurs dégradées)
  • Réactualisation automatique côté client

🔹 Sécurité et login PAM

  • Connexion avec identifiants Linux du système (via PAM)
  • Aucune donnée personnelle stockée côté serveur
  • python-dotenv pour la Flask Secret Key

 

 


🧪 Exemple de code : Activation GPIO et retour terminal

@app.route("/gpio/toggle", methods=["POST"])
def toggle_gpio():
    data = request.get_json()
    pin = data.get("pin")
    state = data.get("state")
    GPIO.setup(pin, GPIO.OUT)
    GPIO.output(pin, GPIO.HIGH if state else GPIO.LOW)
    return jsonify({"status": "ok", "pin": pin, "new_state": state})
fetch("/gpio/toggle", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ pin: 17, state: true })
});

⚙️ 1 – Installation

🔧 1.1 Installation manuelle (Environnement hors Raspberry Pi – mode DEV)

« `bash
git clone https://github.com/D-Goth/NeoBerry.git
cd NeoBerry
sudo apt install python3-flask python3-gpiozero python3-psutil python3-requests python3-werkzeug python3-gunicorn
python3.13 app/app.py

« « 

> Accédez ensuite à l’interface via :
> http://localhost:5000

🔧 1.2 Installation manuelle (Environnement Raspberry Pi – mode PROD)

« `bash
git clone https://github.com/D-Goth/NeoBerry.git
cd NeoBerry
chmod +x install_neoBerry.sh
sudo ./install_neoBerry.sh
chmod +x run_neoBerry.sh
sudo ./run_neoBerry.sh [–start, –stop, –restart, –status]

« « 

* ✅ Test lancement avec Gunicorn [Optionnel]

« `bash
cd app
gunicorn –bind 0.0.0.0:5000 app:app

« « 

⚙️ Utilisation du script run_neoBerry.sh

Démarrer NeoBerry

« `bash
./run_neoBerry.sh –start

« « 

Arrêter NeoBerry

« `bash
./run_neoBerry.sh –stop

« « 

Redémarrer NeoBerry

« `bash
./run_neoBerry.sh –restart

« « 

Vérifier l’état de l’application

« `bash
./run_neoBerry.sh –status

« « 

⚙️ Créer un service systemd → auto au démarrage

« `bash
sudo cp neoBerry.service /etc/systemd/system/flask-dashboard.service
sudo systemctl enable flask-dashboard
sudo systemctl start flask-dashboard

« « 

> Accédez ensuite à l’interface via :
> http://localhost:5000

🧪 2. Mode Test (hors Raspberry Pi)

NeoBerry peut être exécuté sur un environnement de test sans Raspberry Pi en activant le mode simulation des GPIO.

* : Créer et activer un environnement virtuel

« `bash
sudo apt install python3.13-venv
python3.13 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app/app.py

« `

> L’application détectera automatiquement qu’elle ne tourne pas sur un Raspberry Pi et activera le mode simulation sur les broches GPIO.

 

 


🔭 Ce qui rend NeoBerry unique

  • Aucun framework JS externe (Vue/React) — que du vanilla JS optimisé
  • CSS pastel custom pour une interface accessible et douce
  • Code structuré en modules clairs (auth, gpio, bluetooth, etc.)
  • Adapté au tactile (responsive testé sur tablette et téléphone)
  • Mode simulation automatique pour développement sans Raspberry Pi

📅 Liens utiles


🔧 NeoBerry est open-source, toute contribution est bienvenue.
⭐ Si ce projet vous plaît, laissez une étoile sur GitHub !

Leave a Reply