Stap 2: Communicatie met de ESP8266
De ESP met NodeMCU heeft een aantal manieren om te communiceren met de buitenwereld. Client TCP/UDP, TCP/UDP-Server, Telnet- en MQTT. Aangezien we eenvoudige tekstreeksen naar de ESP sturen zal, kan elk van deze opties worden gebruikt.
MQTT zou een geweldige oplossing voor dit project. Maar MQTT een paar meer eisen heeft, zullen we gebruiken NodeMCUs TCP Server.
Een ESP flitste met NodeMCU en geconfigureerd als een Server TCP kan verzenden en ontvangen van gegevens naar en vanuit een webbrowser. Hierdoor is ons te sturen bestanden en opdrachten naar de ESP en ook de ESP voor bepaalde gegevens worden opgevraagd. Voor onze doeleinden, wanneer opgevraagd, kan de ESP vertel ons hoeveel geheugen wordt overgelaten en lijst van de bestanden in een bestandssysteem.
Verzenden van gegevens naar de ESP TCP server kan worden verzonden via een aantal methoden. Sommige van de meer conventionele zijn 'GET' en 'POST'. Beide bevatten veel van de header-informatie en andere gegevens van geen enkel nut voor ons. Het GET-protocol is beperkt 256 tekens in de meeste configuraties. ~ 256 tekens zou een kleine .lua-bestand. Hoewel het kan worden gedaan, het verzenden van bestanden via meerdere krijgt zou moeilijk en foutgevoelig. Deze methoden zijn traag en de browsers kunnen worden lastig.
PHP de fsockopen opdracht is het voorkeursprogramma voor dit project. Het is een aan één verbinding en erg snel. We schrijven aan op de aansluiting net als het schrijven naar een bestand. En!! het stuurt alleen gegevens weggeschreven. Geen header info!
Er is een limiet aan het aantal tekens dat is verzonden in een fsockopen sessie. Dit wordt geregeld door verschillende TCP-laag en de meeste verbindingen zijn beperkt tot ~ 1460 tekens. Als de lua bestand we sturen groter dat 1200 tekens (ASCII), onze PHP bestand de sessie zal sluiten is, opent u een ander en blijven sturen de volgende 1200 karakters van het bestand totdat EOF is bereikt. De LUA bestand op de ESP zal ofwel schrijven of wilt toevoegen aan het bestand zoals het de gegevens ontvangt.