Bienvenue, Visiteur
Vous devez vous enregistrer avant de pouvoir poster.

Nom d’utilisateur
  

Mot de passe
  





Rechercher dans les forums

(Recherche avancée)

Derniers sujets
Novice pour projet de rou...
Dernier message : douxpoils
Il y a 4 heures
Connexion impossible entr...
Dernier message : Mike
Il y a 4 heures
planning help
Dernier message : Mike
Il y a 6 heures
Problème affichage second...
Dernier message : Chris13
Il y a 6 heures
Routeur sur Installation ...
Dernier message : Lolo69
Il y a 8 heures
MQTT : Energie Jour T so...
Dernier message : Titi_Mag
Il y a 9 heures
shelly EM gen4
Dernier message : F1ATB
Il y a 9 heures
Demande de précisions "In...
Dernier message : Mike
Il y a 9 heures
Branchement CP SUR LA PRI...
Dernier message : H3rv3
Hier, 02:26 PM
UxIx3 régression en V17 ...
Dernier message : piamp
03-05-2026, 05:50 PM

Statistiques du Forum
» Membres : 2,745,   » Dernier membre : Saxo,   » Sujets du forum : 2,336,   » Messages du forum : 21,876,  
Statistiques complètes

  Consommation au dessus de zero
Posté par : picsouman - 24-06-2024, 02:22 PM - Forum : Routeur Photovoltaïque - Réponses (11)

Bonjour,
J'ai l'impression que mon Triac reste enclenché un certain temps au dessus de "0" d'où une consommation de l'électricité d'EDF.
Ci-joint la capture d'écran.
Comment faire pour ne pas qu'il reste enclenché au dessus de "0" ?

   

   

Imprimer cet élément

  Pas d'accès Internet
Posté par : F1ATB - 24-06-2024, 02:21 PM - Forum : Evolutions faites, à faire, dont vous rêvez... - Réponses (6)

Serait il possible d’avoir la possibilité de mettre un parametrage pour changer l’adresse du serveur NTP afin de contacter une adresse NTP local sur le réseau ? Demande de Dragoncds

Imprimer cet élément

  Modifier la vitesse de transmission JSY-MK-XXX
Posté par : Blastmun - 24-06-2024, 01:28 PM - Forum : Routeur Photovoltaïque - Réponses (5)

Bonjour, je viens vers vous car je ne trouve pas comment modifier la vitesse de transmission du capteur JSY-MK-194T dans mon cas.
j'ai bien recuperé le JSY-MK194T.exe que je vous partage ici (j'ai un peu galéré à le trouver).
Par exemple je voudrais augmenter la vitesse de 4800 à  38400 bauds.

Merci D'avance



Pièces jointes
.zip   JSY-MK-194T.zip (Taille : 11.14 Ko / Téléchargements : 5)
Imprimer cet élément

  Réglages et graphiques
Posté par : OGM - 24-06-2024, 09:15 AM - Forum : Routeur Photovoltaïque - Réponses (2)

Bonjour
que pensez-vous svp de ces valeurs de réglages et les graphiques ?
J'avoue ne pas réussir à complétement les interpréter...
Il y en a "au calme" le matin vers 9h et l'autre dans l'apres-midi, avec toute la petite famille à la maison.

Merci



Pièces jointes Miniature(s)
           
Imprimer cet élément

  pb de maj V10 : Fail to download manifest
Posté par : Sgb31 - 24-06-2024, 09:08 AM - Forum : Routeur Photovoltaïque - Réponses (9)

Bonjour, 
Après avoir mis à jour sans soucis mon premier ESP en V10.0 via la procédure rapide, je viens de tenter de mettre à jour d emanière idem mùes deux autres esp sans succés
j'ai une erreur à la connexion usb "Fail to download manifest" sans pouvoir aller plus loin
test effectué sur mon ordi de bureau, ordi portable et même sur le premier ESP que j'avais pourtant bien maj de cette manière ...
Une idée ?

Gilles



Pièces jointes Miniature(s)
   
Imprimer cet élément

  Message d'erreur
Posté par : stephdam - 23-06-2024, 05:24 PM - Forum : Routeur Photovoltaïque - Réponses (6)

Bonjour André et tout d'abord un grand merci pour cet excellent travail que vous mettez à notre disposition !
J'étais en v7 et je viens de passer en v10. Bonne surprise de voir le graph de visualisation de l'état des relais, je voulais justement vous le demander  Smile

Alors rien de dramatique mais je voudrais savoir si c'est normal que j'aie toutes les 30 secondes le message d'erreur ci dessous dans la page "Données brutes" sachant que j'ai sélectionné "inactif" le "routage via triac" dans la page Actions puisque je n'utilise que des relais via gpio :

"23/06/2024 17:04:14 : Erreur : pas de signal Zc du gradateur/Triac"

Merci de votre support et bonne fin de journée


oups, désolé, j'ai trouvé, je n'avais pas vu qu'on pouvait paramétrer la présence de port série ou du triac dans les paramètres.

Imprimer cet élément

  Code OLED 128*64
Posté par : Raphael591 - 23-06-2024, 04:19 PM - Forum : Routeur Photovoltaïque - Réponses (180)

MESSAGE MAJ SI NOUVELLE VERSION.
  - 11/07/24 : Ecran 1, affichage T° au lieu et place de la version si sonde de température présente.
  - 15/07/24 : Gestion bouton poussoir(on/off ou on avec extinction auto) ou capteur de présence (on avec extinction auto).
                    Source pour les versions antérieur à la v12 : https://uploadnow.io/f/WWgyH2n
  - 12/10/24 : Adaptation version 12
  - 05/12/24 : Condensé 1 seul écran : Affichage logo au démarrage. Ensuite Ecran 1 alternance première ligne : injection/heure routage et Ip niveau wifi
  - 23/04/25 : Mise à jour suite à l'utilisation de la bib LovyanGFX par andré (Version >14.20)


Code d'affichage des infos du routeur pour écran OLED SH110X ET SSD1306

[Image: Capture-d-cran-2025-04-23-005016.png]



Nécessite une version 14_20

Les lignes à ajouter dans solar_router_V...ino :
  -  "InitSSD();" après la ligne "Serial.println("Booting");"
 - "OledAffiche();" après l'appel "EnergieQuotidienne();"



Créer un nouveau fichier (OLED.ino) dans le projet avec le code suivant :

A faire avant compilation du fichier :

   - Commenter/dé-commenter les lignes suivantes en fonction de votre écran.
   #define USE_SSD1306 1 //Pour les écrans SSD1306
   //#define USE_SH110X 1 //Pour les écrans SH1106


   - Définir les pin SDA,SCL pour l'écran : SDA_PIN et SCL_PIN ligne 34/35
   - Si vous voulez gérer un bouton poussoir/capteur de présence pour affichage ou non, définir le pin du bouton/capteur : pinBtnOled ligne 45
     Dans ce cas bouton ou capteur :
            - Définir le statut de l'écran à off au démarrage "OledState=false;" ligne 43
            - Définir le mode ligne 46, "ModeBtnOled" : 0 = bouton pour allumer/éteindre, 1 = Bouton/capteur pour allumer l'écran (Extinction auto après 40s)

1) Code
 

Code :
/***********************************
AFFICHAGE SUR SSD1306/SH110X
*************************************/

/*Reprise déclaration d'andré*/
//#include "EcranLED.h"
LGFXoled oled_screen;
LGFX_Sprite sprite(&oled_screen);  // Sprite = buffer secondaire dans lequel sera construite l'image à afficher avant d'être envoyée vers l'écran OLED.


#define OLED_BLACK 0x0000
#define OLED_WHITE 0xFFFF

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
// Définir les broches SDA et SCL personalisées pour écran
#define SDA_PIN 26 //26
#define SCL_PIN 25 //25

//Choisir son écran ICI ************************
#define USE_SSD1306 1 //Pour les écrans SSD1306
//#define USE_SH110X 1 //Pour les écrans SH1106
//Choix ecran *************************************

bool OLED_on = false; //Si problème avec l'écran, les procédures sont ignorées


//*******BOUTON OLED***********/
//Changement état gérer dans boucle affichage, déconseillé dans l'interruption.
//gestion de la latence du bouton
volatile unsigned long button_time = 0;
int btn_latence = 250; // Latence en ms
volatile bool OledState=true; //Statut oled On/Off (Mettre à la valeur désiré au démarrage)
volatile bool OledChange=true; //Changement sur bouton, true = applique le statut OledState (affichage oui/non)
int pinBtnOled = 0; //Indiquer ici le pin du bouton pour gérer l'écran/capteur de présence
int ModeBtnOled = 0; // 0 = bouton poussoir (on/off sur écran), 1 = capteur présence ou bouton poussoir pour allumage on (off automatique)
unsigned long DureeAffichage = 40000; //Durée affichage 40 secondes
//******BOUTON OLED ***********/

int MATERIEL_ROUTAGE=-1; //Pour la recherche TRIAC OU RELAIS



const unsigned char bitmap_Sun[] PROGMEM = {
  0x10,0x84, // ...#....#....#..
  0x08,0x08, // ....#.......#...
  0x01,0xC0, // .......###......
  0x07,0xF0, // .....#######....
  0x0F,0xF8, // ....#########...
  0x6F,0xFB, // .##.#########.##
  0x0F,0xF8, // ....#########...
  0x07,0xF0, // .....#######....
  0x11,0xC4, // ...#...###...#..
  0x20,0x02, // ..#...........#.
};

const unsigned char bitmap_Off[] PROGMEM = {
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x1F,0xF8, // ...##########...
  0x1F,0xF8, // ...##########...
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
};

const unsigned char bitmap_Signal1[] PROGMEM = {
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x40,0x00, // .#..............
  0xDD,0xDC  // ##.###.###.###..
};

const unsigned char bitmap_Signal2[] PROGMEM = {
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x04,0x00, // .....#..........
  0x0C,0x00, // ....##..........
  0x1C,0x00, // ...###..........
  0x5C,0x00, // .#.###..........
  0xDD,0xDC  // ##.###.###.###..
};

const unsigned char bitmap_Signal3[] PROGMEM = {
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x00, // ................
  0x00,0x40, // .........#......
  0x00,0xC0, // ........##......
  0x01,0xC0, // .......###......
  0x05,0xC0, // .....#.###......
  0x0D,0xC0, // ....##.###......
  0x1D,0xC0, // ...###.###......
  0x5D,0xC0, // .#.###.###......
  0xDD,0xDC  // ##.###.###.###..
};

const unsigned char bitmap_Signal4[] PROGMEM = {
  0x00,0x04, // .............#..
  0x00,0x0C, // ............##..
  0x00,0x1C, // ...........###..
  0x00,0x1C, // ...........###..
  0x00,0x5C, // .........#.###..
  0x00,0xDC, // ........##.###..
  0x01,0xDC, // .......###.###..
  0x05,0xDC, // .....#.###.###..
  0x0D,0xDC, // ....##.###.###..
  0x1D,0xDC, // ...###.###.###..
  0x5D,0xDC, // .#.###.###.###..
  0xDD,0xDC  // ##.###.###.###..
};

const unsigned char bitmap_Signal0[] PROGMEM = {
  0x03,0xE0, // ......#####.....
  0x1F,0xFC, // ...###########..
  0x3E,0x3E, // ..#####...#####.
  0x38,0x7E, // ..###....######.
  0x71,0xF7, // .###...#####.###
  0x73,0xC7, // .###..####...###
  0x77,0x87, // .###.####....###
  0x3F,0x0E, // ..######....###.
  0x3E,0x1E, // ..#####....####.
  0x1F,0xFC, // ...###########..
  0x03,0xE0, // ......#####.....
};

const unsigned char bitmap_Logo[] PROGMEM = {
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x03,0xC1,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x3F,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0xFF,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x01,0xFE,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x07,0xF8,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x0F,0xF0,0x60,0x61,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x3F,0xC0,0xE0,0x60,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x7F,0x80,0xE0,0x60,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0xFE,0x00,0xE0,0x60,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xFC,0x00,0xE0,0x60,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xF8,0x00,0xE0,0x60,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xF0,0x00,0xE0,0x60,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0xE0,0x60,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0xE0,0x60,0x00,0x7C,0x03,0xFE,0x0E,0x07,0xF1,0xFF,0x8F,0xF0,0x00,
  0x01,0xE0,0x00,0x60,0x60,0x00,0x7C,0x03,0xFF,0x1E,0x0F,0xF9,0xFF,0x8F,0xF8,0x00,
  0x01,0xE0,0x00,0x00,0x00,0x00,0x7C,0x03,0xFE,0x3E,0x0F,0xFC,0xFF,0x8F,0xF8,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x3E,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x03,0xFF,0xFC,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0E,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00,
  0x01,0xE0,0x00,0x7F,0xE0,0x00,0x7C,0x03,0x00,0x0F,0x0C,0x1C,0x18,0x0E,0x38,0x00,
  0x01,0xE0,0x00,0x3F,0xC0,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x1C,0x18,0x0F,0xF8,0x00,
  0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x0C,0x18,0x0F,0xF0,0x00,
  0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x1F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x7F,0xC0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x01,0xFF,0xFC,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x0F,0xFE,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x00,0x03,0xFF,0x80,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xE0,0x0F,0xE0,0xFF,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xF0,0x7F,0x80,0x3F,0xF1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x01,0xF9,0xFF,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0xFF,0xFC,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0xFF,0xF8,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x7F,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x1F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 
};

int cligSun = 0;
int BoucleOled = 0;



//Initialisation
void InitSSD(){
   //OLED init
  //Pour SSD1306
  #if(USE_SSD1306)
  oled_screen.LGFXoled_init(SDA_PIN, SCL_PIN, 1);  //SDA , SCL et SSD1306
  #endif

  //Pour écran SH110X
  #if(USE_SH110X)
  oled_screen.LGFXoled_init(SDA_PIN, SCL_PIN, 0);  //SDA , SCL et SSH1106
  #endif

  //FORCE RESET DE L'ECRAN SI PIN PARTICULIER POUR RESET
  if(OLED_RESET != -1) {
    pinMode (OLED_RESET, OUTPUT);
    digitalWrite(OLED_RESET, HIGH);
    digitalWrite(OLED_RESET, LOW);
    delay(100);
  }
  if (oled_screen.begin()) {
    OLED_on=true;
    oled_screen.setRotation(2);
    oled_screen.setBrightness(255);
    oled_screen.setTextFont(1);
    oled_screen.setTextColor(OLED_WHITE, OLED_BLACK);
    sprite.createSprite(128, 64);
    OledLogo();
   
    //Partie gestion bouton
    if(pinBtnOled > 0) {
      pinMode(pinBtnOled, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(pinBtnOled), OledBouton, RISING) ;
      }
  }
}

//contenue écran 1
void Ecran1(int info = 0){
 
  if(OLED_on==false || !OledState) {
    return;
  }
  sprite.setTextSize(1);
  sprite.setTextColor(OLED_WHITE);
  sprite.setCursor(0,1);

  //Info première ligne (Ip, Injectée + Heure routé)
  switch (info)
  {
    case 0 :
      //IP
      if (WiFi.status() == WL_CONNECTED) {
        sprite.print(WiFi.localIP().toString());
      }
      else {
      (WiFi.getMode() == WIFI_STA)==false ? sprite.print(WiFi.softAPIP().toString()) :  sprite.print(F("Pas de wifi !"));
      }
      break;

    case 1 :
      //Info injection et heure routé
      //int v = (int) ((EnergieJour_M_Injectee)/10);
      //float f = v/100 ;
      sprite.print("I ");sprite.print(EnergieJour_M_Injectee);sprite.print(" w");
      float H = 0;
      sprite.setCursor(64,0);
      if(MATERIEL_ROUTAGE != -1 ) H = LesActions[MATERIEL_ROUTAGE].H_Ouvre;
      sprite.print("H ");sprite.print(H);
      break;

  }

  //Ligne de séparation
  sprite.drawLine(0,13,128,13,OLED_WHITE);

  //Puissance sonde maison
  sprite.setCursor(0,16);
  sprite.println(F("Puissance"));
  sprite.setCursor(0,29);
  sprite.setTextSize(2);
  sprite.print(int(PuissanceS_M - PuissanceI_M));
 
  sprite.setTextSize(1);
  //Ouverture du triac/ssr
  int Ouv = -1;
  if(MATERIEL_ROUTAGE != -1) {
    Ouv = 100 - Retard[MATERIEL_ROUTAGE];
  }
  if(Ouv>0 && info==0) {
    //Icone clignote, signale le routage
    if(cligSun==0) {
      sprite.drawBitmap(92, 0, bitmap_Sun , 16, 10, OLED_WHITE);
      cligSun=1;
    }
    else {
      cligSun=0;
      sprite.drawBitmap(92, 0, bitmap_Off , 16, 10, OLED_WHITE);
    }
  }
  else {
    //Pas de triac/relais...
  }
  sprite.setCursor(0,38);
  if(Ouv == -1) {
    sprite.setCursor(73,16);
    sprite.print(F("Ouv")); //Triac erreur
    sprite.drawRect(60, 16, 10, 33, OLED_WHITE);
    sprite.setCursor(82,30);
    sprite.print(F(" !"));
  }
  else {
    //Affiche jauge Triac/Relais
    sprite.setCursor(72,16);
    sprite.print(F("Ouv"));
    sprite.drawRect(60, 16, 10, 33, OLED_WHITE);
    float t = (float(33)/100)*Ouv;
    sprite.fillRect(60+2, 16+(33-int(t)), 10-4 , int(t), OLED_WHITE);
    sprite.setTextSize(2);
    sprite.setCursor(73,29);
    sprite.print(Ouv);
    sprite.setTextSize(1);
  }

  // Affichage de la température canal 0
  if (TemperatureValide[0] > 0){
    sprite.setCursor(0, 57);
    sprite.print(F("T "));
    sprite.print(int(temperature[0]));
  }
  else
  {
    sprite.setCursor(0, 57);
    sprite.print(F("V"));
    sprite.print(Version);
  }

  //Affichage durée de fonctionnement ESP32
  int T = int(millis() / 1000);
  float DureeOn = float(T) / 3600;
  String durOn=String(DureeOn)+"h";
  sprite.setCursor(108-(durOn.length()*6),57);
  sprite.print(durOn);
}

//barre d'action affiché en ecran 1
void BarreEtatDroite(int info = 0) { /*Affiche une barre d'état WIFI et mode action*/
   if(OLED_on==false || !OledState) {
    return;
  }
  sprite.setTextSize(1);
  sprite.setTextColor(OLED_WHITE);
  sprite.drawLine(110,13,110,64,OLED_WHITE); //Ligne séparatrice à droite
  //Niveau Wifi
  if (info == 0) {
    if (WiFi.status() == WL_CONNECTED) {
      //Icone niveau connection
      int NivSignal = int(WiFi.RSSI()) ;
      if (NivSignal<-80) {sprite.drawBitmap(112, 0, bitmap_Signal1 , 16, 12, OLED_WHITE); }
      else if(NivSignal<-60) {sprite.drawBitmap(112, 0, bitmap_Signal2 , 16, 12, OLED_WHITE); }
      else if(NivSignal<-45) {sprite.drawBitmap(112, 0, bitmap_Signal3 , 16, 12, OLED_WHITE); }
      else if(NivSignal<-30) {sprite.drawBitmap(112, 0, bitmap_Signal4 , 16, 12, OLED_WHITE); }
    }
    else {
      (WiFi.getMode() == WIFI_STA)==false ? sprite.drawBitmap(112, 0, bitmap_Signal0 , 16, 11, OLED_WHITE) : sprite.drawBitmap(112, 0, bitmap_Signal0 , 16, 11, OLED_WHITE);
    }
  }
  //Mode en cours du Triac/ssr...
  int Mode = 0;
  float laTemperature = -120;
  if (TemperatureValide[0] > 0) {  //La température de ce canal est valide
    laTemperature = temperature[0];
  }
  if (MATERIEL_ROUTAGE != -1) Mode = LesActions[MATERIEL_ROUTAGE].TypeEnCours(HeureCouranteDeci, laTemperature, LTARFbin, Retard[MATERIEL_ROUTAGE]);
  sprite.setCursor(115,17);
  sprite.setTextColor(OLED_WHITE);
  if(Mode!=1){
    sprite.print(F("OF"));
  }
  else {
    sprite.fillRect(114,16,13,10,OLED_WHITE);
    sprite.setTextColor(OLED_BLACK);
    sprite.print(F("OF"));
  }

  sprite.setCursor(115,29);
  sprite.setTextColor(OLED_WHITE);
  if(Mode!=2){
    sprite.print(F("ON"));
  }
  else {
    sprite.fillRect(114,28,13,10,OLED_WHITE);
    sprite.setTextColor(OLED_BLACK);
    sprite.print(F("ON"));
  }

  sprite.setCursor(115,41);
  sprite.setTextColor(OLED_WHITE);
  if(Mode!=3){
    sprite.print(F("PW"));
  }
  else {
    sprite.fillRect(114,40,13,10,OLED_WHITE);
    sprite.setTextColor(OLED_BLACK);
    sprite.print(F("PW"));
  }

  sprite.setCursor(115,53);
  sprite.setTextColor(OLED_WHITE);
  if(Mode!=4){
    sprite.print(F("TR"));
  }
  else {
    sprite.fillRect(114,52,13,10,OLED_WHITE);
    sprite.setTextColor(OLED_BLACK);
    sprite.print(F("TR"));
  }
  sprite.setTextColor(OLED_WHITE);
}

//Affichage du logo
void OledLogo() {
  oled_screen.clear();
  oled_screen.drawBitmap(0, 0, bitmap_Logo , 128, 68, OLED_WHITE);
}

//Gestion du bouton
void OledBouton() {
   switch (ModeBtnOled)
   {
   case 0 :
      //Gestion bouton poussoir (allume/éteint)
      if (button_time > millis()) break;
      OledState = !OledState; // inverse l’état de la variable
      button_time = millis() + btn_latence;
      OledChange=true;
    break;
  
   case 1 :
      //Capteur ou bouton avec extinction auto (allume)
      if (button_time > millis()) break; //on garde la notion de latence
      if (OledState == false) {
        OledState = true; // inverse l’état de la variable
        button_time = millis() + btn_latence;
        OledChange=true;
      }
    break;

   default:
    break;
    }
}


//Procédure boucle des écrans
void OledAffiche(){
  if(OLED_on==false) {
    return;
  }
  if(ModeBtnOled==1 && OledState==true) {
    //Contrôle durée d'affichage
    if(button_time-btn_latence+DureeAffichage < millis()) {
      //Durée affichage dépassé, on éteint
      OledState=false;
      OledChange=true;
    }
  }
  sprite.fillScreen(0x0000); // Efface le buffer (l'écran)
  if (OledChange) {
    OledChange=false; //Changement traité
    if(OledState) {
      BoucleOled=0; //reprise début boucle écran
    }
    else {
      oled_screen.clear();
      oled_screen.display();
      return;
    }
  }
  if(MATERIEL_ROUTAGE == -1) {
    //Recherche matériel
     for (int i = 0; i < NbActions; i++) {
        if(LesActions[i].Actif != 0 && MATERIEL_ROUTAGE == -1 ) MATERIEL_ROUTAGE=i;
     }
  }
  if (BoucleOled <= 10 ) {
      //Ecran 1
      BarreEtatDroite(1); //Sans WIFI
      Ecran1(1); //Affiche avec entête info
      sprite.pushSprite(0, 0);  // Publie le buffer sur l'écran sans aucun scintillement
      BoucleOled++;
  }
  else if (BoucleOled <= 12 ) {
      //Ecran 2
      BarreEtatDroite(0); //Avec niveau WIFI
      Ecran1(0); //Affiche avec entête IP
      sprite.pushSprite(0, 0);  // Publie le buffer sur l'écran sans aucun scintillement
      BoucleOled++;
  }
  else {
    BoucleOled=0;
  }
}

Imprimer cet élément

  commande externe
Posté par : lucky - 23-06-2024, 02:52 PM - Forum : Routeur Photovoltaïque - Réponses (2)

Bonjour,
J aimerai savoir si il est possible de commander les sorties relais "gpio etc " depuis une commande externe.
exemple domoticz ou autre domotique.
pas des centaines biensur y a pas la place Big Grin

les routeurs sont placé generalement pas tres loin des tableaux elec, ca eviterait d autre montage espeasy par exemple ..........

donc si oui avec quelle style de commande ?

dans l attente

tres bonne journée

Imprimer cet élément

  Reboot intempestif et aléatoire
Posté par : Jesus De Rezoneth - 23-06-2024, 12:25 PM - Forum : Routeur Photovoltaïque - Réponses (5)

Bonjour à tous et un grand merci à André pour le partage de ses travaux bien utiles à tous.

Je suis en train de finaliser mon routeur et je suis confronté à un souci de reboot intempestif. Je précise que tout fonctionne bien, le triac s'ouvre ...etc
J'ai déjà exposé mon problème sur un groupe Facebook et André a évoqué le fait que l'esp reboute s'il ne reçoit pas de mesure ou si celle-ci n'est pas au bon format.
J'ai donc poursuivi mes tests pour vérifier ce point et il s'avère que le reboot se fait à peine 30 secondes après la réception d'une mesure, parfois moins.
Les mesures sont transmises par MQTT, je n'ai pour l'instant pas d'autre possibilité.

Voici les logs juste avant reboot:
11:35:02.549 -> PuissanceMaison{"Pw":-76}
11:35:28.787 -> Niveau Signal WIFI:-59
11:35:28.787 -> IP address_: 192.168.1.80
11:35:28.787 -> WIFIbug : #0
11:35:28.787 -> ComBug : #0
11:35:28.787 -> Charge Lecture RMS (coeur 0) en ms - Min : 1 Moy : 1  Max : 1
11:35:28.787 -> Charge Boucle générale (coeur 1) en ms - Min : 0 Moy : 0  Max : 1
11:35:28.787 -> ESP32 ON depuis : 0.29 heures
11:35:36.963 -> E (1077466) task_wdt: Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:
11:35:36.963 -> E (1077466) task_wdt:  - Task_LectureRMS (CPU 0)
11:35:36.963 -> E (1077466) task_wdt: Tasks currently running:
11:35:37.016 -> E (1077466) task_wdt: CPU 0: IDLE0
11:35:37.016 -> E (1077466) task_wdt: CPU 1: IDLE1
11:35:37.016 -> E (1077466) task_wdt: Aborting.
11:35:37.016 -> E (1077466) task_wdt: Print CPU 0 (current core) backtrace
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 -> Backtrace: 0x4008c8c3:0x3ffbd6d0 0x400faea1:0x3ffbd6f0 0x4008f0bf:0x3ffbd710
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 ->
11:35:37.016 -> ELF file SHA256: 56faff2703ee20e1
11:35:37.016 ->
11:35:37.016 -> Rebooting...

Imprimer cet élément

  TRIAC ROBODYN 40A
Posté par : guillaume87 - 22-06-2024, 02:01 PM - Forum : Routeur Photovoltaïque - Réponses (11)

Bonjour, 

je viens de faire l'installation d'un routeur solaire avec un TRIAC ROBODYN 40A.

Après tous les réglages effectuer et les raccordements, dans mes "données brutes", mon TRIAC n'à pas l'air reconnue " Nombres d'interruptions en 15 ms du Gradateur ( signal ZC ) : Filtrés/Brutes : Pas de Triac ".

Est ce que mon TRIAC est HS ? ou ai-je fais un erreur ?

Merci de votre aide.

Cordialement.

Imprimer cet élément


Utilisateurs en ligne
Il y a actuellement 367 utilisateurs connectés. » 0 Membre(s) | 360 Visiteur(s)
Applebot, Baidu, Bing, Facebook, Google, Twitter, Yandex

Moteur MyBB, © 2002-2026 Melroy van den Berg.