diff --git a/Mesures/energy/transfo_courant_clip/0_cron.lua b/Mesures/energy/transfo_courant_clip_1p.old/0_cron.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/0_cron.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/0_cron.lua
diff --git a/Mesures/energy/transfo_courant_clip/0_get_data.lua b/Mesures/energy/transfo_courant_clip_1p.old/0_get_data.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/0_get_data.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/0_get_data.lua
diff --git a/Mesures/energy/transfo_courant_clip/0_send_data.lua b/Mesures/energy/transfo_courant_clip_1p.old/0_send_data.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/0_send_data.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/0_send_data.lua
diff --git a/Mesures/energy/transfo_courant_clip/Calculs pour la mesure de courant.gdoc b/Mesures/energy/transfo_courant_clip_1p.old/Calculs pour la mesure de courant.gdoc
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/Calculs pour la mesure de courant.gdoc
rename to Mesures/energy/transfo_courant_clip_1p.old/Calculs pour la mesure de courant.gdoc
diff --git a/Mesures/energy/transfo_courant_clip/README.md b/Mesures/energy/transfo_courant_clip_1p.old/README.md
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/README.md
rename to Mesures/energy/transfo_courant_clip_1p.old/README.md
diff --git a/Mesures/energy/transfo_courant_clip/_secrets_energy.lua_ b/Mesures/energy/transfo_courant_clip_1p.old/_secrets_energy.lua_
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/_secrets_energy.lua_
rename to Mesures/energy/transfo_courant_clip_1p.old/_secrets_energy.lua_
diff --git a/Mesures/energy/transfo_courant_clip/_zremote_cmd.txt b/Mesures/energy/transfo_courant_clip_1p.old/_zremote_cmd.txt
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/_zremote_cmd.txt
rename to Mesures/energy/transfo_courant_clip_1p.old/_zremote_cmd.txt
diff --git a/Mesures/energy/transfo_courant_clip/boot.lua b/Mesures/energy/transfo_courant_clip_1p.old/boot.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/boot.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/boot.lua
diff --git a/Mesures/energy/transfo_courant_clip/boot2.lua b/Mesures/energy/transfo_courant_clip_1p.old/boot2.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/boot2.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/boot2.lua
diff --git a/Mesures/energy/transfo_courant_clip/cat.lua b/Mesures/energy/transfo_courant_clip_1p.old/cat.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/cat.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/cat.lua
diff --git a/Mesures/energy/transfo_courant_clip/dir.lua b/Mesures/energy/transfo_courant_clip_1p.old/dir.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/dir.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/dir.lua
diff --git a/Mesures/energy/transfo_courant_clip/disp_data.html b/Mesures/energy/transfo_courant_clip_1p.old/disp_data.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/disp_data.html
rename to Mesures/energy/transfo_courant_clip_1p.old/disp_data.html
diff --git a/Mesures/energy/transfo_courant_clip/flash_led_xfois.lua b/Mesures/energy/transfo_courant_clip_1p.old/flash_led_xfois.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/flash_led_xfois.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/flash_led_xfois.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/a6.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/a6.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/a6.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/a6.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/a7.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/a7.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/a7.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/a7.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/a8.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/a8.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/a8.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/a8.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/a9.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/a9.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/a9.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/a9.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/a_tst_variables.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/a_tst_variables.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/a_tst_variables.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/a_tst_variables.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/led_rgb.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/led_rgb.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/led_rgb.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/led_rgb.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/rm_files.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/rm_files.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/rm_files.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/rm_files.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/t1.csv b/Mesures/energy/transfo_courant_clip_1p.old/goodies/t1.csv
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/t1.csv
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/t1.csv
diff --git a/Mesures/energy/transfo_courant_clip/goodies/wifi_ap_start.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_ap_start.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/wifi_ap_start.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_ap_start.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/wifi_get_ip.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_get_ip.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/wifi_get_ip.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_get_ip.lua
diff --git a/Mesures/energy/transfo_courant_clip/goodies/wifi_off.lua b/Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_off.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/goodies/wifi_off.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/goodies/wifi_off.lua
diff --git a/Mesures/energy/transfo_courant_clip/head.lua b/Mesures/energy/transfo_courant_clip_1p.old/head.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/head.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/head.lua
diff --git a/Mesures/energy/transfo_courant_clip/img/20190907_170403.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190907_170403.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190907_170403.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190907_170403.jpg
diff --git a/Mesures/energy/transfo_courant_clip/img/20190907_170414.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190907_170414.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190907_170414.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190907_170414.jpg
diff --git a/Mesures/energy/transfo_courant_clip/img/20190908_134444.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190908_134444.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190908_134444.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190908_134444.jpg
diff --git a/Mesures/energy/transfo_courant_clip/img/20190908_213900.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190908_213900.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190908_213900.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190908_213900.jpg
diff --git a/Mesures/energy/transfo_courant_clip/img/20190908_213927.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190908_213927.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190908_213927.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190908_213927.jpg
diff --git a/Mesures/energy/transfo_courant_clip/img/20190908_221514.jpg b/Mesures/energy/transfo_courant_clip_1p.old/img/20190908_221514.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/img/20190908_221514.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/img/20190908_221514.jpg
diff --git a/Mesures/energy/transfo_courant_clip/initz.lua b/Mesures/energy/transfo_courant_clip_1p.old/initz.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/initz.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/initz.lua
diff --git a/Mesures/energy/transfo_courant_clip/luatool.py b/Mesures/energy/transfo_courant_clip_1p.old/luatool.py
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/luatool.py
rename to Mesures/energy/transfo_courant_clip_1p.old/luatool.py
diff --git a/Mesures/energy/transfo_courant_clip/oldies/ds18b20-example.lua b/Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20-example.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/oldies/ds18b20-example.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20-example.lua
diff --git a/Mesures/energy/transfo_courant_clip/oldies/ds18b20-web.lua b/Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20-web.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/oldies/ds18b20-web.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20-web.lua
diff --git a/Mesures/energy/transfo_courant_clip/oldies/ds18b20.lua b/Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/oldies/ds18b20.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/oldies/ds18b20.lua
diff --git a/Mesures/energy/transfo_courant_clip/oldies/thingspeak.mat b/Mesures/energy/transfo_courant_clip_1p.old/oldies/thingspeak.mat
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/oldies/thingspeak.mat
rename to Mesures/energy/transfo_courant_clip_1p.old/oldies/thingspeak.mat
diff --git a/Mesures/energy/transfo_courant_clip/schemas/20190922_181912.jpg b/Mesures/energy/transfo_courant_clip_1p.old/schemas/20190922_181912.jpg
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/schemas/20190922_181912.jpg
rename to Mesures/energy/transfo_courant_clip_1p.old/schemas/20190922_181912.jpg
diff --git a/Mesures/energy/transfo_courant_clip/schemas/bread board.png b/Mesures/energy/transfo_courant_clip_1p.old/schemas/bread board.png
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/schemas/bread board.png
rename to Mesures/energy/transfo_courant_clip_1p.old/schemas/bread board.png
diff --git a/Mesures/energy/transfo_courant_clip/schemas/schéma.png b/Mesures/energy/transfo_courant_clip_1p.old/schemas/schéma.png
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/schemas/schéma.png
rename to Mesures/energy/transfo_courant_clip_1p.old/schemas/schéma.png
diff --git a/Mesures/energy/transfo_courant_clip/schemas/transfo_courant_clip.fzz b/Mesures/energy/transfo_courant_clip_1p.old/schemas/transfo_courant_clip.fzz
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/schemas/transfo_courant_clip.fzz
rename to Mesures/energy/transfo_courant_clip_1p.old/schemas/transfo_courant_clip.fzz
diff --git a/Mesures/energy/transfo_courant_clip/set_time.lua b/Mesures/energy/transfo_courant_clip_1p.old/set_time.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/set_time.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/set_time.lua
diff --git a/Mesures/energy/transfo_courant_clip/telnet_srv2.lua b/Mesures/energy/transfo_courant_clip_1p.old/telnet_srv2.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/telnet_srv2.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/telnet_srv2.lua
diff --git a/Mesures/energy/transfo_courant_clip/upload.sh b/Mesures/energy/transfo_courant_clip_1p.old/upload.sh
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/upload.sh
rename to Mesures/energy/transfo_courant_clip_1p.old/upload.sh
diff --git a/Mesures/energy/transfo_courant_clip/web_ide2.lua b/Mesures/energy/transfo_courant_clip_1p.old/web_ide2.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/web_ide2.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/web_ide2.lua
diff --git a/Mesures/energy/transfo_courant_clip/web_srv2.lua b/Mesures/energy/transfo_courant_clip_1p.old/web_srv2.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/web_srv2.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/web_srv2.lua
diff --git a/Mesures/energy/transfo_courant_clip/wifi_ap_stop.lua b/Mesures/energy/transfo_courant_clip_1p.old/wifi_ap_stop.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/wifi_ap_stop.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/wifi_ap_stop.lua
diff --git a/Mesures/energy/transfo_courant_clip/wifi_cli_conf.lua b/Mesures/energy/transfo_courant_clip_1p.old/wifi_cli_conf.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/wifi_cli_conf.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/wifi_cli_conf.lua
diff --git a/Mesures/energy/transfo_courant_clip/wifi_cli_start.lua b/Mesures/energy/transfo_courant_clip_1p.old/wifi_cli_start.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/wifi_cli_start.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/wifi_cli_start.lua
diff --git a/Mesures/energy/transfo_courant_clip/wifi_info.lua b/Mesures/energy/transfo_courant_clip_1p.old/wifi_info.lua
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/wifi_info.lua
rename to Mesures/energy/transfo_courant_clip_1p.old/wifi_info.lua
diff --git a/Mesures/energy/transfo_courant_clip/z_index.html b/Mesures/energy/transfo_courant_clip_1p.old/z_index.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/z_index.html
rename to Mesures/energy/transfo_courant_clip_1p.old/z_index.html
diff --git a/Mesures/energy/transfo_courant_clip/z_page1.html b/Mesures/energy/transfo_courant_clip_1p.old/z_page1.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/z_page1.html
rename to Mesures/energy/transfo_courant_clip_1p.old/z_page1.html
diff --git a/Mesures/energy/transfo_courant_clip/z_page2.html b/Mesures/energy/transfo_courant_clip_1p.old/z_page2.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/z_page2.html
rename to Mesures/energy/transfo_courant_clip_1p.old/z_page2.html
diff --git a/Mesures/energy/transfo_courant_clip/z_page3.html b/Mesures/energy/transfo_courant_clip_1p.old/z_page3.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/z_page3.html
rename to Mesures/energy/transfo_courant_clip_1p.old/z_page3.html
diff --git a/Mesures/energy/transfo_courant_clip/z_page4.html b/Mesures/energy/transfo_courant_clip_1p.old/z_page4.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip/z_page4.html
rename to Mesures/energy/transfo_courant_clip_1p.old/z_page4.html
diff --git a/Mesures/energy/transfo_courant_clip_1p/0_cron.lua b/Mesures/energy/transfo_courant_clip_1p/0_cron.lua
new file mode 100644
index 0000000..073c089
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/0_cron.lua
@@ -0,0 +1,13 @@
+-- Petit script pour faire office de crontab pour les
+--mesures
+print("\n 0_cron.lua zf190917.0033 \n")
+
+f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
+flash_led_xfois()
+xfois =2
+
+cron1=tmr.create()
+cron1:alarm(10*1000, tmr.ALARM_AUTO, function()
+ blink_LED ()
+ send_data()
+end)
diff --git a/Mesures/energy/transfo_courant_clip_1p/0_get_data.lua b/Mesures/energy/transfo_courant_clip_1p/0_get_data.lua
new file mode 100644
index 0000000..9c81dd7
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/0_get_data.lua
@@ -0,0 +1,62 @@
+-- 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 zf191024.1037 \n")
+
+-- Astuce de mesure:
+-- On converti le courant en tension avec la résistance de charge du
+-- transformateur de courant 1/800 et le mesure avec l'ADC
+-- 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) donc 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 et on le somme sur 2.1 secondes
+-- Les mesures min et max ne sont là juste pour vérifier que nous sommes
+-- bien dans la plage de mesure avec le choix de la résistance de conversion
+-- la conversion courant/tension/puissance est faite avec une simple régle de 3
+
+
+zpow_cal=401 --puissance mesurée de la charge étalon
+zadc_cal=189 --valeur de l'adc pour zpow_cal
+zadc_offset=548
+
+zadc_sum=0 zadc_offset_sum=0 znb_mes=0
+zadc_min=zadc_offset zadc_max=zadc_offset
+
+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_offset_sum=zadc_offset_sum+zadc
+ zadc=zadc-zadc_offset if zadc<=0 then zadc=zadc*-1 end
+ zadc_sum=zadc_sum+zadc znb_mes=znb_mes+1
+end
+
+function calc_rms()
+ zadc_rms=math.floor(zadc_sum/znb_mes)
+ if zadc_rms<=8 then zadc_rms=0 end
+ zadc_offset=math.floor(zadc_offset_sum/znb_mes)
+ zpower=math.floor(zadc_rms*zpow_cal/zadc_cal)
+ if verbose then print(zadc_min,zadc_max,zadc_max-zadc_min,zadc_offset,zadc_rms,zpower.."W") end
+ zadc_min=zadc_offset zadc_max=zadc_offset
+ zadc_sum=0 zadc_offset_sum=0 znb_mes=0
+ zadc_min=zadc_offset zadc_max=zadc_offset
+end
diff --git a/Mesures/energy/transfo_courant_clip_1p/0_send_data.lua b/Mesures/energy/transfo_courant_clip_1p/0_send_data.lua
new file mode 100644
index 0000000..38f119b
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/0_send_data.lua
@@ -0,0 +1,27 @@
+-- Petit script pour envoyer les valeurs sur un serveur WEB (InfluxDB)
+-- via un http GET
+print("\n 0_send_data.lua zf190924.1043 \n")
+
+function send_data()
+ if verbose then print("send_data: ") end
+
+ zarg="energy,compteur=2 puissance="..zpower/1000
+ if verbose then print("zarg: "..zarg) end
+
+ http.post(influxdb_url, 'Content-Type: application/x-www-form-urlencoded\r\n', zarg, function(code, data)
+-- print("toto")
+ if (code < 0) then
+ print("HTTP request failed")
+ print("zuzu", code, data)
+ else
+ if verbose then print(code, data) end
+ end
+-- print("tutu")
+ end)
+-- print("titi")
+end
+
+--[[
+zpower=450
+send_data()
+]]
diff --git a/Mesures/energy/transfo_courant_clip_1p/Calculs pour la mesure de courant.gdoc b/Mesures/energy/transfo_courant_clip_1p/Calculs pour la mesure de courant.gdoc
new file mode 100644
index 0000000..e5dae5b
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/Calculs pour la mesure de courant.gdoc
@@ -0,0 +1 @@
+{"url": "https://docs.google.com/open?id=1FtUf-Q_QLBBVBtHr425DvN2uAinou2QF8BK8UVaSdH4", "doc_id": "1FtUf-Q_QLBBVBtHr425DvN2uAinou2QF8BK8UVaSdH4", "email": "christian.zufferey@gmail.com"}
\ No newline at end of file
diff --git a/Mesures/energy/transfo_courant_clip_1p/README.md b/Mesures/energy/transfo_courant_clip_1p/README.md
new file mode 100644
index 0000000..f06c5b0
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/README.md
@@ -0,0 +1,151 @@
+# transfo_courant_clip
+
+Petit projet pour mesurer la puissance d'un appareil électrique à partir de la mesure du courant avec un petit transformateur de courant qui se clips sur un conducteur avec un NodeMCU en LUA, et l'afficher sur Grafana avec une DB InfluxDB. Comme par exemple la production électrique d'une installation solaire photovoltaïque monophasée.
+
+ATTENTION, dans ce projet, on ne tient pas compte du déphasage entre la tension et le courant (cos phy) !
+
+
+Petit transformateur de mesure du courant avec un rapport de 1/800 avec l'épissure pour la boucle de mesure de courant !
+
+
+C'est mon NodeMCU de banc tests, il y a un pont diviseur pour faire une masse fictive à +0.5V qui permet de mesurer les alternances négatives du courant et la résistance *convertisseur* de courant de la mesure en tension (U=R*I).
+
+
+On voit ici l'image du courant d'un foehn (450W) en petite vitesse. On voit bien que la partie négative de l'alternance est effacée. C'est à cause de la mise ne série d'une diode avec le corps de chauffe du foehn, c'est un moyen très simple de diminuer le puissance.
+
+
+On voit ici l'image du courant d'un foehn (450W) en grande vitesse. L'alternance est bien complète ici. On voit aussi qu'elle se trouve dans la plage des 1V du convertisseur ADC du NodeMCU grâce à l'astuce de la *masse fictive* de 0.5V.
+
+
+Vue globale de mon installation solaire, pour l'instant posée sur le sol, de 2x panneaux de 280W :-)
+
+
+Vue des deux onduleurs (un par panneau) qui injectent directement l'énergie produite dans le réseau électrique 220V de la maison.
+
+
+
+On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation des NodeMCU en LUA, en mode événementiel.
+Choses qui ne seraient pas possible si on l'avait fait en C++ (mode Arduino), comme par exemple:
+
+* serveur WEB Active Server Pages ZYX, permet de faire des pages HTML dynamiques avec du code LUA in line. Les pages HTML sont sauve dans la FLASH du NodeMCU
+* serveur WEB service pour le HUB concentrateur de mesures de différents NodeMCU (API GET)
+* serveur WEB pour l'affichage de la consommation électrique
+* serveur WEB pour l'IDE, modification du code source en remote directement depuis une page WEB, pas besoin d'IDE
+* crontab, horloge pour les mesures
+* serveur TELNET, utilisation de la console en remote pour le dépannage
+
+Toutes les fonctions sont bien séparées dans des scripts, cela *complexifie* le projet mais ce qui facilite la portabilité entre les projets et aussi sa mise au point.
+
+
+
+## Astuces de mesures de la puissance
+
+Dans ce projet il y a 1x NodeMCU qui mesure la production électrique de mon installation solaire PV. On mesure le courant injecté dans le réseau électrique de la maison avec un petit transformateur de courant 1/800 *clipsé* sur la phase de l'onduleur.
+* Comme le convertisseur ADC du NodeMCU ne peut mesurer que des valeurs positives comprises entre 0V et 1V, on ajoute une masse *fictive* au signal du transformateur de courant de 0.5V afin de *remonter* l'alternance négative.
+Au lieu de *découper* la sinusoïde (50Hz) 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 (seulement 91x /s) donc 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.5V), ce qui nous permet d'estimer une valeur RMS du courant quelque soit sa forme et on la moyenne sur une période de 2.1 secondes.
+* Les mesures min et max ne sont là juste que pour vérifier que nous sommes bien dans la plage de mesure avec le choix de la résistance de *conversion* du transformateur de courant.
+* Le calcul de la puissance mesurée est très simpliste, un simple ```P=U*I```. On ne tient donc pas compte ici du ```cos(phy)``` qui pourrait varier en fonction des charges inductives dans la maison !
+
+
+
+## Installation
+
+Il faut *flasher* le NodeMCU avec ce firmware:
+
+https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-20-modules-2019-07-01-06-35-13-float.bin
+
+
+Avec ces modules:
+
+```
+adc ds18b20 file gpio http i2c mdns mqtt net
+node ow pcm rtctime sntp spi tmr uart wifi ws2812
+```
+
+
+## Utilisation
+
+### Distribution des rôles de NodeMCU
+
+Comme la mesure de production électrique est faite avec 1x NodeMCU, il y a donc 1x fichier de *secrets*. C'est dans ce fichier de *secrets* qu'il y a l'information de l'adresse IP de la base de donnée InfluxDB !
+
+```
+secrets_energy.lua
+```
+
+
+
+**ATTENTION, readme pas encore terminé, il faut encore modifier le readme depuis ici ! zf190922.1740**
+
+
+
+
+
+
+
+
+### Affichage des températures en local sur le NodeMCU
+
+On peut lire la température directement sur le NodeMCU au moyen de cet url (il faut modifier l'adresse IP du NodeMCU en question):
+
+nodemcu 28 int, http://192.168.0.171/disp_temp.html
+
+nodemcu 29 sud, http://192.168.0.180/disp_temp.html
+
+nodemcu 30 nord, http://192.168.0.105/disp_temp.html
+
+
+### Affichage du petit serveur web du NodeMCU_Lua
+
+Chaque NodeMCU a son propre serveur WEB, on peut l'accéder simplement depuis son adresse IP:
+
+nodemcu 28 int, http://192.168.0.171
+
+nodemcu 29 sud, http://192.168.0.180
+
+nodemcu 30 nord, http://192.168.0.105
+
+
+### Modification du code source du NodeMCU en remote
+
+Très pratique pour le debug, on peut directement modifier le code source Lua du NodeMCU en remote avec cet url:
+
+nodemcu 28 int, http://192.168.0.171:88
+
+nodemcu 29 sud, http://192.168.0.180:88
+
+nodemcu 30 sord, http://192.168.0.105:88
+
+
+### Utilisation de la console du NodeMCU en remote
+
+Très pratique pour le debug, on peut accéder à la console du NodeMCU en remote avec telnet:
+
+nodemcu 28 int, **telnet -rN 192.168.0.171**
+
+nodemcu 29 sud, **telnet -rN 192.168.0.180**
+
+nodemcu 30 nord, **telnet -rN 192.168.0.105**
+
+
+## Visualisation sur ThingSpeak
+La totale en détail
+https://thingspeak.com/channels/817940
+
+Seulement la corrélation entre les trois température
+https://thingspeak.com/apps/plugins/300559
+
+
+zf190922.1740
+
+
+pense bête:
+
+```
+file.open("hello.lua","w+")
+file.writeline([[print("hello nodemcu")]])
+file.writeline([[print(node.heap())]])
+file.close()
+```
diff --git a/Mesures/energy/transfo_courant_clip_1p/_secrets_energy.lua_ b/Mesures/energy/transfo_courant_clip_1p/_secrets_energy.lua_
new file mode 100644
index 0000000..06893c0
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/_secrets_energy.lua_
@@ -0,0 +1,19 @@
+-- Petit script pour configurer les choses secrètes que l'on n'aimerait
+-- pas être exportées sur Internet (github)
+-- 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_energy.lua zf190916.1458 \n")
+
+ cli_ssid="xxx"
+ cli_pwd="xxx"
+
+ influxdb_url="http://xxx.yyy.zzz:8086/write?db=xxx&u=admin&p=xxx"
+ print("influxdb_url: "..influxdb_url)
+
+end
+secrets()
+secrets=nil
diff --git a/Mesures/energy/transfo_courant_clip_1p/_zremote_cmd.txt b/Mesures/energy/transfo_courant_clip_1p/_zremote_cmd.txt
new file mode 100644
index 0000000..1a2caf0
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/_zremote_cmd.txt
@@ -0,0 +1,55 @@
+# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
+# zf191026.0913
+
+# si luatool ne marche pas sur le MAC, il faut lire ceci:
+# https://docs.google.com/document/d/1q64uK3IMOgEDdKaIAttbYuFt4GuLQ06k3FLeyfCsWLg/edit#heading=h.bmefcu67uwj0
+
+# raccourcis clavier
+# CTRL+ALT+ENTER envoie au terminal la ligne de l'éditeur
+# SHIT+CTRL+` ouvre le terminal (attention, ne pas oublier de copier le *path* dans le *tree* et le changer)
+# ALT+CMD+F bascule entre le terminal et l'éditeur
+
+# définitions à faire AVANT !
+export luatool_tty="/dev/cu.wchusbserial1410"
+export zIP="192.168.0.135"
+
+
+# ouvrir et fermer (ALT+n+.) une session telnet sur le NodeMCU avec l'adresse zIP)
+telnet -rN $zIP
+~.
+node.restart()
+=node.heap()
+
+
+# commandes lua pour ce projet
+verbose=true
+verbose=false
+
+
+#commandes luatool pour ce projet
+./luatool.py --ip $zIP -f 0_get_data.lua
+./luatool.py --ip $zIP -f 0_send_data.lua
+./luatool.py --ip $zIP -f cat.lua
+
+
+~.
+./luatool.py --ip $zIP -f head.lua
+telnet -rN $zIP
+dofile("head.lua")
+zhead("telnet_srv2.lua")
+
+
+./luatool.py --ip $zIP --zrestart
+
+
+# faire un cat d'un fichier sur le NodeMCU
+dofile("cat.lua")
+cat("boot2.lua")
+
+
+# commandes luatool
+./luatool.py -h
+./luatool.py --ip $zIP -i
+./luatool.py --ip $zIP -l
+./luatool.py --ip $zIP -f toto.lua -d
+./luatool.py --ip $zIP --delete toto.lua
diff --git a/Mesures/energy/transfo_courant_clip_1p/boot.lua b/Mesures/energy/transfo_courant_clip_1p/boot.lua
new file mode 100644
index 0000000..bc3a7fd
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/boot.lua
@@ -0,0 +1,15 @@
+-- Scripts à charger après le boot pour démarrer le core system
+
+print("\n boot.lua zf190916.2359 \n")
+
+-- charge ses propres secrets
+f= "secrets_energy.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
+f= "web_ide2.lua" if file.exists(f) then dofile(f) end
+f= "web_srv2.lua" if file.exists(f) then dofile(f) end
diff --git a/Mesures/energy/transfo_courant_clip_1p/boot2.lua b/Mesures/energy/transfo_courant_clip_1p/boot2.lua
new file mode 100644
index 0000000..c4c1b70
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/boot2.lua
@@ -0,0 +1,22 @@
+-- Scripts à charger après le boot pour démarrer son appli
+
+print("\n boot2.lua zf190917.0030 \n")
+
+second_chance=nil
+function heartbeat()
+ f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
+ flash_led_xfois()
+ boottimer1=tmr.create()
+ boottimer1:alarm(1*1000, tmr.ALARM_AUTO, function()
+ xfois =2
+ blink_LED ()
+ end)
+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
+--heartbeat()
diff --git a/Mesures/energy/transfo_courant_clip_1p/cat.lua b/Mesures/energy/transfo_courant_clip_1p/cat.lua
new file mode 100644
index 0000000..856a52d
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/cat.lua
@@ -0,0 +1,18 @@
+-- fonction cat() pour afficher le contenu d'un fichier dans la flash
+print("\n cat.lua zf192026.0858 \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))
+ print(string.sub(zline,1,string.len(zline)-1))
+ i=i+1 zline=file.readline()
+ until zline== nil
+ file.close(zfilei)
+
+ print("-------------------------------")
+end
diff --git a/Mesures/energy/transfo_courant_clip_1p/dir.lua b/Mesures/energy/transfo_courant_clip_1p/dir.lua
new file mode 100644
index 0000000..8bf9414
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/dir.lua
@@ -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()
diff --git a/Mesures/energy/transfo_courant_clip_2/disp_temp.html b/Mesures/energy/transfo_courant_clip_1p/disp_data.html
similarity index 100%
rename from Mesures/energy/transfo_courant_clip_2/disp_temp.html
rename to Mesures/energy/transfo_courant_clip_1p/disp_data.html
diff --git a/Mesures/energy/transfo_courant_clip_1p/flash_led_xfois.lua b/Mesures/energy/transfo_courant_clip_1p/flash_led_xfois.lua
new file mode 100644
index 0000000..090ec4c
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/flash_led_xfois.lua
@@ -0,0 +1,39 @@
+-- programme pour faire clignoter x fois une LED avec un rapport on/off
+
+function flash_led_xfois()
+ print("\n flash_led_xfois.lua zf190601.1618 \n")
+
+ --zLED=0 --NodeMCU
+ zLED=4 --EPS-M3
+ zTm_On_LED = 50 --> en ms
+ zTm_Off_LED = 100 --> en ms
+ nbfois = 0
+ gpio.write(zLED, gpio.HIGH)
+ gpio.mode(zLED, gpio.OUTPUT)
+ ztmr_Flash_LED = tmr.create()
+
+ function blink_LED ()
+ if nbfois >= xfois then
+ -- print(nbfois)
+ nbfois = 0
+ else
+ if gpio.read(zLED)==gpio.HIGH then
+ gpio.write(zLED, gpio.LOW)
+-- tmr.alarm(ztmr_Flash_LED, zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
+ ztmr_Flash_LED:alarm(zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
+ else
+ gpio.write(zLED, gpio.HIGH)
+ nbfois = nbfois+1
+-- tmr.alarm(ztmr_Flash_LED, zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
+ ztmr_Flash_LED:alarm(zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
+ end
+ end
+ end
+
+-- xfois =2
+-- blink_LED ()
+end
+
+
+
+
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/a6.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/a6.lua
new file mode 100644
index 0000000..46e85c1
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/a6.lua
@@ -0,0 +1 @@
+-- programme pour faire un test depuis de le webide
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/a7.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/a7.lua
new file mode 100644
index 0000000..46e85c1
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/a7.lua
@@ -0,0 +1 @@
+-- programme pour faire un test depuis de le webide
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/a8.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/a8.lua
new file mode 100644
index 0000000..46e85c1
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/a8.lua
@@ -0,0 +1 @@
+-- programme pour faire un test depuis de le webide
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/a9.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/a9.lua
new file mode 100644
index 0000000..46e85c1
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/a9.lua
@@ -0,0 +1 @@
+-- programme pour faire un test depuis de le webide
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/a_tst_variables.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/a_tst_variables.lua
new file mode 100644
index 0000000..bbae700
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/a_tst_variables.lua
@@ -0,0 +1,6 @@
+-- Scripts pour afficher toutes les variables et fonctions en cours dans le système
+
+print("\n a_tst_variable.lua zf190310.1525 \n")
+
+for n in pairs (_G) do print(n) end
+
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/led_rgb.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/led_rgb.lua
new file mode 100644
index 0000000..7a5d396
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/led_rgb.lua
@@ -0,0 +1,37 @@
+-- Scripts juste pour allumer ou éteindre une LED sur un ruban RGB
+-- tout sur la couleur: https://www.w3schools.com/colors/default.asp
+-- roue des couleurs: https://iro.js.org/?ref=oldsite
+
+print("\n led_rgb.lua zf190303.1436 \n")
+
+nbleds=3
+ws2812.init()
+myLedStrip = ws2812.newBuffer(nbleds, 3)
+
+function RGB_clear()
+ myLedStrip:fill(0, 0, 0) ws2812.write(myLedStrip)
+end
+
+function RGB_reform(R1, G1, B1) --conversion de RGB à BRG
+ rR1=B1 rG1=R1 rB1=G1
+end
+
+function zled_rgb(num_led, R1, G1, B1, zpower)
+ RGB_reform(R1, G1, B1)
+ myLedStrip:set(num_led, rR1*zpower, rG1*zpower, rB1*zpower)
+ ws2812.write(myLedStrip)
+end
+
+function zled_write()
+ ws2812.write(myLedStrip)
+end
+
+
+RGB_clear()
+
+--[[
+zled_rgb(1,255,0,0,1)
+zled_rgb(2,0,255,0,1)
+zled_rgb(2,0,255,0,0.05)
+zled_rgb(3,0,0,255,1)
+]]
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/rm_files.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/rm_files.lua
new file mode 100644
index 0000000..81241cb
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/rm_files.lua
@@ -0,0 +1,12 @@
+-- pour effacer TOUS les fichiers qui se trouve dans la flash du NodeMCU
+
+print("\n rm_files.lua zf180907.1511 \n")
+
+
+l=file.list() i=0
+for k,v in pairs(l) do
+ i=i+v
+ file.remove(k)
+end
+print("-------------------------------")
+print("\nC'est tout effaced :-) \n")
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/t1.csv b/Mesures/energy/transfo_courant_clip_1p/goodies/t1.csv
new file mode 100644
index 0000000..7dc8514
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/t1.csv
@@ -0,0 +1,27 @@
+ohm,%
+33,100
+36,96.77419355
+41,92.74193548
+45,88.70967742
+52,84.67741935
+56,80.64516129
+61,76.61290323
+67,72.58064516
+72,68.5483871
+79,64.51612903
+83,60.48387097
+91,56.4516129
+97,52.41935484
+104,48.38709677
+112,44.35483871
+117,40.32258065
+121,36.29032258
+128,32.25806452
+132,28.22580645
+139,24.19354839
+150,20.16129032
+166,16.12903226
+191,12.09677419
+207,8.064516129
+224,4.032258065
+240,0
\ No newline at end of file
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_ap_start.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_ap_start.lua
new file mode 100644
index 0000000..f7ade0d
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_ap_start.lua
@@ -0,0 +1,19 @@
+-- Démarre le WIFI en mode AP
+
+function wifi_ap_start()
+ print("\n wifi_ap_start.lua zf190310.1511 \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" })
+ --f= "wifi_info.lua" if file.exists(f) then dofile(f) end
+end
+
+wifi_ap_start()
+wifi_ap_start=nil
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_get_ip.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_get_ip.lua
new file mode 100644
index 0000000..82bcdc2
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_get_ip.lua
@@ -0,0 +1,12 @@
+-- Petit script pour obtenir l'adresse IP du NodeMCU connecté sur un AP Wifi
+print("\n wifi_get_ip.lua zf181119.2318 \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)
+ f= "wifi_info.lua" if file.exists(f) then dofile(f) end
+ end
+end)
diff --git a/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_off.lua b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_off.lua
new file mode 100644
index 0000000..c1c7235
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/goodies/wifi_off.lua
@@ -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())
+]]
diff --git a/Mesures/energy/transfo_courant_clip_1p/head.lua b/Mesures/energy/transfo_courant_clip_1p/head.lua
new file mode 100644
index 0000000..2f28a52
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/head.lua
@@ -0,0 +1,19 @@
+-- fonction cat() pour afficher les 10 premières lignes d'un fichier dans la flash
+print("\n head.lua zf192026.0942 \n")
+
+function zhead(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))
+ print(string.sub(zline,1,string.len(zline)-1))
+ i=i+1 zline=file.readline()
+ if i>10 then break end
+ until zline==nil
+ file.close(zfilei)
+
+ print("-------------------------------")
+end
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190907_170403.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190907_170403.jpg
new file mode 100644
index 0000000..d1d56be
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190907_170403.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190907_170414.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190907_170414.jpg
new file mode 100644
index 0000000..899b773
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190907_170414.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190908_134444.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190908_134444.jpg
new file mode 100644
index 0000000..ba7114f
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190908_134444.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190908_213900.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190908_213900.jpg
new file mode 100644
index 0000000..a0c8859
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190908_213900.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190908_213927.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190908_213927.jpg
new file mode 100644
index 0000000..6248007
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190908_213927.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/img/20190908_221514.jpg b/Mesures/energy/transfo_courant_clip_1p/img/20190908_221514.jpg
new file mode 100644
index 0000000..f6d2301
Binary files /dev/null and b/Mesures/energy/transfo_courant_clip_1p/img/20190908_221514.jpg differ
diff --git a/Mesures/energy/transfo_courant_clip_1p/initz.lua b/Mesures/energy/transfo_courant_clip_1p/initz.lua
new file mode 100644
index 0000000..c5aa649
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/initz.lua
@@ -0,0 +1,63 @@
+--Script de bootstrap, test au moment du boot qui a été la cause de boot.
+-- Si la cause est un power on ou une connexion depuis l'IDE, alors
+-- le script repair.lua pendant xx secondes avant de continuer
+--Source: https://nodemcu.readthedocs.io/en/master/en/modules/node/#nodebootreason
+
+print("\n init.lua zf190917.0001 \n")
+
+zswitch=3 --switch flash
+gpio.mode(zswitch, gpio.INT, gpio.PULLUP)
+
+function hvbouton()
+ gpio.trig(zswitch, "none")
+ initalarme:unregister() initalarme2:unregister()
+ f= "boot.lua" if file.exists(f) then dofile(f) end
+ f= "boot2.lua" if file.exists(f) then dofile(f) end
+end
+
+gpio.trig(zswitch, "both", hvbouton)
+
+function second_chance()
+ print("seconde chance...")
+ f= "repair.lua" if file.exists(f) then dofile(f) end
+ initalarme=tmr.create()
+ initalarme:alarm(4*1000, tmr.ALARM_SINGLE, function()
+ f= "boot.lua" if file.exists(f) then dofile(f) end
+ end)
+ initalarme2=tmr.create()
+ initalarme2:alarm(30*1000, tmr.ALARM_SINGLE, function()
+ gpio.trig(zswitch)
+ hvbouton=nil
+ zswitch=nil
+ reset_reason=nil
+ f= "boot2.lua" if file.exists(f) then dofile(f) end
+ end)
+end
+
+_, reset_reason = node.bootreason()
+print("reset_reason:",reset_reason)
+if reset_reason == 0 then
+ print("power on")
+ second_chance()
+elseif reset_reason == 4 then
+ print("node.restart")
+ gpio.trig(zswitch)
+ hvbouton=nil
+ second_chance=nil
+ zswitch=nil
+ reset_reason=nil
+ f= "boot.lua" if file.exists(f) then dofile(f) end
+ f= "boot2.lua" if file.exists(f) then dofile(f) end
+elseif reset_reason == 5 then
+ print("dsleep wake up")
+ f= "boot.lua" if file.exists(f) then dofile(f) end
+ f= "boot2.lua" if file.exists(f) then dofile(f) end
+elseif reset_reason == 6 then
+ print("external reset")
+ second_chance()
+else
+ print("autre raison")
+ second_chance()
+end
+
+
diff --git a/Mesures/energy/transfo_courant_clip_1p/luatool.py b/Mesures/energy/transfo_courant_clip_1p/luatool.py
new file mode 100755
index 0000000..9781932
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/luatool.py
@@ -0,0 +1,398 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+version = "0.6.5 zf191021.1558"
+
+print("luatool.py ver " + version)
+
+#Améliorations
+# Pour voir les améliorations il faut 'chercher' les zzz
+
+
+#
+# ESP8266 luatool
+# Author e-mail: 4ref0nt@gmail.com
+# Site: http://esp8266.ru
+# Contributions from: https://github.com/sej7278
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+# Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import sys
+import serial
+from time import sleep
+import socket
+import argparse
+from os.path import basename
+
+
+tqdm_installed = True
+try:
+ from tqdm import tqdm
+except ImportError, e:
+ if e.message == 'No module named tqdm':
+ tqdm_installed = False
+ else:
+ raise
+
+
+
+class TransportError(Exception):
+ """Custom exception to represent errors with a transport
+ """
+ def __init__(self, message):
+ self.message = message
+
+ def __str__(self):
+ return self.message
+
+class AbstractTransport:
+ def __init__(self):
+ raise NotImplementedError('abstract transports cannot be instantiated.')
+
+ def close(self):
+ raise NotImplementedError('Function not implemented')
+
+ def read(self, length):
+ raise NotImplementedError('Function not implemented')
+
+ def writeln(self, data, check=1):
+ raise NotImplementedError('Function not implemented')
+
+ def writer(self, data):
+ self.writeln("file.writeline([==[" + data + "]==])\r")
+
+ def performcheck(self, expected):
+ line = ''
+ char = ''
+ i = -1
+ while char != chr(62): # '>'
+ char = self.read(1)
+ if char == '':
+ raise Exception('No proper answer from MCU')
+ if char == chr(13) or char == chr(10): # LF or CR
+ if line != '':
+ line = line.strip()
+ # zzz191021 Affiche ce que l'on a reçu du NodeMCU
+ if args.verbose:
+ print("\n\nzread0957: {" + line + "\n}\n")
+
+ if line+'\r' == expected and not args.bar:
+ sys.stdout.write(" -> ok")
+ elif line+'\r' != expected:
+ if line[:4] == "lua:":
+ sys.stdout.write("\r\n\r\nLua ERROR: %s" % line)
+ raise Exception('ERROR from Lua interpreter\r\n\r\n')
+ else:
+ expected = expected.split("\r")[0]
+ sys.stdout.write("\r\n\r\nERROR")
+ sys.stdout.write("\r\n send string : '%s'" % expected)
+ sys.stdout.write("\r\n expected echo : '%s'" % expected)
+ sys.stdout.write("\r\n but got answer : '%s'" % line)
+ sys.stdout.write("\r\n\r\n")
+ raise Exception('Error sending data to MCU\r\n\r\n')
+ line = ''
+ else:
+ line += char
+ if char == chr(62) and expected[i] == char:
+ char = ''
+ i += 1
+
+
+class SerialTransport(AbstractTransport):
+ def __init__(self, port, baud, delay):
+ self.port = port
+ self.baud = baud
+ self.serial = None
+ self.delay = delay
+
+ try:
+ self.serial = serial.Serial(port, baud)
+ except serial.SerialException as e:
+ raise TransportError(e.strerror)
+
+ self.serial.timeout = 3
+ self.serial.interCharTimeout = 3
+
+ # zzz191021 juste après l'ouverture du port série, on attend le caractère '>'
+ line = ''
+ char = ''
+ i = -1
+ while char != chr(62): # '>'
+ char = self.read(1)
+ if char == '':
+ raise Exception('No proper answer from MCU')
+ line += char
+ i += 1
+ if args.verbose:
+ print("line: ." + line + ".")
+
+
+ def writeln(self, data, check=1):
+ # zzz191020 on fait une petite pause avant l'envoi de chaque ligne
+ sleep(self.delay)
+ if self.serial.inWaiting() > 0:
+ self.serial.flushInput()
+ if len(data) > 0 and not args.bar:
+ sys.stdout.write("\r\n->")
+ sys.stdout.write(data.split("\r")[0])
+ self.serial.write(data)
+ # zzz191021 Affiche ce que l'on a envoyé au NodeMCU
+ if args.verbose:
+ print("\n\nzwrite0952: {" + data + "\n}\n")
+ if check > 0:
+ self.performcheck(data)
+ elif not args.bar:
+ sys.stdout.write(" -> send without check")
+
+ def read(self, length):
+ return self.serial.read(length)
+
+ def close(self):
+ self.serial.flush()
+ self.serial.close()
+
+
+class TcpSocketTransport(AbstractTransport):
+ def __init__(self, host, port):
+ self.host = host
+ self.port = port
+ self.socket = None
+
+ try:
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ except socket.error as e:
+ raise TransportError(e.strerror)
+
+ try:
+ self.socket.connect((host, port))
+ except socket.error as e:
+ raise TransportError(e.strerror)
+ # read intro from telnet server (see telnet_srv.lua)
+ self.socket.recv(50)
+
+ def writeln(self, data, check=1):
+ if len(data) > 0 and not args.bar:
+ sys.stdout.write("\r\n->")
+ sys.stdout.write(data.split("\r")[0])
+ self.socket.sendall(data)
+ if check > 0:
+ self.performcheck(data)
+ elif not args.bar:
+ sys.stdout.write(" -> send without check")
+
+ def read(self, length):
+ return self.socket.recv(length)
+
+ def close(self):
+ self.socket.close()
+
+
+def decidetransport(cliargs):
+ if cliargs.ip:
+ data = cliargs.ip.split(':')
+ host = data[0]
+ if len(data) == 2:
+ port = int(data[1])
+ else:
+ port = 23
+ return TcpSocketTransport(host, port)
+ else:
+ return SerialTransport(cliargs.port, cliargs.baud, cliargs.delay)
+
+
+if __name__ == '__main__':
+ # parse arguments or use defaults
+ parser = argparse.ArgumentParser(description='ESP8266 Lua script uploader.')
+ parser.add_argument('--bar', action='store_true', help='Show a progress bar for uploads instead of printing each line')
+ parser.add_argument('--delay', default=0.03, help='Delay in seconds between each write, default 0.03 sec.', type=float)
+ parser.add_argument('--delete', default=None, help='Delete a lua/lc file from device.')
+ parser.add_argument('--ip', default=None, help='Connect via telnet server (--ip IP[:port])')
+ parser.add_argument('--zrestart', action='store_true', help='Restart the NodeMCU.')
+ parser.add_argument('-a', '--append', action='store_true', help='Append source file to destination file.')
+ parser.add_argument('-b', '--baud', default=115200, help='Baudrate, default 115200')
+ parser.add_argument('-c', '--compile', action='store_true', help='Compile lua to lc after upload')
+ parser.add_argument('-d', '--dofile', action='store_true', help='Run the Lua script after upload')
+ parser.add_argument('-e', '--echo', action='store_true', help='Echo output of MCU until script is terminated.')
+ parser.add_argument('-f', '--src', default='main.lua', help='Source file on computer, default main.lua')
+ parser.add_argument('-i', '--id', action='store_true', help='Query the modules chip id.')
+ parser.add_argument('-l', '--list', action='store_true', help='List files on device')
+ parser.add_argument('-p', '--port', default='/dev/ttyUSB0', help='Device name, default /dev/ttyUSB0')
+ parser.add_argument('-r', '--restart', action='store_true', help='Restart MCU after upload')
+ parser.add_argument('-t', '--dest', default=None, help='Destination file on MCU, default to source file name')
+ parser.add_argument('-v', '--verbose', action='store_true', help="Show progress messages.")
+ parser.add_argument('-w', '--wipe', action='store_true', help='Delete all lua/lc files on device.')
+ args = parser.parse_args()
+
+ transport = decidetransport(args)
+
+ if args.bar and not tqdm_installed:
+ sys.stdout.write("You must install the tqdm library to use the bar feature\n")
+ sys.stdout.write("To install, at the prompt type: \"pip install tqdm\"\n")
+ sys.exit(0)
+
+
+ if args.list:
+ # zzz191020 Amélioré la sortie du listing des fichiers
+ transport.writeln("print('\\n-----');local l = file.list();for k,v in pairs(l) do print(k..', size:'..v)end;print('-----\\n')\r", 0)
+ while True:
+ char = transport.read(1)
+ if char == '' or char == chr(62): # '' or '>'
+ break
+ sys.stdout.write(char)
+ sys.exit(0)
+
+ if args.id:
+ transport.writeln("=node.chipid()\r", 0)
+ id=""
+ while True:
+ char = transport.read(1)
+ if char == '' or char == chr(62):
+ break
+ if char.isdigit():
+ id += char
+ print("\n"+id)
+ sys.exit(0)
+
+ # zzz191020 Ajouté la fonction restart seule
+ if args.zrestart:
+ transport.writeln("node.restart()\r")
+ sys.exit(0)
+
+ if args.wipe:
+ transport.writeln("local l = file.list();for k,v in pairs(l) do print(k)end\r", 0)
+ file_list = []
+ fn = ""
+ while True:
+ char = transport.read(1)
+ if char == '' or char == chr(62):
+ break
+ if char not in ['\r', '\n']:
+ fn += char
+ else:
+ if fn:
+ file_list.append(fn.strip())
+ fn = ''
+ for fn in file_list[1:]: # first line is the list command sent to device
+ if args.verbose:
+ sys.stderr.write("Delete file {} from device.\r\n".format(fn))
+ transport.writeln("file.remove(\"" + fn + "\")\r")
+ sys.exit(0)
+
+ if args.delete:
+ transport.writeln("file.remove(\"" + args.delete + "\")\r")
+ sys.exit(0)
+
+ if args.dest is None:
+ args.dest = basename(args.src)
+ # zzz191020 Affiche le fichier à envoyer
+ print("File: " + args.src)
+
+ # open source file for reading
+ try:
+ try:
+ f = open(args.src, "rt")
+ except:
+ import os
+ base_dir = os.path.dirname(os.path.realpath(__file__))
+ f = open(os.path.join(base_dir, args.src), "rt")
+ os.chdir(base_dir)
+ except:
+ sys.stderr.write("Could not open input file \"%s\"\n" % args.src)
+ sys.exit(1)
+
+ # Verify the selected file will not exceed the size of the serial buffer.
+ # The size of the buffer is 256. This script does not accept files with
+ # lines longer than 230 characters to have some room for command overhead.
+ num_lines = 0
+ for ln in f:
+ if len(ln) > 230:
+ sys.stderr.write("File \"%s\" contains a line with more than 240 "
+ "characters. This exceeds the size of the serial buffer.\n"
+ % args.src)
+ f.close()
+ sys.exit(1)
+ num_lines += 1
+
+ # Go back to the beginning of the file after verifying it has the correct
+ # line length
+ f.seek(0)
+
+ # set serial timeout
+ if args.verbose:
+ sys.stderr.write("Upload starting\r\n")
+
+ # remove existing file on device
+ if args.append==False:
+ if args.verbose:
+ sys.stderr.write("Stage 1. Deleting old file from flash memory")
+ transport.writeln("file.open(\"" + args.dest + "\", \"w\")\r")
+ transport.writeln("file.close()\r")
+ transport.writeln("file.remove(\"" + args.dest + "\")\r")
+ else:
+ if args.verbose:
+ sys.stderr.write("[SKIPPED] Stage 1. Deleting old file from flash memory [SKIPPED]")
+
+
+ # read source file line by line and write to device
+ if args.verbose:
+ sys.stderr.write("\r\nStage 2. Creating file in flash memory and write first line")
+ if args.append:
+ transport.writeln("file.open(\"" + args.dest + "\", \"a+\")\r")
+ else:
+ transport.writeln("file.open(\"" + args.dest + "\", \"w+\")\r")
+ line = f.readline()
+ if args.verbose:
+ sys.stderr.write("\r\nStage 3. Start writing data to flash memory...")
+ if args.bar:
+ for i in tqdm(range(0, num_lines)):
+ transport.writer(line.strip())
+ line = f.readline()
+ else:
+ while line != '':
+ transport.writer(line.strip())
+ line = f.readline()
+
+ # close both files
+ f.close()
+ if args.verbose:
+ sys.stderr.write("\r\nStage 4. Flush data and closing file")
+ transport.writeln("file.flush()\r")
+ transport.writeln("file.close()\r")
+
+ # compile?
+ if args.compile:
+ if args.verbose:
+ sys.stderr.write("\r\nStage 5. Compiling")
+ transport.writeln("node.compile(\"" + args.dest + "\")\r")
+ transport.writeln("file.remove(\"" + args.dest + "\")\r")
+
+ # restart or dofile
+ if args.restart:
+ transport.writeln("node.restart()\r")
+
+ if args.dofile: # never exec if restart=1
+ transport.writeln("dofile(\"" + args.dest + "\")\r", 0)
+
+ if args.echo:
+ if args.verbose:
+ sys.stderr.write("\r\nEchoing MCU output, press Ctrl-C to exit")
+ while True:
+ sys.stdout.write(transport.read(1))
+
+ # close serial port
+ transport.close()
+
+ # flush screen
+ sys.stdout.flush()
+ sys.stderr.flush()
+ if not args.bar:
+ sys.stderr.write("\r\n--->>> All done <<<---\r\n")
diff --git a/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20-example.lua b/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20-example.lua
new file mode 100644
index 0000000..8354695
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/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/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20-web.lua b/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20-web.lua
new file mode 100644
index 0000000..408612f
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip_1p/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" ..
+ "" ..
+ "
| MAC | Name | RSSI | Time | +
|---|---|---|---|
| " .. k .. " | \n") + zout("\t" .. tostring(zmac_adrs[k]["zname"]) .. " | \n") + zout("\t" .. tostring(zmac_adrs[k]["zrssi"]) .. " | \n") + zout("\t" .. tostring(zmac_adrs[k]["ztime"]) .. " | \n") + zout("