Commencé à tout refactoriser afin que cela soit plus facilement réutilisable. Cela ne fonctionne pas encore !
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
-- Petit script pour faire office de crontab pour les mesures de température
|
||||
print("\n 0_cron_temp.lua zf190728.1054 \n")
|
||||
-- Petit script pour faire office de crontab pour les
|
||||
--mesures
|
||||
print("\n 0_cron.lua zf190916.1506 \n")
|
||||
|
||||
cron1=tmr.create()
|
||||
cron1:alarm(10*1000, tmr.ALARM_AUTO, function()
|
||||
|
||||
70
Mesures/solar_pv_energy/0_get_data.lua
Normal file
70
Mesures/solar_pv_energy/0_get_data.lua
Normal file
@@ -0,0 +1,70 @@
|
||||
-- Lit le convertisseur ADC connecté sur le transformateur de courant
|
||||
-- pour mesurer le courant électrique de l'installation PV
|
||||
print("\n 0_get_data.lua zf190916.1534 \n")
|
||||
|
||||
-- Astuce de mesure:
|
||||
-- au lieu de découper la sinusoïde en 100 parties, c'est à dire toutes
|
||||
-- les 0.2ms (5'000x /s), pour en faire l'intégrale. On lit l'adc toutes
|
||||
-- les 11ms (91x /s) beaucoup plus lentement.
|
||||
-- Comme la sinusoïde fait 20ms et est répétitive, on balaye (par décalage)
|
||||
-- statistiquement la sinusoïde.
|
||||
-- On redresse l'alternance par rapport à la masse fictive (env 0.5),
|
||||
-- ce qui nous permet d'estimer une valeur RMS du courant
|
||||
-- quelque soit sa forme !
|
||||
-- On le somme sur 2.1 secondes avec une moyenne glissante sur 3 valeurs
|
||||
|
||||
zadc_min=1024 zadc_max=0 zadc_sum=0 znb_mes=0
|
||||
|
||||
if adc.force_init_mode(adc.INIT_ADC)
|
||||
then
|
||||
node.restart()
|
||||
return
|
||||
end
|
||||
|
||||
tmr_read_adc=tmr.create()
|
||||
tmr_read_adc:alarm(11, tmr.ALARM_AUTO, function()
|
||||
read_adc()
|
||||
end)
|
||||
|
||||
tmr_calc_rms=tmr.create()
|
||||
tmr_calc_rms:alarm(2.1*1000, tmr.ALARM_AUTO, function()
|
||||
calc_rms()
|
||||
end)
|
||||
|
||||
|
||||
zadc1=0 zadc2=0 zadc3=0
|
||||
|
||||
function read_adc()
|
||||
zadc=adc.read(0)
|
||||
|
||||
zadc1=zadc2 zadc2=zadc3 zadc3=zadc
|
||||
zadc=math.floor((zadc1+zadc2+zadc3)/3)
|
||||
|
||||
|
||||
|
||||
if zadc<=zadc_min then zadc_min=zadc end
|
||||
if zadc>=zadc_max then zadc_max=zadc end
|
||||
zadc=zadc-zadc_offset
|
||||
if zadc<=0 then zadc=zadc*-1 end
|
||||
zadc_sum=zadc_sum+zadc znb_mes=znb_mes+1
|
||||
end
|
||||
|
||||
zadc_offset=548
|
||||
zpow_cal=409
|
||||
zadc_cal=192
|
||||
zadc_err=-4
|
||||
|
||||
zadc_rms1=0 zadc_rms2=0 zadc_rms3=0
|
||||
|
||||
function calc_rms()
|
||||
zadc_rms=math.floor(zadc_sum/znb_mes)+zadc_err
|
||||
|
||||
-- zadc_rms1=zadc_rms2 zadc_rms2=zadc_rms3 zadc_rms3=zadc_rms
|
||||
-- zadc_rms=math.floor((zadc_rms1+zadc_rms2+zadc_rms3)/3)
|
||||
|
||||
-- if zadc_rms<=0 then zadc_rms=0 end
|
||||
zadc_offset=math.floor((zadc_min+zadc_max)/2)
|
||||
zpower=math.floor(zadc_rms*zpow_cal/zadc_cal)
|
||||
print(zadc_min,zadc_max,zadc_offset,zadc_rms,zpower.."W")
|
||||
zadc_min=1024 zadc_max=0 zadc_sum=0 znb_mes=0
|
||||
end
|
||||
@@ -1,56 +0,0 @@
|
||||
-- Lit le convertisseur ADC pour mesurer le courant électrique de l'installation PV
|
||||
print("\n 0_get_energy.lua zf190910.0108 \n")
|
||||
|
||||
-- Astuce de mesure:
|
||||
-- on lit l'adc toutes les 11ms, soit 91x par seconde
|
||||
-- comme l'alternance fait 20ms, on balaye (déphasage) statistiquement l'alternance
|
||||
-- on redresse l'alternance par rapport à la masse fictive (env 0.5)
|
||||
-- ce qui nous permet d'estimer une valeur RMS du courant
|
||||
-- quelque soit sa forme !
|
||||
-- on le fait sur 2.1 secondes avec une moyenne glissante sur 3 valeurs
|
||||
|
||||
zadc_min=1024 zadc_max=0 zadc_sum=0 znb_adc=0
|
||||
|
||||
if adc.force_init_mode(adc.INIT_ADC)
|
||||
then
|
||||
node.restart()
|
||||
return
|
||||
end
|
||||
|
||||
tmr_read_adc=tmr.create()
|
||||
tmr_read_adc:alarm(11, tmr.ALARM_AUTO, function()
|
||||
read_adc()
|
||||
end)
|
||||
|
||||
tmr_calc_rms=tmr.create()
|
||||
tmr_calc_rms:alarm(2.1*1000, tmr.ALARM_AUTO, function()
|
||||
calc_rms()
|
||||
end)
|
||||
|
||||
function read_adc()
|
||||
zadc=adc.read(0)
|
||||
if zadc<=zadc_min then zadc_min=zadc end
|
||||
if zadc>=zadc_max then zadc_max=zadc end
|
||||
zadc=zadc-zadc_offset
|
||||
if zadc<=0 then zadc=zadc*-1 end
|
||||
zadc_sum=zadc_sum+zadc znb_adc=znb_adc+1
|
||||
end
|
||||
|
||||
zadc_offset=548
|
||||
zpow_cal=409
|
||||
zadc_cal=192
|
||||
zadc_err=-4
|
||||
|
||||
za1=0 za2=0 za3=0
|
||||
|
||||
function calc_rms()
|
||||
zadc_rms=math.floor(zadc_sum/znb_adc)+zadc_err
|
||||
|
||||
za1=za2 za2=za3 za3=zadc_rms zadc_rms=math.floor((za1+za2+za3)/3)
|
||||
|
||||
if zadc_rms<=0 then zadc_rms=0 end
|
||||
zadc_offset=math.floor((zadc_min+zadc_max)/2)
|
||||
zpower=math.floor(zadc_rms*zpow_cal/zadc_cal)
|
||||
print(zadc_min,zadc_max,zadc_offset,zadc_rms,zpower.."W")
|
||||
zadc_min=1024 zadc_max=0 zadc_sum=0 znb_adc=0
|
||||
end
|
||||
@@ -1,17 +1,13 @@
|
||||
-- Petit script pour envoyer les valeurs de température sur un serveur WEB via un http GET
|
||||
print("\n 0_send_temp.lua zf190806.1541 \n")
|
||||
-- Petit script pour envoyer les valeurs sur un serveur WEB (InfluxDB)
|
||||
-- via un http GET
|
||||
print("\n 0_send_data.lua zf190916.1504 \n")
|
||||
|
||||
function send_temp()
|
||||
print("send_web_temp: ")
|
||||
function send_data()
|
||||
print("send_data: ")
|
||||
|
||||
zurl="http://www.xxx.ml:8086/write?db=xxx&u=admin&p=xxx"
|
||||
print("zurl: "..zurl)
|
||||
|
||||
zarg="energy,compteur=1 puissance="..zpuissance
|
||||
zarg="energy,compteur=2 puissance="..zpuissance
|
||||
print("zarg: "..zarg)
|
||||
|
||||
|
||||
|
||||
http.post(zurl, 'Content-Type: application/x-www-form-urlencoded\r\n', zarg, function(code, data)
|
||||
-- print("toto")
|
||||
if (code < 0) then
|
||||
@@ -22,11 +18,9 @@ function send_temp()
|
||||
end
|
||||
-- print("tutu")
|
||||
end)
|
||||
-- print("titi")
|
||||
-- print("titi")
|
||||
end
|
||||
|
||||
--[[
|
||||
|
||||
send_temp()
|
||||
|
||||
function send_data()()
|
||||
]]
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
-- Petit script pour configurer les choses secrètes que l'on n'aimerait
|
||||
-- pas être exportées sur Internet (github)
|
||||
-- faut donc le mettre ailleurs que dans le dépôt !
|
||||
-- donc on ne met PAS des secrets dans le code !
|
||||
-- faut le mettre ailleurs que dans le dépôt !
|
||||
-- il faut le renommer en 'secrets_energy.lua' et sera exécuté
|
||||
-- par 'boot.lua' au moment du boot
|
||||
|
||||
function secrets()
|
||||
print("\n secrets_temp_zf_out_sud.lua zf190727.1006 \n")
|
||||
print("\n secrets_energy.lua zf190916.1458 \n")
|
||||
|
||||
cli_ssid="xxx"
|
||||
cli_pwd="xxx"
|
||||
|
||||
thingspeak_url="http://api.thingspeak.com/update?api_key=xxx&"
|
||||
hub_url="http://192.168.0.180/api_hub_temp.html?"
|
||||
zfield=1 ou 2 ou 3 !
|
||||
influxdb_url="http://xxx.yyy.zzz:8086/write?db=xxx&u=admin&p=xxx"
|
||||
print("influxdb_url: "..influxdb_url)
|
||||
|
||||
end
|
||||
secrets()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
-- Scripts à charger après le boot pour démarrer son appli
|
||||
|
||||
print("\n boot.lua zf190910.1342 \n")
|
||||
print("\n boot.lua zf190916.1523 \n")
|
||||
|
||||
function heartbeat()
|
||||
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
|
||||
@@ -24,9 +24,9 @@ f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
|
||||
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= "0_get_energy.lua" if file.exists(f) then dofile(f) end
|
||||
--f= "0_send_temp.lua" if file.exists(f) then dofile(f) end
|
||||
--f= "0_cron_temp.lua" if file.exists(f) then dofile(f) end
|
||||
--f= "0_get_data.lua" if file.exists(f) then dofile(f) end
|
||||
--f= "0_send_data.lua" if file.exists(f) then dofile(f) end
|
||||
--f= "0_cron.lua" if file.exists(f) then dofile(f) end
|
||||
|
||||
f=nil
|
||||
--heartbeat=nil
|
||||
|
||||
Reference in New Issue
Block a user