Nawiązanie połączenia
Aby ESP mogło połączyć się z serwerem należy włączyć kartę WiFi i ustawić ją w odpowiedni tryb, aby to zrobić należy zaimportować pakiet ESP8266WiFi i wywołać metodę mode() w klasie WiFi. Metoda przyjmuje jedną z wartości: WIFI_OFF – brak wifi , WIFI_STA – tryb stacji roboczej – czyli ten o który nam chodzi, WIFI_AP – Access Point, WIFI_AP_STA – tryb mieszany.
#include <ESP8266WiFi.h>
void setup() {
WiFi.mode(WIFI_STA);
}
Klasa WiFi umożliwia podłączenie się sieci, jej użycie wymaga jednak pewnej ilości nadmiarowego kodu. Znacznie łatwiej jest użyć klasy ESP8266WiFiMulti z pakietu o tej samej nazwie. Obsługuje ona ponowne nawiązywanie utraconego połączenia, czy przełączanie się między różnymi sieciami WiFi. Klasa ta posiada metody addAP i run. Pierwsza pozwala dodać sieć i wymaga podania nazwy sieci i hasła. Metodę tą wywołuje się w metodzie setup(). Bezparametrowa metoda run() zwraca informację o stanie WiFi, w szczególności czy urządzenie jest podłączone do jakiejś sieci. Poniższy kod mruga wbudowaną diodą led jeżeli urządzenie nie ma połączenia z siecią i gasi ją na stałe jeżeli połączenie zostaje nawiązane.
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti WiFiMulti;
void setup() {
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("<SSID>", "<Password>");
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (WiFiMulti.run() != WL_CONNECTED) {
digitalWrite(LED_BUILTIN, LOW);
delay(300);
digitalWrite(LED_BUILTIN, HIGH);
delay(300);
return;
}
delay(500);
}
W miejsce <SSID> należy wstawić nazwę swojej sieci WiFi, a <Password> hasło.
Biblioteka zawiera zawiera klasy WiFiClient oraz Udp do obsługi protokołów warstwy transportu (TCP, UDP), umożliwiające implementację obsługi dowolnego protokołu warstwy aplikacji.
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <WiFiClient.h>
ESP8266WiFiMulti WiFiMulti;
void setup() {
WiFi.mode(WIFI_STA);
WiFiMulti.addAP("<SSID>", "<Password>");
}
void loop() {
if (WiFiMulti.run() != WL_CONNECTED) {
delay(300);
return;
}
WiFiClient client;
String host = "<your-dns-name-or-ip>";
int port = 5000;
if (!client.connect(host, port)) {
delay(300);
return;
}
client.println("Hello");
String response = client.readStringUntil('\n');
delay(300);
}
W miejsce <your-dns-name-or-ip> należy wstawić adres IP komputera na którym działa aplikacja serwerowa.
Powyższy kod nie wykorzystuje protokołu http i nie zadziała z , wcześniej utworzoną, aplikacją serwerową. Ręczna implementacja tego protokołu jest dość złożona. Na szczęście nie trzeba tego robić.
Dzień dobry!
Skorzystałem z tego artykułu teraz (sty, 2023), zainstalowałem
Microsoft .NET SDK 6.0.405 (była jeszcze do wyboru 7.0).
Przy uruchomieniu Twin miałem komunikaty o potrzebie doinstalowania Microsoft ASP.NET Core 2.2.8 i Microsoft ASP.NET Core Runtime – 2.2.8, co zrobiłem.
Server ruszył, ale wcześniej pojawił się komunikat „… warning NETSDK1138: platforma docelowa „netcoreapp2.2″ nie jest już obsługiwana i w przyszłości nie będzie otrzymywać aktualizacji zabezpieczeń. …”.
Nie jestem zaznajomiony z .NET i prosiłbym o radę co i jak zmienić w projekcie Twin, żeby pracować na aktualnych wersjach platformy .NET?
Z góry dziękuję,
Andrzej Bluszcz