Hallo Michael Mit Programmieren kenne ich mich nicht so aus das kommt von chat gpt.
ich möchte das esp8266 über modbus die werte für einspeise und bezug vom wechselrichter kriegt und für mich lesbar darstellt .
Das kommt als antwort 16:04:38.562 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 DF Antwort empfangen
Die lezten 4 zeichen sind Einspeise wert ( 08DF ) = 2271 Wh. die 4 zeichen davor sind bezugs wert ( 0000 ) = 0 Wh
Wie ich das machen soll weis ich nicht .kannst du mir helfen?
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
const char* ssid = "ssid";
const char* password = "pw";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Verbindung zum WLAN herstellen...");
}
Serial.println("Verbunden mit WLAN");
}
void loop() {
WiFiClient client;
// IP-Adresse und Port des Wechselrichters
const char* host = "192.168.178.20";
const uint16_t port = 502;
// Hexadezimale Modbus-Anfrage
uint8_t request[] = {0x8D, 0xCD, 0x00, 0x00, 0x00, 0x06, 0x03, 0x04, 0x78, 0x91, 0x00, 0x04};
// Verbindung zum Wechselrichter herstellen
if (client.connect(host, port)) {
Serial.println("Verbunden mit Wechselrichter");
// Modbus-Anfrage senden
client.write(request, sizeof(request));
delay(100); // Eine kurze Verzögerung, um sicherzustellen, dass die Anfrage vollständig gesendet wird
// Antwort empfangen
while (client.available()) {
uint8_t response = client.read();
Serial.print(response, HEX);
Serial.print(" ");
}
Serial.println("Antwort empfangen");
// Extrahieren und konvertieren der Werte
uint16_t position4 = (request[9] << 8) | request[10];
uint16_t position5 = (request[11] << 8) | request[12];
// Ausgabe der Werte
Serial.print("Position 4: ");
Serial.println(position4);
Serial.print("Position 5: ");
Serial.println(position5);
// Verbindung trennen
client.stop();
Serial.println("Verbindung getrennt");
} else {
Serial.println("Verbindung zum Wechselrichter fehlgeschlagen");
}
delay(5000); // Warten, bevor die nächste Anfrage gesendet wird
}
16:04:28.252 -> Verbindung zum WLAN herstellen...
16:04:28.252 -> Verbunden mit WLAN
16:04:28.252 -> Verbunden mit Wechselrichter
16:04:28.346 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 E0 Antwort empfangen
16:04:28.346 -> Position 4: 37120
16:04:28.346 -> Position 5: 1208
16:04:28.346 -> Verbindung getrennt
16:04:33.360 -> Verbunden mit Wechselrichter
16:04:33.454 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 E3 Antwort empfangen
16:04:33.454 -> Position 4: 37120
16:04:33.454 -> Position 5: 1208
16:04:33.454 -> Verbindung getrennt
16:04:38.469 -> Verbunden mit Wechselrichter
16:04:38.562 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 DF Antwort empfangen
16:04:38.562 -> Position 4: 37120
16:04:38.609 -> Position 5: 1208
16:04:38.609 -> Verbindung getrennt
16:04:43.587 -> Verbunden mit Wechselrichter
16:04:43.681 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 DE Antwort empfangen
16:04:43.681 -> Position 4: 37120
16:04:43.681 -> Position 5: 1208
16:04:43.681 -> Verbindung getrennt
16:04:48.717 -> Verbunden mit Wechselrichter
16:04:48.810 -> 8D CD 0 0 0 B 3 4 8 0 0 0 0 0 0 8 E6 Antwort empfangen
16:04:48.810 -> Position 4: 37120
16:04:48.810 -> Position 5: 1208
16:04:48.810 -> Verbindung getrennt