-- Get weather from openweathermap.org -- John Longworth - June 2017 -- Needs sjson and rtctime modules -- Gets weather from apixu.com key = {} value = {} conn = nil conn=net.createConnection(net.TCP, 0) conn:on("connection", function(conn, payload) print("\n Connected to www.apixu.com") conn:send("GET /v1/current.json?key= &q=Rishton" -- insert your API key here .." HTTP/1.1\r\n" .."Host: api.apixu.com\r\n" .."Connection: close\r\n" .."Accept: */*\r\n" .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n" .."\r\n") end) conn:on("receive", function(conn, payload) payload = string.match(payload, "{.*}") -- Select json part of payload --print(payload) if payload ~= nil then forecast = sjson.decode(payload) -- Decode json string print_weather() else print("Connection failed") end end) function print_weather() print("\n Weather for "..forecast.location.localtime) print("Last Updated "..forecast.current.last_updated) print(forecast.location.name.." "..forecast.location.country) print("Current temp "..forecast.current.temp_c.." C") print("Weather "..forecast.current.condition.text) print("Wind mph "..forecast.current.wind_mph) print("Wind dir "..forecast.current.wind_dir) print("Humidity "..forecast.current.humidity) print("Visibilty "..forecast.current.vis_miles.." mls") count = 1 for k,v in pairs(forecast.location) do key[count] = k value[count] = v count = count + 1 end for k,v in pairs(forecast.current) do key[count] = k value[count] = v count = count + 1 end for k,v in pairs(forecast.current.condition) do key[count] = k value[count] = v count = count + 1 end print("\n") for i = 1 ,#key do print(key[i],value[i]) key[count] = k value[count] = v count = count + 1 end end conn:connect(80,"api.apixu.com")