Arduino als Server - Rückmeldung bei Client-Verbindung

Hallo.

Ich möchte einen Arduino Mega mit Ethernet Shield als Server nutzen. Das funktioniert auch alles. Ich bekomme es auch hin, dass ich vom Server eine Rückmeldung bekomme wenn ein Befehl gesendet wurde also gesendet an den Server.
Dafür habe ich zum Testen Hercules SETUP genutzt.

Jetzt versuche ich aber noch das der Server einmalig einen aktuellen Status an den Client schickt sobald dieser sich mit dem Server verbunden hat.

Das hier ist mein Code:

#include <SPI.h>
#include <Ethernet.h>


// Arduino Servereinstellungen
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED          // Selbst erstellte Arduino MAC Adresse
             };      
  
IPAddress ip(169,254,230, 5);                 // Selbst erstellte Arduino IP Adresse

const int port = 23;                          // Arduino Server - Port

EthernetServer server(port);

String commandStr;                            // Zum Speichern des Befehls vom Client

int baudrate1 = 9600;                                                                  // Variable fuer die Baudrate




// VARIABLE UND PINDEFINITION 


  int PA = 2;       // Ausgang

  int Eingabe = 0; 


  EthernetClient client;


void setup()
{

 
  Serial.begin(baudrate1);                                                               //Serielle Kommunikatiob beginnen
  

  pinMode(PA, OUTPUT);
  digitalWrite(PA, LOW); 
 



  Ethernet.begin(mac, ip);                            // Initialisierung des Ethernet-Servers
  server.begin();
 
  Serial.print("Server IP: ");                        // Ausgabe von IP-Adresse und Port des Arduino-Servers am seriellen Monitor
  Serial.println(Ethernet.localIP());
  Serial.print("Port: "); 
  Serial.println(port);

}


void loop()
{


  
EthernetClient client = server.available();
    if (client.available())
    {
        char c = client.read();                                                   // Zeichen bis zum Zeilenvorschub lesen
        if (c != '\n') {
            commandStr += c;                                                      // Erhaltenes Zeichen zu String-Variablen hinzufügen
        } else {
            Serial.println("Befehl: " + commandStr);                             // Den empfangenen Befehl am seriellen Monitor ausgeben
   
            processCommand_X(commandStr);                                      // Verarbeiten des empfangenen Befehls - NETZWERKBETRIEB
   
            commandStr = "";                                                      // Variable fuer den naechsten Befehl loeschen
        }
    }


                                                                                 // Wird gepruef
    if (Eingabe == 1)
    {
     digitalWrite(PA, HIGH);                                                      // An
     server.println("Ausgang aktiviert");     
 
     Eingabe = 0;
    }

    if (Eingabe == 2)
    {
     digitalWrite(PA, LOW);                                                      // Aus
     server.println("Ausgang deaktiviert");     
 
     Eingabe = 0;
    }
    
  }  



// NETZWERKBEFEHLE UMWANDELN


void processCommand_X(String cmd)                                               // TCP Befehle umsetzten
{
    if (cmd == "A")                                                               // Befehl A
    {
        char c = "";  
        Eingabe = 1;
        server.println("Befehl A");
    }

        if (cmd == "B")                                                               // Befehl B
    {
        char c = "";  
        Eingabe = 2;
        server.println("Befehl B");
    }
    
}

Kann mir da jemand helfen? Danke vorab.

Dazu müsstest Du uns noch mitteilen, was Du unter einem aktuellen Status verstehen willst und was unter verbinden.
Eine Info wer den Befehl zum Server schickt (Browser, anderer Rechner, ...) wäre auch noch hilfreich.

Gruß Tommy

Hi.
Also ich möchte dafür erst mal weiter die Hercules SETUP Software nutzen. Damit baue ich die Verbindung zum Arduino Server auf.
Damit möchte ich die Befehle via TCP Verbindung senden und so auch die Rückmeldungen vom Server bekommen.

Status wäre z.B. das man eine Rückmeldung beim verbinden bekommt das man verbunden ist und den Zustand der Anlage. Also ob der Ausgang AN oder AUS ist etc.

Das meine ich damit.

Die Meldung soll dann auch wie server.println Meldungen angezeigt werden nur am Start halt von selbst sobald man sich verbunden hat.

Ich kenne Deine Hercules SETUP Software nicht.

Soll dann sowas wie eine Website geliefert werden?

Gruß Tommy

Nein, nichts mit Webseiten. Eine TCP Client Software mit der ich Befehle an den Arduino Server sende. Diese werden dann verarbeitet.
Also wenn ich mich mit einem TCP Client mit dem Arduino Server verbinde hätte ich gerne eine Rückmeldung vom Server als server.println.

Ich sende halt einen Befehl um einen Ausgang auf High zu setzen und dann setzt der Arduino den auf High.

Wenn ich das einfach in den Loop schreibe wird mir ja unendlich oft eine Rückmeldung ausgegeben und wenn ich es mit einer variable auf ein mal begrenze wird es ja nur einmal irgendwann am Anfang ausgegeben und ich werde es nie sehen.

Daher dachte ich an etwas wie if Client mit Server verbunden server.print

Aber so klappt das irgendwie nicht

Versuch mal nach der Zeile

EthernetClient client ...

das einzufügen:

client.print("Status: ");
client.println(digitalRead(PA));