diff --git a/init.lua b/init.lua index 00761d2..739d972 100644 --- a/init.lua +++ b/init.lua @@ -8,34 +8,34 @@ wifiTrys = 0 NUMWIFITRYS = 200 function launch() - print("Connected to WIFI!") - print("IP Address: " .. wifi.sta.getip()) + print("A") + print("B: " .. wifi.sta.getip()) tmr.alarm(0, 5000, 0, function() dofile(CMDFILE) end ) end function checkWIFI() if ( wifiTrys > NUMWIFITRYS ) then - print("Sorry. Not able to connect") + print("C") else ipAddr = wifi.sta.getip() if ( ( ipAddr ~= nil ) and ( ipAddr ~= "0.0.0.0" ) )then tmr.alarm( 1 , 500 , 0 , launch ) else tmr.alarm( 0 , 2500 , 0 , checkWIFI) - print("Checking WIFI..." .. wifiTrys) + print("D: " .. wifiTrys) wifiTrys = wifiTrys + 1 end end end -print("-- Starting up! ") +print("E") ipAddr = wifi.sta.getip() if ( ( ipAddr == nil ) or ( ipAddr == "0.0.0.0" ) ) then - print("Configuring WIFI....") + print("F") wifi.setmode( wifi.STATION ) wifi.sta.config( SSID , APPWD) - print("Waiting for connection") + print("G") tmr.alarm( 0 , 2500 , 0 , checkWIFI ) else launch() diff --git a/mqtt.lua b/mqtt.lua index c36eddd..dd371f3 100644 --- a/mqtt.lua +++ b/mqtt.lua @@ -2,47 +2,48 @@ BROKER = "192.168.87.100" BRPORT = 1883 BRUSER = "" BRPWD = "" -CLIENTID = "ESP8266y-" .. node.chipid() +CLIENTID = "ESP8266-" .. node.chipid() SWITCH_PIN = 0 SWITCH_ID = 0 topics = {"IoT/Watchdog", "IoT/Switch" .. SWITCH_ID} +TOPIC_WATCHDOG = 1 +TOPIC_SWITCH = 2 + pub_sem = 0 current_topic = 1 topicsub_delay = 50 id2 = 0 -switch_state = 0 +switch_state = false +old_switch_state = true --- gpio.mode(SWITCH_PIN, gpio.OUTPUT) --- gpio.write(SWITCH_PIN, gpio.LOW) +function alarm() + node.restart() +end + + +gpio.mode(SWITCH_PIN, gpio.OUTPUT) +gpio.write(SWITCH_PIN, gpio.LOW) -print("Connecting to MQTT broker. Please wait...") m = mqtt.Client( CLIENTID, 120, BRUSER, BRPWD) -print("step 1") -tmr.alarm(4, 15, 1, mqtt_watchdog_expired) -print("step 2") +tmr.alarm(4, 60000, 1, alarm) m:connect( BROKER , BRPORT, 0, function(conn) - print("Connected to MQTT:" .. BROKER .. ":" .. BRPORT .." as " .. CLIENTID ) + print("4") mqtt_sub() end) -print("step 3") -function mqtt_watchdog_expired() - print("mqtt watchdog expired") -end function mqtt_sub() if table.getn(topics) < current_topic then run_main_prog() else m:subscribe(topics[current_topic] , 0, function(conn) - print("Subscribing topic: " .. topics[current_topic - 1] ) end) current_topic = current_topic + 1 tmr.alarm(5, topicsub_delay, 0, mqtt_sub ) @@ -54,10 +55,13 @@ function publish_status() if pub_sem == 0 then pub_sem = 1 local uptime = tmr.time() - local msg = "{\"metadata\":{\"device\":\"WiFiSwitch" .. SWITCH_ID .. "\"}, \"data\":{\"uptime\":" .. uptime .. ", \"state\":" .. switch_state .. "}}" + local switch_state_pres = 0 + if (switch_state) then + switch_state_pres = 1 + end + local msg = "{\"metadata\":{\"device\":\"WiFiSwitch" .. SWITCH_ID .. "\"}, \"data\":{\"uptime\":" .. uptime .. ", \"state\":" .. switch_state_pres .. "}}" m:publish("IoT/Status/WiFiSwitch" .. SWITCH_ID, msg ,0,0, function(conn) - print("Status sent: " .. id2) - print("State: " .. switch_state) + print("8: " .. id2 .. ", " .. switch_state_pres) pub_sem = 0 id2 = id2 +1 end) @@ -72,12 +76,24 @@ function run_main_prog() print(topic .. ":" ) if (data ~= nil ) then print ( data ) - if (data == "switch on") then - switch_state = 1 - gpio.write(SWITCH_PIN, gpio.HIGH) - elseif (data == "switch off") then - switch_state = 0 - gpio.write(SWITCH_PIN, gpio.LOW) + if (topic == topics[TOPIC_SWITCH] and data == "switch on") then + switch_state = true + elseif (topic == topics[TOPIC_SWITCH] and data == "switch off") then + switch_state = false + elseif (topic == topics[TOPIC_SWITCH] and data == "switch toggle") then + switch_state = not switch_state + elseif (topic == topics[TOPIC_WATCHDOG] and data == "wauwau") then + print("9") + tmr.alarm(4, 60000, 1, alarm) + end + + if (switch_state ~= old_switch_state) then + old_switch_state = switch_state + if (switch_state) then + gpio.write(SWITCH_PIN, gpio.HIGH) + else + gpio.write(SWITCH_PIN, gpio.LOW) + end end end end )