![]() |
|
Peut-on échanger des données entre F1ATB et Calc ? - Version imprimable +- F1ATB forum (https://f1atb.fr/forum_f1atb) +-- Forum : Forum de F1ATB (https://f1atb.fr/forum_f1atb/forum-3.html) +--- Forum : Routeur Photovoltaïque (https://f1atb.fr/forum_f1atb/forum-4.html) +---- Forum : Evolutions faites, à faire, dont vous rêvez... (https://f1atb.fr/forum_f1atb/forum-10.html) +---- Sujet : Peut-on échanger des données entre F1ATB et Calc ? (/thread-1966.html) Pages :
1
2
|
Peut-on échanger des données entre F1ATB et Calc ? - phisebe - 07-11-2025 Bonjour à Chacun, L'idée sous-jacente est de se passer de HW/SW domotique pour échanger avec F1ATB. Si c'est possible Comment récupérer les données de la page d'accueil ? Pour aller plus loin encore, pourrait-on agir sur la page actions Quelles seraient les commandes reconnues et leur syntaxe? Peut-être ce n'est pas possible, mais je récupère déjà la production horaire des panneaux en interrogeant par des macros python sur Libre office Calc le Shelly 2PM intercalé entre le réseau et les µOnduleurs. Alors pourquoi pas? Merci de votre lecture, et vous avez le droit de casser mon rêve Cdt Oui ... ça ose tout c'est à cela qu'on les reconnaît ;-) RE: Peut-on échanger des données entre F1ATB et Calc ? - Mike - 07-11-2025 Bonjour, Il y a ce endpoint qui donne les principales informations de la page d’accueil : http://ipDuRouteur/ajax_dataRMS Peut-être que cela peut aider. RE: Peut-on échanger des données entre F1ATB et Calc ? - phisebe - 08-11-2025 Merci Mike c'est un bon début, cela permet de récupérer les données de la page données brutes. si tu as d'autres idées je suis preneur. Mais déjà celle ci va me permettre d'aller fouiller les .ino pour voir si par analogie je ne peux trouver d'autres data. Sais tu de la même manière changer une valeur dans une page, et la valider, bien sûr? Cdt Philippe RE: Peut-on échanger des données entre F1ATB et Calc ? - Mike - 08-11-2025 Pour changer les paramètres des actions c'est le endpoint /ActionsUpdate mais il y a énormément de paramètres donc le plus "simple" c'est d'utiliser le "developer tools" de ton navigateur (F12 pour Firefox et Chrome) et d'aller dans le tab network et de regarder la requête qui part quand tu appuies sur sauvegarder. Pouvoir changer tous les paramètres risque d’être compliqué mais en revanche si les changements que tu recherches sont limités, tu peux les effectuer via la page des actions du routeur avec le "developer tools" ouvert, et récupérer la requête qui correspond de manière à pouvoir l'effectuer à nouveau depuis l’extérieur. RE: Peut-on échanger des données entre F1ATB et Calc ? - 59jag - 08-11-2025 si ca peux t aider ? DONNÉES TEMPS RÉEL : /ajax_data → Puissances, énergies principales /ajax_etatActions → État de toutes les actions /ajax_etatActionX → État d'une action spécifique /ajax_Temperature → Températures uniquement ? HISTORIQUES : /ajax_histo48h → 50h de données (5min) /ajax_data10mn → 10min de données (2s) /ajax_histo1an → 1 an d'énergie quotidienne ? CONTRÔLE : /ForceAction → Forcer ON/OFF/AUTO /SetGPIO → Contrôle GPIO direct ⚙️ CONFIGURATION : /HourUpdate → Mise à jour heure /restart → Redémarrage ESP32 /ajaxRAZhisto → RAZ historiques ?️ SYSTÈME : /ajax_dataESP32 → Infos système /ajax_dataRMS → Données brutes source /ajax_Noms → Noms des actions ═══════════════════════════════════════════════════════════════ 1. ROUTES DE LECTURE DES DONNÉES ═══════════════════════════════════════════════════════════════ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_data │ │ Méthode : GET │ │ Description : Données principales de la page d'accueil │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_data STRUCTURE DE LA RÉPONSE (séparée par GS=chr(29)) : ┌─── BLOC 0 : Informations générales ───────────────────────┐ │ Séparateur : RS (chr 30) │ │ │ │ [0] = "Deb" │ │ [1] = Date/Heure (ex: "08/11/2025 14:32") b │ │ [2] = Source (ex: "UxIx2", "Linky", "Enphase", etc.) │ │ [3] = LTARF (Tarif Linky si applicable) │ │ [4] = STGEt (État STGE Linky si applicable) │ │ [5] = Températures (séparées par RS) │ │ [6] = Pva_valide (validation puissance apparente) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 1 : Puissances Maison ────────────────────────────┐ │ Séparateur : RS (chr 30) │ │ │ │ [0] = PuissanceS_M (Puissance active soutirée en W) │ │ [1] = PuissanceI_M (Puissance active injectée en W) │ │ [2] = PVAS_M (Puissance apparente soutirée en VA) │ │ [3] = PVAI_M (Puissance apparente injectée en VA) │ │ [4] = EnergieJour_M_Soutiree (Énergie du jour en Wh) │ │ [5] = EnergieJour_M_Injectee (Énergie du jour en Wh) │ │ [6] = Energie_M_Soutiree (Énergie totale en Wh) │ │ [7] = Energie_M_Injectee (Énergie totale en Wh) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 2 : Puissances Triac (si UxIx2 ou Shelly) ────────┐ │ Structure identique au BLOC 1 mais pour le Triac │ │ Présent uniquement si source = UxIx2 ou Shelly monophasé │ │ │ │ [0] = PuissanceS_T │ │ [1] = PuissanceI_T │ │ [2] = PVAS_T │ │ [3] = PVAI_T │ │ [4] = EnergieJour_T_Soutiree │ │ [5] = EnergieJour_T_Injectee │ │ [6] = Energie_T_Soutiree │ │ [7] = Energie_T_Injectee │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 3 : Fin ──────────────────────────────────────────┐ │ [0] = "Fin\r" │ └───────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_etatActions │ │ Méthode : GET │ │ Description : État de toutes les actions configurées │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_etatActions STRUCTURE DE LA RÉPONSE (séparée par GS=chr(29)) : ┌─── BLOC 0 : Températures ─────────────────────────────────┐ │ Séparateur : RS (chr 30) │ │ Température de chaque canal (4 canaux max) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 1 : Source de données ────────────────────────────┐ │ Nom de la source (ex: "UxIx2") │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 2 : IP RMS externe ───────────────────────────────┐ │ Adresse IP du routeur externe (format entier) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 3 : Nombre d'actions actives ─────────────────────┐ │ Nombre entier d'actions configurées et actives │ └────────────────────────────────────────────────────────────┘ ┌─── BLOCS 4+ : Données de chaque action ───────────────────┐ │ Pour chaque action (séparées par GS, champs par RS): │ │ │ │ [0] = NumAction (numéro de l'action : 0, 1, 2...) │ │ [1] = Titre (nom de l'action) │ │ [2] = État : │ │ - "On" si relais activé │ │ - "Off" si relais désactivé │ │ - "0" à "100" si Triac/SSR (pourcentage ouverture) │ │ [3] = tOnOff (minutes de forçage restantes) │ │ - > 0 : forcé ON │ │ - < 0 : forcé OFF │ │ - = 0 : mode automatique │ │ [4] = H_Ouvre (heures équivalentes * 100) │ └───────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_etatActionX │ │ Méthode : GET │ │ Paramètre : NumAction (numéro de l'action) │ │ Description : État d'une action spécifique │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_etatActionX?NumAction=1 STRUCTURE DE LA RÉPONSE (séparée par GS=chr(29)) : [0] = Actif (0=inactif, 1=On/Off, 2=Proportionnel, etc.) [1] = Ouvre (pourcentage d'ouverture 0-100) [2] = Hequiv (heures équivalentes * 100) ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_Temperature │ │ Méthode : GET │ │ Description : Températures des sondes DS18B20 │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_Temperature STRUCTURE DE LA RÉPONSE : GS + Températures (séparées par RS) + RS Exemple : chr(29) + "25.3" + chr(30) + "22.1" + chr(30) + "28.5" + chr(30) ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_histo48h │ │ Méthode : GET │ │ Description : Historique de 50h (600 points toutes les 5min)│ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_histo48h STRUCTURE DE LA RÉPONSE (séparée par GS=chr(29)) : ┌─── BLOC 0 : Puissances maximales ─────────────────────────┐ │ Séparateur : RS (chr 30) │ │ [0] = PuisMaxS_M (Max soutirée Maison) │ │ [1] = PuisMaxI_M (Max injectée Maison) │ │ [2] = PuisMaxS_T (Max soutirée Triac) │ │ [3] = PuisMaxI_T (Max injectée Triac) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 1 : Historique Maison ────────────────────────────┐ │ 600 valeurs de puissance (W) séparées par des virgules │ │ Une valeur toutes les 5 minutes sur 50 heures │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 2 : Historique Triac ─────────────────────────────┐ │ 600 valeurs de puissance (W) séparées par des virgules │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 3 : Historique Températures ──────────────────────┐ │ Pour chaque canal (4 canaux): │ │ 600 valeurs * 0.1 séparées par virgules │ │ Puis température actuelle │ │ Puis séparateur "|" │ └───────────────────────────────────────────────────────────┘ ┌─── BLOCS 4+ : Historique ouverture des actions ───────────┐ │ Pour chaque action active: │ │ GS + 600 valeurs d'ouverture + Titre de l'action │ └───────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_data10mn │ │ Méthode : GET │ │ Description : Historique de 10min (300 points toutes les 2s)│ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_data10mn STRUCTURE SIMILAIRE À /ajax_histo48h mais avec 300 points ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_histo1an │ │ Méthode : GET │ │ Description : Historique énergie quotidienne sur 1 an │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_histo1an STRUCTURE : 370 points d'énergie quotidienne ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_dataRMS │ │ Méthode : GET │ │ Paramètre : idx (index du dernier message) │ │ Description : Données brutes selon la source │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_dataRMS?idx=0 STRUCTURE : Varie selon la source (UxI, Linky, Enphase, etc.) ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_dataESP32 │ │ Méthode : GET │ │ Description : Informations système ESP32 │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_dataESP32 STRUCTURE DE LA RÉPONSE (séparée par RS et GS) : ┌─── BLOC 0 : Système ESP32 ────────────────────────────────┐ │ [0] = Heures de fonctionnement │ │ [1] = Type d'ESP32 │ │ [2] = RSSI WiFi (ou vide si Ethernet) │ │ [3] = BSSID │ │ [4] = Canal WiFi │ │ [5] = Adresse MAC │ │ [6] = SSID │ │ [7] = Adresse IP │ │ [8] = Gateway │ │ [9] = Subnet Mask │ │ [10] = Stats Coeur 0 (min, moy, max) │ │ [11] = Stats Coeur 1 (min, moy, max) │ │ [12] = Pourcentage EEPROM utilisé │ │ [13] = Mémoire libre │ │ [14] = Mémoire minimum libre │ │ [15] = Interruptions IT10ms │ │ [16] = Mode IT (Secteur ou Horloge ESP) │ │ [17] = Nombre de sondes DS18B20 │ │ [18] = Liste températures │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 1 : Messages historique ──────────────────────────┐ │ 10 derniers messages système (séparés par RS) │ └───────────────────────────────────────────────────────────┘ ┌─── BLOC 2 : Autres routeurs RMS ──────────────────────────┐ │ Liste des autres routeurs connectés sur le réseau │ │ Format: Nom (IP) Note/NbConnexions │ └───────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajax_Noms │ │ Méthode : GET │ │ Description : Noms et états des actions │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajax_Noms STRUCTURE : GS + RMS_NomEtat[0] + "\r" ═══════════════════════════════════════════════════════════════ 2. ROUTES DE CONTRÔLE/COMMANDE ═══════════════════════════════════════════════════════════════ ┌─────────────────────────────────────────────────────────────┐ │ Route : /ForceAction │ │ Méthode : GET │ │ Paramètres : Force, NumAction │ │ Description : Force une action ON/OFF ou mode AUTO │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ForceAction?Force=VALEUR&NumAction=NUMERO PARAMÈTRES : - NumAction : Numéro de l'action (0, 1, 2, ...) - Force : * > 0 : Force ON pendant X minutes (ex: 30, 60, 120) * < 0 : Force OFF pendant X minutes (ex: -30, -60) * = 0 : Remet en mode automatique EXEMPLES : Force=30&NumAction=1 → Force action 1 ON pendant 30 min Force=-60&NumAction=2 → Force action 2 OFF pendant 60 min Force=0&NumAction=1 → Action 1 en mode AUTO RÉPONSE : "Force" (texte simple) ┌─────────────────────────────────────────────────────────────┐ │ Route : /SetGPIO │ │ Méthode : GET │ │ Paramètres : gpio, etat │ │ Description : Contrôle direct d'une sortie GPIO │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/SetGPIO?gpio=PIN&etat=VALEUR PARAMÈTRES : - gpio : Numéro du GPIO (ex: 23, 25, 26, etc.) - etat : * 0 = LOW (éteint) * 1 = HIGH (allumé) EXEMPLES : gpio=23&etat=1 → Active le GPIO 23 gpio=23&etat=0 → Désactive le GPIO 23 RÉPONSE : Texte confirmant l'action ═══════════════════════════════════════════════════════════════ 3. ROUTES DE CONFIGURATION ═══════════════════════════════════════════════════════════════ ┌─────────────────────────────────────────────────────────────┐ │ Route : /HourUpdate │ │ Méthode : GET │ │ Paramètre : New_H │ │ Description : Met à jour l'heure manuellement │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/HourUpdate?New_H=14:30 PARAMÈTRE : - New_H : Heure au format HH:MM (ex: "14:30") RÉPONSE : "OKheure" ┌─────────────────────────────────────────────────────────────┐ │ Route : /restart │ │ Méthode : GET │ │ Description : Redémarre l'ESP32 │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/restart RÉPONSE : "OK Reset. Attendez." (L'ESP32 redémarre après 1 seconde) ┌─────────────────────────────────────────────────────────────┐ │ Route : /ajaxRAZhisto │ │ Méthode : GET │ │ Description : Remet à zéro les historiques │ └─────────────────────────────────────────────────────────────┘ URL : http://IP_ROUTEUR/ajaxRAZhisto RÉPONSE : Confirmation de la RAZ ═══════════════════════════════════════════════════════════════ 4. FORMAT DES DONNÉES ET SÉPARATEURS ═══════════════════════════════════════════════════════════════ SÉPARATEURS UTILISÉS : ┌────────────────────────────────────────────────────────────┐ │ RS (Record Separator) = chr(30) = 0x1E │ │ → Sépare les champs dans un même bloc │ │ │ │ GS (Group Separator) = chr(29) = 0x1D │ │ → Sépare les blocs de données │ │ │ │ US (Unit Separator) = chr(31) = 0x1F │ │ → Sépare les sous-unités (utilisé rarement) │ │ │ │ ES (séparateur "=") = "=" │ │ → Utilisé dans certains contextes spécifiques │ └────────────────────────────────────────────────────────────┘ Quelques macros générées par IA pour LibreOffice. Pas testées, car je n’ai pas LibreOffice. Code : REM =====================================================RE: Peut-on échanger des données entre F1ATB et Calc ? - phisebe - 08-11-2025 Merci encore à Mike, et à 59Jag pour la bible !!! Nul doute qu'il y a ce qu'il faut pour que je puisse avancer sur la récupération des data. Je n'ai pas tout lu, alors, peut-être cela m'a échappé, mais avant de me lancer dans ce projet, il faut que je sache si je peux arriver au bout, je n'ai pas vu comment l'on peut modifier les plages horaires des actions ? Car le projet complet pourrait être de récupérer les data à des fins de statistiques et de suivis. Avec les éléments que vous m'avez, tous les 2, transmis, je n'ai aucun doute: c'est faisable! Mais pourrait-on aller jusqu'à gérer le planning de chauffe de nuit en fonction des prévisions météo et/ou UV de la semaine? Pour cela il faut pouvoir faire varier ces plages d'actions, en fonction des données recueillies et accéder une fois par jour à la feuille pour déclencher la modification d'action de chauffe de nuit, (ou laisser tourner le PC, mais là, c'est réinventer la roue, car je pense qu'un Rasp4 ou HA Green fait déjà ce genre de chose) Vos avis ? Crdt RE: Peut-on échanger des données entre F1ATB et Calc ? - Mike - 08-11-2025 Oui c'est possible de changer les plages horaire avec le endpoint /ActionsUpdate. Comme expliqué dans mon précédent message, avec le developer tools regarde la requête qui part lorsque tu cliques sur sauvegarder et tu pourras voir comment ça marche. Le format qu'attends /ActionsUpdate peut aussi etre vu dans la fonction SendValues (ligne 675 en 15.12) de pageHtmlActions.h RE: Peut-on échanger des données entre F1ATB et Calc ? - phisebe - 09-11-2025 (08-11-2025, 10:24 AM)Mike a écrit : Pour changer les paramètres des actions c'est le endpoint /ActionsUpdate mais il y a énormément de paramètres donc le plus "simple" c'est d'utiliser le "developer tools" de ton navigateur (F12 pour Firefox et Chrome) et d'aller dans le tab network et de regarder la requête qui part quand tu appuies sur sauvegarder. Merci Mike, Je vais essayer tout cela ! Cdt RE: Peut-on échanger des données entre F1ATB et Calc ? - Sgb31 - 09-11-2025 Hello, J'avoue ne pas comprendre l'intérêt fine de la démarche quand on peut récupérer la majorité des infos via le protocole domotique MQTT.. et qu'on puisse interagir également sur les actions et autres paramètres ... sans pour autant rentrer dans le code ... Pourquoi vouloir passer par le code brut sachant que ce code continu à évoluer au gré des fonctionnalités et autre évols à venir ( prochainement adaptations probables sur l'esp S3 CYD ...) ? RE: Peut-on échanger des données entre F1ATB et Calc ? - ProWiz - 19-11-2025 Bonjour, C’est exactement ce que je souhaite faire ! « Mais pourrait-on aller jusqu'à gérer le planning de chauffe de nuit en fonction des prévisions météo et/ou UV de la semaine? » SGB31 m’a répondu, installe HA sur un Raspberry car l’écosystème dispose de la météo. Pourquoi ajouter un élément si ESP32 dans peut le faire. Voir mon post sur le sujet : https://f1atb.fr/forum_f1atb/thread-1982.html Il faudrait se connecter à OpenMeteo une fois par nuit à 3h du matin, récupérer le paramètre GTI sur les prochaines 24h (selon orientation PV, inclinaison, position), calculer la puissance théorique Watts selon capacité PV (ou un paramètre coefficient saisi) et déclencher ou non le chauffe eau à 3h (pour une durée) si Watts théoriques suffisants. Qu’en penses-tu ? À bientôt :-) |