Advertisement
Guest User

Untitled

a guest
Jul 28th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.47 KB | None | 0 0
  1. //init.js
  2. load('api_config.js');
  3. load('api_events.js');
  4. load('api_gpio.js');
  5. load('api_mqtt.js');
  6. load('api_net.js');
  7. load('api_sys.js');
  8. load('api_timer.js');
  9. load('api_file.js');
  10. load('api_pwm.js');
  11. load('api_adc.js');
  12. load('api_ir.js');
  13. load('api_dht.js');
  14. load('api_rf.js');
  15. let sta = Cfg.get('device.password');
  16. MQTT.connect=ffi('bool mgos_mqtt_global_connect(void)');
  17. Cfg.set({
  18. device: {
  19. password: ''
  20. }
  21. });
  22. Timer.set(60000,0,function(){
  23. if(Cfg.get('device.password')!=='1'){
  24. Sys.reboot(1000);
  25. }
  26. },null);
  27. if (sta === "1") {
  28. load('api_dev.js');
  29. Dev.init();
  30. }
  31. GPIO.set_mode(2, 1);
  32. Timer.set(1000, 1, function() {
  33. GPIO.toggle(2);
  34. }, null);
  35. // ffi('wifi_station_set_reconnect_policy(int)')(0);
  36. let UD = JSON.parse(File.read('ud.json'));
  37. let saveUd = function() {
  38. File.write(JSON.stringify(UD), 'ud.json');
  39. };
  40. let myid = Cfg.get("mqtt.client_id");
  41. let dpass = myid.slice(-8);
  42. let led = Cfg.get('pins.led');
  43. let button = Cfg.get('pins.button');
  44. let topic = '/devices/' + Cfg.get('device.id') + '/events';
  45. let setWifi = ffi('void setWifi(char *,char *)');
  46. let aa = 0;
  47. let d = 0;
  48. let tcnt = 0;
  49. let evs = '???';
  50. let discnt = 0;
  51. Event.addGroupHandler(Net.EVENT_GRP, function(ev, evdata, arg) {
  52. if (ev === Net.STATUS_DISCONNECTED) {
  53.  
  54. discnt++;
  55. evs = 'DISCONNECTED';
  56. } else if (ev === Net.STATUS_CONNECTING) {
  57. evs = 'CONNECTING';
  58. } else if (ev === Net.STATUS_CONNECTED) {
  59.  
  60. evs = 'CONNECTED';
  61. discnt = 0;
  62. dpass = null;
  63. }
  64. if (discnt > 2) {
  65. discnt = 0;
  66. Timer.set(100, 0, function() {
  67. conn();
  68. }, null);
  69. }
  70. print('== Net event:', ev, evs);
  71. }, null);
  72. let time = 1;
  73. let send = function(msg) {
  74. msg.dev = 1;
  75. let message = JSON.stringify(msg);
  76. let topic = 'mys';
  77. let ok = MQTT.pub(myid, message, message.length);
  78. print('Published:', ok ? 'yes' : 'no', 'topic:', topic, 'message:', message);
  79. };
  80. MQTT.sub(myid, function(conn, topic, msg) {
  81. print('response', msg);
  82. let aa = JSON.parse(msg);
  83. for (let i = 0; i < aa.length; i++) {
  84. print(aa[i].cmd);
  85. proData(aa[i]);
  86. }
  87. }, null);
  88. MQTT.setEventHandler(function(conn, ev, edata) {
  89. if (ev !== 0) print('MQTT event handler: got', ev);
  90. if (ev === 202) {
  91. if(MQTT.timer){
  92. Timer.del(MQTT.timer);
  93. MQTT.timer=null;
  94. }
  95. MQTT.connected=true;
  96. Sys.busy = false;
  97. Cfg.set({
  98. device: {
  99. password: "1"
  100. }
  101. });
  102. let wifi = hot;
  103. wifi.ev = 'conn';
  104. Timer.set(2000, 0, function(w) {
  105. send(w);
  106. }, wifi);
  107. UD.Wifi.last = hot;
  108. for (let i = 0; i < UD.Wifi.list.length; i++) {
  109. let w = UD.Wifi.list[i];
  110. if (w.ssid === hot.ssid) {
  111. w.pass = hot.pass;
  112. hot = null;
  113. }
  114. }
  115. if (hot) UD.Wifi.list.push(hot);
  116. saveUd();
  117.  
  118. if (sta !== "1") {
  119. load('api_dev.js');
  120. Dev.init();
  121. }
  122. }else if(ev===MQTT.EV_CLOSE){
  123. if(MQTT.connected && !MQTT.timer){
  124. MQTT.timer=Timer.set(180000,0,function(){
  125. reboot();
  126. },null);
  127. }
  128. MQTT.connected=false;
  129. Sys.busy=true;
  130. MQTT.connect();
  131. }
  132. }, null);
  133. global.proNext = function(obj) {
  134. return;
  135. };
  136. let proData = function(obj) {
  137. obj.result = 'success';
  138. send(obj);
  139. if (obj.code) {
  140. File.write(obj.code, obj.fn || 'user.js');
  141. if (obj.cmd === 'reboot') {
  142. send({
  143. msg: 'reboot......',
  144. t: obj.t,
  145. cid: obj.cid
  146. });
  147. }
  148. }
  149. if (obj.cmd === 'setWifi') {
  150. start0 = 0;
  151. pass0 = obj.wp;
  152. conn0();
  153. } else if (obj.cmd === 'reboot') {
  154. reboot();
  155. } else if (obj.cmd === 'setID') {
  156. Cfg.set({
  157. mqtt: {
  158. client_id: obj.client_id,
  159. user: obj.user,
  160. pass: obj.pass
  161. }
  162. });
  163. reboot();
  164. } else if (obj.cmd === 'on') {
  165. Dev.relay('on');
  166. } else if (obj.cmd === 'off') {
  167. Dev.relay('off');
  168. } else {
  169. proNext(obj);
  170. }
  171. };
  172. let reboot = function() {
  173. Timer.set(2000, 0, function() {
  174. Sys.reboot(1000);
  175. }, null);
  176. };
  177. global.hotspot = [];
  178. let wf = function(par, cb) {
  179. print('>> Starting scan...');
  180. Wifi.scan(function(results) {
  181. if (results === undefined) {
  182. print('!! Scan error');
  183. return;
  184. } else {
  185. print('++ Scan finished,', results.length, 'results:');
  186. }
  187. global.hotspot = [];
  188. for (let i = 0; i < results.length; i++) {
  189. let h = results[i];
  190. if (h.rssi < -80) continue;
  191. for (let j = 0; j < global.hotspot.length; j++) {
  192. let o = global.hotspot[j];
  193. if (h.rssi > o.rssi) {
  194. global.hotspot.splice(j, 0, h);
  195. h = null;
  196. break;
  197. }
  198. }
  199. if (h) global.hotspot.push(h);
  200. }
  201. print('..', Sys.free_ram());
  202. conn();
  203. });
  204. };
  205. let start = 0;
  206. let conn = function() {
  207. for (let i = start; i < global.hotspot.length; i++) {
  208. start = i + 1;
  209. let o = global.hotspot[i];
  210. print(' ', JSON.stringify(o));
  211. for (let j = 0; j < UD.Wifi.list.length; j++) {
  212. let w = UD.Wifi.list[j];
  213. if (w.ssid === o.ssid) {
  214. sw(w);
  215. return;
  216. }
  217. }
  218. }
  219. conn0();
  220. };
  221. let start0 = 0;
  222. let conn0 = function() {
  223. if (pass0 || dpass) {
  224. for (let i = start0; i < global.hotspot.length; i++) {
  225. start0 = i + 1;
  226. let o = global.hotspot[i];
  227. o.pass = pass0 || dpass;
  228. sw(o);
  229. return;
  230. }
  231. }
  232. start0 = 0;
  233. pass0 = null;
  234. start = 0;
  235. print('run wf-----');
  236. Timer.set(1000, 0, function() {
  237. wf();
  238. }, null);
  239. };
  240. let hot = null;
  241. let pass0 = null;
  242. let sw = function(w) {
  243. print('conn', JSON.stringify(w));
  244. hot = w;
  245. setWifi(w.ssid, w.pass);
  246. };
  247. sw(UD.Wifi.last || UD.Wifi.list[0]);
  248. //api_dev.js
  249. global.Dev = {
  250. pin_relay:14,
  251. pin_dht11: 0,
  252. init: function() {
  253. GPIO.write(Dev.pin_relay,0);
  254. GPIO.set_mode(Dev.pin_relay,1);
  255. Dev.dht = DHT.create(Dev.pin_dht11, DHT.DHT11);
  256. Timer.set(5000,1,function(){
  257. send({temp:Dev.dht.getTemp(),hum:Dev.dht.getHumidity()});
  258. },null);
  259. Timer.set(100,1,function(){
  260. if(Sys.busy) return;
  261. if(Dev.rflock) Dev.rflock--;
  262. let x=Rf.get(13);
  263. if(x>10){
  264. if(Dev.oldrf!==x || !Dev.rflock){
  265. send({rf:x});
  266.  
  267. }
  268. if(Dev.oldrf===x){
  269. Dev.rflock=30;
  270. }else{
  271. Dev.rflock=0;
  272. }
  273. Dev.oldrf=x;
  274. }
  275. if(x===5592405){
  276. Dev.relay('on');
  277. }
  278. if(x===7721428){
  279. Dev.relay('off');
  280. }
  281.  
  282. },null);
  283.  
  284. },
  285. rflock:0,
  286. relay:function(cmd){
  287. if(cmd==='on'){
  288. Rf.send(12,2402322,350);
  289. GPIO.write(Dev.pin_relay,1);
  290. }else if(cmd==='off'){
  291. Rf.send(12,2404422,350);
  292. GPIO.write(Dev.pin_relay,0);
  293. }
  294. }
  295. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement