Ich stimme @Rentner voll zu
Mit UDP: Die Zentrale sollte sich die Messwerte anfordern
Sonst TCP.
Nein überhaupt nicht. Der ESP8266 und auch der ESP32 lassen sich mit der dir bekannten Arduino-IDE mit genau derselben Programmiersprache programmieren.
Einziger Unterschied es kommen neue Befehle für das WLAN / WiFi dazu.
Aber da hat man ja bei jeder neuen library
Die Internetseiten von FIPS haben eine Menge Code-Beispiele.
Als ich da drübergschaut habe dachte ich oh Gott soooviel und jeweils schon richtig komplexe Projekte.
Dann habe ich aufgehört zu suchen. Wenn einer der FIPS-Kenner einen direkten Link zu einem
kleinen Demo-Code send / receive UDP oder TCP posten kann dann doch bitte hier posten. Aber stundenlang in komplexen codes sich was zusammensuchen müssen? NEIN DANKE!
@Tommy56 hat den passenden Link weiter unten gepostet. Schön kompaktes Beispiel
Wenn die WLANVerbindung steht ist das eigentliche Senden sehr schnell programmiert
Udp.beginPacket(remoteIP, remotePort);
Udp.write((const uint8_t*)UDP_Msg_SS.c_str(), UDP_Msg_SS.length() );
Udp.endPacket();
Das UDP_Msg_SS.c_str() ist die Variable in der die UDP-Nachricht drin steht
Das hier ist ein Demo-Code um ein einzelnes byte per UDP zu senden
Siehe die Zeile mit UDP.write(buttonState);
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
// Set WiFi credentials
#define WIFI_SSID "TheOtherESP"
#define WIFI_PASS "flashmeifyoucan"
// UDP
WiFiUDP UDP;
IPAddress remote_IP(192,168,4,1);
#define UDP_PORT 4210
#define flashButton 0
void setup() {
// Setup IO
pinMode(flashButton, INPUT_PULLUP);
// Setup serial port
Serial.begin(115200);
Serial.println();
// Begin WiFi
WiFi.begin(WIFI_SSID, WIFI_PASS);
WiFi.mode(WIFI_STA);
// Connecting to WiFi...
Serial.print("Connecting to ");
Serial.print(WIFI_SSID);
// Loop continuously while WiFi is not connected
while (WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print(".");
}
// Connected to WiFi
Serial.println();
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
// Begin UDP port
UDP.begin(UDP_PORT);
Serial.print("Opening UDP port ");
Serial.println(UDP_PORT);
}
void loop() {
// Read button
char buttonState = digitalRead(2);
// Send Packet
UDP.beginPacket(remote_IP, UDP_PORT);
UDP.write(buttonState);
UDP.endPacket();
delay(100);
}
und das der Code der die UPD-Nachricht empfängt
// NodeMCU mit LED an D7
// Als UDP-Slave, der vom NodeMCU 1 seine Befehle bekommt
// für UDP-Server
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#define LED D7
WiFiUDP Udp;
unsigned int localUdpPort = 4210; // local port to listen on
char befehl[10]; // buffer for incoming packets
boolean ledStatus = false;
// <= 31 Zeichen
char *ssid = "Meine_WLAN_SSID";
// >= 8 oder <= 63 Zeichen oder NULL
char *password = "geheimesPasswort";
void setup() {
Serial.begin(115200);
//Serial.setDebugOutput(true);
Serial.println();
Serial.println("Start");
digitalWrite(LED, LOW);
pinMode(LED, OUTPUT);
Serial.print("Connecting to "); Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Udp.begin(localUdpPort);
Serial.print("\n connected UDP-Server bereit an IP: ");
Serial.print(WiFi.localIP());
Serial.println("UDP-Server bereit.");
}
void loop() {
int packetSize, len;
// UDP
packetSize = Udp.parsePacket();
// Da ist was da
if (packetSize) {
Serial.print("Empfangen "); Serial.print(packetSize);
Serial.print(" von IP "); Serial.print(Udp.remoteIP());
Serial.print(" Port "); Serial.println(Udp.remotePort());
len = Udp.read(befehl, 10);
ledStatus = befehl[0]; // erstes Byte 0 oder 1
if (ledStatus) {
digitalWrite(LED, HIGH);
Serial.println("LED einschalten");
}
else {
digitalWrite(LED, LOW);
Serial.println("LED ausschalten");
}
}
}
Ich habe die Demo-Codes jetzt gerade eben nicht neu getestet. Möglich dass noch einige Kleinigkeiten klemmen. Aber die kannst du dann hier fragen.
Hier der Link
FIPS UDP-Demo-Code
den @Tommy56 auch gepostet hat. Vielen Dank dafür !
vgs