- mieux rangé les dossiers en particulier pour le minid1 OLED

- terminé enfin le script disp_oled.lua
This commit is contained in:
Christian Zufferey
2018-08-26 18:12:59 +02:00
parent d0837d1adb
commit 4e537d6d3e
42 changed files with 552 additions and 26 deletions

View File

@@ -0,0 +1,7 @@
-- super mini bootstrap
print("\n init_minizf1.lua zf180824.2019 \n")
tmr.alarm(0, 5000, tmr.ALARM_SINGLE, function()
dofile("wifi_ap_start.lua")
dofile("telnet_srv.lua")
end)

62
Minid1 OLED/disp_oled.lua Normal file
View File

@@ -0,0 +1,62 @@
-- Affiche plusieurs lignes sur le mini display OLED du MiniD1
-- Source: https://wiki.wemos.cc/products:d1_mini_shields:oled_shield
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
print("\n disp_oled.lua zf180824.2351 \n")
-- config pour le mini display OLED du Wemos Mini_D1
pin_scl = 1
pin_sda = 2
disp_sla = 0x3c
function init_OLED(sda, scl) --Set up the u8glib lib
i2c.setup(0, sda, scl, i2c.SLOW)
disp = u8g.ssd1306_64x48_i2c(disp_sla)
-- https://github.com/olikraus/u8glib/wiki/fontsize
disp:setFont(u8g.font_6x10)
disp:setFontRefHeightExtendedText()
disp:setDefaultForegroundColor()
disp:setFontPosTop()
end
function draw()
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
disp:setFont(u8g.font_6x10)
disp:drawStr(0,0,oled_line1)
disp:drawStr(0,10,oled_line2)
disp:drawStr(0,20,oled_line3)
disp:drawStr(0,30,oled_line4) --..string.char(233)) -- affiche un é !
disp:drawStr(0,40,oled_line5)
-- disp:setFont(u8g.font_9x15)
-- disp:drawStr(0,0,"1'200W")
-- disp:drawStr(0,11,"et zuzu !")
end
init_OLED(pin_sda, pin_scl) --Run setting up
disp:firstPage()
repeat
draw()
until disp:nextPage() == false
--print( string.gsub("hello+zuzu+%26+une+belle+%E9cole%5Cun+b%E2teau","+"," ")
--[[ source OLED:
https://www.google.ch/search?q=nodemcu+lua+oled+display&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjG8ba8ra3cAhVDCpoKHedlDS4Q_AUICigB&biw=1536&bih=828
https://www.hackster.io/kayakpete/esp8266-oled-display-52ae50
http://blog.rl.cx/2017/01/08/bien-d%C3%A9buter-avec-nodemcu/
https://github.com/FredThx/nodemcu_iot/blob/master/i2c_display.lua
https://www.instructables.com/id/NODEMCU-LUA-ESP8266-With-I2C-LCD-128-X-64-OLED-Dis/
]]

View File

@@ -0,0 +1,17 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180826.1109 \n")
function cat(zfile)
print("\n"..zfile.."\n-------------------------------")
zfilei = file.open(zfile, "r")
i=1
zline=file.readline()
repeat
print(i..": "..string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline()
until zline== nil
file.close(zfilei)
print("-------------------------------")
end

View File

@@ -1,5 +1,5 @@
-- fonction dir() pour afficher les fichiers dans la flash
-- zf180717.1542
print("\n dir.lua zf180826.1019 \n")
function dir()
print("\n-------------------------------")

View File

@@ -1,5 +1,5 @@
-- a simple telnet server
print("\ntelnet_srv.lua zf180724.2241 \n")
-- Serveur telnet pour connexion en remote WIFI
print("\n telnet_srv.lua zf180826.1020 \n")
-- restart server if needed
if telnet_srv ~= nil then
@@ -41,5 +41,4 @@ telnet_srv:listen(23, function(socket)
end)
print("Telnet server running...\nUsage: telnet -r ip\n")
--dofile("get_ip.lua")

View File

@@ -0,0 +1,13 @@
-- Démarre le WIFI en mode AP
print("\n wifi_ap_start.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.NULLMODE then
print("WIFI mode AP only")
wifi.setmode(wifi.SOFTAP)
elseif zmodewifi == wifi.STATION then
print("WIFI mode AP+CLI")
wifi.setmode(wifi.STATIONAP)
end
wifi.ap.config({ ssid = "NodeMCU "..wifi.ap.getmac(), pwd = "12345678" })
dofile("wifi_info.lua")

View File

@@ -0,0 +1,10 @@
-- Démarre le WIFI en mode AP
print("\n wifi_ap_stop.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.SOFTAP then
wifi.setmode(wifi.NULLMODE)
elseif zmodewifi == wifi.STATIONAP then
wifi.setmode(wifi.STATION)
end
print("WIFI AP arrêté")

View File

@@ -0,0 +1,4 @@
-- Petit script pour configurer le client WIFI du NodeMCU
print("\n wifi_cli_conf.lua zf180824.2000 \n")
wifi.sta.config{ssid="Hugo", pwd="tototutu", save=true}

View File

@@ -0,0 +1,14 @@
-- Petit script pour connecter le NodeMCU sur un AP Wifi avec l'accompte sauvé en EEPROM
print("\n wifi_cli_start.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.NULLMODE then
print("WIFI mode CLI only")
wifi.setmode(wifi.STATION)
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP+CLI")
wifi.setmode(wifi.STATIONAP)
end
wifi.sta.autoconnect(1)
wifi.sta.connect()
dofile("wifi_get_ip.lua")

View File

@@ -0,0 +1,10 @@
-- Démarre le WIFI en mode AP
print("\n wifi_cli_stop.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.STATION then
wifi.setmode(wifi.NULLMODE)
elseif zmodewifi == wifi.STATIONAP then
wifi.setmode(wifi.SOFTAP)
end
print("WIFI CLI arrêté")

View File

@@ -0,0 +1,6 @@
-- Petit script pour démarrer le mode configuration WIFI du NodeMCU
print("\n wifi_cnf_start.lua zf180824.2000 \n")
print("\nwifi config http://192.168.4.1\n")
dofile("wifi_get_ip.lua")
enduser_setup.start()

View File

@@ -0,0 +1,6 @@
-- Petit script pour arrêter le mode configuration WIFI du NodeMCU
print("\n wifi_cnf_stop.lua zf180824.2000 \n")
enduser_setup.stop()
wifi.sta.autoconnect(1)
wifi.sta.connect()

View File

@@ -0,0 +1,12 @@
-- Petit script pour obtenir l'adresse IP du NodeMCU connecté sur un AP Wifi
print("\n wifi_get_ip.lua zf180824.2000 \n")
wifitimer1=tmr.create()
tmr.alarm(wifitimer1, 1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
print("Connecting to AP...")
else
tmr.stop(wifitimer1)
dofile("wifi_info.lua")
end
end)

View File

@@ -0,0 +1,30 @@
-- Petit script pour afficher les infos actuel du WIFI
print("\n wifi_info.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
--wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
if zmodewifi == wifi.NULLMODE then
print("WIFI OFF")
elseif zmodewifi == wifi.STATION then
print("WIFI mode CLI")
print("Connected IP:\n",wifi.sta.getip())
do
local sta_config=wifi.sta.getconfig(true)
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
end
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP")
print("AP MAC:\n\t"..wifi.ap.getmac())
print("AP IP:\n\t"..wifi.ap.getip())
elseif zmodewifi == wifi.STATIONAP then
print("WIFI mode CLI+AP")
print("Connected IP:\n",wifi.sta.getip())
do
local sta_config=wifi.sta.getconfig(true)
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
end
print("AP MAC: "..wifi.ap.getmac())
print("AP IP: "..wifi.ap.getip())
end

View File

@@ -0,0 +1,9 @@
-- Déconnecte le WIFI
print("\n wifi_off.lua zf180822.0959 \n")
wifi.setmode(wifi.NULLMODE)
--[[
print(wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP)
print(wifi.getmode())
]]

View File

@@ -0,0 +1,5 @@
-- Exemple de petit script pour démarrer le WIFI
print("\n wifi_start.lua zf180824.2000 \n")
dofile("wifi_cli_start.lua")
dofile("wifi_ap_start.lua")

View File

@@ -0,0 +1,17 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180826.1109 \n")
function cat(zfile)
print("\n"..zfile.."\n-------------------------------")
zfilei = file.open(zfile, "r")
i=1
zline=file.readline()
repeat
print(i..": "..string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline()
until zline== nil
file.close(zfilei)
print("-------------------------------")
end

View File

@@ -0,0 +1,15 @@
-- fonction dir() pour afficher les fichiers dans la flash
print("\n dir.lua zf180826.1019 \n")
function dir()
print("\n-------------------------------")
l=file.list() i=0
for k,v in pairs(l) do
i=i+v
print(k..string.rep(" ",19-string.len(k)).." : "..v.." bytes")
end
print("-------------------------------")
print('\nUsed: '..i..' bytes\nusage: dofile("file.lua")\n')
end
dir()

View File

@@ -0,0 +1,39 @@
-- Affiche plusieurs lignes sur le mini display OLED du MiniD1
-- Source: https://wiki.wemos.cc/products:d1_mini_shields:oled_shield
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
print("\n disp_oled.lua zf180826.1807 \n")
-- config pour le mini display OLED du Wemos Mini_D1
pin_scl = 1
pin_sda = 2
disp_sla = 0x3c
function init_OLED(sda, scl)
i2c.setup(0, sda, scl, i2c.SLOW)
disp = u8g.ssd1306_64x48_i2c(disp_sla)
disp:setFontRefHeightExtendedText()
disp:setDefaultForegroundColor()
end
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
--..string.char(233)..":") -- pour afficher un é !
function draw()
disp:setFont(u8g.font_10x20)
disp:setFontPosTop()
disp:drawStr(0,00,oled_line1)
disp:setFont(u8g.font_chikita)
disp:setFontPosTop()
disp:drawStr(0,17,oled_line2)
disp:drawStr(0,24,oled_line3)
disp:drawStr(0,31,oled_line4)
disp:drawStr(0,38,oled_line5)
end
function disp_oled()
disp:firstPage()
repeat
draw()
until disp:nextPage() == false
end
init_OLED(pin_sda, pin_scl)

View File

@@ -0,0 +1,18 @@
-- super mini bootstrap
print("\n init_minizf1.lua zf180826.1810 \n")
tmr.alarm(0, 5000, tmr.ALARM_SINGLE, function()
dofile("disp_oled.lua")
oled_line1="RESET"
oled_line2=""
oled_line3=""
oled_line4=""
oled_line5=""
disp_oled()
--dofile("wifi_ap_start.lua")
--dofile("telnet_srv.lua")
--dofile("start_demo.lua")
end)

View File

@@ -0,0 +1,12 @@
-- Permet de démarrer une petite démo simplement via telnet
print("\n start_demo1.lua zf180826.1753 \n")
dofile("disp_oled.lua")
oled_line1="abcdefghijklmnop"
oled_line2="abcdefghijklmnop"
oled_line3="abcdefghijklmnop"
oled_line4="abcdefghijklmnop"
oled_line5="abcdefghijklmnop"
disp_oled()

View File

@@ -0,0 +1,44 @@
-- Serveur telnet pour connexion en remote WIFI
print("\n telnet_srv.lua zf180826.1020 \n")
-- restart server if needed
if telnet_srv ~= nil then
telnet_srv:close()
end
telnet_srv = net.createServer(net.TCP, 180)
telnet_srv:listen(23, function(socket)
local fifo = {}
local fifo_drained = true
local function sender(c)
if #fifo > 0 then
c:send(table.remove(fifo, 1))
else
fifo_drained = true
end
end
local function s_output(str)
table.insert(fifo, str)
if socket ~= nil and fifo_drained then
fifo_drained = false
sender(socket)
end
end
node.output(s_output, 0) -- re-direct output to function s_ouput.
socket:on("receive", function(c, l)
node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
end)
socket:on("disconnection", function(c)
node.output(nil) -- un-regist the redirect output function, output goes to serial
end)
socket:on("sent", sender)
print("Welcome to NodeMCU world.")
end)
print("Telnet server running...\nUsage: telnet -r ip\n")

View File

@@ -0,0 +1,13 @@
-- Démarre le WIFI en mode AP
print("\n wifi_ap_start.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.NULLMODE then
print("WIFI mode AP only")
wifi.setmode(wifi.SOFTAP)
elseif zmodewifi == wifi.STATION then
print("WIFI mode AP+CLI")
wifi.setmode(wifi.STATIONAP)
end
wifi.ap.config({ ssid = "NodeMCU "..wifi.ap.getmac(), pwd = "12345678" })
dofile("wifi_info.lua")

View File

@@ -0,0 +1,10 @@
-- Démarre le WIFI en mode AP
print("\n wifi_ap_stop.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.SOFTAP then
wifi.setmode(wifi.NULLMODE)
elseif zmodewifi == wifi.STATIONAP then
wifi.setmode(wifi.STATION)
end
print("WIFI AP arrêté")

View File

@@ -0,0 +1,4 @@
-- Petit script pour configurer le client WIFI du NodeMCU
print("\n wifi_cli_conf.lua zf180824.2000 \n")
wifi.sta.config{ssid="Hugo", pwd="tototutu", save=true}

View File

@@ -0,0 +1,14 @@
-- Petit script pour connecter le NodeMCU sur un AP Wifi avec l'accompte sauvé en EEPROM
print("\n wifi_cli_start.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.NULLMODE then
print("WIFI mode CLI only")
wifi.setmode(wifi.STATION)
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP+CLI")
wifi.setmode(wifi.STATIONAP)
end
wifi.sta.autoconnect(1)
wifi.sta.connect()
dofile("wifi_get_ip.lua")

View File

@@ -0,0 +1,10 @@
-- Démarre le WIFI en mode AP
print("\n wifi_cli_stop.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
if zmodewifi == wifi.STATION then
wifi.setmode(wifi.NULLMODE)
elseif zmodewifi == wifi.STATIONAP then
wifi.setmode(wifi.SOFTAP)
end
print("WIFI CLI arrêté")

View File

@@ -0,0 +1,6 @@
-- Petit script pour démarrer le mode configuration WIFI du NodeMCU
print("\n wifi_cnf_start.lua zf180824.2000 \n")
print("\nwifi config http://192.168.4.1\n")
dofile("wifi_get_ip.lua")
enduser_setup.start()

View File

@@ -0,0 +1,6 @@
-- Petit script pour arrêter le mode configuration WIFI du NodeMCU
print("\n wifi_cnf_stop.lua zf180824.2000 \n")
enduser_setup.stop()
wifi.sta.autoconnect(1)
wifi.sta.connect()

View File

@@ -0,0 +1,12 @@
-- Petit script pour obtenir l'adresse IP du NodeMCU connecté sur un AP Wifi
print("\n wifi_get_ip.lua zf180824.2000 \n")
wifitimer1=tmr.create()
tmr.alarm(wifitimer1, 1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
print("Connecting to AP...")
else
tmr.stop(wifitimer1)
dofile("wifi_info.lua")
end
end)

View File

@@ -0,0 +1,30 @@
-- Petit script pour afficher les infos actuel du WIFI
print("\n wifi_info.lua zf180824.2000 \n")
local zmodewifi=wifi.getmode()
--wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
if zmodewifi == wifi.NULLMODE then
print("WIFI OFF")
elseif zmodewifi == wifi.STATION then
print("WIFI mode CLI")
print("Connected IP:\n",wifi.sta.getip())
do
local sta_config=wifi.sta.getconfig(true)
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
end
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP")
print("AP MAC:\n\t"..wifi.ap.getmac())
print("AP IP:\n\t"..wifi.ap.getip())
elseif zmodewifi == wifi.STATIONAP then
print("WIFI mode CLI+AP")
print("Connected IP:\n",wifi.sta.getip())
do
local sta_config=wifi.sta.getconfig(true)
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
end
print("AP MAC: "..wifi.ap.getmac())
print("AP IP: "..wifi.ap.getip())
end

View File

@@ -0,0 +1,9 @@
-- Déconnecte le WIFI
print("\n wifi_off.lua zf180822.0959 \n")
wifi.setmode(wifi.NULLMODE)
--[[
print(wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP)
print(wifi.getmode())
]]

View File

@@ -0,0 +1,5 @@
-- Exemple de petit script pour démarrer le WIFI
print("\n wifi_start.lua zf180824.2000 \n")
dofile("wifi_cli_start.lua")
dofile("wifi_ap_start.lua")

17
OS_utils/cat.lua Normal file
View File

@@ -0,0 +1,17 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180826.1109 \n")
function cat(zfile)
print("\n"..zfile.."\n-------------------------------")
zfilei = file.open(zfile, "r")
i=1
zline=file.readline()
repeat
print(i..": "..string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline()
until zline== nil
file.close(zfilei)
print("-------------------------------")
end

15
OS_utils/dir.lua Normal file
View File

@@ -0,0 +1,15 @@
-- fonction dir() pour afficher les fichiers dans la flash
print("\n dir.lua zf180826.1019 \n")
function dir()
print("\n-------------------------------")
l=file.list() i=0
for k,v in pairs(l) do
i=i+v
print(k..string.rep(" ",19-string.len(k)).." : "..v.." bytes")
end
print("-------------------------------")
print('\nUsed: '..i..' bytes\nusage: dofile("file.lua")\n')
end
dir()

44
OS_utils/telnet_srv.lua Normal file
View File

@@ -0,0 +1,44 @@
-- Serveur telnet pour connexion en remote WIFI
print("\n telnet_srv.lua zf180826.1020 \n")
-- restart server if needed
if telnet_srv ~= nil then
telnet_srv:close()
end
telnet_srv = net.createServer(net.TCP, 180)
telnet_srv:listen(23, function(socket)
local fifo = {}
local fifo_drained = true
local function sender(c)
if #fifo > 0 then
c:send(table.remove(fifo, 1))
else
fifo_drained = true
end
end
local function s_output(str)
table.insert(fifo, str)
if socket ~= nil and fifo_drained then
fifo_drained = false
sender(socket)
end
end
node.output(s_output, 0) -- re-direct output to function s_ouput.
socket:on("receive", function(c, l)
node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
end)
socket:on("disconnection", function(c)
node.output(nil) -- un-regist the redirect output function, output goes to serial
end)
socket:on("sent", sender)
print("Welcome to NodeMCU world.")
end)
print("Telnet server running...\nUsage: telnet -r ip\n")

20
cat.lua
View File

@@ -1,20 +0,0 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180730.1259")
function cat(zfile)
print("\n-------------------------------")
zfilei = io.open(zfile, "r")
io.input(zfilei)
i=1
zline=io.read()
repeat
print(i..": "..zline)
i=i+1 zline=io.read()
until zline== nil
io.close(zfilei)
print("-------------------------------")
end

View File

@@ -1,2 +0,0 @@
print("\nzinit zf180713.1449\n")

4
start_demo1.lua Normal file
View File

@@ -0,0 +1,4 @@
-- Permet de démarrer une petite démo simplement via telnet
print("\n start_demo1.lua zf180824.2027 \n")
dofile("oled_disp_multi_lines.lua")