diff --git a/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.bin b/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.bin
new file mode 100644
index 0000000..68e8a2e
Binary files /dev/null and b/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.bin differ
diff --git a/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.pdf b/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.pdf
new file mode 100644
index 0000000..10762f8
Binary files /dev/null and b/Firmware/nodemcu-master-20-modules-2019-06-01-12-50-39-float.pdf differ
diff --git a/Temp_DS18B20/solar_zf/a1.lua b/Temp_DS18B20/solar_zf/a1.lua
index a8f1f59..09a2c86 100644
--- a/Temp_DS18B20/solar_zf/a1.lua
+++ b/Temp_DS18B20/solar_zf/a1.lua
@@ -1,10 +1,23 @@
-- programme pour faire un test depuis de le webide
+-- source: https://nodemcu.readthedocs.io/en/master/modules/ds18b20/
+
function a1()
- print("\n a1.lua zf190601.1304 \n")
-
+ print("\n a1.lua zf190601.1538 \n")
end
+a1()
+local ow_pin = 4
+ds18b20.setup(ow_pin)
+print("toto182538")
+
+-- read all sensors and print all measurement results
+ds18b20.read(
+ function(ind,rom,res,temp,tdec,par)
+ print(ind,string.format("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",string.match(rom,"(%d+):(%d+):(%d+):(%d+):(%d+):(%d+):(%d+):(%d+)")),res,temp,tdec,par)
+ end,{})
+
+print("tutu152603")
diff --git a/Temp_DS18B20/solar_zf/boot.lua b/Temp_DS18B20/solar_zf/boot.lua
index 447df3e..5485ee0 100644
--- a/Temp_DS18B20/solar_zf/boot.lua
+++ b/Temp_DS18B20/solar_zf/boot.lua
@@ -1,6 +1,6 @@
-- Scripts à charger après le boot pour démarrer son appli
-print("\n boot.lua zf190422.1102 \n")
+print("\n boot.lua zf190601.1535 \n")
function heartbeat()
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
@@ -12,8 +12,9 @@ function heartbeat()
end)
end
-f= "led_rgb.lua" if file.exists(f) then dofile(f) end
-f= "wifi_ap_start.lua" if file.exists(f) then dofile(f) end
+--f= "led_rgb.lua" if file.exists(f) then dofile(f) end
+--f= "wifi_ap_start.lua" if file.exists(f) then dofile(f) end
+f= "wifi_ap_stop.lua" if file.exists(f) then dofile(f) end
f= "wifi_cli_conf.lua" if file.exists(f) then dofile(f) end
f= "wifi_cli_start.lua" if file.exists(f) then dofile(f) end
f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
@@ -21,7 +22,7 @@ f= "web_ide2.lua" if file.exists(f) then dofile(f) end
f= "web_srv2.lua" if file.exists(f) then dofile(f) end
--f= "set_time.lua" if file.exists(f) then dofile(f) end
--f= "dsleep.lua" if file.exists(f) then dofile(f) end
-f= "a_no_linear.lua" if file.exists(f) then dofile(f) end
+--f= "a_no_linear.lua" if file.exists(f) then dofile(f) end
f=nil
heartbeat=nil
diff --git a/Temp_DS18B20/solar_zf/led_rgb.lua b/Temp_DS18B20/solar_zf/goodies/led_rgb.lua
similarity index 100%
rename from Temp_DS18B20/solar_zf/led_rgb.lua
rename to Temp_DS18B20/solar_zf/goodies/led_rgb.lua
diff --git a/Temp_DS18B20/solar_zf/t1.csv b/Temp_DS18B20/solar_zf/goodies/t1.csv
similarity index 100%
rename from Temp_DS18B20/solar_zf/t1.csv
rename to Temp_DS18B20/solar_zf/goodies/t1.csv
diff --git a/Temp_DS18B20/solar_zf/wifi_ap_start.lua b/Temp_DS18B20/solar_zf/goodies/wifi_ap_start.lua
similarity index 100%
rename from Temp_DS18B20/solar_zf/wifi_ap_start.lua
rename to Temp_DS18B20/solar_zf/goodies/wifi_ap_start.lua
diff --git a/Temp_DS18B20/solar_zf/oldies/ds18b20-example.lua b/Temp_DS18B20/solar_zf/oldies/ds18b20-example.lua
new file mode 100644
index 0000000..8354695
--- /dev/null
+++ b/Temp_DS18B20/solar_zf/oldies/ds18b20-example.lua
@@ -0,0 +1,52 @@
+t = require("ds18b20")
+pin = 3 -- gpio0 = 3, gpio2 = 4
+
+local function readout(temp)
+ if t.sens then
+ print("Total number of DS18B20 sensors: ".. #t.sens)
+ for i, s in ipairs(t.sens) do
+ print(string.format(" sensor #%d address: %s%s", i, ('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X'):format(s:byte(1,8)), s:byte(9) == 1 and " (parasite)" or ""))
+ end
+ end
+ for addr, temp in pairs(temp) do
+ print(string.format("Sensor %s: %s °C", ('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X'):format(addr:byte(1,8)), temp))
+ end
+
+ -- Module can be released when it is no longer needed
+ --t = nil
+ --package.loaded["ds18b20"]=nil
+end
+
+t:enable_debug()
+file.remove("ds18b20_save.lc") -- remove saved addresses
+print("=============================================", node.heap())
+print("first call, no addresses in flash, search is performed")
+t:read_temp(readout, pin, t.C)
+
+tmr.create():alarm(2000, tmr.ALARM_SINGLE, function()
+ print("=============================================", node.heap())
+ print("second readout, no new search, found addresses are used")
+ t:read_temp(readout, pin)
+
+tmr.create():alarm(2000, tmr.ALARM_SINGLE, function()
+ print("=============================================", node.heap())
+ print("force search again")
+ t:read_temp(readout, pin, nil, true)
+
+tmr.create():alarm(2000, tmr.ALARM_SINGLE, function()
+ print("=============================================", node.heap())
+ print("save search results")
+ t:read_temp(readout, pin, nil, false, true)
+
+tmr.create():alarm(2000, tmr.ALARM_SINGLE, function()
+ print("=============================================", node.heap())
+ print("use saved addresses")
+ t.sens={}
+ t:read_temp(readout, pin)
+end)
+
+end)
+
+end)
+
+end)
diff --git a/Temp_DS18B20/solar_zf/oldies/ds18b20-web.lua b/Temp_DS18B20/solar_zf/oldies/ds18b20-web.lua
new file mode 100644
index 0000000..408612f
--- /dev/null
+++ b/Temp_DS18B20/solar_zf/oldies/ds18b20-web.lua
@@ -0,0 +1,35 @@
+t = require('ds18b20')
+
+port = 80
+pin = 3 -- gpio0 = 3, gpio2 = 4
+gconn = {} -- global variable for connection
+
+function readout(temp)
+ local resp = "HTTP/1.1 200 OK\nContent-Type: text/html\nRefresh: 5\n\n" ..
+ "" ..
+ "
" ..
+ "ESP8266"
+
+ for addr, temp in pairs(temp) do
+ resp = resp .. string.format("Sensor %s: %s ℃", ('%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X '):format(addr:byte(1,8)), temp)
+ end
+
+ resp = resp ..
+ "Node ChipID: " .. node.chipid() .. "
" ..
+ "Node MAC: " .. wifi.sta.getmac() .. "
" ..
+ "Node Heap: " .. node.heap() .. "
" ..
+ "Timer Ticks: " .. tmr.now() .. "
" ..
+ ""
+
+ gconn:send(resp)
+ gconn:on("sent",function(conn) conn:close() end)
+end
+
+srv=net.createServer(net.TCP)
+srv:listen(port,
+ function(conn)
+ gconn = conn
+ -- t:read_temp(readout) -- default pin value is 3
+ t:read_temp(readout, pin)
+ end
+)
diff --git a/Temp_DS18B20/solar_zf/oldies/ds18b20.lua b/Temp_DS18B20/solar_zf/oldies/ds18b20.lua
new file mode 100644
index 0000000..b672c87
--- /dev/null
+++ b/Temp_DS18B20/solar_zf/oldies/ds18b20.lua
@@ -0,0 +1,223 @@
+--------------------------------------------------------------------------------
+-- DS18B20 one wire module for NODEMCU
+-- NODEMCU TEAM
+-- LICENCE: http://opensource.org/licenses/MIT
+-- @voborsky, @devsaurus, TerryE 26 Mar 2017
+----------------------------------------------------------------------------------------------------------------------------------------------------------------
+local modname = ...
+
+-- Used modules and functions
+local table, string, ow, tmr, print, type, tostring, pcall, ipairs =
+ table, string, ow, tmr, print, type, tostring, pcall, ipairs
+-- Local functions
+local ow_setup, ow_search, ow_select, ow_read, ow_read_bytes, ow_write, ow_crc8, ow_reset, ow_reset_search, ow_skip, ow_depower =
+ ow.setup, ow.search, ow.select, ow.read, ow.read_bytes, ow.write, ow.crc8, ow.reset, ow.reset_search, ow.skip, ow.depower
+local node_task_post, node_task_LOW_PRIORITY = node.task.post, node.task.LOW_PRIORITY
+local string_char, string_dump = string.char, string.dump
+local now, tmr_create, tmr_ALARM_SINGLE = tmr.now, tmr.create, tmr.ALARM_SINGLE
+local table_sort, table_concat = table.sort, table.concat
+local math_floor = math.floor
+local file_open = file.open
+
+table, string, tmr, ow = nil, nil, nil, nil
+
+local DS18B20FAMILY = 0x28
+local DS1920FAMILY = 0x10 -- and DS18S20 series
+local CONVERT_T = 0x44
+local READ_SCRATCHPAD = 0xBE
+local READ_POWERSUPPLY= 0xB4
+local MODE = 1
+
+local pin, cb, unit = 3
+local status = {}
+
+local debugPrint = function() return end
+
+--------------------------------------------------------------------------------
+-- Implementation
+--------------------------------------------------------------------------------
+local function enable_debug()
+ debugPrint = function (...) print(now(),' ', ...) end
+end
+
+local function to_string(addr, esc)
+ if type(addr) == 'string' and #addr == 8 then
+ return ( esc == true and
+ '"\\%u\\%u\\%u\\%u\\%u\\%u\\%u\\%u"' or
+ '%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X '):format(addr:byte(1,8))
+ else
+ return tostring(addr)
+ end
+end
+
+local function readout(self)
+ local next = false
+ local sens = self.sens
+ local temp = self.temp
+ for i, s in ipairs(sens) do
+ if status[i] == 1 then
+ ow_reset(pin)
+ local addr = s:sub(1,8)
+ ow_select(pin, addr) -- select the sensor
+ ow_write(pin, READ_SCRATCHPAD, MODE)
+ data = ow_read_bytes(pin, 9)
+
+ local t=(data:byte(1)+data:byte(2)*256)
+ -- t is actually signed so process the sign bit and adjust for fractional bits
+ -- the DS18B20 family has 4 fractional bits and the DS18S20s, 1 fractional bit
+ t = ((t <= 32767) and t or t - 65536) *
+ ((addr:byte(1) == DS18B20FAMILY) and 625 or 5000)
+
+ if 1/2 == 0 then
+ -- integer version
+ if unit == 'F' then
+ t = (t * 18)/10 + 320000
+ elseif unit == 'K' then
+ t = t + 2731500
+ end
+ local sgn = t<0 and -1 or 1
+ local tA = sgn*t
+ local tH=tA/10000
+ local tL=(tA%10000)/1000 + ((tA%1000)/100 >= 5 and 1 or 0)
+
+ if tH and (t~=850000) then
+ temp[addr]=(sgn<0 and "-" or "")..tH.."."..tL
+ debugPrint(to_string(addr),(sgn<0 and "-" or "")..tH.."."..tL)
+ status[i] = 2
+ end
+ -- end integer version
+ else
+ -- float version
+ if t and (math_floor(t/10000)~=85) then
+ t = t / 10000
+ if unit == 'F' then
+ t = t * 18/10 + 32
+ elseif unit == 'K' then
+ t = t + 27315/100
+ end
+ self.temp[addr]=t
+ debugPrint(to_string(addr), t)
+ status[i] = 2
+ end
+ -- end float version
+ end
+ end
+ next = next or status[i] == 0
+ end
+ if next then
+ node_task_post(node_task_LOW_PRIORITY, function() return conversion(self) end)
+ else
+ --sens = {}
+ if cb then
+ node_task_post(node_task_LOW_PRIORITY, function() return cb(temp) end)
+ end
+ end
+end
+
+local function conversion(self)
+ local sens = self.sens
+ local powered_only = true
+ for _, s in ipairs(sens) do powered_only = powered_only and s:byte(9) ~= 1 end
+ if powered_only then
+ debugPrint("starting conversion: all sensors")
+ ow_reset(pin)
+ ow_skip(pin) -- select the sensor
+ ow_write(pin, CONVERT_T, MODE) -- and start conversion
+ for i, s in ipairs(sens) do status[i] = 1 end
+ else
+ for i, s in ipairs(sens) do
+ if status[i] == 0 then
+ local addr, parasite = s:sub(1,8), s:byte(9)
+ debugPrint("starting conversion:", to_string(addr), parasite == 1 and "parasite" or " ")
+ ow_reset(pin)
+ ow_select(pin, addr) -- select the sensor
+ ow_write(pin, CONVERT_T, MODE) -- and start conversion
+ status[i] = 1
+ if parasite == 1 then break end -- parasite sensor blocks bus during conversion
+ end
+ end
+ end
+ tmr_create():alarm(750, tmr_ALARM_SINGLE, function() return readout(self) end)
+end
+
+local function _search(self, lcb, lpin, search, save)
+ self.temp = {}
+ if search then self.sens = {}; status = {} end
+ local temp = self.temp
+ local sens = self.sens
+ pin = lpin or pin
+
+ local addr
+ if not search and #sens == 0 then
+ -- load addreses if available
+ debugPrint ("geting addreses from flash")
+ local s,check,a = pcall(dofile, "ds18b20_save.lc")
+ if s and check == "ds18b20" then
+ for i = 1, #a do sens[i] = a[i] end
+ end
+ debugPrint (#sens, "addreses found")
+ end
+
+ ow_setup(pin)
+ if search or #sens == 0 then
+ ow_reset_search(pin)
+ -- ow_target_search(pin,0x28)
+ -- search the first device
+ addr = ow_search(pin)
+ else
+ for i, s in ipairs(sens) do status[i] = 0 end
+ end
+ local function cycle()
+ debugPrint("cycle")
+ if addr then
+ local crc=ow_crc8(addr:sub(1,7))
+ if (crc==addr:byte(8)) and ((addr:byte(1)==DS1920FAMILY) or (addr:byte(1)==DS18B20FAMILY)) then
+ ow_reset(pin)
+ ow_select(pin, addr)
+ ow_write(pin, READ_POWERSUPPLY, MODE)
+ local parasite = (ow_read(pin)==0 and 1 or 0)
+ sens[#sens+1]= addr..string_char(parasite) -- {addr=addr, parasite=parasite, status=0}
+ debugPrint("contact: ", to_string(addr), parasite == 1 and "parasite" or " ")
+ end
+ addr = ow_search(pin)
+ node_task_post(node_task_LOW_PRIORITY, cycle)
+ else
+ ow_depower(pin)
+ -- place powered sensors first
+ table_sort(sens, function(a, b) return a:byte(9)