Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //init.js
- load('api_config.js');
- load('api_events.js');
- load('api_gpio.js');
- load('api_mqtt.js');
- load('api_net.js');
- load('api_sys.js');
- load('api_timer.js');
- load('api_file.js');
- load('api_pwm.js');
- load('api_adc.js');
- load('api_ir.js');
- load('api_dht.js');
- load('api_rf.js');
- let sta = Cfg.get('device.password');
- MQTT.connect=ffi('bool mgos_mqtt_global_connect(void)');
- Cfg.set({
- device: {
- password: ''
- }
- });
- Timer.set(60000,0,function(){
- if(Cfg.get('device.password')!=='1'){
- Sys.reboot(1000);
- }
- },null);
- if (sta === "1") {
- load('api_dev.js');
- Dev.init();
- }
- GPIO.set_mode(2, 1);
- Timer.set(1000, 1, function() {
- GPIO.toggle(2);
- }, null);
- // ffi('wifi_station_set_reconnect_policy(int)')(0);
- let UD = JSON.parse(File.read('ud.json'));
- let saveUd = function() {
- File.write(JSON.stringify(UD), 'ud.json');
- };
- let myid = Cfg.get("mqtt.client_id");
- let dpass = myid.slice(-8);
- let led = Cfg.get('pins.led');
- let button = Cfg.get('pins.button');
- let topic = '/devices/' + Cfg.get('device.id') + '/events';
- let setWifi = ffi('void setWifi(char *,char *)');
- let aa = 0;
- let d = 0;
- let tcnt = 0;
- let evs = '???';
- let discnt = 0;
- Event.addGroupHandler(Net.EVENT_GRP, function(ev, evdata, arg) {
- if (ev === Net.STATUS_DISCONNECTED) {
- discnt++;
- evs = 'DISCONNECTED';
- } else if (ev === Net.STATUS_CONNECTING) {
- evs = 'CONNECTING';
- } else if (ev === Net.STATUS_CONNECTED) {
- evs = 'CONNECTED';
- discnt = 0;
- dpass = null;
- }
- if (discnt > 2) {
- discnt = 0;
- Timer.set(100, 0, function() {
- conn();
- }, null);
- }
- print('== Net event:', ev, evs);
- }, null);
- let time = 1;
- let send = function(msg) {
- msg.dev = 1;
- let message = JSON.stringify(msg);
- let topic = 'mys';
- let ok = MQTT.pub(myid, message, message.length);
- print('Published:', ok ? 'yes' : 'no', 'topic:', topic, 'message:', message);
- };
- MQTT.sub(myid, function(conn, topic, msg) {
- print('response', msg);
- let aa = JSON.parse(msg);
- for (let i = 0; i < aa.length; i++) {
- print(aa[i].cmd);
- proData(aa[i]);
- }
- }, null);
- MQTT.setEventHandler(function(conn, ev, edata) {
- if (ev !== 0) print('MQTT event handler: got', ev);
- if (ev === 202) {
- if(MQTT.timer){
- Timer.del(MQTT.timer);
- MQTT.timer=null;
- }
- MQTT.connected=true;
- Sys.busy = false;
- Cfg.set({
- device: {
- password: "1"
- }
- });
- let wifi = hot;
- wifi.ev = 'conn';
- Timer.set(2000, 0, function(w) {
- send(w);
- }, wifi);
- UD.Wifi.last = hot;
- for (let i = 0; i < UD.Wifi.list.length; i++) {
- let w = UD.Wifi.list[i];
- if (w.ssid === hot.ssid) {
- w.pass = hot.pass;
- hot = null;
- }
- }
- if (hot) UD.Wifi.list.push(hot);
- saveUd();
- if (sta !== "1") {
- load('api_dev.js');
- Dev.init();
- }
- }else if(ev===MQTT.EV_CLOSE){
- if(MQTT.connected && !MQTT.timer){
- MQTT.timer=Timer.set(180000,0,function(){
- reboot();
- },null);
- }
- MQTT.connected=false;
- Sys.busy=true;
- MQTT.connect();
- }
- }, null);
- global.proNext = function(obj) {
- return;
- };
- let proData = function(obj) {
- obj.result = 'success';
- send(obj);
- if (obj.code) {
- File.write(obj.code, obj.fn || 'user.js');
- if (obj.cmd === 'reboot') {
- send({
- msg: 'reboot......',
- t: obj.t,
- cid: obj.cid
- });
- }
- }
- if (obj.cmd === 'setWifi') {
- start0 = 0;
- pass0 = obj.wp;
- conn0();
- } else if (obj.cmd === 'reboot') {
- reboot();
- } else if (obj.cmd === 'setID') {
- Cfg.set({
- mqtt: {
- client_id: obj.client_id,
- user: obj.user,
- pass: obj.pass
- }
- });
- reboot();
- } else if (obj.cmd === 'on') {
- Dev.relay('on');
- } else if (obj.cmd === 'off') {
- Dev.relay('off');
- } else {
- proNext(obj);
- }
- };
- let reboot = function() {
- Timer.set(2000, 0, function() {
- Sys.reboot(1000);
- }, null);
- };
- global.hotspot = [];
- let wf = function(par, cb) {
- print('>> Starting scan...');
- Wifi.scan(function(results) {
- if (results === undefined) {
- print('!! Scan error');
- return;
- } else {
- print('++ Scan finished,', results.length, 'results:');
- }
- global.hotspot = [];
- for (let i = 0; i < results.length; i++) {
- let h = results[i];
- if (h.rssi < -80) continue;
- for (let j = 0; j < global.hotspot.length; j++) {
- let o = global.hotspot[j];
- if (h.rssi > o.rssi) {
- global.hotspot.splice(j, 0, h);
- h = null;
- break;
- }
- }
- if (h) global.hotspot.push(h);
- }
- print('..', Sys.free_ram());
- conn();
- });
- };
- let start = 0;
- let conn = function() {
- for (let i = start; i < global.hotspot.length; i++) {
- start = i + 1;
- let o = global.hotspot[i];
- print(' ', JSON.stringify(o));
- for (let j = 0; j < UD.Wifi.list.length; j++) {
- let w = UD.Wifi.list[j];
- if (w.ssid === o.ssid) {
- sw(w);
- return;
- }
- }
- }
- conn0();
- };
- let start0 = 0;
- let conn0 = function() {
- if (pass0 || dpass) {
- for (let i = start0; i < global.hotspot.length; i++) {
- start0 = i + 1;
- let o = global.hotspot[i];
- o.pass = pass0 || dpass;
- sw(o);
- return;
- }
- }
- start0 = 0;
- pass0 = null;
- start = 0;
- print('run wf-----');
- Timer.set(1000, 0, function() {
- wf();
- }, null);
- };
- let hot = null;
- let pass0 = null;
- let sw = function(w) {
- print('conn', JSON.stringify(w));
- hot = w;
- setWifi(w.ssid, w.pass);
- };
- sw(UD.Wifi.last || UD.Wifi.list[0]);
- //api_dev.js
- global.Dev = {
- pin_relay:14,
- pin_dht11: 0,
- init: function() {
- GPIO.write(Dev.pin_relay,0);
- GPIO.set_mode(Dev.pin_relay,1);
- Dev.dht = DHT.create(Dev.pin_dht11, DHT.DHT11);
- Timer.set(5000,1,function(){
- send({temp:Dev.dht.getTemp(),hum:Dev.dht.getHumidity()});
- },null);
- Timer.set(100,1,function(){
- if(Sys.busy) return;
- if(Dev.rflock) Dev.rflock--;
- let x=Rf.get(13);
- if(x>10){
- if(Dev.oldrf!==x || !Dev.rflock){
- send({rf:x});
- }
- if(Dev.oldrf===x){
- Dev.rflock=30;
- }else{
- Dev.rflock=0;
- }
- Dev.oldrf=x;
- }
- if(x===5592405){
- Dev.relay('on');
- }
- if(x===7721428){
- Dev.relay('off');
- }
- },null);
- },
- rflock:0,
- relay:function(cmd){
- if(cmd==='on'){
- Rf.send(12,2402322,350);
- GPIO.write(Dev.pin_relay,1);
- }else if(cmd==='off'){
- Rf.send(12,2404422,350);
- GPIO.write(Dev.pin_relay,0);
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement