Essayé de déployer mon nouveau système sur un SonOff, pour l'instant cela fonctionne, mais il y a très peu de RAM :-(

This commit is contained in:
Christian Zufferey
2020-03-01 14:07:47 +01:00
parent 1e895448ed
commit 94f1dfead4
13 changed files with 444 additions and 94 deletions

View File

@@ -0,0 +1,14 @@
print("getpeer",srv_rt:getpeer())
print("srv_rt",srv_rt)
srv_rt=nil
rt_connect=nil
telnet_listener=nil
package=nil
d=nil
require=nil
pairs=nil
ipairs=nil
telnet_listener=nil
rt_retry=3
rt_connect()

View File

@@ -0,0 +1,27 @@
-- Petit scripts pour faire un flip flop avec le bouton et la led du nodemcu
-- Très intéressant la techno utilisée ici pour enlever les rebonds du micro switch
-- dans la variable b se trouve l'heure à laquelle l'interruption est arrivée, il suffit juste alors de lui mettre un petit délai de 300mS
print("\n 0_btn_flipflop.lua zf200216.1457 \n")
gpio.write(zLED,1) gpio.mode(zLED,gpio.OUTPUT)
gpio.mode(zBTN,gpio.INT)
d=tmr.now()
function zled (a,b,c)
--print("a: "..a..",b: "..b..",c: "..c)
if b-d > 300*1000 then
if verbose then
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
verbose=false
else
gpio.write(zLED, gpio.LOW) tmr.delay(200000) gpio.write(zLED, gpio.HIGH)
verbose=true
end
d=b
print("verbose:",verbose)
end
end
gpio.trig(zBTN, "down", zled)

View File

@@ -0,0 +1,24 @@
-- Petit script pour faire office de crontab pour les mesures
print("\n 0_cron.lua zf200229.1557 \n")
cron1=tmr.create()
cron1:alarm(60*1000, tmr.ALARM_AUTO, function()
if verbose then print("cron1........................") end
if verbose then gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) end
f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end
--[[
f = "0_htu21d.lua" if file.exists(f) then dofile(f) end
zurl = thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1)
f = "0_send_data.lua" if file.exists(f) then dofile(f) end
ztemp1=nil zhum1=nil
]]
if verbose then print(node.heap()) end
collectgarbage()
if verbose then print(node.heap()) end
end)

View File

@@ -0,0 +1,24 @@
-- Petit script pour envoyer les valeurs de température sur un serveur WEB via un HTTP GET
function send_data()
if verbose then print("\n 0_send_data.lua zf200119.1518 \n") end
if verbose then print("send_data_web: ") end
if verbose then print(zurl) end
http.get(zurl, nil, function(code, data)
if (code < 0) then
if verbose then print("HTTP request failed") end
if verbose then print("zuzu", code, data) end
else
if verbose then print(code, data) end
end
zurl=nil
end)
zurl=nil send_data=nil
if verbose then print(node.heap()) end
collectgarbage()
if verbose then print(node.heap()) end
end
send_data()

View File

@@ -0,0 +1,182 @@
--[[
tests connection reverse telnet
commande à faire tourner sur le serveur
1ere console
pour une liaison directe:
socat TCP-LISTEN:23047,fork,reuseaddr STDIO
pour une console sur un port:
socat TCP-LISTEN:23047,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1
2e console
telnet -r localhost 23000
]]
print("\n 0_tst3_socat.lua zf200229.2243 \n")
local node, table, tmr, uwrite, tostring =
node, table, tmr, uart.write, tostring
local function telnet_listener(socket)
local insert, remove, concat, heap, gc =
table.insert, table.remove, table.concat, node.heap, collectgarbage
local fifo1, fifo1l, fifo2, fifo2l = {}, 0, {}, 0
local s -- s is a copy of the TCP socket if and only if sending is in progress
local wdclr, cnt = tmr.wdclr, 0
local function debug(fmt, ...)
if (...) then fmt = fmt:format(...) end
uwrite(0, "\r\nDBG: ",fmt,"\r\n" )
cnt = cnt + 1
if cnt % 10 then wdclr() end
end
local function flushGarbage()
if heap() < 13440 then gc() end
end
local function sendLine()
if not s then return end
if fifo2l + fifo1l == 0 then -- both FIFOs empty, so clear down s
s = nil
return
end
flushGarbage()
if #fifo2 < 4 then -- Flush FIFO1 into FIFO2
insert(fifo2,concat(fifo1))
fifo2l, fifo1, fifo1l = fifo2l + fifo1l, {}, 0
end
local rec = remove(fifo2,1) .. (remove(fifo2,1) or '') ..
(remove(fifo2,1) or '') .. (remove(fifo2,1) or '')
fifo2l = fifo2l - #rec
flushGarbage()
s:send(rec)
end
local F1_SIZE = 256
local function queueLine(str)
while #str > 0 do -- this is because str might be longer than the packet size!
local k, l = F1_SIZE - fifo1l, #str
local chunk
if #fifo1 >= 32 or (k < l and k < 16) then
insert(fifo2, concat(fifo1))
fifo2l, fifo1, fifo1l, k = fifo2l + fifo1l, {}, 0, F1_SIZE
end
if l > k+16 then -- also tolerate a size overrun of 16 bytes to avoid a split
chunk, str = str:sub(1,k), str:sub(k+1)
else
chunk, str = str, ''
end
insert(fifo1, chunk)
fifo1l = fifo1l + #chunk
end
if not s and socket then
s = socket
sendLine()
else
flushGarbage()
end
end
local function receiveLine(s, line)
node.input(line)
end
local function disconnect(s)
--fifo1, fifo1l, fifo2, fifo2l, s = {}, 0, {}, 0, nil
fifo1, fifo1l, fifo2, fifo2l, s = nil, nil, nil, nil, nil
--insert, remove, concat, heap, gc = nil, nil, nil, nil, nil
--wdclr, cnt = nil, nil
node.output(nil)
print("disconnected...")
-- print("rt_retry:",rt_retry)
-- rt_retry=rt_retry-1
-- print("rt_retry:",rt_retry)
-- if rt_retry>=0 then
print("on ressaie en vitesse une fois ;-)")
rt_connect()
-- end
end
--zzz
local function zconnection(s)
print("Welcome on ne devrait jamais passer par là to NodeMCU world.")
end
socket:on("connection", zconnection)
socket:on("receive", receiveLine)
socket:on("disconnection", disconnect)
socket:on("sent", sendLine)
node.output(queueLine, 0)
end
--net.createServer(net.TCP, 180):listen(23, telnet_listener)
print("Revers telnet server running...\n")
function rt_connect()
if verbose then
gpio.write(zLED, gpio.HIGH)
print("trying connect to "..console_host..":"..console_port)
print(node.heap()) collectgarbage() print(node.heap())
end
srv_rt = nil srv_rt = net.createConnection(net.TCP, 0)
srv_rt:on("connection", function(sck)
if verbose then
print("connected on "..console_host..":"..console_port)
print(node.heap()) collectgarbage() print(node.heap())
end
telnet_listener(sck)
print("Welcome to NodeMCU world.")
end)
srv_rt:connect(console_port,console_host)
end
tmr_socat1=tmr.create()
tmr_socat1:alarm(5*1000, tmr.ALARM_AUTO , function()
rt_retry=1
if verbose then gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) end
if srv_rt~=nil then
if console_port == srv_rt:getpeer() then
--cela tourne...
if verbose then gpio.write(zLED, gpio.LOW) end
else
--on relance...
rt_connect()
end
else
--on relance...
rt_connect()
end
end)
rt_retry=3
rt_connect()
--[[
tmr_socat1:unregister()
for k,v in pairs(_G) do print(k,v) end
print(srv_rt:getpeer())
srv_rt:connect(console_port,console_host)
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if console_port == srv_rt:getpeer() then
gpio.write(zLED, gpio.LOW)
else
gpio.write(zLED, gpio.HIGH)
end
]]

View File

@@ -0,0 +1,33 @@
-- Petit script pour s'inregistrer sur zdyndns
function send_zdyndns()
if verbose then print("\n 0_zdyndns.lua zf200229.1553 \n") end
zip = wifi.sta.getip()
zdyndns_str = "s "..node_id..","..console_host..":"..tostring(console_port).." "..zip.."\n"
if verbose then print("zdyndns_str: /"..zdyndns_str.."/") end
srv_zdyndns = net.createConnection(net.TCP, 0)
srv_zdyndns:on("receive", function(conn, pl)
print("receiving...")
print(pl)
end)
srv_zdyndns:on("connection", function(sck)
if verbose then print("connected & sending...") end
sck:send(zdyndns_str, function(sk)
sk:close()
if verbose then print("close...") end
zdyndns_str=nil zip=nil srv_zdyndns=nil send_zdyndns=nil
if verbose then print(node.heap()) end
collectgarbage()
if verbose then print(node.heap()) end
end)
end)
srv_zdyndns:connect(zdyndns_port,zdyndns_host)
end
send_zdyndns()

View File

@@ -1,36 +1,16 @@
# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom # Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
# zf200116.1833 # zf200301.1318
Todo à faire pour ce projet ! Todo à faire pour ce projet !
- trouver un moyen pour configurer la lED dans initz.lua sans le rendre dangereux en cas de problème (éviter le reflashing en cas de reboot loop) - refaire le fichier _secrets_project.lua_ à partir de secrets_project.lua
- lancement ou arrêt du WEBIDE via la home page - faire la documentation pour le fonctionnement de concept de rtelnet dans un fichier à part .md
- flip/flop du relais depuis la page api_sonoff - flip/flop du relais depuis la page api_sonoff
- arrêter de demander de connecter le WIFI automatiquement en mode station juste après le boot dans la config wifiinit (automatic connect)
- ajouter le contrôle flip/flop du btn sur RELAY - ajouter le contrôle flip/flop du btn sur RELAY
- if verbose print partout dans *.lua
- le wifi setup ne fonctionne toujours pas quand il y a déjà un ap de connecté (problème du reboot quand adrs ip ok)!
v- ajouter fonction restart dans z_index.html (ATTENTION avec un argument restart, pas besoin de faire une page restart.html !)
v- ajouter l'affichage du node_id dans z_index.html
v- ajouter le web_srv2 dans boot au lieu de boot2
v- ajouter un état du RELAY et de la LED dans z_index.html
v- ajouter une page affichage variables globales
v- améliorer api_sonoff.html, il faut ajouter 'home' sur la page
v- améliorer le résultat de api_sonoff.html, il faut sortir l'état des IO lors d'un changement comme confirmation
v- copier secrets_project et secrets_wifi dans _secrets_project_ _secrets_wifi_ pour la documentation
v- déplacer le mode AP dans wifi_init
v- enlever la ligne wifi init dans z_index.html
v- faire la page web service pour allumer la LED
v- faire la page web service pour allumer le relay
v- garder variable node_id pour identification après poweron général, reattribution adrs ip sur modem 4G
v- passer à 10 secondes la seconde chance
v- passer à 15x les tentatives de connexions au WIFI
v- vérifier le fonctionnement d'allumer la LED, car ne marche plus !
x- mettre ZLED2 et ZRELAY dans secrets_project
x-ajouter argument ok dans wifi_init.html (sécurité)
- y regarder pour faire tourner en MEME temps le reverse et le forward telnet
- z lancement ou arrêt du WEBIDE via la home page
@@ -45,11 +25,11 @@ x-ajouter argument ok dans wifi_init.html (sécurité)
# définitions à faire AVANT ! # définitions à faire AVANT !
export luatool_tty="/dev/cu.wchusbserial1410" export luatool_tty="/dev/cu.wchusbserial1410"
export zIP="192.168.0.182" export zIP="192.168.0.150"
export zport="23" export zport="23"
export zIP="localhost" export zIP="localhost"
export zport="2323" export zport="23000"
ATTENTION: voir les tunnels tout à la fin ! ATTENTION: voir les tunnels tout à la fin !
@@ -95,37 +75,58 @@ verbose=false
zsort_rssi() zshow() zsort_rssi() zshow()
#commandes luatool pour ce projet le .137 est à jour avec la nouvelle version du wifi ! ################################
# commandes lua pour ce projet #
################################
ssh ubuntu@www.zuzutest.ml killall -9 socat
sleep 1
killall -9 ssh
sleep 1
ssh ubuntu@www.zuzutest.ml socat TCP-LISTEN:23001,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1 &
watch -n 1 'ssh ubuntu@www.zuzutest.ml netstat -nat |grep 230'
######## envoyer un CTRL-C dans le terminal !
ssh -N -L 23000:localhost:23000 ubuntu@www.zuzutest.ml &
export zIP="localhost"
export zport="23000"
telnet -rN $zIP $zport
for k,v in pairs(_G) do print(k,v) end
~.
zdyn
=node.heap()
collectgarbage()
=node.heap()
dofile("dir.lua")
dir()
for k,v in pairs(_G) do print(k,v) end
dofile("wifi_info.lua")
node.restart()
~. ~.
./luatool.py --ip $zIP:$zport -l ./luatool.py --ip $zIP:$zport -l
./luatool.py --ip $zIP:$zport -f wifi_init.lua ./luatool.py --ip $zIP:$zport -f wifi_init.lua
./luatool.py --ip $zIP:$zport -f secrets_wifi.lua
./luatool.py --ip $zIP:$zport -f initz.lua -t init.lua
./luatool.py --ip $zIP:$zport -f boot.lua ./luatool.py --ip $zIP:$zport -f boot.lua
./luatool.py --ip $zIP:$zport -f boot2.lua ./luatool.py --ip $zIP:$zport -f 0_tst3_socat.lua
./luatool.py --ip $zIP:$zport -f wifi_init.lua ./luatool.py --ip $zIP:$zport -f 0_cron.lua
./luatool.py --ip $zIP:$zport -f set_time.lua ./luatool.py --ip $zIP:$zport -f secrets_project.lua
./luatool.py --ip $zIP:$zport -f wifi_info.lua ./luatool.py --ip $zIP:$zport -f 0_zdyndns.lua
./luatool.py --ip $zIP:$zport -f c.lua ./luatool.py --ip $zIP:$zport -f 0_btn_flipflop.lua
./luatool.py --ip $zIP:$zport -f cat.lua
./luatool.py --ip $zIP:$zport -f flash_led_xfois.lua
./luatool.py --ip $zIP:$zport -f head.lua
./luatool.py --ip $zIP:$zport -f b.lua ./luatool.py --ip $zIP:$zport -f api_sonoff.html
./luatool.py --ip $zIP:$zport -f web_srv2.lua
./luatool.py --ip $zIP:$zport -f z_index.html ./luatool.py --ip $zIP:$zport -f z_index.html
./luatool.py --ip $zIP:$zport -f initz.lua -t init.lua
./luatool.py --ip $zIP:$zport -f wifi_get_conf.html
./luatool.py --ip $zIP:$zport -f wifi_set_conf.html
./luatool.py --ip $zIP:$zport -f z_page1.html
./luatool.py --ip $zIP:$zport -f z_page2.html
./luatool.py --ip $zIP:$zport -f z_page3.html
./luatool.py --ip $zIP:$zport -f z_page4.html
./luatool.py --ip $zIP:$zport --delete wifi_ap_start.lua ./luatool.py --ip $zIP:$zport --delete wifi_ap_start.lua
./luatool.py --ip $zIP:$zport --delete wifi_cli_conf.lua ./luatool.py --ip $zIP:$zport --delete wifi_cli_conf.lua
@@ -183,7 +184,7 @@ for k,v in pairs(_G) do print(k,v) end
# faire un cat d'un fichier sur le NodeMCU # faire un cat d'un fichier sur le NodeMCU
dofile("cat.lua") dofile("cat.lua")
cat("boot2.lua") cat("secrets_project.lua")
# commandes luatool # commandes luatool

View File

@@ -8,26 +8,31 @@
<title>API SonOff</title> <title>API SonOff</title>
</head> </head>
<body> <body>
<h1>API SonOff zf200112.1706</h1> <h1>API SonOff zf200118.1812</h1>
<a href="/">Home...</a><br><br> <a href="/">Home...</a><br><br>
<% <%
if _GET.LED == "on" then if _GET.LED == "on" then
gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT) gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT)
zout("LED=".._GET.LED.."<br>") zout("LED=".._GET.LED.."<br>")
zout('<a href="api_sonoff.html?LED=off"> Off</a><br>')
end end
if _GET.LED == "off" then if _GET.LED == "off" then
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT)
zout("LED=".._GET.LED.."<br>") zout("LED=".._GET.LED.."<br>")
zout('<a href="api_sonoff.html?LED=on"> On</a>')
end end
%> %>
<% <%
if _GET.RELAY == "on" then if _GET.RELAY == "on" then
gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.HIGH) gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.HIGH)
zout("RELAY=".._GET.RELAY.."<br>") zout("RELAY=".._GET.RELAY.."<br>")
zout('<a href="api_sonoff.html?RELAY=off"> Off</a><br>')
end end
if _GET.RELAY == "off" then if _GET.RELAY == "off" then
gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.LOW) gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.LOW)
zout("RELAY=".._GET.RELAY.."<br>") zout("RELAY=".._GET.RELAY.."<br>")
zout('<a href="api_sonoff.html?RELAY=on"> On</a>')
end end
%> %>
</body> </body>

View File

@@ -1,19 +1,25 @@
-- Scripts à charger après le boot pour démarrer son projet -- Scripts à charger après le boot pour démarrer son projet
print("\n boot.lua zf200108.1751 \n") print("\n boot.lua zf200229.2303 \n")
function boot() function boot()
verbose = true
print("booooooooooot...") print("On lance le boot...")
print(node.heap()) collectgarbage() print(node.heap()) print(node.heap()) collectgarbage() print(node.heap())
--f= "0_htu21d.lua" if file.exists(f) then dofile(f) end --f="0_htu21d.lua" if file.exists(f) then dofile(f) end
--f= "0_send_data.lua" if file.exists(f) then dofile(f) end --zurl=thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1)
--f= "0_cron.lua" if file.exists(f) then dofile(f) end --f="0_send_data.lua" if file.exists(f) then dofile(f) end
--f= "web_ide2.lua" if file.exists(f) then dofile(f) end f="0_btn_flipflop.lua" if file.exists(f) then dofile(f) end
f=nil boot=nil
verbose = true
f="0_cron.lua" if file.exists(f) then dofile(f) end
f="0_tst3_socat.lua" if file.exists(f) then dofile(f) end
--f="0_tst3_socat.lua" if file.exists(f) then dofile(f) end
--f = "web_ide2.lua" if file.exists(f) then dofile(f) end
print("verbose:",verbose)
print("boot lancé...")
print(node.heap()) collectgarbage() print(node.heap())
f=nil boot=nil
end end
boot() boot()

View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta charset='utf-8' name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Affichage de la température et humidité</title>
</head>
<body>
<h1>Affichage de la température et humidité 200118.1800</h1>
<a href="/">Home...</a><br>
<%
zout("<h1>"..node_id.."&nbsp;&nbsp;&nbsp; 200112.1919 </h1>")
%>
<br>
<%
zout("Température: "..readTemp().." °C<br>")
zout("Humidité: "..readHumi().." %<br>")
zout("<br><br>RAM: "..node.heap().."<br>")
%>
</body>
</html>

View File

@@ -3,7 +3,7 @@
-- le script repair.lua pendant xx secondes avant de continuer -- le script repair.lua pendant xx secondes avant de continuer
--Source: https://nodemcu.readthedocs.io/en/master/en/modules/node/#nodebootreason --Source: https://nodemcu.readthedocs.io/en/master/en/modules/node/#nodebootreason
print("\n init.lua zf200110.1948 \n") print("\n init.lua zf200118.1507 \n")
function initz() function initz()
@@ -26,8 +26,8 @@ function initz()
function second_chance() function second_chance()
print("seconde chance...") print("seconde chance...")
--zLED=4 -- NodeMCU zLED=4 -- NodeMCU
zLED=7 -- SonOff --zLED=7 -- SonOff
gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT) gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT)
initalarme1=tmr.create() initalarme1=tmr.create()
initalarme1:alarm(10*1000, tmr.ALARM_SINGLE, function() initalarme1:alarm(10*1000, tmr.ALARM_SINGLE, function()

View File

@@ -1,63 +1,74 @@
-- Petit script pour initaliser la couche WIFI -- Petit script pour initaliser la couche WIFI
function wifi_init() function wifi_init()
print("\n wifi_init.lua zf200111.1219 \n") print("\n wifi_init.lua zf200229.2330 \n")
f= "secrets_wifi.lua" if file.exists(f) then dofile(f) end
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
function wifi_init_end() function wifi_init_end()
wifi_init1:unregister() i=nil tmr_wifi_init1:unregister() i=nil
f= "wifi_info.lua" if file.exists(f) then dofile(f) end f= "wifi_info.lua" if file.exists(f) then dofile(f) end
f=nil secrets_wifi=nil cli_pwd=nil cli_ssid=nil f=nil secrets_wifi=nil cli_pwd=nil cli_ssid=nil
wifi_init1=nil wifi_init=nil tmr_wifi_init1=nil wifi_init=nil
print(node.heap()) collectgarbage() print(node.heap()) print(node.heap()) collectgarbage() print(node.heap())
f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end -- f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
f= "web_srv2.lua" if file.exists(f) then dofile(f) end f= "web_srv2.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap()) print(node.heap()) collectgarbage() print(node.heap())
zdelay=1 if reset_reason=="seconde_chance" then zdelay=20 end zdelay=1 if reset_reason=="seconde_chance" then zdelay=20 end
wifi_init3=tmr.create() tmr_wifi_init3=tmr.create()
wifi_init3:alarm(zdelay*1000, tmr.ALARM_SINGLE, function() tmr_wifi_init3:alarm(zdelay*1000, tmr.ALARM_SINGLE, function()
f= "boot.lua" if file.exists(f) then dofile(f) end f= "boot.lua" if file.exists(f) then dofile(f) end
wifi_init3:unregister() wifi_init3=nil wifi_init_end=nil tmr_wifi_init3:unregister() tmr_wifi_init3=nil wifi_init_end=nil
reset_reason=nil zdelay=nil reset_reason=nil zdelay=nil
end) end)
end end
if file.exists("_setup_wifi_") then if file.exists("_setup_wifi_") then
file.remove("_setup_wifi_")
print("setup wifi...") print("setup wifi...")
file.remove("_setup_wifi_")
wifi.sta.config{ssid="", pwd=""} wifi.sta.connect()
if zLED == nil then zLED = 4 end
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT)
tmr_wifi_init4=tmr.create()
tmr_wifi_init4:alarm(0.1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
end)
tmr.create():alarm(90*1000, tmr.ALARM_SINGLE, function()
node.restart()
end)
enduser_setup.start(function() enduser_setup.start(function()
print("on est sortit du setup wifi et on restart !") print("on est sortit du setup wifi et on restart !")
node.restart() node.restart()
end) end)
print("setup wifi out...") print("setup gadget lancé...")
else else
-- charge les secrets pour le wifi
f= "secrets_wifi.lua" if file.exists(f) then dofile(f) end
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
wifi.setmode(wifi.STATIONAP,true) wifi.setmode(wifi.STATIONAP,true)
wifi.sta.config{ssid=cli_ssid, pwd=cli_pwd, auto=true, save=true} wifi.sta.config{ssid=cli_ssid, pwd=cli_pwd} wifi.sta.connect()
wifi.sta.autoconnect(1) wifi.sta.connect() if node_id == nil then node_id = "generic" ap_pwd = "12345678" end
if node_id == nil then node_id = "generic" end
wifi.ap.config({ ssid = ap_ssid.."_"..node_id, pwd = ap_pwd, save=true }) wifi.ap.config({ ssid = ap_ssid.."_"..node_id, pwd = ap_pwd, save=true })
ap_ssid=nil ap_pwd=nil ap_ssid=nil ap_pwd=nil
wifi_init2=tmr.create() tmr_wifi_init2=tmr.create()
wifi_init2:alarm(60*1000, tmr.ALARM_SINGLE, function() tmr_wifi_init2:alarm(60*1000, tmr.ALARM_SINGLE, function()
print("BOOOOUM, y'a plus de AP WIFI !") print("BOOOOUM, y'a plus de AP WIFI !")
wifi.setmode(wifi.STATION,true) wifi_init2=nil wifi.setmode(wifi.STATION,true) tmr_wifi_init2=nil
print(node.heap()) collectgarbage() print(node.heap()) print(node.heap()) collectgarbage() print(node.heap())
end) end)
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1 gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1
wifi_init1=tmr.create() tmr_wifi_init1=tmr.create()
wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function() tmr_wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if wifi.sta.getip() == nil then if wifi.sta.getip() == nil then
print("Connecting to AP...") print(i,"Connecting to AP...")
i=i+1 i=i+1
if i > 15 then if i > 30 then
print("pas de wifi :-(") print("pas de wifi :-(")
wifi_init2:unregister() wifi_init2=nil file.putcontents("_setup_wifi_", "toto")
wifi.setmode(wifi.SOFTAP,true) print("on restart pour le setup wifi")
wifi_init_end() node.restart()
--tmr_wifi_init2:unregister() tmr_wifi_init2=nil
--wifi.setmode(wifi.SOFTAP,true)
--wifi_init_end()
end end
else else
wifi_init_end() wifi_init_end()
@@ -69,6 +80,6 @@ end
wifi_init() wifi_init()
--[[ --[[
file.putcontents("_setup_wifi_", "") file.putcontents("_setup_wifi_", "toto")
file.remove("eus_params.lua")
]] ]]

View File

@@ -105,4 +105,4 @@
<br><br><a href="/?RESTART=true"> Restart !</a><br> <br><br><a href="/?RESTART=true"> Restart !</a><br>
</body> </body>
</html> </html>