183 lines
4.9 KiB
Lua
183 lines
4.9 KiB
Lua
-- Script pour chercher les prévision de la pluie pour une ville de 7h à 19h
|
|
-- sur https://www.prevision-meteo.ch/services/json/lausanne
|
|
|
|
print("\n a_meteo1.lua zf190308.1703 \n")
|
|
|
|
-- site pour les données réelles
|
|
--zhost="www.prevision-meteo.ch"
|
|
--zport=80
|
|
--zpath="/services/json/lausanne"
|
|
|
|
--site simulation pour les tests (petit webserver sur mon MAC)
|
|
zhost="192.168.0.153"
|
|
zport=8080
|
|
zpath="/meteo.lausanne.190302.1231.json"
|
|
--zpath="/meteo.lausanne.190304.0930.json"
|
|
--zpath="/meteo.st-luc.190304.0930.json"
|
|
|
|
zhmin=7
|
|
zhmax=19
|
|
|
|
function zget_json_key()
|
|
-- print("zget_json_key entrée...",zjson_stat)
|
|
if zjson_header==1 then
|
|
p1=string.find(zjson, [["hourly_data":{]])
|
|
if p1~=nil then
|
|
print("trouvé le header: ",p1)
|
|
zjson=string.sub(zjson,p1)
|
|
print(string.sub(zjson,1,100))
|
|
print("go go go...")
|
|
zjson_header=2
|
|
end
|
|
end
|
|
if zjson_header==2 then
|
|
-- print("len1: "..string.len(zjson))
|
|
zjson_key='"'..zh..'H00":{'
|
|
print("zjson_key: "..zjson_key)
|
|
p1=string.find(zjson, zjson_key)
|
|
print("p1: ",p1)
|
|
if p1~=nil then
|
|
zjson=string.sub(zjson,p1)
|
|
print("zjson: ",string.sub(zjson,1,100))
|
|
-- p1,p2=string.find(zjson, '"CONDITION_KEY":"')
|
|
p1,p2=string.find(zjson, '"APCPsfc":')
|
|
|
|
|
|
print(p1,p2)
|
|
if p1~=nil then
|
|
-- p3=string.find(zjson, '","',p2)
|
|
p3=string.find(zjson, ',',p2)
|
|
print(p3)
|
|
if p3~=nil then
|
|
zpluie=tonumber(string.sub(zjson,p2+1,p3-1))
|
|
print("zpluie: ",zpluie)
|
|
-- print("len2: "..string.len(zjson))
|
|
if zh >=7 and zh<=13 then
|
|
zpluie_am=zpluie_am+zpluie
|
|
end
|
|
if zh >=13 and zh<=19 then
|
|
zpluie_pm=zpluie_pm+zpluie
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|
|
-- print("zget_json_key sortie...",zjson_stat)
|
|
end
|
|
|
|
|
|
|
|
function zget_json(c1)
|
|
-- print("zget_json entrée...")
|
|
if zjson=="" then
|
|
zjson=c1
|
|
else
|
|
zjson=zjson..c1
|
|
end
|
|
-- print("zh: ",zh,"len(zjson): ",string.len(zjson))
|
|
while zh<=zhmax do
|
|
zget_json_key()
|
|
if p1~=nil then
|
|
zh=zh+1
|
|
else
|
|
print("ouille ouille ouille, pas trouvé...")
|
|
if string.len(zjson)>510 then
|
|
zjson=string.sub(zjson,string.len(zjson)-500)
|
|
end
|
|
break
|
|
end
|
|
end
|
|
if zh>zhmax then
|
|
zjson=""
|
|
end
|
|
-- print("zget_json sortie...")
|
|
end
|
|
|
|
|
|
function zget_meteo()
|
|
zh=zhmin
|
|
zpluie_am=0
|
|
zpluie_pm=0
|
|
zjson_header=1
|
|
zjson=""
|
|
|
|
local s = net.createConnection()
|
|
|
|
s:on("connection", function(sck, c)
|
|
print("connected...")
|
|
-- sck:send("GET /services/json/lausanne HTTP/1.0\r\nHost: www.prevision-meteo.ch\r\n\r\n")
|
|
zstring="GET "..zpath.." HTTP/1.0\r\nHost: "..zhost.."\r\n\r\n"
|
|
print("ztring: ",zstring)
|
|
sck:send(zstring)
|
|
end)
|
|
|
|
zcmpt=1
|
|
zsum=0
|
|
s:on("receive", function(sck, c)
|
|
zlen=string.len(c)
|
|
zsum=zsum+zlen
|
|
-- print("...zcmpt, zsum, zlen: ",zcmpt,zsum,zlen,string.sub(c,1,100))
|
|
print(node.heap())
|
|
-- print("len3: "..string.len(zjson))
|
|
-- print("zjson3: ",string.sub(zjson,1,100))
|
|
-- zget_json(c)
|
|
zcmpt=zcmpt+1
|
|
end)
|
|
|
|
local function zdisconnection()
|
|
print("disconnect",node.heap())
|
|
print("pluie_am: ",zpluie_am,"pluie_pm: ",zpluie_pm)
|
|
end
|
|
|
|
local function zreconnection()
|
|
print("reconnect",node.heap())
|
|
end
|
|
|
|
s:on("disconnection", zdisconnection)
|
|
s:on("reconnection", zreconnection)
|
|
print("zport: ",zport,"zhost: ",zhost)
|
|
s:connect(zport, zhost)
|
|
|
|
end
|
|
|
|
|
|
function getstats()
|
|
buffer = nil
|
|
counter = 0
|
|
local srv = tls.createConnection()
|
|
srv:on("receive", function(sck, payload)
|
|
print("[stats] received data, " .. string.len(payload))
|
|
--[[ if buffer == nil then
|
|
buffer = payload
|
|
else
|
|
buffer = buffer .. payload
|
|
end
|
|
]]
|
|
counter = counter + 1
|
|
|
|
-- not getting HTTP content-length header back -> poor man's checking for complete response
|
|
--[[
|
|
if counter == 2 then
|
|
print("[stats] done, processing payload")
|
|
local beginJsonString = buffer:find("{")
|
|
local jsonString = buffer:sub(beginJsonString)
|
|
local hashrate = sjson.decode(jsonString)["stats"]["hashrate"]
|
|
print("[stats] hashrate from aeon-pool.com: " .. hashrate)
|
|
end
|
|
]]
|
|
end)
|
|
srv:on("connection", function(sck, c)
|
|
print("on est connecté...")
|
|
sck:send("GET /meteo.lausanne.190302.1231.json HTTP/1.1\r\nHost: 192.168.0.153\r\nConnection: close\r\nAccept: */*\r\n\r\n")
|
|
end)
|
|
|
|
print("on connecte...")
|
|
srv:connect(8080, "192.168.0.153")
|
|
end
|
|
|
|
|
|
--[[
|
|
getstats()
|
|
zget_meteo()
|
|
]] |