Messages : 322
Sujets : 5
Inscription : Jun 2024
Réputation :
24
(16-06-2025, 09:51 PM)Rakibou a écrit : mon problème, et ma question, c'est : où je mets ça ?
Je suppose qu'il faut emballer ça dans une fonction, et mettre sa déclaration, son setup et son exécution au(x) bon(s) endroit(s) dans le code existant...
Faire une fonction n'est pas obligatoirement nécessaire. Concernant le lieu, vu que la source de mesure est Enphase un endroit qui me semble adapté serait juste après l'appel à LectureEnphase() (ligne 985 de Solar_Router_V14_25.ino). En le faisant à cet endroit, pas besoin de rajouter un delay et à chaque mise à jour depuis Enphase les nouvelles valeurs seront envoyées.
Messages : 229
Sujets : 0
Inscription : Sep 2024
Réputation :
50
Comme tu as deja le code « tout » seul ca devrait etre simple, avec les conseils de Mike tu devrais t en sortir, si ce n ´est pas le cas , fais signe à la communauté, je regarderai de plus près les 2 codes sources.
Messages : 28
Sujets : 1
Inscription : Feb 2025
Réputation :
0
Merci Mike et merci Lolo.
Pour la partie loop, l'emplacement indiqué par Mike me semble parfait.
Il faut que je regarde où mettre la partie setup (qui figure peut-être déjà quelque part).
Merci de votre coup de main, je vous tiens au courant.
Messages : 242
Sujets : 12
Inscription : Jun 2024
Réputation :
12
pas exactement comme ça.
il te faut, dans une fonction setup, définir et ouvrir un port série sur des GPIO que tu choisis pour discuter avec ton Arduino.
Ensuite, il faut créer une seconde fonction “envoi_data_vers_Arduino”.
Serial_begin et Serial_print sont des noms “réservés” pour le lien série via USB.
et inspire-toi de ce qui est fait pour l’interface série UxIx3. tant pour le setup que pour la communication.
V14.21 modifiée. 1 serveur UxIx3, 1 Linky de référence, 1 client Triac CE tampon + 1 client SSR CE tampon + 1 client SSR sur CE tri + 3 clients SSR sur 3 radiateurs bain d'huile d'appoint. Variateurs de fréquence Piscine.
8 panneaux (3 SE 2 S, 3 SO ) 425Wc sur 4 HM800 produisent 20kWh par jour au 16 Mars.
Messages : 28
Sujets : 1
Inscription : Feb 2025
Réputation :
0
Merci !
Si je suis tes recommandations, ça ressemblerait à ça :
(pas trop sûr du paramètre 8N1, on peut ne rien mettre ?)
Code : //deja présent dans solar_router_v14_25.ino
//les broches tx et rx sont celles choisies dans l'interface :
//Port Serie 2 - Remplace Serial2 qui bug
HardwareSerial MySerial(2);
byte pSerial = 0; //Choix Pin port serie
int8_t RXD2 = -1, TXD2 = -1; //Port serie
int8_t RX2_[] = { -1, 16, 26, 18, 5 };
int8_t TX2_[] = { -1, 17, 27, 19, 17 };
//déjà présent, ou ajouté par moi dans solar_router_v14_25.ino
// la broche 14 est affectée à un relais on-off dans les actions
// les 2 variables int existent et sont lisibles (testé)
int PactProd = 0;
int PactConso_M = 0;
enab = digitalRead(14);
bool enab = false;
//initialisation
void Setup_data_vers_ardu() {
MySerial.begin(9600, SERIAL_8N1, RXD2, TXD2); //PORT DE CONNEXION AVEC ARDUINO
}
//fonction envoi des données
void data_vers_ardu() {
// Formater la chaîne : "0;0;1" ou "0;0;0"
String data = String(PactProd) + ";" + String(PactConso_M) + ";" + String(enab ? 1 : 0);
MySerial.println(data); // Envoi des données par UART
}
En plaçant data_vers_ardu() à l'endoit indiqué par Mike ?
Messages : 229
Sujets : 0
Inscription : Sep 2024
Réputation :
50
17-06-2025, 06:42 PM
(Modification du message : 17-06-2025, 06:43 PM par Lolo69.)
8 bits
None pas de parité
1 bit de stop
Le tout c est de regler des deux cotés pareils
C est la valeur par defaut donc peu utile
Messages : 62
Sujets : 6
Inscription : Oct 2024
Réputation :
6
fait gaffe au niveau de tension , le TX du uno en 5V et entrée RX de l esp32 en 3v3 faut utiliser un pont diviseur pour etre sûr.
Messages : 28
Sujets : 1
Inscription : Feb 2025
Réputation :
0
(17-06-2025, 06:53 PM)59jag a écrit : fait gaffe au niveau de tension , le TX du uno en 5V et entrée RX de l esp32 en 3v3 faut utiliser un pont diviseur pour etre sûr.
En effet, pour l'instant ça ne fonctionne pas. C'est peut-être ça, je n'en suis pas sûr.
Je vais me procurer un convertisseur de niveaux, ça éliminera un des problèmes ;)
Messages : 28
Sujets : 1
Inscription : Feb 2025
Réputation :
0
19-06-2025, 06:39 PM
(Modification du message : 19-06-2025, 06:39 PM par Rakibou.)
Quand ça veut pas...
En attendant mon convertisseur de niveaux, je fais des tests de transmission de données par uart entre 2 esp.
J'ai mis sur un esp de test "émetteur" un bout de code qui envoie la valeur d'un compteur sur la liaison série.
Sur un autre esp "récepteur", je récupère bien la valeur du compteur.
Quand l'émetteur de test est remplacé par le RMS, je récupère les données et je les envoie sur la liaison série définie dans les paramètres.
J'envoie aussi sur le moniteur série la valeur des données et le port tx utilisé. Tout va bien sauf...
je ne récupère rien côté récepteur.
J'ai à peu près tout testé, changement de port tx, vérification du câblage, simplification de la chaine envoyée... rien ne passe sur le récepteur, il ne voit aucune donnée envoyée par le RMS. Il reste en attente.
Comment pourrais-je être sûr que c'est bon côté émetteur, càd que des données sont bien envoyées sur le TX choisi dans les paramètres du RMS ?
Messages : 28
Sujets : 1
Inscription : Feb 2025
Réputation :
0
(17-06-2025, 07:02 AM)Lolo69 a écrit : Comme tu as deja le code « tout » seul ca devrait etre simple, avec les conseils de Mike tu devrais t en sortir, si ce n ´est pas le cas , fais signe à la communauté, je regarderai de plus près les 2 codes sources.
J'ai effectivement le code qui me permet d'envoyer les données qui m'intéressent à l'arduino.
Ca fonctionne avec mon esp32 de test, mais pas avec le rms, malgré l'adaptation scrupuleuse du code (pour l'uart et les variables).
J'ai toujours l'impression que mon envoi de chaine vers l'uart n'arrive pas jusqu'à la broche tx... et je ne comprends toujours pas pourquoi.
Lolo, si ton offre tient toujours, je peux te faire passer le code en question... je ne veux pas polluer le forum avec mes questions qui sont un peu hors sujet (j'en ai bien conscience) et qui n'intéressent pas grand monde.
Merci !
|