From c41db863c725cb1799531a74803e281375bb6ab6 Mon Sep 17 00:00:00 2001 From: Christian Zufferey Date: Sun, 26 Jan 2020 11:39:03 +0100 Subject: [PATCH] =?UTF-8?q?Commenc=C3=A9=20le=20projet=20de=20tests=20et?= =?UTF-8?q?=20d=C3=A9courvete=20avec=20le=20convertisseur=20ADC=20ADS1115?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Fritzing/Adafruit ADS1115 16Bit I2C ADC.fzpz | Bin 0 -> 17189 bytes Fritzing/README.md | 66 +++ Mesures/ADC/ADS1115/0_btn_flipflop.lua | 26 ++ Mesures/ADC/ADS1115/0_cron.lua | 20 + Mesures/ADC/ADS1115/0_htu21d.lua | 43 ++ Mesures/ADC/ADS1115/0_send_data.lua | 24 ++ Mesures/ADC/ADS1115/README.md | 295 +++++++++++++ Mesures/ADC/ADS1115/_secrets_project.lua_ | 33 ++ Mesures/ADC/ADS1115/_secrets_wifi.lua_ | 18 + Mesures/ADC/ADS1115/_zremote_cmd.txt | 287 ++++++++++++ Mesures/ADC/ADS1115/api_sonoff.html | 39 ++ Mesures/ADC/ADS1115/boot.lua | 20 + Mesures/ADC/ADS1115/dir.lua | 31 ++ Mesures/ADC/ADS1115/disp_temp.html | 23 + Mesures/ADC/ADS1115/docu/ads1115.md | 4 + Mesures/ADC/ADS1115/goodies/a.lua | 49 +++ Mesures/ADC/ADS1115/goodies/c.lua | 37 ++ Mesures/ADC/ADS1115/goodies/cat.lua | 22 + Mesures/ADC/ADS1115/goodies/check_all.sh | 19 + Mesures/ADC/ADS1115/goodies/dir2.lua | 90 ++++ Mesures/ADC/ADS1115/goodies/i2c_scanner.lua | 17 + Mesures/ADC/ADS1115/goodies/make_tunnels.sh | 55 +++ Mesures/ADC/ADS1115/goodies/set_time.lua | 36 ++ Mesures/ADC/ADS1115/goodies/up_load_all.sh | 30 ++ Mesures/ADC/ADS1115/goodies/upload_t.sh | 38 ++ Mesures/ADC/ADS1115/goodies/wifi_clear.html | 63 +++ .../ADC/ADS1115/goodies/wifi_set_conf.html | 48 +++ Mesures/ADC/ADS1115/goodies/zz_host_dir.lua | 67 +++ Mesures/ADC/ADS1115/goodies/zz_host_dir2.lua | 67 +++ Mesures/ADC/ADS1115/head.lua | 19 + .../img/4_Channel_AD_Module_ADS1115.jpg | Bin 0 -> 162988 bytes .../4_Channel_AD_Module_ADS1115_pinout.jpg | Bin 0 -> 94336 bytes Mesures/ADC/ADS1115/initz.lua | 79 ++++ Mesures/ADC/ADS1115/luatool.py | 408 ++++++++++++++++++ .../ADS1115/schema/fritzing_part_ads1115.md | 1 + .../ADS1115/schema/nodemcu_adc_ ADS1115.fzz | Bin 0 -> 39059 bytes Mesures/ADC/ADS1115/schema/pcb.png | Bin 0 -> 118657 bytes Mesures/ADC/ADS1115/schema/schema.png | Bin 0 -> 62554 bytes Mesures/ADC/ADS1115/telnet_srv2.lua | 93 ++++ Mesures/ADC/ADS1115/upload_s.sh | 48 +++ Mesures/ADC/ADS1115/web_ide2.lua | 159 +++++++ Mesures/ADC/ADS1115/web_srv2.lua | 67 +++ Mesures/ADC/ADS1115/wifi_info.lua | 45 ++ Mesures/ADC/ADS1115/wifi_init.lua | 74 ++++ Mesures/ADC/ADS1115/z_index.html | 103 +++++ 45 files changed, 2663 insertions(+) create mode 100644 Fritzing/Adafruit ADS1115 16Bit I2C ADC.fzpz create mode 100644 Fritzing/README.md create mode 100644 Mesures/ADC/ADS1115/0_btn_flipflop.lua create mode 100644 Mesures/ADC/ADS1115/0_cron.lua create mode 100644 Mesures/ADC/ADS1115/0_htu21d.lua create mode 100644 Mesures/ADC/ADS1115/0_send_data.lua create mode 100644 Mesures/ADC/ADS1115/README.md create mode 100644 Mesures/ADC/ADS1115/_secrets_project.lua_ create mode 100644 Mesures/ADC/ADS1115/_secrets_wifi.lua_ create mode 100644 Mesures/ADC/ADS1115/_zremote_cmd.txt create mode 100644 Mesures/ADC/ADS1115/api_sonoff.html create mode 100644 Mesures/ADC/ADS1115/boot.lua create mode 100644 Mesures/ADC/ADS1115/dir.lua create mode 100644 Mesures/ADC/ADS1115/disp_temp.html create mode 100644 Mesures/ADC/ADS1115/docu/ads1115.md create mode 100644 Mesures/ADC/ADS1115/goodies/a.lua create mode 100644 Mesures/ADC/ADS1115/goodies/c.lua create mode 100644 Mesures/ADC/ADS1115/goodies/cat.lua create mode 100644 Mesures/ADC/ADS1115/goodies/check_all.sh create mode 100644 Mesures/ADC/ADS1115/goodies/dir2.lua create mode 100644 Mesures/ADC/ADS1115/goodies/i2c_scanner.lua create mode 100644 Mesures/ADC/ADS1115/goodies/make_tunnels.sh create mode 100644 Mesures/ADC/ADS1115/goodies/set_time.lua create mode 100644 Mesures/ADC/ADS1115/goodies/up_load_all.sh create mode 100644 Mesures/ADC/ADS1115/goodies/upload_t.sh create mode 100644 Mesures/ADC/ADS1115/goodies/wifi_clear.html create mode 100644 Mesures/ADC/ADS1115/goodies/wifi_set_conf.html create mode 100644 Mesures/ADC/ADS1115/goodies/zz_host_dir.lua create mode 100644 Mesures/ADC/ADS1115/goodies/zz_host_dir2.lua create mode 100644 Mesures/ADC/ADS1115/head.lua create mode 100644 Mesures/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115.jpg create mode 100644 Mesures/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115_pinout.jpg create mode 100644 Mesures/ADC/ADS1115/initz.lua create mode 100755 Mesures/ADC/ADS1115/luatool.py create mode 100644 Mesures/ADC/ADS1115/schema/fritzing_part_ads1115.md create mode 100644 Mesures/ADC/ADS1115/schema/nodemcu_adc_ ADS1115.fzz create mode 100644 Mesures/ADC/ADS1115/schema/pcb.png create mode 100644 Mesures/ADC/ADS1115/schema/schema.png create mode 100644 Mesures/ADC/ADS1115/telnet_srv2.lua create mode 100644 Mesures/ADC/ADS1115/upload_s.sh create mode 100644 Mesures/ADC/ADS1115/web_ide2.lua create mode 100644 Mesures/ADC/ADS1115/web_srv2.lua create mode 100644 Mesures/ADC/ADS1115/wifi_info.lua create mode 100644 Mesures/ADC/ADS1115/wifi_init.lua create mode 100644 Mesures/ADC/ADS1115/z_index.html diff --git a/Fritzing/Adafruit ADS1115 16Bit I2C ADC.fzpz b/Fritzing/Adafruit ADS1115 16Bit I2C ADC.fzpz new file mode 100644 index 0000000000000000000000000000000000000000..7a2eb520cc175baf455bafe59a38f8cd34bd5ef6 GIT binary patch literal 17189 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 300*1000 then + if verbose then + gpio.write(zLED,1) verbose=false + else + gpio.write(zLED,0) verbose=true + end + if verbose then print(gpio.read(zLED)) end + d=b + end +end + +gpio.trig(zBTN, "down", zled) diff --git a/Mesures/ADC/ADS1115/0_cron.lua b/Mesures/ADC/ADS1115/0_cron.lua new file mode 100644 index 0000000..b43d674 --- /dev/null +++ b/Mesures/ADC/ADS1115/0_cron.lua @@ -0,0 +1,20 @@ +-- Petit script pour faire office de crontab pour les mesures +print("\n 0_cron.lua zf200119.1436 \n") + +cron1=tmr.create() +cron1:alarm(20*1000, tmr.ALARM_AUTO, function() + if verbose then print("cron1........................") end + if verbose then gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) end + + f = "0_htu21d.lua" if file.exists(f) then dofile(f) end + + zurl = thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1) + + f = "0_send_data.lua" if file.exists(f) then dofile(f) end + + ztemp1=nil zhum1=nil + + if verbose then print(node.heap()) end + collectgarbage() + if verbose then print(node.heap()) end +end) diff --git a/Mesures/ADC/ADS1115/0_htu21d.lua b/Mesures/ADC/ADS1115/0_htu21d.lua new file mode 100644 index 0000000..4eff8ae --- /dev/null +++ b/Mesures/ADC/ADS1115/0_htu21d.lua @@ -0,0 +1,43 @@ +-- Lit le capteur I2C HTU21D de mesure d'humidité et de température +-- https://github.com/zuzu59/NodeMCU_Lua/tree/master/Mesures/humidity/bolo-thingspeak/docu/HTU21D.txt + +function readHTU21D() + if verbose then print("\n 0_htu21d.lua zf200119.1517 \n") end + + id = 0 sda = 5 scl = 6 addr = 0x40 + HUMIDITY = 0xE5 TEMPERATURE = 0xE3 + i2c.setup(id, sda, scl, i2c.SLOW) sda = nil scl = nil + + function read_HTU21D(zreg, zdelay) + i2c.start(id) i2c.address(id, addr, i2c.TRANSMITTER) + i2c.write(id, zreg) i2c.stop(id) + i2c.start(id) i2c.address(id, addr, i2c.RECEIVER) + tmr.delay(zdelay) + r = i2c.read(id,3) i2c.stop(id) + return r + end + + function readTemp() + r = read_HTU21D(TEMPERATURE, 50000) + r = (bit.band((bit.lshift(string.byte(r,1),8)+string.byte(r,2)),0xfffc)*17572)/65536-4685 + return tonumber(string.format("%.1f", tostring(r/100))) + end + + function readHumi() + r = read_HTU21D(HUMIDITY, 16000) + r = (bit.band((bit.lshift(string.byte(r,1),8)+string.byte(r,2)),0xfffc)*12500)/65536-600 + return tonumber(string.format("%.1f", tostring(r/100))) + end + + ztemp1=readTemp() zhum1=readHumi() + if verbose then print("Temperature: "..ztemp1.." °C") end + if verbose then print("Humidity: "..zhum1.." %") end + + id=nil sda=nil scl=nil addr=nil HUMIDITY=nil TEMPERATURE=nil r=nil + read_HTU21D=nil readTemp=nil readHumi=nil readHTU21D=nil + if verbose then print(node.heap()) end + collectgarbage() + if verbose then print(node.heap()) end +end + +readHTU21D() diff --git a/Mesures/ADC/ADS1115/0_send_data.lua b/Mesures/ADC/ADS1115/0_send_data.lua new file mode 100644 index 0000000..bb5e2fc --- /dev/null +++ b/Mesures/ADC/ADS1115/0_send_data.lua @@ -0,0 +1,24 @@ +-- Petit script pour envoyer les valeurs de température sur un serveur WEB via un HTTP GET + +function send_data() + if verbose then print("\n 0_send_data.lua zf200119.1518 \n") end + + if verbose then print("send_data_web: ") end + if verbose then print(zurl) end + + http.get(zurl, nil, function(code, data) + if (code < 0) then + if verbose then print("HTTP request failed") end + if verbose then print("zuzu", code, data) end + else + if verbose then print(code, data) end + end + zurl=nil + end) + zurl=nil send_data=nil + if verbose then print(node.heap()) end + collectgarbage() + if verbose then print(node.heap()) end +end + +send_data() diff --git a/Mesures/ADC/ADS1115/README.md b/Mesures/ADC/ADS1115/README.md new file mode 100644 index 0000000..83646b7 --- /dev/null +++ b/Mesures/ADC/ADS1115/README.md @@ -0,0 +1,295 @@ +# Tests et découverte du petit breakout ADS1115, convertisseur analogique digital 16 bits 4x entrées + +Petit projet pour tester et découvrir cd petit bijou qu'est le breakout ADS1115, convertisseur analogique digital 16 bits 4x entrées utilisable en I2C. + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/img/graph_thingspeak1.png) + +Module ADS1115 + + + +## Autres utilisations de ce projet + +On peut très bien *enregistrer* d'autres *mesures* comme par exemple, une consommation électrique, production solaire ou débit d'eau d'une douche. Il y a très peu de lignes à modifier pour le faire. C'est donc la base de l'enregistrement pour pleins de mesures en domotique ;-) + + + +

+## Avantages de travailler avec langage interprété (Lua) VS compilé (Arduino C++) + +On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation d'un 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: + +* configuration du WIFI via une page WEB servie par le NodeMCU (pas besoin de brancher un interface USB/TTL) +* serveur WEB *Active Server Pages ZYX*, permet de faire des pages HTML *dynamiques* avec du code LUA *in line*. Les pages HTML sont *sauvées* dans le système de fichiers de la FLASH du NodeMCU et *interprétées au vol* lors de la *lecture* +* serveur WEB pour l'affichage de l'humidité et de la température +* mini WEB IDE, modification du code source en remote directement depuis une page WEB, pas besoin d'IDE +* serveur TELNET, utilisation de la console en remote pour le dépannage (mise à jour du code centralisée) +* crontab, horloge pour les mesures + +Toutes les fonctions sont bien séparées dans des scripts .lua, cela *complexifie* le projet mais cela facilite la portabilité entre les projets et aussi sa mise au point. + + +## Principes de mesures + +On utilise un tout petit capteur low cost, le **xxx**, mesure de xxx sur bus I2C. + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/img/graph_thingspeak1.png) + +Module ADS1115 + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/img/graph_thingspeak1.png) + +Broches ADS1115 + +Qui ne coûte que 1.5$ + +https://www.aliexpress.com/item/32850495005.html + + +Présentation: + +https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/downloads + +Datasheet: + +https://cdn-shop.adafruit.com/datasheets/ads1115.pdf + + +### Schéma + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/schema/schema.png) + +Schéma de connexion à 4x fils très simple + + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/schema/pcb.png) + +Et son PCB (breadboard) + + +

![Image](https://zraw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/img/banc_test_HTU21D.jpg) + +Banc test de Mesures + + + + + +# ATTENTION: le reste de ce README n'est pas tout à fait juste, il a été emprunté provisoirement à un autre projet ! zf200126.1124 + + + + + + + +## Parties principales du code +Le corps du projet se trouve dans ces 4x fichiers ! + +* secrets_project.lua +* 0_htu21d.lua +* 0_send_data.lua +* 0_cron.lua + + +### Les secrets du projet + +Dans ce fichier se trouvent les *secrets* du projet qui ne doivent pas se retrouver sur GitHub, mais qui peuvent aussi être différents si on *duplique* son projet dans différents *lieux* (mesure à Lausanne et Renens par exemple). + +``` +if node.chipid() == 6734851 then node_id = "sonoff_1" zLED=7 end +if node.chipid() == 16110605 then node_id = "sonoff_2" zLED=7 end +if node.chipid() == 3049119 then node_id = "adc_1" end +if node.chipid() == 3048906 then + node_id = "bolo_1" + thingspeak_url="http://api.thingspeak.com/update?api_key=kkk&" +end +if node.chipid() == 3049014 then + node_id = "tst_temp_1" + thingspeak_url="http://api.thingspeak.com/update?api_key=kkk&" +end +``` + +C'est ici que l'on met l'*url* avec son *token* utilisé par *ThingSpeak* +ThingSpeak + +On met aussi ici l'*identification* du NodeMCU de la mesure afin de pouvoir reconnaitre les différents *points* de mesure dans un même lieu. Chaque NodeMCU à son *propre* numéro de *série* ! + + +### La mesure de température et d'humidité + +On accède au capteur de mesure de température et d'humidité HTU21D très simplement (pas besoin de lib) au moyen de commandes de base I2C: + +i2c.start, i2c.stop, i2c.address, i2c.write, i2c.read + +``` +function read_HTU21D(zreg, zdelay) + i2c.start(id) i2c.address(id, addr, i2c.TRANSMITTER) + i2c.write(id, zreg) i2c.stop(id) + i2c.start(id) i2c.address(id, addr, i2c.RECEIVER) + tmr.delay(zdelay) + r = i2c.read(id,3) i2c.stop(id) + return r +end +``` + + +### L'envoi des mesures dans le Cloud ThingSpeak + +Les données de mesures sont simplement envoyées sur ThingSpeak au moyen d'une *requête* HTML de type *GET*: + +On peut le faire directement depuis son browser pour des tests par exemple: envoi des valeurs température de 12˚ et humidité 45%: + +``` +https://api.thingspeak.com/update?api_key=kkk&field1=12&field1=45 +``` + +Construction de l'url d'envoi en Lua: + +``` +zurl=thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1) +send_temp() +``` + + +### L'horloge des mesures + +Finalement il faut *envoyer* au moyen d'un *timer* toutes les x secondes les mesures de températures au Cloud ThingSpeak + +``` +cron1=tmr.create() +cron1:alarm(20*1000, tmr.ALARM_AUTO, function() + print("cron1........................") + ztemp1=readTemp() + zhum1=readHumi() + print("Temperature: "..ztemp1.." °C") + print("Humidity: "..zhum1.." %") + zurl=thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1) + send_temp() +end) +``` + + + +## Installation + +Il faut *flasher* le NodeMCU avec ce firmware: + +https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-19-modules-2019-12-31-16-40-12-float.bin + +Qui contient ces modules: +``` +adc ads1115 bit enduser_setup file gpio http i2c mqtt net node ow rtctime sjson sntp tmr uart wifi ws2812 +``` + +C'est un firmware passe partout, il contient trop de modules pour ce projet mais qui est très pratique ! + + + +## Utilisation + + +### Configuration du WIFI du NodeMCU_Lua +L'accès au NodeMCU se fait via des pages WEB distribuée depuis son petit serveur WEB ASP (Active Server Pages) avec l'interprétation du code Lua inline au vol ! + +Lors du démarrage du NodeMCU il va chercher à se connecter sur le WIFI qu'il trouve dans sa configuration, fichier *eus_params.lua*. S'il n'y parvient pas au bout de 15 secondes, il va démarrer un petit serveur WIFI, **AP: NodeMCU_node_id**, on peut alors utiliser le NodeMCU sans avoir besoin d'une *connexion* Internet, mais bien entendu sans envoi de données dans le Cloud. + +On se connecte alors avec un browser WEB sur l'adresse: + +``` +http://192.168.4.1 +``` + +On choisit *Wifi setup* et enfin, au milieu de la page, on confirme l'action en cliquant sur *Ok* (ceci pour éviter que l'on bascule dans le mode setup WIFI par erreur). + +Après quelques secondes un nouveau serveur WIFI va démarrer avec une procédure de configuration du WIFI du NodeMCU, **AP: Setup Gadget** xxx, on se connecte dessus avec son ordinateur pour aller à nouveau *voir* la page: + +``` +http://192.168.4.1 +``` + +Après configuration du WIFI, l'adresse IP allouée au NodeMCU devrait apparaître en haut de la page. + +Le NodeMCU redémarre et est prêt à envoyer les mesures sur le Cloud, s'il est configuré correctement pour le bon compte ThingSpeak ! + + + +### Configuration de ThingSpeak + +Afin de pouvoir utiliser ThingSpeak, il faut *créé* un *channel*, le configurer pour lui indiquer que nous voulons deux champs (température et humidité) et surtout récupérer le token du channel pour le mettre dans le fichier *secrets_projet.lua* + + + +### Visualisation des données dans ThingSpeak + +On peut voir alors arriver, toutes les 20 secondes, les mesures de température et d'humidité sur ThingSpeak. + +

![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo-thingspeak/img/graph_thingspeak1.png) +Exemple de sortie sur ThingSpeak + +On peut facilement modifier l'affichage des graphiques au moyen du petit *crayon* en haut à droite de chaque graphique + +Très vite on va s'apercevoir qu'il faudra augmenter le temps entre chaque mesures, passer à 300 secondes au lieu de 20 secondes par exemple. + + + +### Exportation des données en CSV depuis ThingSpeak + +On peut très facilement exporter après coup les données du channel de ThingSpeak en CSV pour en faire un rapport dans un tableur par exemple. + + + +### Distribution des rôles de NodeMCU + +Comme on peut avoir plusieurs points de mesures à différents endroit dans le local, il n'y a qu'un seul fichier de *secrets*. C'est dans ce fichier, *secrets_projet.lua*, qu'il y a l'information de l'url de ThingSpeak ains que le token pour le bon channel !
+ + + +### Affichage des températures/humidité en local sur le NodeMCU + +On peut lire la température et l'humidité directement sur le NodeMCU au moyen de cette url (il faut modifier l'adresse IP du NodeMCU en question): + +``` +http://192.168.0.xxx/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: + +``` +http://192.168.0.xxx +``` + + +### Modification du code source du NodeMCU en remote + +On peut directement modifier le code source Lua du NodeMCU en remote avec ce petit WEB IDE (il faut le *lancer* avant depuis la home page du NodeMCU !): + +``` +http://192.168.0.xxx: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: + +``` +telnet -r 192.168.0.xxx +``` + +ou sur MAC + +``` +telnet -rN 192.168.0.xxx +``` + +C'est aussi depuis ce moyen que l'on peut mettre, à distance, à jour le code Lua du NodeMCU de manière centralisée et automatique (luatool.py) + + + + +zf200126.1127 diff --git a/Mesures/ADC/ADS1115/_secrets_project.lua_ b/Mesures/ADC/ADS1115/_secrets_project.lua_ new file mode 100644 index 0000000..debb4a4 --- /dev/null +++ b/Mesures/ADC/ADS1115/_secrets_project.lua_ @@ -0,0 +1,33 @@ +-- Petit script pour configurer les secrets dans ce projet +-- et que l'on n'aimerait pas être exportés sur Internet (github) +-- Il faut donc modifier le .gitignore avec secrets*.lua +-- il faut le renommer en 'secrets_project.lua' et sera exécuté +-- par 'wifi_init.lua' au moment du boot + +function secrets_project() + print("\n secrets_project.lua zf20018.1503 \n") + + zLED=4 -- NodeMCU + --zLED=7 -- SonOff + zRELAY=6 -- SonOff + + node_id = "generic" + if node.chipid() == 6734851 then node_id = "sonoff_1" zLED=7 end + if node.chipid() == 16110605 then node_id = "sonoff_2" zLED=7 end + if node.chipid() == 3049119 then node_id = "adc_1" end + if node.chipid() == 3048906 then + node_id = "bolo_1" + thingspeak_url="http://api.thingspeak.com/update?api_key=kkk&" + end + if node.chipid() == 3049014 then + node_id = "tst_temp_1" + thingspeak_url="http://api.thingspeak.com/update?api_key=kkk&" + end + print("node_id: "..node_id) +end +secrets_project() +secrets_project=nil + +--[[ +=node.chipid() +]] diff --git a/Mesures/ADC/ADS1115/_secrets_wifi.lua_ b/Mesures/ADC/ADS1115/_secrets_wifi.lua_ new file mode 100644 index 0000000..3728ca3 --- /dev/null +++ b/Mesures/ADC/ADS1115/_secrets_wifi.lua_ @@ -0,0 +1,18 @@ +-- Petit script pour configurer les secrets utilisés pour le wifi +-- et que l'on n'aimerait pas être exportés sur Internet (github) +-- Il faut donc modifier le .gitignore avec eus_params* et secret* +-- il faut le renommer en 'secrets_wifi.lua' et sera exécuté +-- par 'wifi_init.lua' une fois pour la configuration du WIFI + +function secrets_wifi() + print("\n secrets_wifi.lua zf191222.2002 \n") + f= "eus_params.lua" if file.exists(f) then p = dofile(f) end + if p ~= nil then + cli_ssid = p.wifi_ssid cli_pwd = p.wifi_password p=nil + else + cli_ssid = "" cli_pwd = "" + end + ap_ssid="NodeMCU" ap_pwd="ppp" +end + +secrets_wifi() diff --git a/Mesures/ADC/ADS1115/_zremote_cmd.txt b/Mesures/ADC/ADS1115/_zremote_cmd.txt new file mode 100644 index 0000000..a1f0dc0 --- /dev/null +++ b/Mesures/ADC/ADS1115/_zremote_cmd.txt @@ -0,0 +1,287 @@ +# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom +# zf200119.1043 + + +Todo à faire pour ce projet ! + +- faire que send_data et read_temp soient lancés à la volée afin d'économiser de la RAM quand ce n'est pas utilisé +- arrêter de demander de connecter le WIFI automatiquement en mode station juste après le boot dans la config wifiinit (automatic connect) +- lancement ou arrêt du WEBIDE via la home page +- le wifi setup ne fonctionne toujours pas quand il y a déjà un ap de connecté (problème du reboot quand adrs ip ok)! +- trouver un moyen pour configurer la lED dans initz.lua sans le rendre dangereux en cas de problème (éviter le reflashing en cas de reboot loop) +- utiliser le bouton pour piloter le verbose + +v- ajouter fonction restart dans z_index.html (ATTENTION avec un argument restart, pas besoin de faire une page restart.html !) +v- ajouter l'affichage du node_id dans z_index.html +v- ajouter le web_srv2 dans boot au lieu de boot2 +v- ajouter un état du RELAY et de la LED dans z_index.html +v- ajouter une page affichage variables globales +v- améliorer api_sonoff.html, il faut ajouter 'home' sur la page +v- améliorer le résultat de api_sonoff.html, il faut sortir l'état des IO lors d'un changement comme confirmation +v- clignoter la led à chaque mesure en fonction de verbose +v- copier secrets_project et secrets_wifi dans _secrets_project_ _secrets_wifi_ pour la documentation +v- déplacer le mode AP dans wifi_init +v- enlever la ligne wifi init dans z_index.html +v- faire la page web service pour allumer la LED +v- faire la page web service pour allumer le relay +v- garder variable node_id pour identification après poweron général, reattribution adrs ip sur modem 4G +v- if verbose print partout dans *.lua +v- passer à 10 secondes la seconde chance +v- passer à 15x les tentatives de connexions au WIFI +v- terminer la page .html affichage de la température et de l'humidité +v- vérifier le fonctionnement d'allumer la LED, car ne marche plus ! +x- mettre ZLED2 et ZRELAY dans secrets_project +x-ajouter argument ok dans wifi_init.html (sécurité) + + + + + +# 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.182" +export zport="23" + +export zIP="localhost" +export zport="2323" +ATTENTION: voir les tunnels tout à la fin ! + + +# ouvrir et fermer (ALT+N+.) une session telnet sur le NodeMCU avec l'adresse zIP) +telnet -rN $zIP $zport +~. +--node.restart() +collectgarbage() +=node.heap() +for k,v in pairs(_G) do print(k,v) end + + +# commandes lua pour ce projet +export zIP="192.168.0.152" +export zport="23" +./luatool.py --ip $zIP:$zport -f z_index.html + +./luatool.py --ip $zIP:$zport -f 0_send_data.lua +./luatool.py --ip $zIP:$zport -f 0_cron.lua +./luatool.py --ip $zIP:$zport -f 0_htu21d.lua + +./luatool.py --ip $zIP:$zport -f api_sonoff.html +http://192.168.0.182 + + +telnet -rN $zIP $zport +verbose=false +~. + +=node.heap() +collectgarbage() +=node.heap() + + +dofile("dir.lua") +dir() +for k,v in pairs(_G) do print(k,v) end +dofile("wifi_info.lua") + +node.restart() +ping -c 10 $zIP + +./luatool.py --ip $zIP:$zport -f dir.lua + + + +verbose=true +verbose=false +zsort_rssi() zshow() + + +#commandes luatool pour ce projet le .137 est à jour avec la nouvelle version du wifi ! +~. +./luatool.py --ip $zIP:$zport -l +./luatool.py --ip $zIP:$zport -f wifi_init.lua + + +./luatool.py --ip $zIP:$zport -f secrets_wifi.lua +./luatool.py --ip $zIP:$zport -f initz.lua -t init.lua +./luatool.py --ip $zIP:$zport -f boot.lua +./luatool.py --ip $zIP:$zport -f boot2.lua +./luatool.py --ip $zIP:$zport -f wifi_init.lua +./luatool.py --ip $zIP:$zport -f set_time.lua +./luatool.py --ip $zIP:$zport -f wifi_info.lua +./luatool.py --ip $zIP:$zport -f c.lua +./luatool.py --ip $zIP:$zport -f cat.lua +./luatool.py --ip $zIP:$zport -f flash_led_xfois.lua +./luatool.py --ip $zIP:$zport -f head.lua + +./luatool.py --ip $zIP:$zport -f b.lua +./luatool.py --ip $zIP:$zport -f web_srv2.lua +./luatool.py --ip $zIP:$zport -f z_index.html + + +./luatool.py --ip $zIP:$zport -f wifi_get_conf.html +./luatool.py --ip $zIP:$zport -f wifi_set_conf.html + + +./luatool.py --ip $zIP:$zport -f z_page1.html +./luatool.py --ip $zIP:$zport -f z_page2.html +./luatool.py --ip $zIP:$zport -f z_page3.html +./luatool.py --ip $zIP:$zport -f z_page4.html + +./luatool.py --ip $zIP:$zport --delete wifi_ap_start.lua +./luatool.py --ip $zIP:$zport --delete wifi_cli_conf.lua +./luatool.py --ip $zIP:$zport --delete wifi_cli_start.lua +./luatool.py --ip $zIP:$zport --delete dir.lua +./luatool.py --ip $zIP:$zport --delete initz.lua +./luatool.py --ip $zIP:$zport --delete wifi_conf.lua + + + +dofile("wifi_info.lua") +--node.restart() +for k,v in pairs(_G) do print(k,v) end +t=12 +t=nil +print(pcall(function () print("2"..t) end)) + + + +# ici c'est maintenant ;-) +~. +./luatool.py --ip $zIP:$zport -f b.lua +#./luatool.py --ip $zIP:$zport --zrestart +telnet -rN $zIP $zport +zsort_rssi() zshow() +print(ztrig_rssi) +ztrig_rssi=-1000 +ztrig_rssi=-90 + + + +# test de la gestion des erreurs +~. +./luatool.py --ip $zIP:$zport -f c.lua +#./luatool.py --ip $zIP:$zport --zrestart +telnet -rN $zIP $zport +status, err = pcall(function () dofile("c.lua") end) if status==false then print("Error: ",err) end +zerr=nil +zerr=1 +ztmr_tst_err:unregister() + + + +~. +./luatool.py --ip $zIP:$zport -f head.lua +telnet -rN $zIP $zport +dofile("head.lua") +zhead("c.lua") + +ztmr_tst_err:unregister() +for k,v in pairs(_G) do print(k,v) end + +./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:$zport -i +./luatool.py --ip $zIP:$zport -l +./luatool.py --ip $zIP:$zport -f toto.lua -d +./luatool.py --ip $zIP:$zport --delete toto.lua + + + +**************************************************************************** + + +# création des tunnels ssh +ATTENTION: dans un premier terminal ! +Pour Bolo à Ruchonnet: +ssh -t -L 2323:localhost:2323 ubuntu@www.zuzutest.ml ssh -N -L 2323:192.168.8.102:23 ubuntu@localhost -p 20223 + +Pour le Crêt +ssh -N -L 2323:192.168.0.137:23 admin@z.zufferey.com -p 1822 +ssh -N -L 2323:192.168.0.122:23 admin@z.zufferey.com -p 1822 +ssh -N -L 2323:192.168.0.118:23 admin@z.zufferey.com -p 1822 + +ATTENTION: dans un deuxième terminal ! +export zIP="localhost" +export zport="2323" +telnet -rN $zIP $zport +~. +=node.heap() + +verbose=false +verbose=true + +dofile("dir2.lua") +dir() +filec("head.lua") + +dofile("head.lua") +zhead("dir2.lua") + +dofile("cat.lua") +cat("head.lua") + +~. +--node.restart() +=node.heap() + + +status, err = pcall(function () fonction_a_tester() end) if status==false then print("Error: ",err) end +status, err = pcall(function () toto() end) if status==false then print("Error: ",err) end + + + +Gestion de la passerelle SSH reverse +Puis depuis une autre console on peut faire directement pour aller sur l'OpiZ (ici le 20223): +ssh -t ubuntu@www.zuzutest.ml ssh ubuntu@localhost -p 20223 + +ou + +1ère console +On établit le tunnel local avec l'OpiZ +ssh -N -L 20223:localhost:20223 ubuntu@www.zuzutest.ml + + +2ème console, on utilise le tunnel OpiZ en local sur sa machine +pour aller sur l'OpiZ +ssh ubuntu@localhost -p 20223 + +pour copier sa clef SSH depuis un MAC +./ssh-copy-id -i ~/.ssh/id_rsa.pub 'ubuntu@localhost -p 20223' +après on devrait pouvoir se connecter sans devoir entrer son password à chaque fois +ssh ubuntu@localhost -p 20223 + +ou, on établit un tunnel pour telnet sur un NodeMCU +ssh -L 2323:192.168.0.137:23 ubuntu@localhost -p 20223 +puis +telnet -rN localhost 2323 + +ou, on établit un tunnel pour le rpimonotor sur l'OpiZ +ssh -N -L 8888:192.168.0.113:8888 ubuntu@localhost -p 20223 +puis +http://localhost:8888 + +ou, on établit un tunnel proxy Socket 5 pour le modem 4G HUAWEI sur l'OpiZ +ssh -N -D 8080 ubuntu@localhost -p 20223 +puis depuis le browser FireFox avec le plugin FoxyProxy Socket 5 sur localhost port 8080 +http://192.168.8.1 + + + +. diff --git a/Mesures/ADC/ADS1115/api_sonoff.html b/Mesures/ADC/ADS1115/api_sonoff.html new file mode 100644 index 0000000..969d2f6 --- /dev/null +++ b/Mesures/ADC/ADS1115/api_sonoff.html @@ -0,0 +1,39 @@ + + + + + + + + API SonOff + + +

API SonOff zf200118.1812

+ Home...

+<% + if _GET.LED == "on" then + gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT) + zout("LED=".._GET.LED.."
") + zout(' Off
') + + end + if _GET.LED == "off" then + gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) + zout("LED=".._GET.LED.."
") + zout(' On') + end +%> +<% + if _GET.RELAY == "on" then + gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.HIGH) + zout("RELAY=".._GET.RELAY.."
") + zout(' Off
') + end + if _GET.RELAY == "off" then + gpio.mode(zRELAY, gpio.OUTPUT) gpio.write(zRELAY, gpio.LOW) + zout("RELAY=".._GET.RELAY.."
") + zout(' On') + end +%> + + diff --git a/Mesures/ADC/ADS1115/boot.lua b/Mesures/ADC/ADS1115/boot.lua new file mode 100644 index 0000000..6b881d8 --- /dev/null +++ b/Mesures/ADC/ADS1115/boot.lua @@ -0,0 +1,20 @@ +-- Scripts à charger après le boot pour démarrer son projet + +print("\n boot.lua zf20019.1438 \n") + +function boot() + verbose = true + print("booooooooooot...") + print(node.heap()) collectgarbage() print(node.heap()) + + f="0_htu21d.lua" if file.exists(f) then dofile(f) end + zurl=thingspeak_url.."field1="..tostring(ztemp1).."&field2="..tostring(zhum1) + 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="0_btn_flipflop.lua" if file.exists(f) then dofile(f) end + + --f = "web_ide2.lua" if file.exists(f) then dofile(f) end + + f=nil boot=nil +end +boot() diff --git a/Mesures/ADC/ADS1115/dir.lua b/Mesures/ADC/ADS1115/dir.lua new file mode 100644 index 0000000..3bef94c --- /dev/null +++ b/Mesures/ADC/ADS1115/dir.lua @@ -0,0 +1,31 @@ +-- fonction dir() pour juste afficher les fichiers avec leur taille + +print("\n dir2.lua zf191223.1455 \n") + +function dir() + local zdir={} + local pfile = file.list() + for k,v in pairs(pfile) do + zdir[#zdir+1] = k..string.rep(" ",24-string.len(k)).." : "..v + end + table.sort(zdir) for i=1, #zdir do print(zdir[i]) end + size_file=nil chksum_file=nil k=nil +end + +dir() +print("\nusage:") +print(" dir()") + +--[[ +dir() +dirc() +filec("dir2.lua") + +=node.heap() +clear_dir() +=node.heap() + +for k,v in pairs(_G) do print(k,v) end + +status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end +]] diff --git a/Mesures/ADC/ADS1115/disp_temp.html b/Mesures/ADC/ADS1115/disp_temp.html new file mode 100644 index 0000000..87fe6b5 --- /dev/null +++ b/Mesures/ADC/ADS1115/disp_temp.html @@ -0,0 +1,23 @@ + + + + + + Affichage de la température et humidité + + + +

Affichage de la température et humidité 200118.1800

+ Home...
+ <% + zout("

"..node_id.."    200112.1919

") + %> +
+ <% + zout("Température: "..readTemp().." °C
") + zout("Humidité: "..readHumi().." %
") + + zout("

RAM: "..node.heap().."
") + %> + + diff --git a/Mesures/ADC/ADS1115/docu/ads1115.md b/Mesures/ADC/ADS1115/docu/ads1115.md new file mode 100644 index 0000000..a4ffdc3 --- /dev/null +++ b/Mesures/ADC/ADS1115/docu/ads1115.md @@ -0,0 +1,4 @@ +# Documentation du petit convertisseur ADS1115 +zf200126.1110 + +https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/downloads diff --git a/Mesures/ADC/ADS1115/goodies/a.lua b/Mesures/ADC/ADS1115/goodies/a.lua new file mode 100644 index 0000000..709aa75 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/a.lua @@ -0,0 +1,49 @@ +print("a start... zf190105.2344") + + +srv:close() +srv=nil + +wifi.setmode(wifi.NULLMODE,true) + +print("toto") +tmr.delay(1*1000*1000) +print("tutu") + +wifi.setmode(wifi.STATIONAP,true) + +wifi.sta.config{ssid="", pwd="", auto=true, save=true} +wifi.sta.autoconnect(1) wifi.sta.connect() +wifi.ap.config({ ssid = "toto", auth=wifi.OPEN, save=true }) + +wifi.setmode(wifi.STATION,true) + +--wifi.setmode(wifi.STATIONAP) +--wifi.ap.config({ssid="MyPersonalSSID", auth=wifi.OPEN}) +--enduser_setup.manual(true) + +--[[ +srv:close() +srv=nil + +wifi.setmode(wifi.NULLMODE,true) + +print("toto") +a1=tmr.create() +a1:alarm(10*1000, tmr.ALARM_SINGLE, function() + enduser_setup.start( + function() + print("Connected to WiFi as:" .. wifi.sta.getip()) + end, + function(err, str) + print("enduser_setup: Err #" .. err .. ": " .. str) + end, + print -- Lua print function can serve as the debug callback + ) + print(node.heap()) collectgarbage() print(node.heap()) + print("tutu") +end) + +]] + + diff --git a/Mesures/ADC/ADS1115/goodies/c.lua b/Mesures/ADC/ADS1115/goodies/c.lua new file mode 100644 index 0000000..eb2f832 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/c.lua @@ -0,0 +1,37 @@ +-- Scripts pour tester l'affichage des erreurs quand on se trouve ne remote telnet +-- source: https://www.lua.org/pil/8.4.html +-- source: https://riptutorial.com/lua/example/16000/using-pcall + +--[[ +Usage: +après l'avoir lancé on peut faire varier le contenu de la variable zerr pour cérer des erreurs répétitives + +Commandes à envoyer via un terminal: +~. +./luatool.py --ip $zIP:$zport -f c.lua +#./luatool.py --ip $zIP:$zport --zrestart +telnet -rN $zIP $zport +status, err = pcall(function () dofile("c.lua") end) if status==false then print("Error: ",err) end +zerr=nil +zerr=1 +ztmr_tst_err:unregister() +]] + +print("\n c.lua zf191030.1231 \n") + +zerr=1 +ztmr_tst_err = tmr.create() + +-- le code à tester DOIT être encapsulé dans une fonction +function zfoo() + print("toto: "..zerr) +end + +-- timer pour générer des erreurs répétitives +ztmr_tst_err:alarm(3*1000, tmr.ALARM_AUTO, function() + -- test du code + local status, err = pcall(function () zfoo() end) if status==false then print("Error: ",err) end +end) + + +-- diff --git a/Mesures/ADC/ADS1115/goodies/cat.lua b/Mesures/ADC/ADS1115/goodies/cat.lua new file mode 100644 index 0000000..8a2e29c --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/cat.lua @@ -0,0 +1,22 @@ +-- fonction cat() pour afficher le contenu d'un fichier dans la flash +print("\n cat.lua zf191124.2204 \n") + +function zread_line() + local zline = "" + while true do + local t = zf:read(1) if t == nil then return end + zline = zline..t + if t == "\n" then return string.sub(zline,1,string.len(zline)-1) end + end +end + +function cat(zfile) + print("\n"..zfile.."\n-------------------------------") + zf = file.open(zfile, "r") + while true do + zline = zread_line() if zline == nil then break end + print(zline) + end + zf:close() + print("-------------------------------") +end diff --git a/Mesures/ADC/ADS1115/goodies/check_all.sh b/Mesures/ADC/ADS1115/goodies/check_all.sh new file mode 100644 index 0000000..5bfda14 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/check_all.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Petit script pour contrôler en remote les versions d'une grappe de NodeMCU installés +#zf191226.1241 + +# crée les tunnels SSH +source ./make_tunnels.sh go + +# On liste les fichiers de chaque nodemcu +echo -e "th1" +./luatool.py --ip localhost:$TH1_PORT --list + +echo -e "th2" +./luatool.py --ip localhost:$TH2_PORT --list + +echo -e "th3" +./luatool.py --ip localhost:$TH3_PORT --list + +echo -e "th4" +./luatool.py --ip localhost:$TH4_PORT --list diff --git a/Mesures/ADC/ADS1115/goodies/dir2.lua b/Mesures/ADC/ADS1115/goodies/dir2.lua new file mode 100644 index 0000000..bd2fb1a --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/dir2.lua @@ -0,0 +1,90 @@ +-- fonction dirc() pour calculer le checksum de tous les fichiers sur le NodeMCU ! +-- fonction filec(fichier) pour calculer le checksum d'un seul fichiers sur le NodeMCU ! + +print("\n dir2.lua zf191124.1602 \n") + +function calc_chksum_file() + local name_file = list_files[zcmpt1] + print(name_file) + local size_file = 1 local chksum_file = 0 + local f = file.open(name_file, "r") + while true do + local t = f:read(1) if t == nil then break end + chksum_file = chksum_file + size_file * string.byte(t) + size_file = size_file + 1 + if size_file%100 == 0 then uart.write(0,".") end + end + f:close() print("") + zdir[#zdir+1]=name_file..string.rep(" ",24-string.len(name_file)).." : "..size_file..", "..chksum_file + zcmpt1 = zcmpt1 + 1 + zrepeat() +end + +function zrepeat() + if zcmpt1 <= #list_files then +-- if zcmpt1 <= 3 then + node.task.post(calc_chksum_file) + else + table.sort(zdir) for i=1, #zdir do print(zdir[i]) end + zdir=nil list_files=nil zcmpt1=nil + end +end + +function dirc() + zdir={} list_files={} + local pfile = file.list() + for k,v in pairs(pfile) do + list_files[#list_files+1]=k + end + zcmpt1 = 1 zrepeat() +end + +function filec(name_file) + print(name_file) + local size_file = 1 local chksum_file = 0 + local f = file.open(name_file, "r") + while true do + local t = f:read(1) if t == nil then break end + chksum_file = chksum_file + size_file * string.byte(t) + size_file = size_file + 1 + if size_file%100 == 0 then uart.write(0,".") end + end + f:close() print("") + print(name_file..string.rep(" ",24-string.len(name_file)).." : "..size_file..", "..chksum_file) +end + +function dir() + local zdir={} + local pfile = file.list() + for k,v in pairs(pfile) do + zdir[#zdir+1] = k..string.rep(" ",24-string.len(k)).." : "..v + end + table.sort(zdir) for i=1, #zdir do print(zdir[i]) end + size_file=nil chksum_file=nil k=nil +end + +function clear_dir() + dir=nil dir2=nil dirc=nil filec=nil + zrepeat=nil calc_chksum_file=nil +end + +dir() +print("\nusage:") +print(" dir()") +print(" dirc()") +print(" filec('dir2.lua')") + + +--[[ +dir() +dirc() +filec("dir2.lua") + +=node.heap() +clear_dir() +=node.heap() + +for k,v in pairs(_G) do print(k,v) end + +status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end +]] diff --git a/Mesures/ADC/ADS1115/goodies/i2c_scanner.lua b/Mesures/ADC/ADS1115/goodies/i2c_scanner.lua new file mode 100644 index 0000000..6fcfbf4 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/i2c_scanner.lua @@ -0,0 +1,17 @@ +-- Scanner for I2C devices +-- http://www.esp8266.com/viewtopic.php?f=19&t=771 + +print("\n i2c_scanner.lua zf191216.2117 \n") + +id=0 sda=5 scl=6 + +print("start...") +i2c.setup(id,sda,scl,i2c.SLOW) + +for i=0,127 do + i2c.start(id) + resCode = i2c.address(id, i, i2c.TRANSMITTER) + i2c.stop(id) + if resCode == true then print("We have a device on address 0x" .. string.format("%02x", i) .. " (" .. i ..")") end +end +print("stop...") diff --git a/Mesures/ADC/ADS1115/goodies/make_tunnels.sh b/Mesures/ADC/ADS1115/goodies/make_tunnels.sh new file mode 100644 index 0000000..32521b8 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/make_tunnels.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Petit script pour créer tous les tunnels SSH sur les NodeMCU en remote +# zf191226.1239 + +#test si l'argument est vide +if [ -z "$1" ] + then + echo -e " +Usage: + +source ./make_tunnels.sh go + +" + read -p "continue ?" +fi + + + + + + +# Définition des variables +export TREMPLIN_SSH=www.zuzutest.ml +export OPIZ_PORT=20223 + +export TH1_IP=192.168.8.100 +export TH1_PORT=23001 +export TH2_IP=192.168.8.101 +export TH2_PORT=23002 +export TH3_IP=192.168.8.102 +export TH3_PORT=23003 +export TH4_IP=192.168.8.103 +export TH4_PORT=23004 + + +# On tue tous les tunnels ssh +echo "kill" +killall -9 ssh +sleep 3 + +# On crée le tunnel sur la passerelle ssh 20223 +echo "first" +ssh -y -y -N -T -L $OPIZ_PORT:localhost:$OPIZ_PORT ubuntu@$TREMPLIN_SSH & +sleep 3 + +# On crée tous les tunnels sur les nodemcu +echo "second" +ssh -y -y -N -T -L $TH1_PORT:$TH1_IP:23 ubuntu@localhost -p $OPIZ_PORT & +ssh -y -y -N -T -L $TH2_PORT:$TH2_IP:23 ubuntu@localhost -p $OPIZ_PORT & +ssh -y -y -N -T -L $TH3_PORT:$TH3_IP:23 ubuntu@localhost -p $OPIZ_PORT & +ssh -y -y -N -T -L $TH4_PORT:$TH4_IP:23 ubuntu@localhost -p $OPIZ_PORT & +sleep 3 + +echo "end" +ps ax |grep ssh diff --git a/Mesures/ADC/ADS1115/goodies/set_time.lua b/Mesures/ADC/ADS1115/goodies/set_time.lua new file mode 100644 index 0000000..8b12174 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/set_time.lua @@ -0,0 +1,36 @@ +-- Scripts pour régler l'horloge quand on est connecté en WIFI +-- Permet aussi de 'compresser' le unix time afin de prendre moins de place dans les strings + +print("\n set_time.lua zf191030.2026 \n") + +--source: https://www.freeformatter.com/epoch-timestamp-to-date-converter.html + +ztime2019 = 1546300800 -- Unix time pour le 1.1.2019 + +function set_time() + sntp.sync(nil, nil, nil, 1) +end + +function ztime_compress(ztime_long) + return ztime_long - ztime2019 +end + +function ztime_uncompress(ztime_short) + return ztime_short + ztime2019 +end + +function ztime_format(ztime) + local tm = rtctime.epoch2cal(ztime + 3600) + return(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"])) +end + +set_time() + +tmr.create():alarm(2*1000, tmr.ALARM_SINGLE, function() + print(ztime_format(rtctime.get())) +end) + + + + + diff --git a/Mesures/ADC/ADS1115/goodies/up_load_all.sh b/Mesures/ADC/ADS1115/goodies/up_load_all.sh new file mode 100644 index 0000000..335df7e --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/up_load_all.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# Petit script pour télécharger du code en remote sur une grappe de NodeMCU +#zf191225.1802 + +# crée les tunnels SSH +source ./make_tunnels.sh + +export ZFILE="0_cron.lua" +export ZRESTART="" +#export ZRESTART="--restart" + +# On télécharge le fichier sur chaque nodemcu +echo -e "th1" +#./luatool.py --ip localhost:$TH1_PORT $ZRESTART -f $ZFILE +./luatool.py --ip localhost:$TH1_PORT --zrestart + +echo -e "th2" +#./luatool.py --ip localhost:$TH2_PORT $ZRESTART -f $ZFILE +./luatool.py --ip localhost:$TH2_PORT --zrestart + +echo -e "th3" +#./luatool.py --ip localhost:$TH3_PORT $ZRESTART -f $ZFILE +./luatool.py --ip localhost:$TH3_PORT --zrestart + +echo -e "th4" +#./luatool.py --ip localhost:$TH4_PORT $ZRESTART -f $ZFILE +./luatool.py --ip localhost:$TH4_PORT --zrestart + + +# diff --git a/Mesures/ADC/ADS1115/goodies/upload_t.sh b/Mesures/ADC/ADS1115/goodies/upload_t.sh new file mode 100644 index 0000000..f379ded --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/upload_t.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Petit script pour télécharger facilement tout le binz +#zf191028.1459 + +# 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 head.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 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/Mesures/ADC/ADS1115/goodies/wifi_clear.html b/Mesures/ADC/ADS1115/goodies/wifi_clear.html new file mode 100644 index 0000000..57fb2dd --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/wifi_clear.html @@ -0,0 +1,63 @@ + + + + + + Wifi clear + + + +

Wifi clear 191222.2348

+
+ Effacement de la configuration WIFI actuelle !
+ 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") + %> + + <% + zout("Booooooooum dans 5 secondes!
") + tmr.create():alarm(5*1000, tmr.ALARM_SINGLE, function() + file.remove("eus_params.lua") + node.restart() + end) + + %> + + 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/ADC/ADS1115/goodies/wifi_set_conf.html b/Mesures/ADC/ADS1115/goodies/wifi_set_conf.html new file mode 100644 index 0000000..2aaee74 --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/wifi_set_conf.html @@ -0,0 +1,48 @@ + + + + + + WIFI set config + + + +

WIFI set config 191124.2334

+
+ Coucou c'est WIFI set config !
+ Retour à la home page...


+ + + +<% + + if (vars ~= nil) then + zout("
vars: "..vars.."

") + for k, v in string.gmatch(vars, "(%w+)=(%w+%p+%w+)&*") do + _GET[k] = v + zout(k..": "..v.."
") + end + end + + zout("
toto
") + +--[[ +zout("t1: ",_GET.zssid,"
") +zout("t2: ",_GET.zpasswd,"
") + +if zverif == "YES" then + zout("c'est tout bon") + zout("Le SSID est: ",zssid) + zout("Le PASSWD est: ",zpasswd) +end +]] + +ztemp=ztemp+1 +zout(ztemp.."°C") +%> + +
Mais il fait encore trop froid !
+ + + + diff --git a/Mesures/ADC/ADS1115/goodies/zz_host_dir.lua b/Mesures/ADC/ADS1115/goodies/zz_host_dir.lua new file mode 100644 index 0000000..23e75ce --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/zz_host_dir.lua @@ -0,0 +1,67 @@ +#!/usr/local/bin/lua5.1 +-- script lua à faire tourner sur le host pour la taille de tous les fichiers +-- du dossier en cours, donc PAS sur le NodeMCU ! +-- source: https://stackoverflow.com/questions/5303174/how-to-get-list-of-directories-in-lua (30%) + +-- usage dans la console: +-- ./zz_host_dir.lua +--[[ +./zz_host_dir.lua > thost +]] +-- usage dans Atom editor +-- il faut installer ceci: https://atom.io/packages/compare-files +-- puis sélectionner les deux fichiers dans l'explorateur à gauche puis CTRL+CMD+C + + +print("\n zz_host_dir.lua zf191124.1646 \n") + +function calc_chksum_file(name_file) + size_file = 0 chksum_file = 0 + local f = io.open(name_file, "r") +-- local f = file.open(name_file, "r") + while true do + local t = f:read(1) if t == nil then break end +-- chksum_file = chksum_file + size_file * string.byte(t) + size_file = size_file + 1 +-- if size_file%100 == 0 then uart.write(0,".") end + end + f:close() +-- print(name_file) +end + +function dirfile(k) + calc_chksum_file(k) + print(k..string.rep(" ",24-string.len(k)).." : "..size_file..", "..chksum_file) + size_file=nil chksum_file=nil k=nil +end + +function dir() + local zdir={} + local pfile = io.popen("ls -1r *.lua *.html") + for k in pfile:lines() do +-- local pfile = file.list() +-- for k,v in pairs(pfile) do + calc_chksum_file(k) + if (size_file ~= 1) and (chksum_file ~= 1) then + zdir[#zdir+1]=k..string.rep(" ",24-string.len(k)).." : "..size_file + end + end + pfile:close() + table.sort(zdir) + for i=1, #zdir do + print(zdir[i]) + end + size_file=nil chksum_file=nil k=nil +end + +dir() +print("\n\nRappel, sur Atom, sélectionner les deux fichiers à gauche puis CTRL+CMD+C\n") + +--[[ +dir() +dirfile("dir2.lua") + +for k,v in pairs(_G) do print(k,v) end + +status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end +]] diff --git a/Mesures/ADC/ADS1115/goodies/zz_host_dir2.lua b/Mesures/ADC/ADS1115/goodies/zz_host_dir2.lua new file mode 100644 index 0000000..13cf1bc --- /dev/null +++ b/Mesures/ADC/ADS1115/goodies/zz_host_dir2.lua @@ -0,0 +1,67 @@ +#!/usr/local/bin/lua5.1 +-- script lua à faire tourner sur le host pour calculer le checksum de tous les fichiers +-- du dossier en cours, donc PAS sur le NodeMCU ! +-- source: https://stackoverflow.com/questions/5303174/how-to-get-list-of-directories-in-lua (30%) + +-- usage dans la console: +-- ./zz_host_dir2.lua +--[[ +./zz_host_dir2.lua > thost +]] +-- usage dans Atom editor +-- il faut installer ceci: https://atom.io/packages/compare-files +-- puis sélectionner les deux fichiers dans l'explorateur à gauche puis CTRL+CMD+C + + +print("\n zz_host_dir2.lua zf191124.1634 \n") + +function calc_chksum_file(name_file) + size_file = 1 chksum_file = 0 + local f = io.open(name_file, "r") +-- local f = file.open(name_file, "r") + while true do + local t = f:read(1) if t == nil then break end + chksum_file = chksum_file + size_file * string.byte(t) + size_file = size_file + 1 +-- if size_file%100 == 0 then uart.write(0,".") end + end + f:close() +-- print(name_file) +end + +function dirfile(k) + calc_chksum_file(k) + print(k..string.rep(" ",24-string.len(k)).." : "..size_file..", "..chksum_file) + size_file=nil chksum_file=nil k=nil +end + +function dir() + local zdir={} + local pfile = io.popen("ls -1r ") + for k in pfile:lines() do +-- local pfile = file.list() +-- for k,v in pairs(pfile) do + calc_chksum_file(k) + if (size_file ~= 1) and (chksum_file ~= 1) then + zdir[#zdir+1]=k..string.rep(" ",24-string.len(k)).." : "..size_file..", "..chksum_file + end + end + pfile:close() + table.sort(zdir) + for i=1, #zdir do + print(zdir[i]) + end + size_file=nil chksum_file=nil k=nil +end + +dir() +print("\n\nRappel, sur Atom, sélectionner les deux fichiers à gauche puis CTRL+CMD+C\n") + +--[[ +dir() +dirfile("dir2.lua") + +for k,v in pairs(_G) do print(k,v) end + +status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end +]] diff --git a/Mesures/ADC/ADS1115/head.lua b/Mesures/ADC/ADS1115/head.lua new file mode 100644 index 0000000..0478b8c --- /dev/null +++ b/Mesures/ADC/ADS1115/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 zf192028.1516 \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/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115.jpg b/Mesures/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a4c6b31c498bb642562f76bef3375e7855ea71e GIT binary patch literal 162988 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

x)4$t{-p{qp^6>Y7U+ir@c74%24I-wiE6p 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[YTo@ef(JIsO(OhB*766*kt5SDI@ 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 literal 0 HcmV?d00001 diff --git a/Mesures/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115_pinout.jpg b/Mesures/ADC/ADS1115/img/4_Channel_AD_Module_ADS1115_pinout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78b59d2ca05d8eaf2afad03b1279b8aaeedc22d5 GIT binary patch literal 94336 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⪚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' + 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 != '': + #zzz191124 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]) + ##zzz191124 attend encore un petit peu avant d'envoyer + sleep(self.delay) + self.serial.write(data) + sleep(self.delay) + # 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.025, 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) + # zzz191225 Amélioré encore la sortie du listing des fichiers (sort file) + transport.writeln("zdir={};pfile = file.list();for k,v in pairs(pfile) do zdir[#zdir+1] = k..string.rep(' ',24-string.len(k))..' : '..v end;table.sort(zdir);print('\\n-----');for i=1, #zdir do print(zdir[i]) end;print('-----\\n');zdir=nil;pfile=nil;k=nil;v=nil;i=nil\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)): + #zzz191124 transport.writer(line.strip()) + transport.writer(line) + line = f.readline() + else: + while line != '': + #zzz191124 transport.writer(line.strip()) + transport.writer(line) + 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/ADC/ADS1115/schema/fritzing_part_ads1115.md b/Mesures/ADC/ADS1115/schema/fritzing_part_ads1115.md new file mode 100644 index 0000000..23bf03b --- /dev/null +++ b/Mesures/ADC/ADS1115/schema/fritzing_part_ads1115.md @@ -0,0 +1 @@ +https://github.com/adafruit/Fritzing-Library/blob/master/parts/Adafruit%20ADS1115%2016Bit%20I2C%20ADC.fzpz diff --git a/Mesures/ADC/ADS1115/schema/nodemcu_adc_ ADS1115.fzz b/Mesures/ADC/ADS1115/schema/nodemcu_adc_ ADS1115.fzz new file mode 100644 index 0000000000000000000000000000000000000000..e7692f93ba2060a54ea0663f701307aa12473aaf GIT binary patch literal 39059 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