Skip to content

Commit 4d0d621

Browse files
mohammad reza zaerimohammad reza zaeri
authored andcommitted
Project setup
1 parent 24b1e09 commit 4d0d621

File tree

4 files changed

+3299
-0
lines changed

4 files changed

+3299
-0
lines changed

examples/simple/simple.ino

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
#include <airngin.h>
2+
3+
#define KEY_OF_CENTER "AIRN" // IT'S PRODUCER CENTER CODE
4+
5+
#define Pushbotton 32 // PIN FOR GO TO Config Panel and AP MODE
6+
7+
#define CALL_Global_Mqtt_CALLBACK true // if is true just call this airnginClient.setOnMessageCallback(myMqttCallback);
8+
// else is false desn't call airnginClient.setOnMessageCallback(myMqttCallback); and call other callback
9+
10+
AirNginClient airnginClient;
11+
12+
String _SerialNo="";
13+
14+
unsigned long _TimerSecCurrent, _TimerSecOld = 0;
15+
byte _TimerSecDef = 0;
16+
17+
byte _TimerKeyPush = 0;
18+
19+
void setup() {
20+
21+
Serial.begin(9600);
22+
Tools__SerialBarcodeReload();
23+
airnginClient.begin("","",_SerialNo);
24+
airnginClient.setOnMessageCallback(myMqttCallback);
25+
airnginClient.setOnSaveScenarioCallback(saveScenarioCallback);
26+
airnginClient.setOnDebuggerCallback(debuggerCallback);
27+
airnginClient.setOnMessage_From_Topic_DeviceToDevice_Callback(message_From_Topic_DeviceToDevice_Callback);
28+
airnginClient.setOnMessage_From_Topic_ServerToDevice_Callback(message_From_Topic_ServerToDevice_Callback);
29+
30+
Serial.println("*-*-*-*-*-before confige **********************************");
31+
Serial.println("*-*-*-*-*-before confige *********************************");
32+
33+
pinMode(Pushbotton, INPUT_PULLUP);
34+
}
35+
36+
37+
void loop() {
38+
delay(1000);
39+
airnginClient.client_Loop();
40+
TimerSec_Refresh(); //read Time
41+
if(digitalRead(Pushbotton)==LOW){
42+
_TimerKeyPush += _TimerSecDef;
43+
}
44+
else
45+
_TimerKeyPush = 0;
46+
if(_TimerKeyPush>=5){ //
47+
_TimerKeyPush=0;
48+
if(airnginClient.isConfigMode)
49+
{
50+
airnginClient.Tools__SetMode(airnginClient._StartMode == "config_panel" ? "normal" : "config_panel", false);
51+
airnginClient.isConfigMode=false;
52+
airnginClient._Mqtt_TryConnecting = false;
53+
54+
}else{
55+
airnginClient.Tools__SetMode(airnginClient._StartMode == "config_panel" ? "normal" : "config_panel", false);
56+
airnginClient.isConfigMode=true;
57+
airnginClient._Mqtt_TryConnecting = true;
58+
airnginClient.Config__Setup();
59+
}
60+
}
61+
}
62+
63+
64+
void Tools__SerialBarcodeReload()
65+
{
66+
67+
String chip = (String(airnginClient.Tools__GetChipID()) + "0000000").substring(0, 7);
68+
if (chip == "0000000")
69+
chip = (String(airnginClient.Tools__Random(1000000, 9999998)) + "0000000").substring(0, 7);
70+
_SerialNo = KEY_OF_CENTER + ("000" + chip).substring(0, 10);
71+
72+
73+
Serial.println("_SerialNo : " + _SerialNo);
74+
}
75+
76+
77+
void TimerSec_Refresh()
78+
{
79+
//-------------------------------------------- TIMER
80+
try
81+
{
82+
_TimerSecCurrent = millis();
83+
_TimerSecDef = ((_TimerSecCurrent - _TimerSecOld) / 1000) & 0xFF;
84+
if (_TimerSecDef < 0)
85+
_TimerSecDef = 1;
86+
if (_TimerSecDef >= 1)
87+
_TimerSecOld = _TimerSecCurrent;
88+
}
89+
catch (...)
90+
{
91+
}
92+
}
93+
94+
95+
void myMqttCallback(char *topic, uint8_t *payload, unsigned int length) {
96+
97+
Serial.println("**************** myMqttCallback ********************************");
98+
String projectTopic = String(topic);
99+
int p = projectTopic.indexOf('/');
100+
if (projectTopic.substring(0, p) != airnginClient._ProjectCode) // فرض بر این است که متدی برای گرفتن ProjectCode وجود دارد
101+
return;
102+
projectTopic = projectTopic.substring(p + 1);
103+
104+
StaticJsonDocument<512> doc; // فرض می‌کنیم اندازه 512 بایت کافی است
105+
DeserializationError error = deserializeJson(doc, payload, length);
106+
if (error) {
107+
Serial.println("JSON parse failed!");
108+
return;
109+
}
110+
111+
if (projectTopic == "DeviceSetting") {
112+
String opr = doc["operationName"].as<String>();
113+
if (opr == "save_scenario" || opr == "delete_scenario") {
114+
// کد مربوط به ذخیره یا حذف سناریو
115+
} else if (opr == "save_setting") {
116+
if (doc["deviceSerial"].as<String>() == airnginClient._SerialCloud) {
117+
String cmd, d = doc["value"].as<String>();
118+
if (d != "") {
119+
deserializeJson(doc, d);
120+
if (doc["request"]["commandName"] && doc["request"]["commandData"]) {
121+
cmd = doc["request"]["commandName"].as<String>();
122+
if (cmd == "saveScenarioOperation") {
123+
JsonVariant inp = doc["scenarioOperation"].as<JsonVariant>();
124+
// پردازش سناریو
125+
}
126+
// سایر دستورات...
127+
}
128+
}
129+
}
130+
}
131+
}
132+
// سایر موضوعات (topics) مشابه...
133+
}
134+
135+
136+
// تعریف Callback برای ذخیره سناریو
137+
void saveScenarioCallback(JsonDocument &doc) {
138+
Serial.println("Save scenario callback triggered!");
139+
// پردازش مربوط به ذخیره سناریو
140+
}
141+
142+
// تعریف Callback برای دیباگر
143+
void debuggerCallback(String value) {
144+
Serial.println("Debugger callback triggered with value: " + value);
145+
// فقط حالت زمانی که operationNme == "debugger" و value == "special"
146+
// مابقی عملیات ها را کتابخانه اجرا می نماید
147+
}
148+
149+
// تعریف Callback برای دریافت داده از DeviceToDevice
150+
void message_From_Topic_DeviceToDevice_Callback(uint8_t *payload) {
151+
Serial.println("message on DeviceToDevice Callback with value: " + String((char *)payload));
152+
}
153+
154+
155+
// تعریف Callback برای دریافت داده از سرور جهت اجرای دستورات
156+
void message_From_Topic_ServerToDevice_Callback(String value) {
157+
Serial.println("message on ServerToDevice Callback with value: " + value);
158+
}

library.properties

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name=Airngin-esp32-mqtt-client
2+
version=0.1.1
3+
author=Mohammad <[email protected]>
4+
maintainer=Mohammad <[email protected]>
5+
sentence=A library for AirNgin IoT platform.
6+
category=Communication
7+
url=https://github.com/airngin/Airngin-esp32-mqtt-client
8+
architectures=esp32

0 commit comments

Comments
 (0)