Il y a 5 heures
Bonjour à tous,
Tout nouveau sur ce forum, je voudrais tout d'abord adresser un grand merci et bravo à André pour ce magnifique projet. Je suis les évolutions avec grand intérêt depuis plusieurs années, bien que n'ayant pas d'installation photovoltaïque actuellement.
J'ai en projet l'installation de 9kWc de panneaux, avec une batterie Powerwall Tesla, et la Gateway qui va avec.
Le Powerwall dispose d'une API qui permet de récupérer la valeur du surplus solaire. André, pourrais-tu envisager d'intégrer la routine permettant d'interroger le Powerwall à une prochaine version du routeur ? Pour les tests éventuels, je devrais avoir mon installation dans 2 mois environ, et je suis bien sûr prêt à jouer les cobayes...
A toutes fins utiles, j'ai demadé à ChatGPT de me générer un code pour utiliser l'API. Je le recopie tout en bas de ce message. La requête a l'air plutôt simple, mais il faudrait l'intégrer au projet global...
Merci d'avance.
Philippe
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <RBDdimmer.h>
#define DIMMER_PIN 23
#define ZERO_CROSS_PIN 22
dimmerLamp dimmer(DIMMER_PIN, ZERO_CROSS_PIN);
const char* ssid = "TON_WIFI";
const char* password = "TON_MDP";
const char* powerwall_ip = "192.168.1.50";
WiFiClientSecure client;
const int puissanceMax = 2000; // W chauffe-eau
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setInsecure();
dimmer.begin(NORMAL_MODE, ON);
}
void loop() {
HTTPClient https;
String url = String("https://") + powerwall_ip + "/api/meters/aggregates";
https.begin(client, url);
int httpCode = https.GET();
if (httpCode == 200) {
DynamicJsonDocument doc(2048);
deserializeJson(doc, https.getString());
float site_power = doc["site"]["instant_power"];
float surplus = -site_power;
// Conversion en %
int powerPercent = (surplus / puissanceMax) * 100;
// Clamp
powerPercent = constrain(powerPercent, 0, 100);
dimmer.setPower(powerPercent);
Serial.print("Surplus: ");
Serial.print(surplus);
Serial.print(" W | Puissance: ");
Serial.print(powerPercent);
Serial.println("%");
}
https.end();
delay(2000);
}
Tout nouveau sur ce forum, je voudrais tout d'abord adresser un grand merci et bravo à André pour ce magnifique projet. Je suis les évolutions avec grand intérêt depuis plusieurs années, bien que n'ayant pas d'installation photovoltaïque actuellement.
J'ai en projet l'installation de 9kWc de panneaux, avec une batterie Powerwall Tesla, et la Gateway qui va avec.
Le Powerwall dispose d'une API qui permet de récupérer la valeur du surplus solaire. André, pourrais-tu envisager d'intégrer la routine permettant d'interroger le Powerwall à une prochaine version du routeur ? Pour les tests éventuels, je devrais avoir mon installation dans 2 mois environ, et je suis bien sûr prêt à jouer les cobayes...
A toutes fins utiles, j'ai demadé à ChatGPT de me générer un code pour utiliser l'API. Je le recopie tout en bas de ce message. La requête a l'air plutôt simple, mais il faudrait l'intégrer au projet global...
Merci d'avance.
Philippe
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <RBDdimmer.h>
#define DIMMER_PIN 23
#define ZERO_CROSS_PIN 22
dimmerLamp dimmer(DIMMER_PIN, ZERO_CROSS_PIN);
const char* ssid = "TON_WIFI";
const char* password = "TON_MDP";
const char* powerwall_ip = "192.168.1.50";
WiFiClientSecure client;
const int puissanceMax = 2000; // W chauffe-eau
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setInsecure();
dimmer.begin(NORMAL_MODE, ON);
}
void loop() {
HTTPClient https;
String url = String("https://") + powerwall_ip + "/api/meters/aggregates";
https.begin(client, url);
int httpCode = https.GET();
if (httpCode == 200) {
DynamicJsonDocument doc(2048);
deserializeJson(doc, https.getString());
float site_power = doc["site"]["instant_power"];
float surplus = -site_power;
// Conversion en %
int powerPercent = (surplus / puissanceMax) * 100;
// Clamp
powerPercent = constrain(powerPercent, 0, 100);
dimmer.setPower(powerPercent);
Serial.print("Surplus: ");
Serial.print(surplus);
Serial.print(" W | Puissance: ");
Serial.print(powerPercent);
Serial.println("%");
}
https.end();
delay(2000);
}
