diff --git a/Mesures/energy/transfo_courant_clip/_zremote_cmd.txt b/Mesures/energy/transfo_courant_clip/_zremote_cmd.txt
index 7d69e08..1a2caf0 100644
--- a/Mesures/energy/transfo_courant_clip/_zremote_cmd.txt
+++ b/Mesures/energy/transfo_courant_clip/_zremote_cmd.txt
@@ -1,40 +1,50 @@
# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
-# zf191024.1023
+# 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
-# ALT+CMD+F togle entre le terminal et 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 une session telnet sur le NodeMCU avec l'adresse zIP)
+# 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
-if verbose then print("toto") end
-
-
-
#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("telnet_srv2.lua")
+cat("boot2.lua")
# commandes luatool
diff --git a/Mesures/energy/transfo_courant_clip/cat.lua b/Mesures/energy/transfo_courant_clip/cat.lua
index 7c309b9..856a52d 100644
--- a/Mesures/energy/transfo_courant_clip/cat.lua
+++ b/Mesures/energy/transfo_courant_clip/cat.lua
@@ -1,5 +1,5 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
-print("\n cat.lua zf180826.1109 \n")
+print("\n cat.lua zf192026.0858 \n")
function cat(zfile)
print("\n"..zfile.."\n-------------------------------")
@@ -8,7 +8,8 @@ function cat(zfile)
i=1
zline=file.readline()
repeat
- print(i..": "..string.sub(zline,1,string.len(zline)-1))
+-- 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)
diff --git a/Mesures/energy/transfo_courant_clip/head.lua b/Mesures/energy/transfo_courant_clip/head.lua
new file mode 100644
index 0000000..2f28a52
--- /dev/null
+++ b/Mesures/energy/transfo_courant_clip/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/WIFI_sniffer/b.lua b/WIFI_sniffer/fisrt_project/b.lua
similarity index 100%
rename from WIFI_sniffer/b.lua
rename to WIFI_sniffer/fisrt_project/b.lua
diff --git a/WIFI_sniffer/boot.lua b/WIFI_sniffer/fisrt_project/boot.lua
similarity index 100%
rename from WIFI_sniffer/boot.lua
rename to WIFI_sniffer/fisrt_project/boot.lua
diff --git a/WIFI_sniffer/flash_led_xfois.lua b/WIFI_sniffer/fisrt_project/flash_led_xfois.lua
similarity index 100%
rename from WIFI_sniffer/flash_led_xfois.lua
rename to WIFI_sniffer/fisrt_project/flash_led_xfois.lua
diff --git a/WIFI_sniffer/goodies/a_test_fill.lua b/WIFI_sniffer/fisrt_project/goodies/a_test_fill.lua
similarity index 100%
rename from WIFI_sniffer/goodies/a_test_fill.lua
rename to WIFI_sniffer/fisrt_project/goodies/a_test_fill.lua
diff --git a/WIFI_sniffer/goodies/a_train1.lua b/WIFI_sniffer/fisrt_project/goodies/a_train1.lua
similarity index 100%
rename from WIFI_sniffer/goodies/a_train1.lua
rename to WIFI_sniffer/fisrt_project/goodies/a_train1.lua
diff --git a/WIFI_sniffer/goodies/blink_led1.lua b/WIFI_sniffer/fisrt_project/goodies/blink_led1.lua
similarity index 100%
rename from WIFI_sniffer/goodies/blink_led1.lua
rename to WIFI_sniffer/fisrt_project/goodies/blink_led1.lua
diff --git a/WIFI_sniffer/goodies/blink_led2.lua b/WIFI_sniffer/fisrt_project/goodies/blink_led2.lua
similarity index 100%
rename from WIFI_sniffer/goodies/blink_led2.lua
rename to WIFI_sniffer/fisrt_project/goodies/blink_led2.lua
diff --git a/WIFI_sniffer/goodies/cat.lua b/WIFI_sniffer/fisrt_project/goodies/cat.lua
similarity index 100%
rename from WIFI_sniffer/goodies/cat.lua
rename to WIFI_sniffer/fisrt_project/goodies/cat.lua
diff --git a/WIFI_sniffer/goodies/dir.lua b/WIFI_sniffer/fisrt_project/goodies/dir.lua
similarity index 100%
rename from WIFI_sniffer/goodies/dir.lua
rename to WIFI_sniffer/fisrt_project/goodies/dir.lua
diff --git a/WIFI_sniffer/goodies/flash_led_xfois.lua b/WIFI_sniffer/fisrt_project/goodies/flash_led_xfois.lua
similarity index 100%
rename from WIFI_sniffer/goodies/flash_led_xfois.lua
rename to WIFI_sniffer/fisrt_project/goodies/flash_led_xfois.lua
diff --git a/WIFI_sniffer/goodies/initz - copie.lua b/WIFI_sniffer/fisrt_project/goodies/initz - copie.lua
similarity index 100%
rename from WIFI_sniffer/goodies/initz - copie.lua
rename to WIFI_sniffer/fisrt_project/goodies/initz - copie.lua
diff --git a/WIFI_sniffer/goodies/restart.lua b/WIFI_sniffer/fisrt_project/goodies/restart.lua
similarity index 100%
rename from WIFI_sniffer/goodies/restart.lua
rename to WIFI_sniffer/fisrt_project/goodies/restart.lua
diff --git a/WIFI_sniffer/goodies/rm_files.lua b/WIFI_sniffer/fisrt_project/goodies/rm_files.lua
similarity index 100%
rename from WIFI_sniffer/goodies/rm_files.lua
rename to WIFI_sniffer/fisrt_project/goodies/rm_files.lua
diff --git a/WIFI_sniffer/goodies/wifi_ap_start.lua b/WIFI_sniffer/fisrt_project/goodies/wifi_ap_start.lua
similarity index 100%
rename from WIFI_sniffer/goodies/wifi_ap_start.lua
rename to WIFI_sniffer/fisrt_project/goodies/wifi_ap_start.lua
diff --git a/WIFI_sniffer/goodies/wifi_ap_stop.lua b/WIFI_sniffer/fisrt_project/goodies/wifi_ap_stop.lua
similarity index 100%
rename from WIFI_sniffer/goodies/wifi_ap_stop.lua
rename to WIFI_sniffer/fisrt_project/goodies/wifi_ap_stop.lua
diff --git a/WIFI_sniffer/goodies/wifi_cli_stop.lua b/WIFI_sniffer/fisrt_project/goodies/wifi_cli_stop.lua
similarity index 100%
rename from WIFI_sniffer/goodies/wifi_cli_stop.lua
rename to WIFI_sniffer/fisrt_project/goodies/wifi_cli_stop.lua
diff --git a/WIFI_sniffer/goodies/wifi_get_ip.lua b/WIFI_sniffer/fisrt_project/goodies/wifi_get_ip.lua
similarity index 100%
rename from WIFI_sniffer/goodies/wifi_get_ip.lua
rename to WIFI_sniffer/fisrt_project/goodies/wifi_get_ip.lua
diff --git a/WIFI_sniffer/goodies/wifi_off.lua b/WIFI_sniffer/fisrt_project/goodies/wifi_off.lua
similarity index 100%
rename from WIFI_sniffer/goodies/wifi_off.lua
rename to WIFI_sniffer/fisrt_project/goodies/wifi_off.lua
diff --git a/WIFI_sniffer/initz.lua b/WIFI_sniffer/fisrt_project/initz.lua
similarity index 100%
rename from WIFI_sniffer/initz.lua
rename to WIFI_sniffer/fisrt_project/initz.lua
diff --git a/WIFI_sniffer/oldies/a.lua b/WIFI_sniffer/fisrt_project/oldies/a.lua
similarity index 100%
rename from WIFI_sniffer/oldies/a.lua
rename to WIFI_sniffer/fisrt_project/oldies/a.lua
diff --git a/WIFI_sniffer/oldies/a_test_power_wifi.lua b/WIFI_sniffer/fisrt_project/oldies/a_test_power_wifi.lua
similarity index 100%
rename from WIFI_sniffer/oldies/a_test_power_wifi.lua
rename to WIFI_sniffer/fisrt_project/oldies/a_test_power_wifi.lua
diff --git a/WIFI_sniffer/oldies/a_tst_sort.lua b/WIFI_sniffer/fisrt_project/oldies/a_tst_sort.lua
similarity index 100%
rename from WIFI_sniffer/oldies/a_tst_sort.lua
rename to WIFI_sniffer/fisrt_project/oldies/a_tst_sort.lua
diff --git a/WIFI_sniffer/oldies/dsleep.lua b/WIFI_sniffer/fisrt_project/oldies/dsleep.lua
similarity index 100%
rename from WIFI_sniffer/oldies/dsleep.lua
rename to WIFI_sniffer/fisrt_project/oldies/dsleep.lua
diff --git a/WIFI_sniffer/oldies/tst_sniffer_wifi1.csv b/WIFI_sniffer/fisrt_project/oldies/tst_sniffer_wifi1.csv
similarity index 100%
rename from WIFI_sniffer/oldies/tst_sniffer_wifi1.csv
rename to WIFI_sniffer/fisrt_project/oldies/tst_sniffer_wifi1.csv
diff --git a/WIFI_sniffer/oldies/wifi_ap_stop.lua b/WIFI_sniffer/fisrt_project/oldies/wifi_ap_stop.lua
similarity index 100%
rename from WIFI_sniffer/oldies/wifi_ap_stop.lua
rename to WIFI_sniffer/fisrt_project/oldies/wifi_ap_stop.lua
diff --git a/WIFI_sniffer/repair.lua b/WIFI_sniffer/fisrt_project/repair.lua
similarity index 100%
rename from WIFI_sniffer/repair.lua
rename to WIFI_sniffer/fisrt_project/repair.lua
diff --git a/WIFI_sniffer/set_time.lua b/WIFI_sniffer/fisrt_project/set_time.lua
similarity index 100%
rename from WIFI_sniffer/set_time.lua
rename to WIFI_sniffer/fisrt_project/set_time.lua
diff --git a/WIFI_sniffer/telnet_srv2.lua b/WIFI_sniffer/fisrt_project/telnet_srv2.lua
similarity index 100%
rename from WIFI_sniffer/telnet_srv2.lua
rename to WIFI_sniffer/fisrt_project/telnet_srv2.lua
diff --git a/WIFI_sniffer/web_ide2.lua b/WIFI_sniffer/fisrt_project/web_ide2.lua
similarity index 100%
rename from WIFI_sniffer/web_ide2.lua
rename to WIFI_sniffer/fisrt_project/web_ide2.lua
diff --git a/WIFI_sniffer/web_srv2.lua b/WIFI_sniffer/fisrt_project/web_srv2.lua
similarity index 100%
rename from WIFI_sniffer/web_srv2.lua
rename to WIFI_sniffer/fisrt_project/web_srv2.lua
diff --git a/WIFI_sniffer/wifi_ap_start.lua b/WIFI_sniffer/fisrt_project/wifi_ap_start.lua
similarity index 100%
rename from WIFI_sniffer/wifi_ap_start.lua
rename to WIFI_sniffer/fisrt_project/wifi_ap_start.lua
diff --git a/WIFI_sniffer/wifi_cli_conf.lua b/WIFI_sniffer/fisrt_project/wifi_cli_conf.lua
similarity index 100%
rename from WIFI_sniffer/wifi_cli_conf.lua
rename to WIFI_sniffer/fisrt_project/wifi_cli_conf.lua
diff --git a/WIFI_sniffer/wifi_cli_start.lua b/WIFI_sniffer/fisrt_project/wifi_cli_start.lua
similarity index 100%
rename from WIFI_sniffer/wifi_cli_start.lua
rename to WIFI_sniffer/fisrt_project/wifi_cli_start.lua
diff --git a/WIFI_sniffer/wifi_info.lua b/WIFI_sniffer/fisrt_project/wifi_info.lua
similarity index 100%
rename from WIFI_sniffer/wifi_info.lua
rename to WIFI_sniffer/fisrt_project/wifi_info.lua
diff --git a/WIFI_sniffer/z_index.html b/WIFI_sniffer/fisrt_project/z_index.html
similarity index 100%
rename from WIFI_sniffer/z_index.html
rename to WIFI_sniffer/fisrt_project/z_index.html
diff --git a/WIFI_sniffer/z_page1.html b/WIFI_sniffer/fisrt_project/z_page1.html
similarity index 100%
rename from WIFI_sniffer/z_page1.html
rename to WIFI_sniffer/fisrt_project/z_page1.html
diff --git a/WIFI_sniffer/z_page2.html b/WIFI_sniffer/fisrt_project/z_page2.html
similarity index 100%
rename from WIFI_sniffer/z_page2.html
rename to WIFI_sniffer/fisrt_project/z_page2.html
diff --git a/WIFI_sniffer/z_page3.html b/WIFI_sniffer/fisrt_project/z_page3.html
similarity index 100%
rename from WIFI_sniffer/z_page3.html
rename to WIFI_sniffer/fisrt_project/z_page3.html
diff --git a/WIFI_sniffer/goodies/credentials.lua b/WIFI_sniffer/goodies/credentials.lua
deleted file mode 100644
index 0efde32..0000000
--- a/WIFI_sniffer/goodies/credentials.lua
+++ /dev/null
@@ -1,9 +0,0 @@
--- Petit script pour configurer les choses secrètes que l'on n'aimerait
--- pas être exportées sur Internet (github)
--- faut donc le mettre ailleurs que dans le dépôt !
-
-print("\n credential.lua zf181205.1910 \n")
-
-cli_ssid="3g-s7"
-cli_pwd="12234567"
-
diff --git a/WIFI_sniffer/msl_project/README.md b/WIFI_sniffer/msl_project/README.md
new file mode 100644
index 0000000..86b7337
--- /dev/null
+++ b/WIFI_sniffer/msl_project/README.md
@@ -0,0 +1,93 @@
+# Remise au goût du jour le petit script luatool.py
+
+## Sources
+https://github.com/4refr0nt/luatool
+
+
+## Description
+Le petit script python *luatool.py* permet d'automatiser le téléchargement de
+scripts *.lua* sur un NodeMCU branché sur le port USB.
+Mais il permet aussi et surtout de le faire via WIFI. Pour cela il faut que le petit serveur *telnet* tourne sur le NodeMCU !
+
+
+## Problématiques
+La version actuelle datant de juillet 2017 ne fonctionne plus avec les nouveaux firmwares de NodeMCU. Il a y un problème au moment de l'initialisation de la connexion série.
+
+
+## Travail effectué
+* J'ai donc repris le code python et juste après l'initialisation du port série je cherche le caractère '>', ainsi je suis certain que le NodeMCU a bien redémarré.
+
+* J'ai aussi diminué le délai d'attente entre chaque ligne, passé de 0.3 sec à 0.03 sec. Les téléchargements sont donc 10x plus rapides
+
+* J'ai aussi mis un nouveau telnet serveur qui tient compte des tailles maximales des paquets TCP
+
+* J'ai aussi bien amélioré le script luatool.py (voir le code source)
+
+
+## Installation
+Maintenant c'est très facile de télécharger tout un projet sur un NodeMCU. Il suffit simplement de modifier le petit script bash upload.sh, puis de faire:
+
+```
+./upload.sh
+```
+* A chaque utilisation de luatool.py, le NodeMCU, s'il est branché sur le port série, redémarre !
+* S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
+* Il est préférable de télécharger en premier les *gros* fichiers .lua !
+
+
+## Test via WIFI en telnet
+Après avoir installé tout le *binz* sur le NodeMCU avec le script *upload.sh*, on peut utiliser *luatool.py* via le WIFI.
+On peut le tester avec le petit script:
+```
+./test_toto-sh
+```
+
+* Si cela fonctionne, la LED devrait arrêter de clignoter ;-)
+
+
+## Goodies
+### Quelques commandes en WIFI ;-)
+**ATTENTION:** ces exemples de commandes sont pour MON adresse IP actuelle de mon NodeMCU ;-)
+
+Help du luatool.py
+```
+./luatool.py -h
+```
+
+Liste les fichiers qui se trouvent sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 -l
+```
+
+Télécharge le fichier *toto.lua* sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 -f toto.lua
+```
+
+Télécharge le fichier *toto.lua* sur le NodeMCU, mais le renomme en *tutu.lua* et affiche une *progression bar* de l'évolution du téléchargement
+```
+./luatool.py --ip 192.168.0.157 -f toto.lua -t tutu.lua
+```
+
+Vérifie que tout est bon sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 -l
+```
+
+Efface le fichier *toto.lua* sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 --delete toto.lua
+```
+
+Efface le fichier *tutu.lua* sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 --delete tutu.lua
+```
+
+Vérifie que tout est bon sur le NodeMCU
+```
+./luatool.py --ip 192.168.0.157 -l
+```
+
+
+zf191021.1619
diff --git a/WIFI_sniffer/msl_project/_secrets_energy.lua_ b/WIFI_sniffer/msl_project/_secrets_energy.lua_
new file mode 100644
index 0000000..06893c0
--- /dev/null
+++ b/WIFI_sniffer/msl_project/_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/WIFI_sniffer/msl_project/_zremote_cmd.txt b/WIFI_sniffer/msl_project/_zremote_cmd.txt
new file mode 100644
index 0000000..36153eb
--- /dev/null
+++ b/WIFI_sniffer/msl_project/_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.43.230"
+
+
+# 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/WIFI_sniffer/msl_project/boot.lua b/WIFI_sniffer/msl_project/boot.lua
new file mode 100644
index 0000000..8714d28
--- /dev/null
+++ b/WIFI_sniffer/msl_project/boot.lua
@@ -0,0 +1,15 @@
+-- Scripts à charger après le boot pour démarrer le core system
+
+print("\n boot.lua zf191020.1928 \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
+--ff= "web_srv2.lua" if file.exists(f) then dofile(f) end
diff --git a/WIFI_sniffer/msl_project/boot2.lua b/WIFI_sniffer/msl_project/boot2.lua
new file mode 100644
index 0000000..f819826
--- /dev/null
+++ b/WIFI_sniffer/msl_project/boot2.lua
@@ -0,0 +1,22 @@
+-- Scripts à charger après le boot pour démarrer son appli
+
+print("\n boot2.lua zf191020.1840 \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/WIFI_sniffer/msl_project/cat.lua b/WIFI_sniffer/msl_project/cat.lua
new file mode 100644
index 0000000..856a52d
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/dir.lua b/WIFI_sniffer/msl_project/dir.lua
new file mode 100644
index 0000000..8bf9414
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/flash_led_xfois.lua b/WIFI_sniffer/msl_project/flash_led_xfois.lua
new file mode 100644
index 0000000..090ec4c
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/head.lua b/WIFI_sniffer/msl_project/head.lua
new file mode 100644
index 0000000..2f28a52
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/initz.lua b/WIFI_sniffer/msl_project/initz.lua
new file mode 100644
index 0000000..c5aa649
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/luatool.py b/WIFI_sniffer/msl_project/luatool.py
new file mode 100755
index 0000000..9781932
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/telnet_srv2.lua b/WIFI_sniffer/msl_project/telnet_srv2.lua
new file mode 100644
index 0000000..19920f2
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/test_toto.sh b/WIFI_sniffer/msl_project/test_toto.sh
new file mode 100755
index 0000000..7b44c7a
--- /dev/null
+++ b/WIFI_sniffer/msl_project/test_toto.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+# Petit script pour tester tout le binz via le WIFI
+#zf191020.1954
+
+# S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
+
+IP="192.168.0.157"
+
+chmod +x luatool.py
+
+./luatool.py --ip $IP -l
+read -p "continue ?"
+./luatool.py --ip $IP --delete toto.lua
+read -p "continue ?"
+./luatool.py --ip $IP -l
+read -p "continue ?"
+./luatool.py --ip $IP -f toto.lua -d
+read -p "continue ?"
+./luatool.py --ip $IP -l
+read -p "continue ?"
+./luatool.py --ip $IP --delete toto.lua
+read -p "continue ?"
+./luatool.py --ip $IP -l
diff --git a/WIFI_sniffer/msl_project/toto.lua b/WIFI_sniffer/msl_project/toto.lua
new file mode 100644
index 0000000..6678736
--- /dev/null
+++ b/WIFI_sniffer/msl_project/toto.lua
@@ -0,0 +1,3 @@
+print("c'est toto !")
+
+boottimer1:unregister()
diff --git a/WIFI_sniffer/msl_project/upload.sh b/WIFI_sniffer/msl_project/upload.sh
new file mode 100644
index 0000000..3f643a5
--- /dev/null
+++ b/WIFI_sniffer/msl_project/upload.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+# Petit script pour télécharger facilement tout le binz
+#zf191028.1404
+
+# S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
+# Il est préférable de télécharger en premier les *gros* fichiers .lua !
+
+# ATTENTION: cela efface tout le NodeMCU !
+
+luatool_tty="/dev/cu.wchusbserial1410"
+
+echo ""
+read -p "ATTENTION, cela va effacer tout le NodeMCU !"
+read -p "Etes-vous vraiment certain ?"
+
+chmod +x luatool.py
+
+./luatool.py --port $luatool_tty -w
+./luatool.py --port $luatool_tty -l
+read -p "Est-ce bien vide ?"
+
+./luatool.py --port $luatool_tty --bar --delay 0.06 -f telnet_srv2.lua
+./luatool.py --port $luatool_tty --bar --delay 0.03 -f flash_led_xfois.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f wifi_info.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f wifi_cli_start.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f wifi_cli_conf.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f wifi_ap_stop.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f secrets_energy.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f head.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f dir.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f cat.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f boot2.lua
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f boot.lua
+
+./luatool.py --port $luatool_tty -l
+read -p "Pas eu d'erreur, on part à fond avec le init.lua ?"
+./luatool.py --port $luatool_tty --bar --delay 0.001 -f initz.lua -t init.lua
+echo -e "\nC'est tout bon ;-)"
diff --git a/WIFI_sniffer/msl_project/wifi_ap_stop.lua b/WIFI_sniffer/msl_project/wifi_ap_stop.lua
new file mode 100644
index 0000000..2738627
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/wifi_cli_conf.lua b/WIFI_sniffer/msl_project/wifi_cli_conf.lua
new file mode 100644
index 0000000..559916b
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/wifi_cli_start.lua b/WIFI_sniffer/msl_project/wifi_cli_start.lua
new file mode 100644
index 0000000..045957e
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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/WIFI_sniffer/msl_project/wifi_info.lua b/WIFI_sniffer/msl_project/wifi_info.lua
new file mode 100644
index 0000000..1bc5c41
--- /dev/null
+++ b/WIFI_sniffer/msl_project/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