Skip to main content

مثال كامل للتنفيذ (C++)

مثال على التنفيذ (C++)

هذا كود كامل جاهز للنسخ والاستخدام على ESP32 للاتصال بـ PYMO PRO API.

رسالة من فريق PYMO PRO

مرحبًا بكم في API PYMO PRO. يمكنك الحصول على شرح مفصّل عبر https://docs.pymo.pro/ بدون قيود، مجاني تمامًا، بدون رسوم شهرية. https://pymo.pro

Full Example (.ino)
/*
============================================================
مرحبًا بكم في API PYMO PRO.
يمكنك الحصول على شرح مفصّل عبر
[https://docs.pymo.pro/](https://docs.pymo.pro/)
بدون قيود، مجاني تمامًا،
بدون رسوم شهرية
[https://pymo.pro](https://pymo.pro)
============================================================
*/

#include <WiFi.h>
#include <ArduinoWebsockets.h>
#include <ArduinoJson.h>

using namespace websockets;

// ------------------- تكوين الشبكة -------------------
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// ------------------- رمز API الخاص بك -------------------
const String token = "YOUR_API_TOKEN";
// -----------------------------------------------------

String ws_url = "ws://api.pymo.pro/ws?token=" + token;
const char* ws_url_cstr = ws_url.c_str();

WebsocketsClient client;

// هذه الدالة تعمل عند استقبال رسالة
void onMessage(WebsocketsMessage message) {
Serial.println("Received message:");
Serial.println(message.data());

DynamicJsonDocument doc(1024);
DeserializationError error = deserializeJson(doc, message.data());
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.f_str());
return;
}

// قراءة كل دبوس (pin) من رسالة الـ JSON
JsonObject pins = doc["pins"];
for (JsonPair kv : pins) {
// استخراج رقم الدبوس من المفتاح (مثل "pin22" -> 22)
int pinNumber = atoi(kv.key().c_str() + 3);
int pinValue = kv.value().as<int>();

// تجهيز الدبوس وتعيين حالته
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, pinValue);

Serial.print("Set Pin: ");
Serial.print(pinNumber);
Serial.print(" to Value: ");
Serial.println(pinValue);
}
}

void setup() {
Serial.begin(115200);

// الاتصال بشبكة Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(200);
Serial.print(".");
}
Serial.println("WiFi متصل");

// إعداد دالة معالجة الرسائل
client.onMessage(onMessage);

// الاتصال بـ WebSocket
if (client.connect(ws_url)) {
Serial.println("WebSocket متصل!");
} else {
Serial.println("فشل الاتصال بـ WebSocket.");
}
}

void loop() {
// الحفاظ على الاتصال واستقبال الرسائل
client.poll();
}