-
Notifications
You must be signed in to change notification settings - Fork 1
/
IoT.s2e
251 lines (232 loc) · 12.8 KB
/
IoT.s2e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
{ "extensionName": "IoT",
"description":"IoT extension for Me WIFI Module",
"version":"1.3",
"author":"Just A HK Guy(justahkguy@gmail.com)",
"homepage":"https://github.com/wandererinhk/IoT-extension-for-mBlock",
"extensionPort": 0,
"extensionHost":"127.0.0.1",
"javascriptURL":"js/IoT.js",
"sort":0,
"blockSpecs": [
["w",
"[mCore]Attach WiFi Module RX@%m.mCoreRX TX@%m.mCoreTX",
"AttachWifi",
"12",
"11",
{"setup":"Wifi.begin(9600);\n",
"inc":"",
"def":"SoftwareSerial Wifi({0},{1});\n",
"work":"",
"loop":""
}
],
["w",
"[Orion]Attach WiFi Module RX@%m.OrionRX TX@%m.OrionTX",
"AttachWifi",
"13",
"12",
{"setup":"Wifi.begin(9600);\n",
"inc":"",
"def":"SoftwareSerial Wifi({0},{1});\n",
"work":"",
"loop":""
}
],
["w",
"[Auriga]Attach WiFi Module RX@%m.AurigaRX TX@%m.AurigaTX",
"AttachWifi",
"69",
"64",
{"setup":"Wifi.begin(9600);\n",
"inc":"",
"def":"SoftwareSerial Wifi({0},{1});\n",
"work":"",
"loop":""
}
],
["w",
"Attach WiFi Module RX@%s TX@%s",
"AttachWifi",
"12",
"11",
{"setup":"Wifi.begin(9600);\n",
"inc":"",
"def":"SoftwareSerial Wifi({0},{1});\n",
"work":"",
"loop":""
}
],
["-"],
["b",
"[With Check]Connect AP|SSID %s |PW %s",
"Connect_AP",
"SSID",
"PW",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"bool ConnectAP(const String& SSID, const String& PW){Wifi.println(F(\"AT+RST\"));delay(2000);Wifi.println(F(\"ATE0\"));Wifi.println(F(\"AT+CWMODE=1\"));Wifi.println(F(\"AT+CIPMUX=1\"));Wifi.println(F(\"AT+CWQAP\"));Wifi.setTimeout(16000);while(Wifi.available()){delayMicroseconds(500);Wifi.read();}String JAP;JAP= F(\"AT+CWJAP=\\\"\");JAP.concat(SSID);JAP.concat(F(\"\\\"+\\\"\"));JAP.concat(PW);JAP.concat(\"\\\"\");Wifi.println(JAP);if (Wifi.find(\"OK\"))return true;else return false;};\n",
"work":"ConnectAP((String){0}, (String){1})",
"loop":""
}
],
["w",
"Connect AP|SSID %s |PW %s",
"Connect_AP_NoCheck",
"SSID",
"PW",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"void ConnectAPNoCheck(const String& SSID, const String& PW){Wifi.println(F(\"AT+RST\"));delay(2000);Wifi.println(F(\"ATE0\"));Wifi.println(F(\"AT+CWMODE=1\"));Wifi.println(F(\"AT+CIPMUX=1\"));Wifi.println(F(\"AT+CWQAP\"));Wifi.setTimeout(16000);while(Wifi.available()){delayMicroseconds(500);Wifi.read();}String JAP;JAP= F(\"AT+CWJAP=\\\"\");JAP.concat(SSID);JAP.concat(F(\"\\\"+\\\"\"));JAP.concat(PW);JAP.concat(\"\\\"\");Wifi.println(JAP);if (Wifi.find(\"OK\")){};};\n",
"work":"ConnectAPNoCheck((String){0}, (String){1});\n",
"loop":""
}
],
["-"],
["b",
"[With Validation]Upload to thingspeak.com|Write API %s |Content %s",
"Upload_freeform",
"Write API",
"field1=",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"bool upLoadToThingspeak(const String& CONTENT){Wifi.setTimeout(5000);while(Wifi.available()){delayMicroseconds(500);Wifi.read();}String Request;Request.reserve(16);String SendOut;SendOut.reserve(150);SendOut= F(\"GET https://api.thingspeak.com/update?api_key=\");SendOut.concat(F({0}));SendOut.concat(F(\"&\"));SendOut.concat(CONTENT);Request=F(\"AT+CIPSEND=0,\");Request.concat(SendOut.length()+2);Wifi.println(F(\"AT+CIPSTART=0,\\\"TCP\\\",\\\"api.thingspeak.com\\\",80\"));if(Wifi.find(\"OK\\r\\n\")){Wifi.println(Request);if(Wifi.find(\">\")){Wifi.println(SendOut);if (Wifi.find(\"+IPD\"))return true;else {Wifi.println(F(\"AT+CIPCLOSE=0\"));return false;}}else{Wifi.println(F(\"AT+CIPCLOSE=0\"));return false;}}else return false;};\n",
"work":"upLoadToThingspeak((String){1})",
"loop":""
}
],
["w",
"Upload to thingspeak.com|Write API %s |field1 %s |field2 %s |field3 %s |field4 %s |field5 %s |field6 %s |field7 %s |field8 %s",
"Upload_fixed",
"Write API",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"bool upLoadToThingspeakFixed(const String& F1, const String& F2, const String& F3, const String& F4, const String& F5, const String& F6, const String& F7, const String& F8){Wifi.setTimeout(5000);while(Wifi.available()){delayMicroseconds(500);Wifi.read();}String Request;Request.reserve(16);String SendOut;SendOut.reserve(150);SendOut= F(\"GET https://api.thingspeak.com/update?api_key=\");SendOut.concat(F({0}));SendOut.concat(F(\"&field1=\"));SendOut.concat(F1);SendOut.concat(F(\"&field2=\"));SendOut.concat(F2);SendOut.concat(F(\"&field3=\"));SendOut.concat(F3);SendOut.concat(F(\"&field4=\"));SendOut.concat(F4);SendOut.concat(F(\"&field5=\"));SendOut.concat(F5);SendOut.concat(F(\"&field6=\"));SendOut.concat(F6);SendOut.concat(F(\"&field7=\"));SendOut.concat(F7);SendOut.concat(F(\"&field8=\"));SendOut.concat(F8);;Request=F(\"AT+CIPSEND=0,\");Request.concat(SendOut.length()+2);Wifi.println(F(\"AT+CIPSTART=0,\\\"TCP\\\",\\\"api.thingspeak.com\\\",80\"));if(Wifi.find(\"OK\\r\\n\")){Wifi.println(Request);if(Wifi.find(\">\")){Wifi.println(SendOut);if (Wifi.find(\"+IPD\"))return true;else {Wifi.println(F(\"AT+CIPCLOSE=0\"));return false;}}else{Wifi.println(F(\"AT+CIPCLOSE=0\"));return false;}}else return false;};\n",
"work":"upLoadToThingspeakFixed((String){1},(String){2},(String){3},(String){4},(String){5},(String){6},(String){7},(String){8});\n",
"loop":""
}
],
["r",
"Get feed from thingspeak.com|Read API %s |Channel ID %s |Field %d.fields",
"Get_last_feed_from_thingspeak",
"Read API",
"ID",
"field1",
{
"setup":"Wifi.begin(9600);\nSerial.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"float getFieldFromThingspeak(const String& API, const String& CHANNEL, const int& FIELD) {Wifi.setTimeout(5000);String Request;Request.reserve(16);String Read;Read.reserve(250);String SendOut;SendOut.reserve(90); String TARGET;switch (FIELD) {case 0:TARGET = F(\"entry_id\\\":\");break;default:TARGET = F(\"field\");TARGET.concat(FIELD);TARGET.concat(\"\\\":\\\"\");break;}SendOut = F(\"GET https://api.thingspeak.com/channels/\");SendOut.concat(CHANNEL);SendOut.concat(F(\"/feeds/last.txt?api_key=\"));SendOut.concat(API);Request = F(\"AT+CIPSEND=0,\");Request.concat((String)(SendOut.length() + 2));Wifi.println(F(\"AT+CIPSTART=0,\\\"TCP\\\",\\\"api.thingspeak.com\\\",80\"));delay(1000);if (Wifi.find(\"OK\\r\\n\")) {Wifi.println(Request);if (Wifi.find(\">\")) {Wifi.println(SendOut);if (Wifi.find(\"SEND OK\")) {Read = Wifi.readString();Read.remove(0, Read.indexOf(TARGET) + TARGET.length());Read.remove(Read.indexOf(\"\\\"\"));return Read.toFloat();} else {Wifi.println(F(\"AT+CIPCLOSE=0\"));return 9999;}} else {Wifi.println(F(\"AT+CIPCLOSE=0\"));return 9999;}}};\n",
"work":"getFieldFromThingspeak((String){0},(String){1},(int){2})",
"loop":""
}
],
["-"],
["b",
"[With validation]Trigger an event to maker.ifttt.com|Event name %s |API %s |Content %s",
"Trigger_ifttt_freeform",
"EventName",
"API",
"value1=",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"bool upLoadToIfttt(const String& EVENTNAME,const String& API,const String& CONTENT){Wifi.setTimeout(5000);while(Wifi.available()){Wifi.read();}String Request;Request.reserve(16);String SendOut;SendOut.reserve(150);SendOut= F(\"GET https://maker.ifttt.com/trigger/\");SendOut.concat(EVENTNAME);SendOut.concat(F(\"/with/key/\"));SendOut.concat(API);SendOut.concat(F(\"?\"));SendOut.concat(CONTENT);Request=F(\"AT+CIPSEND=1,\");Request.concat(SendOut.length()+2);Wifi.println(F(\"AT+CIPSTART=1,\\\"TCP\\\",\\\"maker.ifttt.com\\\",80\"));if (Wifi.find(\"OK\\r\\n\")){Wifi.println(Request);if (Wifi.find(\">\")){Wifi.println(SendOut);if (Wifi.find(\"Congratulations\"))return true;else {Wifi.println(F(\"AT+CIPCLOSE=1\"));return false;};}else{Wifi.println(F(\"AT+CIPCLOSE=1\"));return false;}}else return false;};\n",
"work":"upLoadToIfttt((String){0},(String){1},(String){2})",
"loop":""
}
],
["w",
"Trigger an event to maker.ifttt.com|Event name %s |API %s |Value1 %s |Value2 %s |Value3 %s",
"Trigger_ifttt_fixed",
"EventName",
"API",
"0",
"0",
"0",
{
"setup":"Wifi.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"bool upLoadToIftttFixed(const String& EVENTNAME,const String& API,const String& V1,const String& V2,const String& V3,){Wifi.setTimeout(5000);while(Wifi.available()){Wifi.read();}String Request;Request.reserve(16);String SendOut;SendOut.reserve(150);SendOut= F(\"GET https://maker.ifttt.com/trigger/\");SendOut.concat(EVENTNAME);SendOut.concat(F(\"/with/key/\"));SendOut.concat(API);SendOut.concat(F(\"?value1=\"));SendOut.concat(V1);SendOut.concat(F(\"&value2=\"));SendOut.concat(V2);SendOut.concat(F(\"&value3=\"));SendOut.concat(V3);Request=F(\"AT+CIPSEND=1,\");Request.concat(SendOut.length()+2);Wifi.println(F(\"AT+CIPSTART=1,\\\"TCP\\\",\\\"maker.ifttt.com\\\",80\"));if (Wifi.find(\"OK\\r\\n\")){Wifi.println(Request);if (Wifi.find(\">\")){Wifi.println(SendOut);if (Wifi.find(\"Congratulations\"))return true;else {Wifi.println(F(\"AT+CIPCLOSE=1\"));return false;};}else{Wifi.println(F(\"AT+CIPCLOSE=1\"));return false;}}else return false;};\n",
"work":"upLoadToIftttFixed((String){0},(String){1},(String){2},(String){3},(String){4});\n",
"loop":""
}
],
["-"],
["r",
"Get Weather Info from OpenWeatherMap|API %s |City ID %s |Type %m.types",
"Get_OpenWeatherMap",
"API",
"1819729",
"temp",
{
"setup":"Wifi.begin(9600);\nSerial.begin(9600);\n",
"inc":"#include <String.h>\n",
"def":"float getWeather(const String& API, const long CityID, const String& TARGET) {Wifi.setTimeout(5000);String Request;Request.reserve(16);String SendOut;SendOut.reserve(150);String Read;Read.reserve(500);SendOut = F(\"GET http://api.openweathermap.org/data/2.5/weather?id=\");SendOut.concat(CityID);SendOut.concat(F(\"&appid=\"));SendOut.concat(API);Request =F(\"AT+CIPSEND=2,\") + (String)(SendOut.length() + 2);Wifi.println(F(\"AT+CIPSTART=2,\\\"TCP\\\",\\\"api.openweathermap.org\\\",80\"));delay(1000);if (Wifi.find(F(\"OK\\r\\n\"))) {Wifi.println(Request);if (Wifi.find(\">\")) {Wifi.println(SendOut);if (Wifi.find(\"SEND OK\")) {Read = Wifi.readString();Serial.println(Read);Read.remove(0, Read.indexOf(TARGET) + TARGET.length() + 2);Read.remove(Read.indexOf(\",\\\"\"));Serial.println(Read);Serial.println(Read.toFloat());return Read.toFloat();} else {Wifi.println(F(\"AT+CIPCLOSE=2\")); return 9999;}}else {Wifi.println(F(\"AT+CIPCLOSE=2\"));return 9999;}}}; \n",
"work":"getWeather((String){0},(long){1},(String){2})",
"loop":""
}
],
["-"],
["w",
"WiFi.write %s",
"writeLine",
"AT",
{
"setup":"Wifi.begin(9600);\n",
"inc":"",
"def":"",
"work":"Wifi.println({0});\n",
"loop":""
}
],
],
"menus": {
"fields": ["field1","field2","field3","field4","field5","field6","field7","field8","ID"],
"types": ["temp","pressure","humidity","visibility"],
"mCoreRX":["12","10","17","15"],
"mCoreTX":["11","9","16","14"],
"OrionRX":["13","2","17"],
"OrionTX":["12","8","16"],
"AurigaRX":["69","68","67","66","65"],
"AurigaTX":["64","63","62","61","60"]
},
"values": {
"ID":0,
"field1": 1,
"field2": 2,
"field3": 3,
"field4": 4,
"field5": 5,
"field6": 6,
"field7": 7,
"field8": 8
},
"translators":{
"zh_TW":{
"Attach WiFi Module RX@%s TX@%s":"[其他]連接Wifi模組 RX端口 %s |TX端口 %s",
"WiFi.write %s":"發送序列信息(AT指令) %s",
"[With Check]Connect AP|SSID %s |PW %s":"[帶檢查]連接到AP|SSID %s |密碼 %s",
"Connect AP|SSID %s |PW %s":"連接到AP|SSID %s |密碼 %s",
"[With Validation]Upload to thingspeak.com|Write API %s |Content %s":"[帶檢查]上傳資料到thingspeak.com|Write API %s |內容 %s",
"Upload to thingspeak.com|Write API %s |field1 %s |field2 %s |field3 %s |field4 %s |field5 %s |field6 %s |field7 %s |field8 %s":"上傳資料到thingspeak.com|Write API %s |field1 %s |field2 %s |field3 %s |field4 %s |field5 %s |field6 %s |field7 %s |field8 %s",
"Get feed from thingspeak.com|Read API %s |Channel ID %s |Field %d.fields":"從thingspeak.com取得資料|Write API %s |頻道ID %s |欄位 %d.fields",
"[With validation]Trigger an event to maker.ifttt.com|Event name %s |API %s |Content %s":"[帶檢查]觸發maker.ifttt.com事件|事件名稱 %s |API %s |內容 %s",
"Trigger an event to maker.ifttt.com|Event name %s |API %s |Value1 %s |Value2 %s |Value3 %s":"觸發maker.ifttt.com事件|事件名稱 %s |API %s |value1 %s |value2 %s |value3 %s",
"Get Weather Info from OpenWeatherMap|API %s |City ID %s |Type %m.types":"從OpenWeatherMap讀取資料|API %s |城市代碼 %s |類型 %m.types",
"[mCore]Attach WiFi Module RX@%m.mCoreRX TX@%m.mCoreTX":"[mBot]連接Wifi模組 RX端口%m.mCoreRX TX端口%m.mCoreTX (上至下為Port1-4)",
"[Orion]Attach WiFi Module RX@%m.OrionRX TX@%m.OrionTX":"[Orion]連接Wifi模組 RX端口%m.OrionRX TX端口%m.OrionTX (上至下為Port3,4,6)",
"[Auriga]Attach WiFi Module RX@%m.AurigaRX TX@%m.AurigaTX":"[Auriga]連接Wifi模組 RX端口%m.AurigaRX TX端口%m.AurigaTX (上至下為Port6-10)"
}
}
}