Code:
void loop(){
       while(NodeMCU.available()){
             float f = NodeMCU.parseFloat();
             Serial.println(f);
       }
}
Da gruselt es mir, das ist eine klassische Falle für ein deadlock

"never ever loop in loop() without escape route"

mach da mal lieber ein if draus und mach es wie in der arduino doku

Code:
if(SWS.available > 3)
wenn du aus irgendwelchen Gründen nur Bytesalat empfängst (Baudratenfehler z.B.) den dein parseFloat nicht versteht, kommst du nie aus der while raus, damit wird die loop() nie beendet und andere Prozesse im Hintergrund können nicht bearbeitet werden

PS: "> 3" habe ich gewählt, weil eine float Zahl mindestens aus 3 Zeichen für "0.0" besteht