Quand il voit qu'il est à la maison se remet à l'heure sur Internet

Maintenant quand il voit qu'il a le ssid1, il se connecte sur
Internet pour mettre à jour l'horloge.
Mais s'il voit ssid2, il redémarre et s'arrête pour la maintenance.

Reste encore à modifier le wifi_init qui soit capable de se connecter
aussi sur le ssid2, car actuellement c'est seulement le ssid1.
This commit is contained in:
Christian Zufferey
2020-08-16 20:02:07 +02:00
parent a9abd91aa5
commit d1cc747c14
2 changed files with 70 additions and 81 deletions

View File

@@ -1,11 +1,8 @@
-- Teste le deep sleep !
-- s'endore pendant xx secondes après xx secondes
-- Script de gestion du deep sleep !
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
print("\n dsleep2.lua zf200815.1430 \n")
print("\n 0_dsleep2.lua zf200816.1934 \n")
zLED=4
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
function ztime()
@@ -13,40 +10,25 @@ function ztime()
return (string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
-- on s'endort
function dsleep_on()
print("timer dsleep on...")
-- ztmr_SLEEP = tmr.create()
-- ztmr_SLEEP:alarm(2*1000, tmr.ALARM_SINGLE, function ()
print("Il est "..ztime().." et je vais dormir...")
tmr.delay(100*1000)
-- node.dsleep(4*1000*1000)
-- print(node.bootreason())
-- rtcmem.write32(10, 43690) --flag pour détecter le réveil dsleep au moment du boot
-- print("le flag est à "..rtcmem.read32(10))
wifi.setmode(wifi.NULLMODE,true)
rtctime.dsleep(0.1*1000*1000)
-- end)
print("Il est "..ztime().." et je vais dormir...")
tmr.delay(100*1000)
wifi.setmode(wifi.NULLMODE,true)
-- durée du sommeil !
rtctime.dsleep(0.1*1000*1000)
end
-- on se réveil, vérifie si on peut avoir du réseau autrement on va redormir
-- on se réveil
function dsleep_wake_up()
print("Coucou, je suis réveillé... et il est "..ztime())
if rtctime.get() < 1597494477 then
print("oups je n'ai pas la bonne heure...")
rtctime.set(file.getcontents("_ztime_"))
print("voilà j'ai retrouvé une ancienne heure "..ztime())
end
if wifi.sta.getip() == nil then
print("Pas de réseau donc je scan le wifi...")
f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
wifi.setmode(wifi.STATION)
scan_wifi()
else
print("Y'a du réseau donc je m'arrête...")
end
wifi.setmode(wifi.STATION)
f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
end
dsleep_wake_up()

View File

@@ -1,10 +1,8 @@
-- Scripts pour tester l'écoute des AP WIFI
print("\n wifi_scan.lua zf200816.1417 \n")
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
-- Scripts pour scanner les AP WIFI et les enregistrer dans le log
-- https://www.epochconverter.com/
print("\n 0_wifi_scan.lua zf200816.1955 \n")
ztime2020 = 1577836800 -- Unix time pour 1.1.2020 0:0:0 GMT
-- sauvegarde les données dans la flash du NodeMCU
@@ -15,57 +13,66 @@ function save_flash(zstr_ap_wifi)
file.open(logs_ap_wifi, "a+") file.writeline(zstr) file.close()
end
-- print AP list in new format
function scan_wifi()
print(ztime())
function listap(t)
print("start display liste ap wifi...")
for k,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
function listap(t)
if ssid == "3g-s7" then
print("ah je vois que je dois m'arrêter...")
zdsleep_stop =true
end
print("coucou: ."..ssid..".")
-- print(ssid,rssi)
-- print(k.." : "..v)
-- local zstr = k..", "..v
local zstr = k..', "'..ssid..'", '..rssi
-- local zstr = v
save_flash(zstr)
print("start display liste ap wifi...")
for k,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
if ssid == cli_ssid2 then
print("ah je vois que je dois m'arrêter...")
zdsleep_stop =true
elseif ssid == cli_ssid1 then
print("ah je vois que je dois chercher l'heure...")
zdsleep_get_time = true
end
print("end display...")
local zstr = k..', "'..ssid..'", '..rssi
save_flash(zstr)
end
print("...end display")
if zdsleep_stop then
node.restart()
elseif zdsleep_get_time then
wifi.setmode(wifi.STATION,true)
wifi.sta.config{ssid=cli_ssid1, pwd=cli_pwd1} wifi.sta.connect()
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1
tmr_wifi_init1=tmr.create()
tmr_wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if wifi.sta.getip() == nil then
print(i,"Connecting to AP...")
i=i+1
if i > 10 then
print("pas de wifi :-(")
print("pas grave, on continue le dsleep")
-- sauve l'heure sur la flash pour si jamais il y a un boot power on sans Internet
file.putcontents("_ztime_", rtctime.get())
dsleep_on()
end
else
tmr_wifi_init1:unregister()
rtctime.set(0) sntp.sync(nil, nil, nil, 1)
ztmr_set_time = tmr.create()
ztmr_set_time:alarm(1*1000, tmr.ALARM_AUTO , function()
zrtc_time = rtctime.get()
print("je cherche l'heure: "..zrtc_time)
if zrtc_time > ztime2020 then
ztmr_set_time:unregister()
print("j'ai trouvé l'heure: "..zrtc_time)
file.putcontents("_ztime_", zrtc_time)
-- print(file.getcontents("_ztime_"))
dsleep_on()
end
end)
end
end)
else
-- sauve l'heure sur la flash pour si jamais il y a un boot power on sans Internet
file.putcontents("_ztime_", rtctime.get())
if zdsleep_stop then
node.restart()
else
dsleep_on()
end
end
print("wifi scan...")
wifi.sta.getap(1, listap)
end
--[[
scan_wifi()
]]
--[[
-- Print AP list that is easier to read
function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
print("\n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t RSSI\t\tAUTHMODE\t\tCHANNEL")
for bssid,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
print(string.format("%32s",ssid).."\t"..bssid.."\t "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
dsleep_on()
end
end
print("wifi scan...")
wifi.sta.getap(1, listap)
]]