Ouf, voilà tout fonctionne super bien, aussi bien en USB qu'en TELNET !

This commit is contained in:
Christian Zufferey
2019-10-20 20:55:27 +02:00
parent 85966e9a08
commit 043db99ebf
3 changed files with 66 additions and 39 deletions

View File

@@ -6,30 +6,44 @@ 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.
scripts *.lua* sur un NodeMCU branché sur le port USB.<br>
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 2017 ne fonctionne plus avec les nouveaux firmwares de NodeMCU, il a y un problème de délai au moment de l'initialisation.
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.
## Corrections
## Travail effectué
* J'ai donc repris le code python et mis un petit délai de 0.5 secondes juste après l'initialisation du port série.
* J'ai aussi diminué le délai d'attente entre chaque ligne, passé de 0.3 sec à 0.03. Les téléchargement sont donc 10x plus rapides
* 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)
## Utilisation
Maintenant c'est très facile de télécharger tout un projet dans un NodeMCU. Il suffit simplement de modifier le petit script bash upload.sh, puis de faire:
## 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
```
S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
* S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !<br>
* 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.<br>
On peut le tester avec le petit script:
```
./test_toto-sh
```
* Si cela fonctionne, la LED devrait arrêter de clignoter ;-)
zf191020.1836
zf191020.2055

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
version = "0.6.5 zf191020.1932"
version = "0.6.5 zf191020.2041"
print("luatool.py ver " + version)
@@ -195,24 +195,24 @@ def decidetransport(cliargs):
if __name__ == '__main__':
# parse arguments or use defaults
parser = argparse.ArgumentParser(description='ESP8266 Lua script uploader.')
parser.add_argument('-p', '--port', default='/dev/ttyUSB0', help='Device name, default /dev/ttyUSB0')
# parser.add_argument('-b', '--baud', default=9600, help='Baudrate, default 9600')
parser.add_argument('-b', '--baud', default=115200, help='Baudrate, default 115200')
parser.add_argument('-f', '--src', default='main.lua', help='Source file on computer, default main.lua')
parser.add_argument('-t', '--dest', default=None, help='Destination file on MCU, default to source file name')
parser.add_argument('-c', '--compile', action='store_true', help='Compile lua to lc after upload')
parser.add_argument('-r', '--restart', action='store_true', help='Restart MCU after upload')
parser.add_argument('-d', '--dofile', action='store_true', help='Run the Lua script after upload')
parser.add_argument('-v', '--verbose', action='store_true', help="Show progress messages.")
parser.add_argument('-a', '--append', action='store_true', help='Append source file to destination file.')
parser.add_argument('-l', '--list', action='store_true', help='List files on device')
parser.add_argument('-w', '--wipe', action='store_true', help='Delete all lua/lc files on device.')
parser.add_argument('-i', '--id', action='store_true', help='Query the modules chip id.')
parser.add_argument('-e', '--echo', action='store_true', help='Echo output of MCU until script is terminated.')
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 to a telnet server on the device (--ip IP[:port])')
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)
@@ -224,7 +224,7 @@ if __name__ == '__main__':
if args.list:
#zzz191020 Amélioré la sortie du listing des fichiers
# 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)
@@ -245,6 +245,11 @@ if __name__ == '__main__':
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 = []
@@ -271,6 +276,8 @@ if __name__ == '__main__':
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:

View File

@@ -1,23 +1,29 @@
#!/bin/bash
# Petit script pour télécharger facilement tout le binz
#zf191020.1957
#zf191020.2053
# 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 !
read -p "ATTENTION, cela va effacer tout le NodeMCU !"
read -p "Etes-vous vraiment certain ?"
chmod +x luatool.py
./luatool.py --port /dev/cu.wchusbserial1410 -l
./luatool.py --port /dev/cu.wchusbserial1410 --zrestart
sleep 0.5
./luatool.py --port /dev/cu.wchusbserial1410 -w
./luatool.py --port /dev/cu.wchusbserial1410 -l
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src boot.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src boot2.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.03 --src flash_led_xfois.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src initz.lua --dest init.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src secrets_energy.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src wifi_ap_stop.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src wifi_cli_conf.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src wifi_cli_start.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.001 --src wifi_info.lua
./luatool.py --port /dev/cu.wchusbserial1410 --delay 0.06 --src telnet_srv2.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.06 --src telnet_srv2.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src boot.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src boot2.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.03 --src flash_led_xfois.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src secrets_energy.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src wifi_ap_stop.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src wifi_cli_conf.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src wifi_cli_start.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src wifi_info.lua
./luatool.py --port /dev/cu.wchusbserial1410 --bar --delay 0.001 --src initz.lua --dest init.lua
./luatool.py --port /dev/cu.wchusbserial1410 -l
#./luatool.py --port /dev/cu.wchusbserial1410 -r
./luatool.py --port /dev/cu.wchusbserial1410 --zrestart