Сообщение WebSocket с Arduino MKR 1010 с использованием библиотек WiFiNINA и ArduinoHttpClient
Я пытаюсь отправить сообщение WebSocket на сервер. Пример для библиотеки ArduinoHttpClient использует WiFi101, но это не будет работать для MKR 1010. Поэтому я пытаюсь использовать вместо этого WifiNINA. Часть Wi-Fi работает нормально, но, похоже, веб-сайт не может "начаться".
#include <SPI.h>
#include <WiFiNINA.h>
#include <ArduinoHttpClient.h> /*Need to implement*/
//https://github.com/arduino-libraries/ArduinoHttpClient/blob/master/examples/SimpleWebSocket/SimpleWebSocket.ino
//https://www.arduino.cc/en/Tutorial/WiFiNINAConnectWithWPA
char ssid[] = "SSID_NAME"; // your network SSID (name)
char pass[] = "WPA2_Password"; // your network password (use for WPA, or use as key for WEP)
int status = WL_IDLE_STATUS; // the Wifi radio's status
char serverAddress[] = "192.168.0.195"; // server address
int port = 3652;
WiFiClient wifi;
WebSocketClient client = WebSocketClient(wifi, serverAddress, port);
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// check for the WiFi module:
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Communication with WiFi module failed!");
// don't continue
while (true);
}
String fv = WiFi.firmwareVersion();
if (fv < "1.0.0") {
Serial.println("Please upgrade the firmware");
}
// attempt to connect to Wifi network:
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
// you're connected now, so print out the data:
Serial.print("You're connected to the network");
printCurrentNet();
printWifiData();
}
void loop() {
// check the network connection once every 10 seconds:
delay(10000);
//printCurrentNet();
Serial.println("starting WebSocket client");
client.begin();
Serial.print("Is client connected? -> ");
Serial.println(client.connected());
client.beginMessage(TYPE_TEXT);
client.print("Fire alarm from arduino mkr1010 - sensor1 ");
client.endMessage();
while (client.connected()) {
Serial.print("Sending fire alarm ");
// send fire alarm
client.beginMessage(TYPE_TEXT);
client.print("Fire alarm from arduino mkr1010 - sensor1 ");
client.endMessage();
}
/*
// check if a message is available to be received
int messageSize = client.parseMessage();
if (messageSize > 0) {
Serial.println("Received a message:");
Serial.println(client.readString());
}*/
}
void printWifiData() {
// print your board's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
Serial.println(ip);
}
void printCurrentNet() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.println(rssi);
// print the encryption type:
byte encryption = WiFi.encryptionType();
Serial.print("Encryption Type:");
Serial.println(encryption, HEX);
Serial.println();
}
Может ли быть так, что существуют проблемы совместимости между библиотекой ArduinoHttpClient и Arduino MKR1010? Я подумываю о том, чтобы вместо этого получить ESP32, так как, похоже, вокруг него построено больше библиотек WebSocket.
@Alejandro Camus, 👍0
Обсуждение1 ответ
Мне нужно было использовать порт 80.
Я получил подсказку из википедии:
Связь осуществляется через TCP-порт номер 80 (или 443 в случае соединений, зашифрованных по протоколу TLS), что полезно для тех сред, которые блокируют интернет-соединения, не связанные с Интернетом, с помощью брандмауэра.
https://en.wikipedia.org/wiki/WebSocket
Переключился на порт 80, и он работает!
- Отправка данных датчика arduino через Wi-Fi на сервер MySQL
- Mkr1010 отключается и снова подключается нормально до тех пор, пока не достигнет точки, где он никогда больше не подключится снова
- Как подключиться к Arduino с помощью WiFi?
- ESP8266 не подключается к Wi-Fi
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- WebSocketsServer.h: No such file or directory
разве брандмауэр на сервере не блокирует порт?, @Juraj
Хорошая мысль @Juraj, придется в этом разобраться, там есть брандмауэр, @Alejandro Camus