-- Script pour chercher les prévisions horaires du jour pour la précipitation de pluie pour une ville -- sur https://www.prevision-meteo.ch/services/json/lausanne print("\n a_meteo1.lua zf190310.1954 \n") 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: ",p1,"p2: ",p2) if p1~=nil then -- p3=string.find(zjson, '","',p2) p3=string.find(zjson, ',',p2) -- print("p3: ",p3) if p3~=nil then zpluie=tonumber(string.sub(zjson,p2+1,p3-1)) print("heure: ",zjson_key,"zpluie: ",zpluie) -- print("len2: "..string.len(zjson)) if zmeteo~="" then zmeteo=zmeteo.."," end zmeteo=zmeteo..zh..","..zpluie 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() -- site pour les données réelles -- zport=80 zhost = "www.prevision-meteo.ch" zurl = "/services/json/crissier" --site simulation pour les tests zport=80 zhost = "192.168.0.34" zurl = "/json/meteo/meteo.lausanne.190302.1231.json" zhmin=0 zhmax=23 zh=zhmin zmeteo="" zcmpt=1 zsum=0 zjson_header=1 zjson="" local s = net.createConnection() s:on("connection", function(sck, c) -- print("on est connecté...") sck:send("GET "..zurl.." HTTP/1.1\r\nHost: "..zhost.."\r\nConnection: close\r\nAccept: */*\r\n\r\n") end) s:on("disconnection", function(a,b) -- print("on est déconnecté...",a,b) print("la meteo est: "..zmeteo) end) s:on("reconnection", function(a,b) print("on est reconnecté...",a,b) end) 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("len3: "..string.len(zjson)) -- print("zjson3: ",string.sub(zjson,1,100)) zget_json(c) zcmpt=zcmpt+1 end) -- print("on se connecte...",node.heap()) s:connect(zport, zhost) end --[[ f= "a_meteo1.lua" if file.exists(f) then dofile(f) end zget_meteo() -- On affiche combien on a de RAM print(node.heap()) -- On charge le module et regarde combien cela a pris de RAM zh0=node.heap() print("zh0: ",zh0) f= "a_meteo1.lua" if file.exists(f) then dofile(f) end zh1=node.heap() print("zh0-zh1: ",zh0-zh1) -- On exécute le module --zh0=node.heap() print("zh0: ",zh0) zget_meteo() -- On regarde combien cela a pris de RAM pour exécuter le module zh1=node.heap() print("zh0-zh1: ",zh0-zh1) -- On libère le module et on regarde combien on a libéré de RAM --zh0=node.heap() print("zh0: ",zh0) zget_meteo=nil zget_json_key=nil zget_json=nil zh1=node.heap() print("zh0-zh1: ",zh0-zh1) zport=nil zhost=nill zurl=nil zhmin=nil zhmax=nil zh=nil zcmpt=nil zsum=nil zjson_header=nil zjson=nil zlen=nil zh1=node.heap() print("zh0-zh1: ",zh0-zh1) -- On affiche combien on a de RAM print(node.heap()) ]]