Hallo zusammen,
hab das jetzt tatsächlich zusammengeklaut:
C
/**
aus BasicHTTPClient.ino
Created on: 24.04.2023
*/
//#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
String x1;
int Wert;
//**********************************
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
for (uint8_t t = 4; t > 0; t--)
{
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("shellyem3-3494547B8D61", "");
}
//*******************************
void loop()
{
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED))
{
WiFiClient client;
HTTPClient http;
if (http.begin(client, "http://192.168.33.1/status"))
{
int httpCode = http.GET(); // start connection and send HTTP header
if (httpCode > 0) // httpCode will be negative on error
{
// HTTP header has been send and Server response header has been handled
//Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY)
{
String payload = http.getString();
Wert = 0;
for (uint16 s = 400; s < 750; s++)
{
String A = payload.substring(s, s + 5);
if (A == "power")
{
s = s + 7;
//======================
x1 = payload.substring(s , s + 10);
Serial. print (x1.toInt()) ;
Serial. print (" ") ;
Wert = Wert + x1.toInt() ;
s = s + 10;
//=========================
}
}
Serial. println (Wert) ;
digitalWrite(LED_BUILTIN, HIGH);
delayMicroseconds(5000+Wert);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
else
{
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
}
}
//delay(2000);
}
}
Alles anzeigen
Das funktioniert auch.
Es ist das Programm für einen ESP8266, der sich mit dem Shelly3EM verbindet, einen "Status" abruft, den durchsucht nach dem Wort "Power" ("Power" gibts 3x, je 1x für jede Phase), dann den nachfolgenden Wert seriell ausgibt und gleich zum Summenwert dazuzählt und am Ende auch die Summe liefert. Soweit läuft alles, aber für mich ist vieles "Blindflug".
Mein Ziel nun:
Aus diesem Programm heraus möchte ich jetzt einen Shelly1 ein/ausschalten.
IP 192.168.33.1
ID shelly1-yyyyyyyy2E10
Kann ich gleichzeitig zum 3EM eine Verbindung zu Shelly1 aufbauen, und wie kann ich
den dann ansteuern?