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) ! + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190908_134444.jpg) +Petit transformateur de mesure du courant avec un rapport de 1/800 avec l'épissure pour la boucle de mesure de courant ! + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190908_221514.jpg) +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). + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190908_213927.jpg) +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. + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190908_213900.jpg) +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. + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190907_170403.jpg) +Vue globale de mon installation solaire, pour l'instant posée sur le sol, de 2x panneaux de 280W :-) + +![Image of Yaktocat](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/energy/transfo_courant_clip/img/20190907_170414.jpg) +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" .. + "" .. + "" .. + "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/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20.lua b/Mesures/energy/transfo_courant_clip_1p/oldies/ds18b20.lua new file mode 100644 index 0000000..b672c87 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/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)/ will list all the files in the MCU +http:///newfile.lua displays the file on your browser +http:///newfile.lua?edit allows to creates or edits the specified script in your browser +http:///newfile.lua?run it will run the specified script and will show the returned value +]]-- + +srv=net.createServer(net.TCP) +srv:listen(88,function(conn) + + local rnrn=0 + local Status = 0 + local DataToGet = 0 + local method="" + local url="" + local vars="" + + conn:on("receive",function(conn,payload) + + if Status==0 then + _, _, method, url, vars = string.find(payload, "([A-Z]+) /([^?]*)%??(.*) HTTP") + print(method, url, vars) + end + + if method=="POST" then + + if Status==0 then + --print("status", Status) + _,_,DataToGet, payload = string.find(payload, "Content%-Length: (%d+)(.+)") + if DataToGet~=nil then + DataToGet = tonumber(DataToGet) + --print(DataToGet) + rnrn=1 + Status = 1 + else + print("bad length") + end + end + + -- find /r/n/r/n + if Status==1 then + --print("status", Status) + local payloadlen = string.len(payload) + local mark = "\r\n\r\n" + local i + for i=1, payloadlen do + if string.byte(mark, rnrn) == string.byte(payload, i) then + rnrn=rnrn+1 + if rnrn==5 then + payload = string.sub(payload, i+1,payloadlen) + file.open(url, "w") + file.close() + Status=2 + break + end + else + rnrn=1 + end + end + if Status==1 then + return + end + end + + if Status==2 then + --print("status", Status) + if payload~=nil then + DataToGet=DataToGet-string.len(payload) + --print("DataToGet:", DataToGet, "payload len:", string.len(payload)) + file.open(url, "a+") + file.write(payload) + file.close() + else + conn:send("HTTP/1.1 200 OK\r\n\r\nERROR") + Status=0 + end + + if DataToGet==0 then + conn:send("HTTP/1.1 200 OK\r\n\r\nOK") + Status=0 + end + end + + return + end + + DataToGet = -1 + + if url == "favicon.ico" then + conn:send("HTTP/1.1 404 file not found") + return + end + + conn:send("HTTP/1.1 200 OK\r\n\r\n") + + -- it wants a file in particular + if url~="" and vars=="" then + DataToGet = 0 + return + end + + conn:send("

NodeMCU IDE

") + + if vars=="edit" then + conn:send("") + conn:send("

Back to file list\n") + conn:send("

run") + conn:send("



") + end + + if vars=="run" then + conn:send("") + local st, result=pcall(dofile, url) + conn:send(tostring(result)) + conn:send("") + end + + if url=="" then + local l = file.list(); + for k,v in pairs(l) do + conn:send(""..k..", size:"..v.."
") + end + end + + conn:send("") + + end) + conn:on("sent",function(conn) + if DataToGet>=0 and method=="GET" then + if file.open(url, "r") then + file.seek("set", DataToGet) + local line=file.read(512) + file.close() + if line then + conn:send(line) + DataToGet = DataToGet + 512 + + if (string.len(line)==512) then + return + end + end + end + end + + conn:close() + end) +end) +print("listening, free:", node.heap()) + diff --git a/Mesures/energy/transfo_courant_clip_1p/web_srv2.lua b/Mesures/energy/transfo_courant_clip_1p/web_srv2.lua new file mode 100644 index 0000000..2389b01 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/web_srv2.lua @@ -0,0 +1,78 @@ +-- petit script de serveur WEB avec Active Server Page ZYX + +print("\n web_srv2.lua zf190728.1021 \n") + +ztemp=12 + +-- envoie sur le port ouvert mais depuis l'environnement global ! +function zout(zstring) + zzclient:send(zstring) -- envoie le résultat du code lua inline +end + +-- envoie un fichier HTML sur le port. ATTENTION: longueur de la ligne maximale de 1'024 bytes ! +function send_file(zclient, zfilename) + print("start send html...") + zclient:send("HTTP/1.1 200 OK\n") + zclient:send("Content-Type: text/html\n\n") + zzclient = zclient -- export le port sur l'environnement global ! + if zfilename == "" then zfilename = "z_index.html" end + file_web = file.open(zfilename, "r") + if file_web then + repeat + local line = file_web:read('\n') + if line then + if string.find(line, "<%%") then +-- print("start lua...") + flag_lua_code = true -- bascule sur le code lua inline + lua_code = "" + elseif string.find(line, "%%>") then +-- print("stop lua...") + flag_lua_code = false -- revient sur le code HTML +-- print("Et voici le code lua inline:\n"..lua_code) + loadstring(lua_code)() --on exécute ici le code lua inline ! + elseif flag_lua_code then +-- print(line) + lua_code = lua_code..line -- récupère le code lua inline + else + zclient:send(line) -- envoie le code HTML + end + end + until not line + file_web:close() file_web = nil + else + zclient:send("

"..zfilename.." not found - 404 error

Home
") + end +end + + +srv = net.createServer() +srv:listen(80, function(conn) + conn:on("receive", function(client, request) + _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP") + + print("zrequest: \n---\n"..request.."---") + +-- print("method: ", method) print("path: ", path) print("vars: ", vars) + + if not string.find(request, "/favicon.ico") then + print("coucou") + if (method == nil) then + _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP") + end + print("method: ", method) print("path: ", path) print("vars: ", vars) + _GET = {} + if (vars ~= nil) then + for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do + _GET[k] = v + print(k..": "..v) + end + end + file_html=string.gsub(path, "/", "") + -- print("file_html: ",file_html) + send_file(client, file_html) + end + end) + conn:on("sent", function(c) c:close() end) +end) + + diff --git a/Mesures/energy/transfo_courant_clip_1p/wifi_ap_stop.lua b/Mesures/energy/transfo_courant_clip_1p/wifi_ap_stop.lua new file mode 100644 index 0000000..2738627 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/wifi_ap_stop.lua @@ -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é") diff --git a/Mesures/energy/transfo_courant_clip_1p/wifi_cli_conf.lua b/Mesures/energy/transfo_courant_clip_1p/wifi_cli_conf.lua new file mode 100644 index 0000000..559916b --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/wifi_cli_conf.lua @@ -0,0 +1,11 @@ +-- Petit script pour configurer le client WIFI du NodeMCU + +function wifi_cli_conf() + print("\n wifi_cli_conf.lua zf190726.1912 \n") + + -- les secrets sont maintenant initialisés par boot.lua ! + wifi.sta.config{ssid=cli_ssid, pwd=cli_pwd, save=true} +end + +wifi_cli_conf() +wifi_cli_conf=nil diff --git a/Mesures/energy/transfo_courant_clip_1p/wifi_cli_start.lua b/Mesures/energy/transfo_courant_clip_1p/wifi_cli_start.lua new file mode 100644 index 0000000..045957e --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/wifi_cli_start.lua @@ -0,0 +1,20 @@ +-- Petit script pour connecter le NodeMCU sur un AP Wifi avec l'accompte sauvé en EEPROM + +function wifi_cli_start() + print("\n wifi_cli_start.lua zf190310.1519 \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() + --f= "wifi_get_ip.lua" if file.exists(f) then dofile(f) end +end + +wifi_cli_start() +wifi_cli_start=nil diff --git a/Mesures/energy/transfo_courant_clip_1p/wifi_info.lua b/Mesures/energy/transfo_courant_clip_1p/wifi_info.lua new file mode 100644 index 0000000..1bc5c41 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/wifi_info.lua @@ -0,0 +1,33 @@ +-- Petit script pour afficher les infos actuel du WIFI +print("\n wifi_info.lua zf190727.1220 \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()) + local sta_config=wifi.sta.getconfig(true) + print("Current client config:") + print("\tssid:", sta_config.ssid) + print("\tpassword:", sta_config.pwd) + print("\tbssid:", sta_config.bssid) +elseif zmodewifi == wifi.SOFTAP then + print("WIFI mode AP") + print("AP MAC:\n",wifi.ap.getmac()) + print("AP IP:\n",wifi.ap.getip()) + print("AP Connect:\n",wifi.ap.getconfig()) +elseif zmodewifi == wifi.STATIONAP then + print("WIFI mode CLI+AP") + print("Connected IP:\n",wifi.sta.getip()) + local sta_config=wifi.sta.getconfig(true) + print("Current client config:") + print("\tssid:", sta_config.ssid) + print("\tpassword:", sta_config.pwd) + print("\tbssid:", sta_config.bssid) + print("AP MAC: ", wifi.ap.getmac()) + print("AP IP: ", wifi.ap.getip()) +end diff --git a/Mesures/energy/transfo_courant_clip_1p/z_index.html b/Mesures/energy/transfo_courant_clip_1p/z_index.html new file mode 100644 index 0000000..79c5352 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/z_index.html @@ -0,0 +1,23 @@ + + + + + + ESP8266 home page + + + +

ESP8266 home page 190727.0941

+

Différentes pages HTML:

+

+ Page 1, affichage de la température dynamique en code Lua inline.
+ Page 2, tableau dynamique écrit en Lua inline.
+ Page 3, affichage du capteur non linéaire corrigé.
+ Page 4, test de récupération d'arguments pour un web service.
+ API HUB Temp, test d'un web service hub de mesures de température.
+ Affichage des températures, affiche les températures mesurées.
+ Page qui n'existe pas !
+

+ + + diff --git a/Mesures/energy/transfo_courant_clip_1p/z_page1.html b/Mesures/energy/transfo_courant_clip_1p/z_page1.html new file mode 100644 index 0000000..c0bd757 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/z_page1.html @@ -0,0 +1,26 @@ + + + + + + ESP8266 page 1 + + + +

ESP8266 page 1 190127.1445

+
+ Coucou c'est la page 1 !
+ Retour à la home page...


+ +La température est: + +<% +ztemp=ztemp+1 +zout(ztemp.."°C") +%> + +
Mais il fait encore trop froid !
+ + + + diff --git a/Mesures/energy/transfo_courant_clip_1p/z_page2.html b/Mesures/energy/transfo_courant_clip_1p/z_page2.html new file mode 100644 index 0000000..1516626 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/z_page2.html @@ -0,0 +1,51 @@ + + + + + + ESP8266 page 2 + + + +

ESP8266 page 2 190127.1449

+
+ Coucou c'est la page 2 !
+ Retour à la home page...


+ + Voici un tableau dynamique écrit en Lua inline.

+ + Le code Lua pour créer ce tableau se trouve dans le code HTML de cette page et est exécuté sur le NodeMCU.
+ Les données du tableau viennent du NodeMCU !

+ + <% + -- création du tableau sur le NodeMCUjuste juste pour la démo ici ! + zmac_adrs={} + zmac_adrs["b8:d7:af:a6:bd:86"]={["zname"]="S7 zf", ["zrssi"]=45, ["ztime"]="12:03:36"} + zmac_adrs["cc:c0:79:7d:f5:d5"]={["zname"]="S7 Mélanie", ["zrssi"]=50, ["ztime"]="14:23:46"} + zmac_adrs["5c:f9:38:a1:f7:f0"]={["zname"]="MAC zf", ["zrssi"]=40, ["ztime"]="11:53:16"} + zmac_adrs["d8:30:62:5a:d6:3a"]={["zname"]="IMAC Maman", ["zrssi"]=55, ["ztime"]="17:07:23"} + %> + + + + + + <% + for k, v in pairs(zmac_adrs) do + zout("\n") + zout("\t\n") + zout("\t\n") + zout("\t\n") + zout("\t\n") + zout("\n") + end + %> +
MACNameRSSITime
" .. k .. "" .. tostring(zmac_adrs[k]["zname"]) .. "" .. tostring(zmac_adrs[k]["zrssi"]) .. "" .. tostring(zmac_adrs[k]["ztime"]) .. "
+ + <% + -- libère la mémoire du tableau sur le NodeMCU qui avait été créé pour la démo ici ! + zmac_adrs=nil + %> + + + diff --git a/Mesures/energy/transfo_courant_clip_1p/z_page3.html b/Mesures/energy/transfo_courant_clip_1p/z_page3.html new file mode 100644 index 0000000..6abc4ed --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/z_page3.html @@ -0,0 +1,50 @@ + + + + + + ESP8266 page 3 + + + +

ESP8266 page 3 190505.1156

+
+ Coucou c'est la page 3 !
+ Retour à la home page...


+ + Voici le résultat du capteur non linéaire corrigé avec une table + d'interpolation dans un fichier .csv sur la flash.

+ + Le code Lua pour afficher ce résultat se trouve dans le code HTML de cette page et est exécuté sur le NodeMCU.
+ Les données viennent du NodeMCU !

+ + <% + zout("Il reste: "..node.heap().." de RAM !

\n") + %> + + <% + zx0=83 + get_correction(zx0) + zout("la valeur corrigée de "..zx0.." est "..zy0.."
") + %> + + <% + zx0=91 + get_correction(zx0) + zout("la valeur corrigée de "..zx0.." est "..zy0.."
") + %> + + <% + zx0=100 + get_correction(zx0) + zout("la valeur corrigée de "..zx0.." est "..zy0.."
") + %> + +
Yeah... cela fonctionne vachement bien !

+ + <% + zout("Il reste: "..node.heap().." de RAM !

\n") + %> + + + diff --git a/Mesures/energy/transfo_courant_clip_1p/z_page4.html b/Mesures/energy/transfo_courant_clip_1p/z_page4.html new file mode 100644 index 0000000..49f7086 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_1p/z_page4.html @@ -0,0 +1,53 @@ + + + + + + ESP8266 page 3 + + + +

ESP8266 page 4 190726.1955

+
+ Web service concentrateur de mesures de température !
+ Retour à la home page...


+ + Test d'un web service qui fonctionne avec l'Active Server Page ZYX.

+ + Le code Lua pour afficher ce résultat se trouve dans le code HTML de cette page et est exécuté sur le NodeMCU.
+ Les données viennent du NodeMCU !

+ + <% + zout("Il reste: "..node.heap().." de RAM !

\n") + %> + + Les arguments du web service (GET) sont:

+ <% + if (vars ~= nil) then + zout("
vars: "..vars.."
") + for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do + _GET[k] = v + zout(k..": "..v.."
") + if k == "field1" then + ztemp1_conc = v + elseif k == "field2" then + ztemp2_conc = v + elseif k == "field3" then + ztemp3_conc = v + end + end + end + zout("
Les températures récupérées sont: "..ztemp1_conc..", "..ztemp2_conc..", "..ztemp3_conc) + %> + + + + +

Yeah... cela fonctionne vachement bien !

+ + <% + zout("Il reste: "..node.heap().." de RAM !

\n") + %> + + + diff --git a/Mesures/energy/transfo_courant_clip_2/0_cron.lua b/Mesures/energy/transfo_courant_clip_3p/0_cron.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/0_cron.lua rename to Mesures/energy/transfo_courant_clip_3p/0_cron.lua diff --git a/Mesures/energy/transfo_courant_clip_2/0_send_data.lua b/Mesures/energy/transfo_courant_clip_3p/0_send_data.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/0_send_data.lua rename to Mesures/energy/transfo_courant_clip_3p/0_send_data.lua diff --git a/Mesures/energy/transfo_courant_clip_2/README.md b/Mesures/energy/transfo_courant_clip_3p/README.md similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/README.md rename to Mesures/energy/transfo_courant_clip_3p/README.md diff --git a/Mesures/energy/transfo_courant_clip_2/_secrets_project.lua_ b/Mesures/energy/transfo_courant_clip_3p/_secrets_project.lua_ similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/_secrets_project.lua_ rename to Mesures/energy/transfo_courant_clip_3p/_secrets_project.lua_ diff --git a/Mesures/energy/transfo_courant_clip_2/_secrets_wifi.lua_ b/Mesures/energy/transfo_courant_clip_3p/_secrets_wifi.lua_ similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/_secrets_wifi.lua_ rename to Mesures/energy/transfo_courant_clip_3p/_secrets_wifi.lua_ diff --git a/Mesures/energy/transfo_courant_clip_2/_zremote_cmd.txt b/Mesures/energy/transfo_courant_clip_3p/_zremote_cmd.txt similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/_zremote_cmd.txt rename to Mesures/energy/transfo_courant_clip_3p/_zremote_cmd.txt diff --git a/Mesures/energy/transfo_courant_clip_2/a.lua b/Mesures/energy/transfo_courant_clip_3p/a.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/a.lua rename to Mesures/energy/transfo_courant_clip_3p/a.lua diff --git a/Mesures/energy/transfo_courant_clip_2/boot.lua b/Mesures/energy/transfo_courant_clip_3p/boot.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/boot.lua rename to Mesures/energy/transfo_courant_clip_3p/boot.lua diff --git a/Mesures/energy/transfo_courant_clip_2/boot2.lua b/Mesures/energy/transfo_courant_clip_3p/boot2.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/boot2.lua rename to Mesures/energy/transfo_courant_clip_3p/boot2.lua diff --git a/Mesures/energy/transfo_courant_clip_2/cat.lua b/Mesures/energy/transfo_courant_clip_3p/cat.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/cat.lua rename to Mesures/energy/transfo_courant_clip_3p/cat.lua diff --git a/Mesures/energy/transfo_courant_clip_2/check_all.sh b/Mesures/energy/transfo_courant_clip_3p/check_all.sh similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/check_all.sh rename to Mesures/energy/transfo_courant_clip_3p/check_all.sh diff --git a/Mesures/energy/transfo_courant_clip_2/dir.lua b/Mesures/energy/transfo_courant_clip_3p/dir.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/dir.lua rename to Mesures/energy/transfo_courant_clip_3p/dir.lua diff --git a/Mesures/energy/transfo_courant_clip_2/dir2.lua b/Mesures/energy/transfo_courant_clip_3p/dir2.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/dir2.lua rename to Mesures/energy/transfo_courant_clip_3p/dir2.lua diff --git a/Mesures/energy/transfo_courant_clip_3p/disp_temp.html b/Mesures/energy/transfo_courant_clip_3p/disp_temp.html new file mode 100644 index 0000000..ffd491c --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_3p/disp_temp.html @@ -0,0 +1,30 @@ + + + + + + Affichage des températures + + + +

Affichage des températures 190727.1349

+
+ Les températures mesurées sont:
+ + + <% + if (ztemp1 ~= nil) then + zout("
Température intérieure chambre à coucher "..ztemp1.."°C") + end + if (ztemp2 ~= nil) then + zout("
Température extérieure sud (nodemcu 29) "..ztemp2.."°C") + end + if (ztemp3 ~= nil) then + zout("
Température extérieure nord (nodemcu 30) "..ztemp3.."°C") + end + + zout("

RAM: "..node.heap().."
") + %> + + + diff --git a/Mesures/energy/transfo_courant_clip_2/goodies/a.lua b/Mesures/energy/transfo_courant_clip_3p/goodies/a.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/goodies/a.lua rename to Mesures/energy/transfo_courant_clip_3p/goodies/a.lua diff --git a/Mesures/energy/transfo_courant_clip_2/goodies/c.lua b/Mesures/energy/transfo_courant_clip_3p/goodies/c.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/goodies/c.lua rename to Mesures/energy/transfo_courant_clip_3p/goodies/c.lua diff --git a/Mesures/energy/transfo_courant_clip_2/goodies/flash_led_xfois.lua b/Mesures/energy/transfo_courant_clip_3p/goodies/flash_led_xfois.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/goodies/flash_led_xfois.lua rename to Mesures/energy/transfo_courant_clip_3p/goodies/flash_led_xfois.lua diff --git a/Mesures/energy/transfo_courant_clip_2/goodies/i2c_scanner.lua b/Mesures/energy/transfo_courant_clip_3p/goodies/i2c_scanner.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/goodies/i2c_scanner.lua rename to Mesures/energy/transfo_courant_clip_3p/goodies/i2c_scanner.lua diff --git a/Mesures/energy/transfo_courant_clip_2/head.lua b/Mesures/energy/transfo_courant_clip_3p/head.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/head.lua rename to Mesures/energy/transfo_courant_clip_3p/head.lua diff --git a/Mesures/energy/transfo_courant_clip_2/initz.lua b/Mesures/energy/transfo_courant_clip_3p/initz.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/initz.lua rename to Mesures/energy/transfo_courant_clip_3p/initz.lua diff --git a/Mesures/energy/transfo_courant_clip_2/luatool.py b/Mesures/energy/transfo_courant_clip_3p/luatool.py similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/luatool.py rename to Mesures/energy/transfo_courant_clip_3p/luatool.py diff --git a/Mesures/energy/transfo_courant_clip_2/make_tunnels.sh b/Mesures/energy/transfo_courant_clip_3p/make_tunnels.sh similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/make_tunnels.sh rename to Mesures/energy/transfo_courant_clip_3p/make_tunnels.sh diff --git a/Mesures/energy/transfo_courant_clip_2/schema/nodemcu_energy_adc_ ADS1015.fzz b/Mesures/energy/transfo_courant_clip_3p/schema/nodemcu_energy_adc_ ADS1015.fzz similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/schema/nodemcu_energy_adc_ ADS1015.fzz rename to Mesures/energy/transfo_courant_clip_3p/schema/nodemcu_energy_adc_ ADS1015.fzz diff --git a/Mesures/energy/transfo_courant_clip_2/set_time.lua b/Mesures/energy/transfo_courant_clip_3p/set_time.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/set_time.lua rename to Mesures/energy/transfo_courant_clip_3p/set_time.lua diff --git a/Mesures/energy/transfo_courant_clip_3p/telnet_srv2.lua b/Mesures/energy/transfo_courant_clip_3p/telnet_srv2.lua new file mode 100644 index 0000000..19920f2 --- /dev/null +++ b/Mesures/energy/transfo_courant_clip_3p/telnet_srv2.lua @@ -0,0 +1,93 @@ +-- Serveur telnet pour connexion en remote WIFI, NOUVELLE VERSION ! +-- source: https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/telnet/telnet.lua + +print("\n telnet_srv2.lua zf191020.1932 \n") + +local node, table, tmr, wifi, uwrite, tostring = + node, table, tmr, wifi, uart.write, tostring + +local function telnet_listener(socket) + local insert, remove, concat, heap, gc = + table.insert, table.remove, table.concat, node.heap, collectgarbage + local fifo1, fifo1l, fifo2, fifo2l = {}, 0, {}, 0 + local s -- s is a copy of the TCP socket if and only if sending is in progress + local wdclr, cnt = tmr.wdclr, 0 + local function debug(fmt, ...) + if (...) then fmt = fmt:format(...) end + uwrite(0, "\r\nDBG: ",fmt,"\r\n" ) + cnt = cnt + 1 + if cnt % 10 then wdclr() end + end + + local function flushGarbage() + if heap() < 13440 then gc() end + end + + local function sendLine() + if not s then return end + + if fifo2l + fifo1l == 0 then -- both FIFOs empty, so clear down s + s = nil + return + end + flushGarbage() + if #fifo2 < 4 then -- Flush FIFO1 into FIFO2 + insert(fifo2,concat(fifo1)) + fifo2l, fifo1, fifo1l = fifo2l + fifo1l, {}, 0 + end + local rec = remove(fifo2,1) .. (remove(fifo2,1) or '') .. + (remove(fifo2,1) or '') .. (remove(fifo2,1) or '') + fifo2l = fifo2l - #rec + flushGarbage() + s:send(rec) + end + + local F1_SIZE = 256 + + local function queueLine(str) + while #str > 0 do -- this is because str might be longer than the packet size! + local k, l = F1_SIZE - fifo1l, #str + local chunk + if #fifo1 >= 32 or (k < l and k < 16) then + insert(fifo2, concat(fifo1)) + fifo2l, fifo1, fifo1l, k = fifo2l + fifo1l, {}, 0, F1_SIZE + end + if l > k+16 then -- also tolerate a size overrun of 16 bytes to avoid a split + chunk, str = str:sub(1,k), str:sub(k+1) + else + chunk, str = str, '' + end + insert(fifo1, chunk) + fifo1l = fifo1l + #chunk + end + if not s and socket then + s = socket + sendLine() + else + flushGarbage() + end + end + + local function receiveLine(s, line) + node.input(line) + end + + local function disconnect(s) + fifo1, fifo1l, fifo2, fifo2l, s = {}, 0, {}, 0, nil + node.output(nil) + end + + --zzz + local function zconnection(s) + print("Welcome to NodeMCU world.") + end + + socket:on("connection", zconnection) + socket:on("receive", receiveLine) + socket:on("disconnection", disconnect) + socket:on("sent", sendLine) + node.output(queueLine, 0) +end + +net.createServer(net.TCP, 180):listen(23, telnet_listener) +print("Telnet server running...\nUsage: telnet -rN ip\n") diff --git a/Mesures/energy/transfo_courant_clip_2/up_load_all.sh b/Mesures/energy/transfo_courant_clip_3p/up_load_all.sh similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/up_load_all.sh rename to Mesures/energy/transfo_courant_clip_3p/up_load_all.sh diff --git a/Mesures/energy/transfo_courant_clip_2/upload_s.sh b/Mesures/energy/transfo_courant_clip_3p/upload_s.sh similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/upload_s.sh rename to Mesures/energy/transfo_courant_clip_3p/upload_s.sh diff --git a/Mesures/energy/transfo_courant_clip_2/upload_t.sh b/Mesures/energy/transfo_courant_clip_3p/upload_t.sh similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/upload_t.sh rename to Mesures/energy/transfo_courant_clip_3p/upload_t.sh diff --git a/Mesures/energy/transfo_courant_clip_2/web_ide2.lua b/Mesures/energy/transfo_courant_clip_3p/web_ide2.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/web_ide2.lua rename to Mesures/energy/transfo_courant_clip_3p/web_ide2.lua diff --git a/Mesures/energy/transfo_courant_clip_2/web_srv2.lua b/Mesures/energy/transfo_courant_clip_3p/web_srv2.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/web_srv2.lua rename to Mesures/energy/transfo_courant_clip_3p/web_srv2.lua diff --git a/Mesures/energy/transfo_courant_clip_2/wifi_clear.html b/Mesures/energy/transfo_courant_clip_3p/wifi_clear.html similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/wifi_clear.html rename to Mesures/energy/transfo_courant_clip_3p/wifi_clear.html diff --git a/Mesures/energy/transfo_courant_clip_2/wifi_info.lua b/Mesures/energy/transfo_courant_clip_3p/wifi_info.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/wifi_info.lua rename to Mesures/energy/transfo_courant_clip_3p/wifi_info.lua diff --git a/Mesures/energy/transfo_courant_clip_2/wifi_init.lua b/Mesures/energy/transfo_courant_clip_3p/wifi_init.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/wifi_init.lua rename to Mesures/energy/transfo_courant_clip_3p/wifi_init.lua diff --git a/Mesures/energy/transfo_courant_clip_2/wifi_set_conf.html b/Mesures/energy/transfo_courant_clip_3p/wifi_set_conf.html similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/wifi_set_conf.html rename to Mesures/energy/transfo_courant_clip_3p/wifi_set_conf.html diff --git a/Mesures/energy/transfo_courant_clip_2/z_index.html b/Mesures/energy/transfo_courant_clip_3p/z_index.html similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/z_index.html rename to Mesures/energy/transfo_courant_clip_3p/z_index.html diff --git a/Mesures/energy/transfo_courant_clip_2/zz_host_dir.lua b/Mesures/energy/transfo_courant_clip_3p/zz_host_dir.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/zz_host_dir.lua rename to Mesures/energy/transfo_courant_clip_3p/zz_host_dir.lua diff --git a/Mesures/energy/transfo_courant_clip_2/zz_host_dir2.lua b/Mesures/energy/transfo_courant_clip_3p/zz_host_dir2.lua similarity index 100% rename from Mesures/energy/transfo_courant_clip_2/zz_host_dir2.lua rename to Mesures/energy/transfo_courant_clip_3p/zz_host_dir2.lua