Skip to content

Instantly share code, notes, and snippets.

@mattfoster
Created February 21, 2016 14:28
Show Gist options
  • Save mattfoster/d8960091b31795d89a90 to your computer and use it in GitHub Desktop.
Save mattfoster/d8960091b31795d89a90 to your computer and use it in GitHub Desktop.
-- Config
SSID = "ssid_name"
PASS = "ssid_pass"
MQTT_TEMP_TOPIC = "/sensors/study/temperature"
MQTT_HOST = "server IP"
MQTT_PORT = 1883
MQTT_CLIENT_ID = "esp2866_study"
MQTT_USER = ""
MQTT_PASS = ""
MQTT_RECONNECT = 1
MQTT_SECURE = 0
-- TMP102 settings
TMP102_ID = 0
TMP102_SDA = 6
TMP102_SCL = 7
-- Allow correcting temperatures by subtracting this
TMP102_BIAS = 0
-- Number of seconds to wait for a wifi connection before restarting
MAX_RETRIES = 20
-- Measurement interval (ms)
TEMP_INTERVAL = 10000
function wifi_connect(ssid, pass)
wifi.setmode(wifi.STATION)
wifi.sta.config(ssid, pass)
local wifi_count = 0
tmr.alarm(0, 1000, 1, function()
wifi_status = wifi.sta.status()
if wifi_status ~= 5 then
wifi_count = wifi_count + 1
if wifi_count >= MAX_RETRIES then
print("Failed to connect. Restarting")
node.restart()
end
print("Not yet connected.")
else
ip, mask, gateway = wifi.sta.getip()
print("Connected")
print("IP address: ", ip)
print("Netmask: ", mask)
print("Gateway: ", gateway)
tmr.stop(0)
mqtt_setup()
end
end) -- end of alarm function
end
function mqtt_setup()
local mqtt_connection = 0
-- Connect to the MQTT broker
mqtt = mqtt.Client(MQTT_CLIENT_ID, 120, MQTT_USER, MQTT_PASS)
mqtt:connect(MQTT_HOST, MQTT_PORT, MQTT_SECURE, MQTT_RECONNECT)
mqtt:on("connect", function(client)
print("Connected to MQTT server")
mqtt_connection = 1
-- Load the TMP102 module
tmp102=dofile("tmp102.lua")
tmp102.begin(TMP102_ID, TMP102_SDA, TMP102_SCL)
tmr.alarm(0, TEMP_INTERVAL, 1, function()
temp=tmp102.celcius() - TMP102_BIAS
print("Read temperature from TMP102: ", temp)
mqtt:publish(MQTT_TEMP_TOPIC, temp, 0, 0)
end)
end)
-- TODO: reconnection logic if auto-reconnect fails
mqtt:on("offline", function(client)
print("Lost connection to MQTT server")
mqtt_connection = 0
end)
end
function main()
-- Connect to the network
wifi_connect(SSID, PASS)
end
-- Run the main function
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment