esp32 mit display stoppuhr steuern

hallo leute,

ich habe auf einem esp32 mit display eine stoppuhr für z.b.sprintmessungen laufen. wenn ich lichtschranken direkt anschließe funktioniert das auch super.

nun möchte ich aber mindestens 2 (später auch 3 für zwischenzeiten) weitere esp32 an denen die lichtschranken angeschlossen sind mit dem esp32 wo die stoppuhr läuft per wifi verbinden.

zum verständnis:
also z.b. pin8 vom 1. esp32(startlichtschranke) sendet an pin 18 des master-esp32 somit startet die stoppuhr.

dann sendet pin8 vom 2. esp32(ziellichtschranke) an den pin 19 des master-esp32, somit stoppt die stoppuhr.

wie müsste ich meinen vorhanden stoppuhr-sketch erweitern, damit das so laufen würde?
was müsste auf den sender-esp´s laufen, damit die die pinwerte an den master-esp senden können?

würde mich sehr über hilfe freuen.

den stopuhren-sketch hänge ich mit dran.

lg hardy

#include "SSD1306.h"
SSD1306  display(0x3c, 4, 15);
void setup() {
    pinMode(16,OUTPUT); digitalWrite(16, LOW); delay(50); digitalWrite(16, HIGH);
    display.init();
    Serial.begin(115200);
    display.clear();
    display.setFont(ArialMT_Plain_16);
    display.display();
    }
unsigned MessungNr = 0;
void loop()
{
unsigned long Zeit = 0;
unsigned long Start = 0;
unsigned long Ende = 0;
float s = 0;
/*************************************************************************************
READY
FREIGABE
**************************************************************************************/
Serial.println();
Serial.println("Startfreigabe  ");
// M-Nr: ### send to display
// Messung Nr. und Freigabe auf Display senden
display.clear();
display.drawString(0,0,"M-Nr: ");
int(MessungNr++);
display.drawString(50,0, String (MessungNr));
display.drawString(0,32,"Freigabe");
display.display();
/*************************************************************************************
Wait for START
Warten auf Messung START
**************************************************************************************/
while (digitalRead(0) == HIGH)
{
yield(); //warten fuer ESP8266
}
Start = millis();
Serial.print("gestartet Messung Nr.: ");
Serial.print(MessungNr);
// started send to display
// gestartet auf Display senden
display.clear();
display.drawString(0,0,"M-Nr: ");
display.print(MessungNr);
display.drawString(0,32,"gestartet");
display.display();
// wait for second wheel
// Draisine hat zwei Raeder
delay(2000);
/*************************************************************************************
// Waiting for FINISH
// Warten auf ZIEL
**************************************************************************************/
while (digitalRead(0) == HIGH)
{
Ende = millis();
Zeit = (Ende - Start);
s=Zeit;
s=s/1000;
// Result send to display
// Zeit auf Display senden
display.clear();
display.drawString(0,0,"E-Nr: ");
display.drawString(50,0, String (MessungNr));
display.drawString(0,30,String (s,2));
display.drawString(60,30,"s");
display.display();
}
//ERGEBNIS
Serial.print(" Ergebnis ");
Serial.print(s,3);
Serial.println("s");
display.clear();
display.drawString(0,0, "E-Nr: ");
display.drawString(50,0, String (MessungNr));
display.drawString(0,30,String (s,3));
display.drawString(60,30, "s");
display.display();
/*************************************************************************************
// Display RESULT for two seconds --> Button
// Ergebnisanzeige fuer mindestens 2s bis Taster betaetigt werden kann
*************************************************************************************/
delay(2000);
// RESULTS accepted
// Datenuebernahme mit Taster bestaetigen
while(digitalRead(0) ==HIGH)
{
yield(); //warten
}
// send WAIT to display
// Warten an Display senden
display.clear();
display.drawString(0,0,"WARTEN");
display.display();
delay(2000);
}