Hallo liebe Forengemeinde. Ich bin neu hier und beschäftige mich erst seit kurzem mit dem Arduino.
Aktuell habe ich einen Arduino Uno mit einem W5100 basierten Ethernet Shield im Einsatz. Es sind nur die standardmäßigen Bibliotheken installiert.
Mein erstes Projekt soll ein im Haushalt vorhandenes SMA Energy Meter auslesen.
Dieses habe ich in einem kleinen Testaufbau direkt mit meinem PC verbunden und mittels Whireshark herausgefunden wie die Datagramme aussehen und von wo nach wo gesendet wird. Das Energy Meter sendet zyklisch die aktuellen Messdaten als UDP Unicast Datagramme. Im Anhang findet ihr einen Screenshot von Wireshark.
Anbei noch die Informationen als Text.
Ziel IP 239.12.255.254
Port 9522
IP Energy Meter 169.254.8.48
Datagramm Länge: 624Bytes
Im ersten Schritt möchte ich die Datagramme nur einlesen und einfach ohne jegliche Bearbeitung im Serial Monitor ausgeben lassen. Ich habe aktuell leider das Problem, dass ich nichts empfange. Kann mir jemand sagen was ich falsch mache ?
Ich bin für jede Hilfe super dankbar. Vielen Dank an alle. Liebe Grüße
Andreas
Hier ist der Code.
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h> // UDP library from: bjoern@cs.stanford.edu 12/30/2008
// Network Settings
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(169, 254, 8, 1); // IP from EM Meter 169.254.8.48
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress RecipientIP(239, 12, 255, 254); // Multicast Dest IP from Energy Meter
unsigned int portMulti = 9522; // local Multicast Port to be listen on
// buffers for receiving and sending data
char packetBuffer[624];
unsigned int packetSize = 624;
// An EthernetUDP instance to send and receive packets over UDP
EthernetUDP Udp;
void setup()
{
// for debug only
Serial.begin(9600);
// start Ethernet
Ethernet.begin(mac,ip);
// start multicast UDP
Udp.beginMulticast(portMulti, RecipientIP);
}
void loop ()
{
// read the packet into packetBufffer
Udp.read(packetBuffer,packetSize);
// for debug only
// write packetBuffer to serial
Serial.println("Arduino UDP Ready for listen to Energy Meter ");
Serial.print("Listening to Unicast at: ");
Serial.println(portMulti);
Serial.print("Recipient_IP: ");
Serial.println (RecipientIP);
Serial.println("Packet Content: ");
Serial.println(packetBuffer);
delay(5000);
}

