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
Température via MQTT
Dernier message : F1ATB
Il y a 1 heure
UxI 2 voies UDP
Dernier message : pchotard
Il y a 2 heures
Erreur 404 pour la page J...
Dernier message : F1ATB
Il y a 4 heures
Nouveau routeur photovolt...
Dernier message : H3rv3
Il y a 4 heures
Routeur F1ATB S3
Dernier message : F1ATB
Il y a 6 heures
problème prise T2
Dernier message : romain.massart
Il y a 6 heures
F1ATB S3 - Erreur de comp...
Dernier message : F1ATB
Il y a 7 heures
Organisation des post pou...
Dernier message : Sgb31
Aujourd’hui, 09:56 AM
routeur + régulation pour...
Dernier message : Sgb31
Aujourd’hui, 09:54 AM
Raccordement 3kW - tablea...
Dernier message : Olivier31
Hier, 02:59 PM

Statistiques du Forum
» Membres : 3,431,   » Dernier membre : trip2vip,   » Sujets du forum : 2,599,   » Messages du forum : 25,108,  
Statistiques complètes

  Nouvelle version affichage maisonnette
Posté par : F1ATB - 25-06-2024, 10:10 AM - Forum : Affichage Routeur Distant - Réponses (8)

Depuis la page :
https://f1atb.fr/fr/affichage-a-distance...lectrique/
vous pouvez à présent télécharger vers l'ESP32/TTGO le logiciel binaire de la maisonnette.
Une nouvelle version 9.01_DISP est proposée. Elle peut se connecter aux routeurs en version V9.xx_RMS ou V10.xx

A la première connexion, on peut rentrer le nom du Wifi (ssid) et le mot de passe (password) directement depuis la page web de téléchargement ou depuis le moniteur de l'Arduino IDE.

Cdlt
André

Imprimer cet élément

  Smart life avec le routeur solaire
Posté par : Seb - 25-06-2024, 09:11 AM - Forum : Routeur Photovoltaïque - Réponses (4)

Bonjour,

J'ai commencé mon routeur pour mon chauffe eau.
Ayant un Shelly E3M d'installé, j'arrive à récupérer les données ?

Merci pour le partage.

Comme indiqué dans le titre, j'ai aussi une multitude de boîtiers et relais Smart life et je souhaiterais pouvoir les commander via un ESP32 en fonction de ma production solaire.

Y a t'il une possibilité de faire cela ?

Puis-je en fait, détecter un ESP32 avec l'application Smart life afin de créer une scène pour commander tel ou tel relais par exemple en cas de sur-production ?

Merci par avance.

Imprimer cet élément

  Conseil réglages routeur Shelly-EM
Posté par : petar77 - 24-06-2024, 05:46 PM - Forum : Routeur Photovoltaïque - Réponses (21)

Bonjour à tous,

je me suis plongé dans la réalisation d'un routeur PV grâce à vos recommandations.

Je vous donne ma configuration actuelle :

  • Installation PV :
    880 Wc de puissance PV
    Routeur APS DS3 + passerelle ECU B
  • Routeur PV :
    Shelly EM en mesure avec un tore raccordé à l'arrivée PV, et un tore raccordé à l'arrivée générale Enedis
    ESP32Relais SSR Fotek 40-DA
    V10 du logiciel

Les jours de grand soleil, mes PV produisent jusque 800W, dont une grande partie repart sur le réseau Enedis faute de consommation à l'instant "T".

J'ai donc pour tester le système, raccordé un radiateur à bain d'huile de 2000W sur le routeur, donc puissance plus élevée que ce que produisent les panneaux. Lorsque branché et allumé, le bouton "on" du radiateur clignotte au rythme de la LED du relais SSR de manière très régulière, mais le radiateur chauffe bien, même assez vite en fait. Ma configuration ci-dessous :

_Multi-Sinus
_Réactivité 25
_Seuil PW : 100W (j'imagine qu'il s'agit du seuil d'énergie "perdue" sur le réseau Enedis à partir duquel l'énergie est distribuée par le routeur, si je me trompe corrigez moi !)

Compte-tenu de cette configuration, pouvez-vous confirmer les éléments suivants :

_Sur un appareil de puissance supérieure à la puissance disponible par les panneaux, quel comportement attendre ? le routeur via le relais SSR ajuste t-il dynamiquement la puissance transmise ou s'agit-il d'une simple ouverture fermeture du circuit et je devrais basculer sur un TRIAC ?

_Quelle configuration logicielle du routeur me conseilleriez-vous en l'état actuel des informations que je viens de donner ?

Encore merci pour tout ce beau travail accompli !

Marc

Imprimer cet élément

  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


Utilisateurs en ligne
Il y a actuellement 1062 utilisateurs connectés. » 4 Membre(s) | 1053 Visiteur(s)
Applebot, Bing, Facebook, Google, Twitter, christof01, cmichel, H3rv3

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