0

I am trying to send a WebSocket message to a server. The example for the ArduinoHttpClient library uses WiFi101 but that will not work for the MKR 1010. So I am trying to use WifiNINA instead. The WiFi part works fine but is seems the WebSocket cannot "begin".

#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();
}

Could it be that there are compatibility issues between the ArduinoHttpClient library and the Arduino MKR1010? I am thinking of getting an ESP32 instead since there seem to be more WebSocket libraries built around it.

Glorfindel
5781 gold badge7 silver badges18 bronze badges
asked Apr 30, 2019 at 17:28
2
  • doesn't firewall on server block the port? Commented Apr 30, 2019 at 17:56
  • Good point @Juraj, will have to look into it, there is a firewall Commented May 1, 2019 at 9:56

1 Answer 1

-1

I needed to use port 80.

I got a hint from wikipedia:

The communications are done over TCP port number 80 (or 443 in the case of TLS-encrypted connections), which is of benefit for those environments which block non-web Internet connections using a firewall.

https://en.wikipedia.org/wiki/WebSocket

Switched to port 80 and it works!

answered May 16, 2019 at 10:46

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.