arduinoWebSockets
arduinoWebSockets copied to clipboard
to turn on/off led in esp32
what is the command to turn on/off led in esp32. Data is emitted from the server in node js and according to the data the led should on/off in esp32. How to get the data from sensor to the server in node js.
Hello @feronarockiam :wave:
I would suggest looking at some basics videos on YouTube to learn some Arduino / C++ Basics before trying to use libraries. You shouldn't create issues to get development help. This is only dedicated for Issues as the name suggests :sweat_smile:
For new users i would suggest installing Arduino in VSCode to get really good autocompletion and overload suggestion. (A bit tricky to setup for new users)
Or installing Arduino IDE v2 and enabling auto suggestion in the preferences.
To answer your question , to turn a GPIO "on" we use this function digitalWrite(YOUR_GPIO_NUMBER,HIGH) Please note that the pin should be setup as output with the following command in the setup function pinMode(YOUR_GPIO_NUMBER,OUTPUT);
To trigger actions on Websocket messages you must create a function to handle Events then assign that function to your WebSocketsServer instance with the onEvent(YOUR_FUNC)
Here is a simple example of a onEvent func that would turn on and off a GPIO with websockets text messages :
void ws_onEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t length)
{
switch (type)
{
case WStype_TEXT:
if (strcmp((char *)payload, "on") == 0)
{
digitalWrite(12, HIGH);
}
else if (strcmp((char *)payload, "off") == 0)
{
digitalWrite(12, LOW);
}
break;
}
}
Have a nice day :wave:
thanks for your reply!
i already have my arduino code:
#include <Arduino.h>
#include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h>
#include <ArduinoJson.h>
#include <WebSocketsClient.h> #include <SocketIOclient.h>
#include <Hash.h>
ESP8266WiFiMulti WiFiMulti; SocketIOclient socketIO;
#define USE_SERIAL Serial1
void socketIOEvent(socketIOmessageType_t type, uint8_t * payload, size_t length) { switch(type) { case sIOtype_DISCONNECT: USE_SERIAL.printf("[IOc] Disconnected!\n"); break; case sIOtype_CONNECT: USE_SERIAL.printf("[IOc] Connected to url: %s\n", payload);
// join default namespace (no auto join in Socket.IO V3)
socketIO.send(sIOtype_CONNECT, "/");
break;
case sIOtype_EVENT:
USE_SERIAL.printf("[IOc] get event: %s\n", payload);
break;
case sIOtype_ACK:
USE_SERIAL.printf("[IOc] get ack: %u\n", length);
hexdump(payload, length);
break;
case sIOtype_ERROR:
USE_SERIAL.printf("[IOc] get error: %u\n", length);
hexdump(payload, length);
break;
case sIOtype_BINARY_EVENT:
USE_SERIAL.printf("[IOc] get binary: %u\n", length);
hexdump(payload, length);
break;
case sIOtype_BINARY_ACK:
USE_SERIAL.printf("[IOc] get binary ack: %u\n", length);
hexdump(payload, length);
break;
}
}
void setup() { // USE_SERIAL.begin(921600); USE_SERIAL.begin(115200);
//Serial.setDebugOutput(true);
USE_SERIAL.setDebugOutput(true);
USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();
for(uint8_t t = 4; t > 0; t--) {
USE_SERIAL.printf("[SETUP] BOOT WAIT %d...\n", t);
USE_SERIAL.flush();
delay(1000);
}
// disable AP
if(WiFi.getMode() & WIFI_AP) {
WiFi.softAPdisconnect(true);
}
WiFiMulti.addAP("redmiii", "12345678");
//WiFi.disconnect();
while(WiFiMulti.run() != WL_CONNECTED) {
delay(100);
}
String ip = WiFi.localIP().toString();
USE_SERIAL.printf("[SETUP] WiFi Connected %s\n", ip.c_str());
// server address, port and URL
socketIO.begin("127.0.01", 3000, "/socket.io/?EIO=4");
// event handler
socketIO.onEvent(socketIOEvent);
}
unsigned long messageTimestamp = 0; void loop() { socketIO.loop();
uint64_t now = millis();
if(now - messageTimestamp > 2000) {
messageTimestamp = now;
// creat JSON message for Socket.IO (event)
DynamicJsonDocument doc(1024);
JsonArray array = doc.to<JsonArray>();
// add evnet name
// Hint: socket.on('event_name', ....
array.add("event_name");
// add payload (parameters) for the event
JsonObject param1 = array.createNestedObject();
param1["now"] = (uint32_t) now;
// JSON to String (serializion)
String output;
serializeJson(doc, output);
// Send event
socketIO.sendEVENT(output);
// Print JSON for debugging
USE_SERIAL.println(output);
}
}
i try to connect to my server but i always shows disconnecting can you say where do i make mistake
i think the connection is not established between the server and the esp8266 can you guide me
"127.0.01"
the correct IP address is 127.0.0.1, not 127.0.01.
nevertheless, this is a localhost IP and is not accessible for anything but your local machine. On your server try listening to your actual local IP that your modem gave you. It should start with 192.168 or something.