Projet: Hacker le BlueTooth de Victron avec un ESP32 M5Stack

Hello,

Je débute juste un nouveau projet qui peut intéresser d'autres contributeurs. Le voici en résumé.

En deux mots: Construire à base d'un M5Stack Core 2 un clone du Cerbo GX + GX Touch de Victron qui sont super, mais un peu cher.
Pour commencer, l'objectif serait déjà de pouvoir afficher les données d'un Smart Solar pour avoir quelques infos sur la production solaire.

, ce qui permet en théorie de récupérer les données de tous leurs appareils "Smart" (chargeurs, régulateurs, shuts, ...). Mais ça n'a pas l'air aussi simple, en tout cas pour moi.
J'ai commencé à essayer de comprendre le , ...
Si vous êtes familiers avec ces technos, vos lumières seront les bienvenues.

Là où je butte en ce moment c'est pour trouver les UUID des "caractéristics" des valeurs (voltages, ampérage,...) d'un SmartSolar. Je me sers de l'App Android nRF connect pour les snifer, mais je n'arrive pas à les trouver.

Ma plateforme est l'IDE Arduino en C++ .
Il semblerait qu'autour de Victron on parle pas mal le Python, mais je ne m'y suis pas encore mis.
Les sous étapes du projet sont:
- Connexion en client BLE au SmartSolar.
- Récupération des données . UUID et GATT, là j'ai du mal pour le moment.
- Décryptage . Les données Victron seraient cryptées, la clé de cryptage est effectivement donnée par l'App Victron Connect. Ca c'est simple à obtenir, mais comment l'utiliser ?
- Affichage des données. Ca c'est simple.
Amicalement.
FX

L'équipage
01 jan. 2024
01 jan. 2024

Les UUID sont dans la page que tu as mise en lien.


01 jan. 2024

Les UUID des valeurs remontées.


fxvt:Hello FredericL,
J'ai vu ça effectivement sur la page en question, et me semble-t-il dans une page de code sur un github. Mais cette liste est incomplète et je n'arrive pas à trouver la liste complète des UUID pour les données que le SmartSolar peut envoyer.
Par ailleurs, dans l'app nRF Connect je ne retrouve pas du tout ces valeurs quand je me connecte à mon régulateur.
Je vais creuser...·le 01 jan. 18:42
01 jan. 2024

Cela sert à quoi ??
OU
Servira à quoi ??


Lady_C:la réponse est à la 3eme ligne de la demande·le 01 jan. 18:44
fxvt:En deux mots ça servira a avoir en affichage permanent ces données sans avoir à consulter son smartphone car j'aime bien être connecté mais pas au point de naviguer avec mon téléphone à la main.
Et puis c'est aussi pour le plaisir de programmer qqchse.·le 01 jan. 18:45
Trimaran:Matsyl, ça sert à prendre du café le soir, à faire des cauchemars ? A oublier l'essentiel de la voile !·le 01 jan. 21:55
01 jan. 2024
01 jan. 2024

Fais une recherche sur github avec "victron ble", tu devrais trouver ton bonheur.
github.com[...]ron_ble
Sur github.com[...]ron-ble , dans le dossier tests, il y a des identifiants de données dans le code.


01 jan. 2024

Je ne sais pas si cela peut te servir, mais il y a quelques temps déjà, j'avais écrit un petit programme arduino pour récupérer les données du Smartshunt 500A/50mV de Victron afin de l'afficher dans OpenCPN.

D'origine, ces données sont transmises via le protocole VE.Direct en Bluetooth sur tablette et téléphone, mais je souhaitais avoir un affichage permanent dans OpenCPN et autres, ce qui m'évite ainsi d'utiliser mon téléphone

Comme il s'agit d'une phrase Nmea0183, je peux l'afficher aussi de façon indépendante dans une petite fenêtre déplaçable, écrite en python (si nécessaire et quand j'utilise un autre programme de nav').

Quelques infos sur cette

voili, voilà...


fxvt:Hello Schnaps,
J'ai fait un peu la même chose en récupérant les données de notre BMV700 pour les envoyer sur le réseau nmea2000 également avec la library de Victron. Mais c'était en filaire donc ça allait.
Là où j'ai du mal parce que c'est nouveau pour moi c'est qu'avec le régulateur solaire smart c'est du bluetooth BLE avec cryptage mis en place par Victron pour la sécurité, ce qui est normal, mais un peux sioux car pas encore bien documenté.
Mais ça va venir.
Amicalement.
FX·le 02 jan. 22:16
MMW33:@bmayer Cela ne te rappelle t-il pas un petit devoir pré-retraite ? ou mets tu cela sur le compte d'un alzeimer opportunément hyper précoce, voire juvénile ;+) ;+) ·le 09 jan. 11:42
02 jan. 2024

un cerbo GX n'est pas si cher... consomme peu en plus


fxvt:Hello cedric1983,Oui ce n'est pas exorbitant mais si on veut un affichage permanent des données il faut y ajouter un gx Touch. Et on arrive à 400€. Un M5Stack coûte environ 50 €. Fois dix.
J'y viendrai peut être au cerbox , c'est simple à raccorder au nmea2000, en plus on a l'appli Victron sur l'Axiom, mais l'affichage ne serait pas permanent et sur nos autres afficheurs comme les i70 ou les Triton T41 les donnes de type régulateur ne sont pas encore affichables.
Amicalement.
FX·le 02 jan. 22:09
04 jan. 2024

salut,
je ne sais pas si tu lis l'anglais, mais il y a dans cette discussion :
community.victronenergy.com[...]on.html
un post du 9 may 2022 d'un certain : Wolfgang huse qui semble avoir fait ce que tu veux faire.

en cherchant son nom sur google, je suis tombé sur un github qui semble etre le sien, ou il y a le fichier INO correspondant :
github.com[...]ble.ino

peut être une piste ?


fxvt:Hello,
Merci nitrosails pour ces liens.
J'avais déjà lu et relu le 1er lien du blog de Victron ainsi que son développement de 2023. En revanche je n'avais pas poussé aussi loin que toi en creusant du coté de ce Wolfgang Huse.
Et ça valait la peine car son script a l'air pas mal après l'avoir parcouru rapidement et complilé.
Il a été écrit pour le Victron SmartShunt. Je vais donc voir comment l'adapter au Victron SmartSolar et au Smart BMV712.
Pour le moment, j'ai toujours les mêmes points d'attention: Pour les UUID je vais tester un autre snifer BLE que nRF Connect qui est BLE Scanner. Et je ne vois pas dans le script de W.Huse de décryptage des données. Ne serait-elles pas cryptés sur le SmartShunt comme elles le sont sur le SmartSolar ? Mystère pour le moment.
Amicalement.
FX·le 04 jan. 15:08
Lady_C:@fxvt : l'esp32 dispose d'un module de chiffrement/déchiffrement. je ne suis pas un grand connaisseur du BT 4.0, mais je dirais que le déchiffrement est fait à la volée lors de la communication BT, les clés ayant été implémentées aux lignes 309-312.·le 05 jan. 10:13
05 jan. 2024

Une piste: Signal K et le plugin signalk-victron-ble ( github.com[...]ron-ble & github.com[...]ron-ble )


fxvt:Hello Sailabout,
Merci pour ces liens. J'avais repéré ces infos...en Python. Si je n'avance pas assez vite en C++ il va falloir que je me mette au Python.
Amicalement.
FX·le 05 jan. 09:58
Lady_C:sur esp32, ce n'est pas du Python, mais du microPython.
toutes les fonctions et librairies du Python ne sont pas forcément portables.·le 05 jan. 10:09
Schnaps :@ fxvt : Le python est largement à ta portée...·le 05 jan. 10:53
05 jan. 2024

fxvt:Hello Lady_C
Merci pour ces liens. Le premier qui est une communication de Victron est celui qui m'avait décidé à commencer ce petit projet.
Quant aux autres liens, je les avais également noté mais pas encore eu le temps de les étudier. Dans ces scripts le puzzle semble se compléter, il y est question d'adresse mac, de clé de cryptage. On progresse.
Merci.
Amicalement.
FX·le 05 jan. 11:57
05 jan. 2024

Salut,

tu as aussi la doc open source de Victron:



Bon ca date un peu ...

Bonnes nav en 2024

Pascal


08 jan. 2024

peut etre que tu peux trouver des infos ici :

github.com[...]ple.ino


Lady_C:Comme déjà dit·le 08 jan. 15:27
nitrosails:Oups effectivement....Désolé·le 09 jan. 11:24
08 jan. 2024

un up pour suivre !


08 jan. 2024

Hello,
J'ai fait quelques essais à bord ce weekend après avoir adapté le sketch github.com[...]Display
à mon M5Stack Core2 et ça fonctionne.
En fait il y a plusieurs méthodes pour se connecter en bluetooth aux appareils Victron et ça ne rend pas la tâche plus simple.
J'ai déjà refait l'affichage pour qu'il soit un peu plus attrayant. Je vous posterai une petite image.
J'ai déjà commencé à voir comment y ajoute une seconde connexion BLE sur le Smart BMV702 pour avoir en plus le SOC et le solde des Ah de la batterie.

Mais c'est vrai que c'est très cool, sans sortir son téléphone ou la tablette, d'avoir pour une dizaine d'Euro l'affichage de:
- Voltage Panneaux
- Ampérage Panneaux
- Voltage Batterie
- Ampérage Batterie (entrant)
- Production du jour
Et quand le BMV sera connecté:
- % remplissage de la batterie
- Solde Ampères Entrant/Sortant de la Batterie.

J'avais déjà le SOC, le voltage et les Ah sur le réseau NMEA2000, mais là c'est sympa de l'avoir sur ce petit afficheur qui ne coute rien par rapport à un Raymarine i70 :-)
Amicalement.
FX


08 jan. 2024

Voici un premier template pour avoir un petit aperçu.
Mais il y a encore pas mal d'ajustements prévus.



a_guy:Super ! Bravo je crois que je vais aussi me lancer mais juste pour mon chargeur de quai !·le 09 jan. 14:11
Corvette:Bravo 👍·le 23 avr. 14:04
21 avr. 202421 avr. 2024

Hello,
J'ai avancé sur ce petit POC.
Le M5Stack Core 2 communique en Bluetooth avec :

le régulateur solaire Victron SmartSoalar 75/15 pour affcher
- Production en W du panneau
- les A sortant du régulateur vers la batterie
- la production journalière
- la phase du cycle de charge (Absorption, bulk...)

Le Moniteur de batterie Victron SmartBMV 712 dont il affiche:
- le % de charge de la batterie
- le bilan en A de la batterie, (en orange si on décharge, comme sur l'image)
- le voltage de la batterie
- le temps restant pour être à 100% de charge. Petit pb d'affichage.

Je pense peut-être porter ce petit projet sur un wt32-sc01 plus qui offre un affichage un peu plus gros sans trop consommer.

Voici le résultat.
Amicalement.
FX



BenjiC34:Trop bien! :) ·le 22 avr. 12:56
21 avr. 2024

Je viens de recharger la vidéo qui ne passait pas.


22 avr. 2024

Pfuîîî...
Bravo !

Perso, j'ai également réalisé un affichage mais en moins bien...

A partir du Smartshunt 500A/50mV, je récupère les data à l'aide d'un programme arduino pour ensuite les afficher dans un écran TFT 3.5. (tension batterie lithium, SOC, puissance consommée, batterie moteur, etc.).

Par wifi (nmea4wifi), j'affiche également ces données sur OpenCPN dans le cockpit.

Sur OpenCPN (comme sur l'écran TFT), l'affichage change de couleur sous un certain seuil et une alarme retentit.

Pour l'instant, j'en reste là, mais j'observe ton travail avec attention...


Corvette:Vraiment bien 👍 Côté consommation, on parle de combien watt/heure environ ?·le 25 avr. 14:55
bleterrier:bonjour, ton travail m'interresse. dans le sens ou j'aimerai faire deux boitiers en ESP32:un émetteur a la place du victron à 100€ avec un shunt 100a de type fr.aliexpress.com[...]16.html le modele STC13-100 sort 1volt pleine charge de quoi lire la tension directment sur une entree analogique. qu'en pense tu ?J'ai actuellement un shunt conventionnel cablé en filaire mais il y a des pertes de tension sur la longueur du fil.·le 20 juin 19:52
fxvt:Attention l'appareil en lien Aliexpress est fait pour mesurer des courants alternatifs semble-t-il.·le 20 juin 20:19
24 avr. 2024

Hello Schnaps,

Ton montage est pas mal du tout! Il est surtout bien fini et bien intégré.
Du coup j'ai plein de questions:
- D'où vient le boitier, est-ce le l'impression 3D ?
- Quelle carte as tu utilisé Uno, Méga, ESP32... ?
- Quel circuit utilises tu pour l'alim 12V > Carte ?
- Quelle liaison utilises tu entre le SmartShunt et la carte, cable VE-Direct ou Bluetooth ?
- Utilise tu la bibliothèque Victron VE-direct ?
- L'afficheur de droite sur la seconde photo affiche quoi, des niveaux de réservoir ?
- Si ce sont des niveaux, quels capteurs utilises tu ?

Amicalement.
FX


26 avr. 202426 avr. 2024

Bonjour François-Xavier,

Désolé du retard à répondre.
Beaucoup de questions...

- D'où vient le boitier, est-ce le l'impression 3D ?

En effet, ce sont des boitiers que j'ai imprimés moi-même, après en avoir dessiné et testé différents modèles. J'ai finalement trouvé par hasard le STL sur Thingiverse et il me convient parfaitement. Il permet de caser l'écran shield et tous les fils que je fais sortir au dos du boitier dans le minimum d'espace.
On ne le voit pas sur la photo, mais sur le côté il y un accès pour le câble USB dédié, s'il faut modifier/améliorer le programme.

- Quelle carte as tu utilisé Uno, Méga, ESP32... ?

Une Mega, car plusieurs E/S et correspond à la taille du shield TFT 3.5

- Quel circuit utilises tu pour l'alim 12V > Carte ?

Simple alimentation 12v/9v acheté sur Amazon et/ou Aliexpress.

- Quelle liaison utilises tu entre le SmartShunt et la carte, cable VE-Direct ou Bluetooth ?

Ni l'un ni l'autre (le câble VE-direct est trop cher pour cela). Un câble deux fils sur le TX et Gnd de la sortie VE-Direct du Smartshunt connecté au RX(x) et TX(x) de l'arduino.

- Utilise tu la bibliothèque Victron VE-direct ?

Oui

- L'afficheur de droite sur la seconde photo affiche quoi, des niveaux de réservoir ?

Un reliquat de mon précédent bateau...
Affichage du Reste-Eau et du Reste-Fuel en pourcentage et volume. L'affichage des deux demi-camemberts est issu du lien que je t'avais envoyé (et que tu avais déjà, je crois).
Les données de la ligne du dessous (pression, heures moteur et la batterie moteur) ne sont pas temporisées, ce qui me permet de vérifier de suite si tout fonctionne normalement.

- Si ce sont des niveaux, quels capteurs utilises tu ?

Pour le fuel, une jauge capacitive.
Pour le réservoir eau, c'est plus compliqué : j'ai installé à la sortie de la pompe à eau un capteur à effet Hall, mais j'ai du mal à l'étalonner correctement.
J'avoue que ce n'est pas une priorité d'autant que je ne souhaite pas percer le haut du réservoir pour y mettre une jauge résistive ou capacitive...
Là également, il s'agit d'une carte Méga.

En fait, toute cette installation est difficilement duplicable, notamment dû au fait que j'ai créé des phrases Nmea0183 spécifiques, en plus des existants, ce qui me donne plus de souplesse dans l'affichage des données sur OpenCPN et/ou TZ.

En effet, autant l'affichage dans le carré est sympa et utile, autant l'affichage des données batterie (tension et SOC) sur le PC tablette dans le cockpit m'est beaucoup plus utile, quand je suis en solo.

Au départ, j'avais "tweaker" le plugin dashboard d'OCN pour afficher ces données mais je ne les avais donc pas sur les autre softs ou sans lancer OCN au préalable.
J'ai donc écrit un petit programme en python qui permet d'afficher un bandeau déplaçable avec ces deux données et ainsi, en fonction du programme ouvert, je peux afficher ou non ces données, et ce, n'importe où sur l'écran qui est dans le cockpit.

Mais comme toute bonne bidouille non indispensable, je continue (en fonction de mon temps libre) à modifier/améliorer ce système... ;-)


19 juin 2024

Hello,
Le projet d'afficheur et terminé.
Voici quelques illustrations.
C'est plutôt cool, plus joli que le BMV. Ca reprends en bluetooth les infos principales de l'App Ve-Connect (SmartBMV et SmartSolar) et ça m'évite d'avoir à sortir mon téléphone.

Le boitier est une impression 3D (Merci à Schnaps pour l'idée).
Il a été réalisé par TEC-NAUTIC ( tec-nautic.fr[...] ) bien connu sur ce Forum, et qui entre-autre impressions 3D propose d'autres articles originaux et à la pointe.

Amicalement.
FX



20 juin 202420 juin 2024

Superbe !

Tu pourrais faire un petit résume sur le type de carte (toujours sur M5Stack Core2 ?) et le soft utilisé ?

Merci


20 juin 2024

Hello Fxvt
Devant la difficulté à lire l'affichage d'un BMV, j'ai bricolé quelque chose.
Mais (il y a toujours un mais) :
Ce n'est pas par bluetooth, c'est bêtement filaire (communication série toute bête)
Ce n'est pas un Arduino, c'est un raspberry Pico
Ce n'est pas en C Arduino, c'est en Python.
gitlab.com[...]ronNmea

Au plaisir de te lire


fxvt:Hello BMayer,
C'est pas mal du tout. ! C'est vrai que l'affichage du BMV est indigent.
En tout cas bravo d'avoir eu le courage de ranger tout ça dans Github. Il faudra que je m'y mette...quand j'aurais le temps.Il faudra que je me mette aussi au Python pour essayer. Je vois qu'il y a pas mal de projets intéressants écrits en Python.Pour un autre projet j'ai aussi utilisé, comme toi, la sortie série derrière le précédent BMV qui n'était pas encore "Smart". Ca m'a permis d'envoyer sur le réseau NMEA2000 les données du BMV.
En tout cas c'est très chouette de la part de Victron d'être ouvert et surtout de documenter leurs I/O . De ce coté ils ne sont pas avares comme certains autres constructeurs.
Amicalement.
FX·le 21 juin 12:16
matelot@19001:Je suppose que vous parlez de la sortie série des BMV 600S et 602S, avez-vous trouvé un document Victron sur le format des données disponibles sur cette sortie ?·le 22 juin 00:31
fxvt:Hello,
C'est ici : www.google.com[...]/url BMayer l'a également mis dans son github dont il donne le lien dans son message.
Amicalement.
FX·le 22 juin 08:15
fxvt:Ce lien est plus pérenne:
www.victronenergy.com[...].33.pdf ·le 22 juin 09:49
matelot@19001:Merci ! Je vais regarder ça.·le 22 juin 11:50
21 juin 202421 juin 2024

Hello,
@a_guy qui demande des précisions.
Je n'ai pas gardé le M5Stack Core 2 qui m'avait servi de POC. L'écran était trop petit.

  • est une wt32-sc01 plus. C'est pratique car ça embarque le processeur, l'écran (480x320 tactile), et même un slot SD Card et d'autres features. C'est du tout en un, pas besoin de chercher des libraries pour l'écran le BLE ou autre chose. Pour 38€ port compris c'est très chouette. l'alim se fait par une USB C standard et il y a un carénage, un cadre, sur la face avant. Il suffit de fermer le dos par un boitier en impression 3D que Tec-Nautic a fabriqué. On trouve plusieurs fichiers d'impression sur le net, attention la version "PLUS" de la carte est un peu plus grande que la version de base.

datasheet: www.marutsu.co.jp[...]LUS.pdf
La version "PLUS" a plus de mémoire
Coté connexion , il n'y a donc que l'alim de l'USB C. J'ai donc intercalé entre la carte et le
12V du bord un . J'ai mis un qui était plus pratique.
En commandant la carte ne pas oublier de commander aussi l'outil de debuggage qui est en fait un circuit complémentaire qui ne sert que pour uploader le code. Ensuite on l'enlève, il ne reste pas branché.
La connexion avec les appareils Victron SmartBMV et SmartSolar se fait en Bluetooth Low Energy.
Sinon c'est codé en C++ avec l'IDE Arduino car en fait c'est un l'ESP32.
Amicalement.
FX


BMayer (LauBen):Sympa comme tout cette petite carte !@Fxvt : La doc précise d'utiliser un outil "downloader", probablement un outil windows...Pour ceux qui n'utilisent pas windows, cette carte peut t'elle être chargée avec le GUI Arduino "standard" ?Merci d'avance.·le 22 juin 11:12
Lady_C:comme spécifié, c'est un esp32, donc utilisable à travers l'IDE Arduino.
en fait, l'IDE Arduino, lors du téléchargement, appelle les modules de transfert installés avec le gestionnaire de cartes Esp32.
le module de transfert Esp32 qu'on voit dans la documentation de cette carte est d'ores et déjà disponible dans les tréfonds des arborescences de l'IDE Arduino. ·le 22 juin 11:23
fxvt:"L'outil Downloader" doit être une mauvaise traduction à la chinoise de ce qu'ils appellent le "debugging tool", terme qui n'est d'ailleurs pas plus clair...
En fait c'est un petit circuit avec une prise usb C male qui se branche sur la carte, et qui possède à son tour une usb femelle qui se branche sur le PC (perso je suis en Windows).
Et du coup l'upload de code de l'IDE Arduino vers la carte se fait "normalement", comme si on avait branché un simple Arduino UNO. Une fois l'upload fait, on peut débrancher ce petit module et utiliser la prise USB de la carte juste pour son alim.
Je ne sais pas quel OS tu as ni comment tu branches ce type de carte quand tu dois uploader mais ça doit être très approchant.
Je n'ai pas regardé en détail ce petit circuit, mais ça resemble à une interfce pour gérer les liaisons USB, un peu comme le CH340. Peut être qu'il faut un pilote windows pour que ça marche, mais je n'ai pas fait attention car sur les PC que j'utilise ce driver est déjà monté.
Dans l'IDE Arduino il faut choisir ESP32 comme carte et plus précisement "ESP32S3 dev module"" . Puis dans les caractéristiques de la carte fau enabeler la PSRAM pour bénéficier de l'extension de la mémoire, sinon ça se comporte comme la carte "non-PLUS", c'est à dire la version de base avec un peu moins de mémoire.
Amicalement.
FX·le 22 juin 14:06
Lady_C:ce "petit circuit" est une interface USB-TTL, pour les circuits qui ne peuvent être branchés directement en USB, comme ceux-là www.amazon.fr[...]/s en abaisseur de tension, on peut aussi utiliser www.amazon.fr[...]/s , ce qui évite de rajouter un câble usb, susceptible d'oxydation et de mauvais contact. à régler au multimètre pour avoir la bonne tension.
j'utilise pour abaisser une tension batterie vers la tension de charge d'une Baofeng (9 volts).·le 22 juin 14:22
Phare de Port-Navalo

Phare du monde

  • 4.5 (105)

Phare de Port-Navalo

2022