☁️ v34.12
🛟
🗑️
⚙️
✕
#include <WiFi.h> #include <WebSocketsClient.h> #include <ArduinoJson.h> #include "esp_zigbee_core.h" // ========================================== // CONFIGURACIÓN - RELLENA TUS DATOS // ========================================== const char* ssid = "TU_WIFI_SSID"; const char* password = "TU_WIFI_PASSWORD"; const char* host = "pix0te.alwaysdata.net"; const int port = 80; WebSocketsClient webSocket; bool zigbee_started = false; // ========================================== // FUNCIONES DE COMUNICACIÓN // ========================================== void sendDiscovery(uint16_t short_addr) { JsonDocument doc; doc["type"] = "DISCOVERY"; char idStr[16]; sprintf(idStr, "0x%04X", short_addr); doc["id"] = idStr; doc["tipo"] = "0x0100"; // Por defecto lo enviamos como Luz/Interruptor String output; serializeJson(doc, output); webSocket.sendTXT(output); Serial.println("Enviado descubrimiento: " + output); } // ========================================== // MANEJADORES ZIGBEE (Sintaxis v3.0) // ========================================== void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) { uint32_t *p_sg_p = signal_struct->p_app_signal; esp_zb_app_signal_type_t sig_type = (esp_zb_app_signal_type_t)*p_sg_p; switch (sig_type) { case ESP_ZB_ZDO_SIGNAL_SKIP_STARTUP: Serial.println("Zigbee arrancando..."); esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_FORMATION); break; case ESP_ZB_BDB_SIGNAL_FORMATION_DONE: if (signal_struct->esp_err_status == ESP_OK) { Serial.println("Red Zigbee formada."); esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING); } break; case ESP_ZB_ZDO_SIGNAL_DEVICE_ANNCE: { esp_zb_zdo_signal_device_annce_params_t *dev = (esp_zb_zdo_signal_device_annce_params_t *)esp_zb_app_signal_get_params(p_sg_p); Serial.printf("Dispositivo unido: 0x%04X\n", dev->device_short_addr); sendDiscovery(dev->device_short_addr); break; } default: break; } } // ========================================== // MANEJADOR WEBSOCKET // ========================================== void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { switch(type) { case WStype_DISCONNECTED: Serial.println("[WS] Desconectado del servidor"); break; case WStype_CONNECTED: Serial.println("[WS] Conectado a Alwaysdata"); break; case WStype_TEXT: Serial.printf("[WS] Recibido: %s\n", payload); JsonDocument doc; deserializeJson(doc, payload); // Si la web pide buscar dispositivos if(doc["id"] == "SYSTEM" && doc["action"] == "PAIR") { Serial.println("Abriendo red Zigbee por 180s..."); esp_zb_bdb_start_top_level_commissioning(ESP_ZB_BDB_MODE_NETWORK_STEERING); } break; } } // ========================================== // SETUP Y LOOP // ========================================== void setup() { Serial.begin(115200); delay(2000); // Espera para abrir monitor serie // 1. WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi Conectado"); // 2. WebSocket webSocket.begin(host, port, "/"); webSocket.onEvent(webSocketEvent); webSocket.setReconnectInterval(5000); // 3. Configuración Zigbee (Corregida) esp_zb_cfg_t zb_nwk_cfg = { .esp_zb_role = ESP_ZB_DEVICE_TYPE_COORDINATOR, .install_code_policy = false, .nwk_cfg = { .zed_cfg = { .ed_timeout = 0, .keep_alive = 0 } } }; esp_zb_init(&zb_nwk_cfg); esp_zb_start(false); } void loop() { webSocket.loop(); }
CONFIGURACIÓN
✕
PLACA
BUSCAR
INSTALADAS
INFO
MODELO BASE
ESP32 Dev Module
Wemos D1 Mini ESP32
ESP32-C3 Mini
ESP32-S3
NodeMCU 1.0
HISTORIAL
fw_165907_app.bin
⬇️
🗑️
fw_165907_factory_0x0.bin
⬇️
🗑️
project.ino.bootloader.bin
⬇️
🗑️
project.ino.partitions.bin
⬇️
🗑️
BUSCAR
PubSubClient
🗑️
Adafruit SSD1306
🗑️
ArduinoJson
🗑️
Adafruit Unified Sensor
🗑️
NimBLE-Arduino
🗑️
Adafruit GFX Library
🗑️
WebSockets
🗑️
EspRescue
🗑️
Adafruit NeoPixel
🗑️
WiFi
🗑️
dht11esp8266
🗑️
RAM:
1067/23980 MB |
Disco:
18.35 GB
⚡ ACTUALIZAR IDE