Hi
void alarm();// Alarm initialisieren auf aktuelle Zeit
Denke, die Zeile macht nicht, was Du erwartest.
Hiermit wird - meines Wissen - NUR die Funktion alarm(), Welche keinen Rückgabewert liefert (void) und keine Argumente benötigt (leere Klammer) dem Kompiler bekannt gemacht - Diese darf also weiter hinten im Code stehen und trotzdem vorher eingebunden werden.
Ob Das 'so tut', ist mir nicht bekannt, da Du diese Zeile im setup() stehen hast - ich eigene Funktionen ganz vorne bekannt mache und ganz hinten erst stehen habe - allerdings auf dem Arduino, wobei Du ja einen ESP8266-01 nutzt.
Könnte mir aber trotzdem vorstellen, daß der Kompiler bei beiden Ziel-Systemen 'gleich tickt'.
MfG