Juste pour vite sauver comme backup de travail
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
-- Scripts pour régler l'horloge quand on est connecté en WIFI
|
-- Scripts pour régler l'horloge quand on est connecté en WIFI
|
||||||
|
|
||||||
print("\n set_time.lua zf181211.0010 \n")
|
print("\n set_time.lua zf181212.0841 \n")
|
||||||
|
|
||||||
--f= "wifi_ap_stop.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_conf.lua" if file.exists(f) then dofile(f) end
|
||||||
@@ -16,7 +16,7 @@ function set_time()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ztime()
|
function ztime()
|
||||||
tm = rtctime.epoch2cal(rtctime.get())
|
tm = rtctime.epoch2cal(rtctime.get()+3600)
|
||||||
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
|
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
-- Serveur telnet pour connexion en remote WIFI, NOUVELLE VERSION !
|
-- Serveur telnet pour connexion en remote WIFI, NOUVELLE VERSION !
|
||||||
-- source: https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/telnet/telnet.lua
|
-- source: https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/telnet/telnet.lua
|
||||||
|
|
||||||
print("\n telnet_srv2.lua zf181210.1625 \n")
|
print("\n telnet_srv2.lua zf181215.1326 \n")
|
||||||
|
|
||||||
local node, table, tmr, wifi, uwrite, tostring =
|
local node, table, tmr, wifi, uwrite, tostring =
|
||||||
node, table, tmr, wifi, uart.write, tostring
|
node, table, tmr, wifi, uart.write, tostring
|
||||||
@@ -84,5 +84,5 @@ local function telnet_listener(socket)
|
|||||||
end
|
end
|
||||||
|
|
||||||
net.createServer(net.TCP, 180):listen(23, telnet_listener)
|
net.createServer(net.TCP, 180):listen(23, telnet_listener)
|
||||||
print("Telnet server running...\nUsage: telnet -r ip\n")
|
print("Telnet server running...\nUsage: telnet -rN ip\n")
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
-- Scripts à charger après le boot pour démarrer son appli
|
-- Scripts à charger après le boot pour démarrer son appli
|
||||||
|
|
||||||
print("\n boot.lua zf181205.2126 \n")
|
print("\n boot.lua zf181215.1320 \n")
|
||||||
|
|
||||||
function heartbeat()
|
function heartbeat()
|
||||||
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
|
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
|
||||||
@@ -14,7 +14,7 @@ end
|
|||||||
f= "wifi_ap_stop.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_conf.lua" if file.exists(f) then dofile(f) end
|
||||||
f= "wifi_cli_start.lua" if file.exists(f) then dofile(f) end
|
f= "wifi_cli_start.lua" if file.exists(f) then dofile(f) end
|
||||||
--f= "telnet_srv.lua" if file.exists(f) then dofile(f) end
|
f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
|
||||||
f= "web_ide2.lua" if file.exists(f) then dofile(f) end
|
f= "web_ide2.lua" if file.exists(f) then dofile(f) end
|
||||||
f= "az_init_led.lua" if file.exists(f) then dofile(f) end
|
f= "az_init_led.lua" if file.exists(f) then dofile(f) end
|
||||||
f= "webleds.lua" if file.exists(f) then dofile(f) end
|
f= "webleds.lua" if file.exists(f) then dofile(f) end
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
-- pas être exportées sur Internet (github)
|
-- pas être exportées sur Internet (github)
|
||||||
-- faut donc le mettre ailleurs que dans le dépôt !
|
-- faut donc le mettre ailleurs que dans le dépôt !
|
||||||
|
|
||||||
print("\n credential.lua zf181205.1910 \n")
|
print("\n credentials.lua zf181215.1328 \n")
|
||||||
|
|
||||||
cli_ssid="3g-s7"
|
cli_ssid="3g-s7"
|
||||||
cli_pwd="12234567"
|
cli_pwd="12234567"
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
-- 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()
|
|
||||||
@@ -1,358 +0,0 @@
|
|||||||
#!/usr/bin/env python2
|
|
||||||
#
|
|
||||||
# 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
|
|
||||||
|
|
||||||
version = "0.6.4"
|
|
||||||
|
|
||||||
|
|
||||||
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()
|
|
||||||
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
|
|
||||||
|
|
||||||
def writeln(self, data, check=1):
|
|
||||||
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)
|
|
||||||
sleep(self.delay)
|
|
||||||
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('-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('-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.3, help='Delay in seconds between each write.', 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])')
|
|
||||||
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:
|
|
||||||
transport.writeln("local l = file.list();for k,v in pairs(l) do print('name:'..k..', size:'..v)end\r", 0)
|
|
||||||
while True:
|
|
||||||
char = transport.read(1)
|
|
||||||
if char == '' or char == chr(62):
|
|
||||||
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)
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
# 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")
|
|
||||||
21
LED_RGB_WS2812/chapeau_led/goodies/just_test_6x.lua
Normal file
21
LED_RGB_WS2812/chapeau_led/goodies/just_test_6x.lua
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
-- Scripts juste pour tester 6x LED RGB
|
||||||
|
-- tout sur la couleur: https://www.w3schools.com/colors/default.asp
|
||||||
|
-- roue des couleurs: https://iro.js.org/?ref=oldsite
|
||||||
|
|
||||||
|
print("\n just_test_3x.lua zf181106.1458 \n")
|
||||||
|
|
||||||
|
|
||||||
|
print("Initializing LED strip...")
|
||||||
|
ws2812.init()
|
||||||
|
ws2812_effects.stop()
|
||||||
|
strip_buffer = ws2812.newBuffer(6, 3)
|
||||||
|
ws2812.write(string.char(255, 0, 0, 0, 255, 0, 0, 0, 255)) -- RGB positionnement naturel
|
||||||
|
|
||||||
|
ws2812.write(string.char(0, 255, 0, 0, 0, 255, 255, 0, 0, 255, 0, 255, 255, 255, 0, 0, 255, 255)) -- GBR and CMY en GBR WS2813!
|
||||||
|
|
||||||
|
ws2812.write(string.char(0, 255, 0, 0, 0, 255/3, 255, 0, 0, 255, 0, 255, 255, 255, 0, 0, 255, 255)) -- vert compensé GBR and CMY en GBR WS2813!
|
||||||
|
|
||||||
|
ws2812.write(string.char(128, 255, 128, 200, 200, 255, 255, 200, 200, 255, 255, 255, 40, 40, 40, 5, 5, 5)) -- White RGB & White 100/50/10%
|
||||||
|
|
||||||
|
ws2812.write(string.char(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) -- LED OFF
|
||||||
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>LED RGB zf181205.2048</title>
|
<title>LED RGB</title>
|
||||||
<style>
|
<style>
|
||||||
|
|
||||||
body {
|
body {
|
||||||
@@ -57,11 +57,16 @@ h2 {
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="/?set=color&R1=255&G1=255&B1=255&R2=255&G2=255&B2=255">Blanc</a></li>
|
<li><a href="/?set=color&R1=255&G1=255&B1=255&R2=255&G2=255&B2=255">Blanc</a></li>
|
||||||
<li><a href="/?set=color&R1=255&G1=0&B1=0&R2=255&G2=0&B2=0">Rouge</a></li>
|
<li><a href="/?set=color&R1=255&G1=0&B1=0&R2=255&G2=0&B2=0">Rouge</a></li>
|
||||||
<li><a href="/?set=color&R1=255&G1=0&B1=0&R2=0&G2=0&B2=255">Brexit</a></li>
|
<li><a href="/?set=color&R1=255&G1=0&B1=0&R2=0&G2=255&B2=0">Brexit</a></li>
|
||||||
<li><a href="/?set=color&R1=0&G1=255&B1=0&R2=0&G2=255&B2=0">Ecolo</a></li>
|
<li><a href="/?set=color&R1=0&G1=0&B1=255&R2=0&G2=0&B2=255">Ecolo</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<a href="/?restart=1">Restart</a>
|
<a href=":88"
|
||||||
|
onclick="window.open(`//${window.location.hostname}:88/`)">
|
||||||
|
WEBIDE
|
||||||
|
</a><br>
|
||||||
|
<a href="/?restart=1">Restart</a><br><br>
|
||||||
|
zf181215.1416<br>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
12
LED_RGB_WS2812/chapeau_led/restart.lua
Normal file
12
LED_RGB_WS2812/chapeau_led/restart.lua
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
-- Scripts pour faire un soft reset
|
||||||
|
|
||||||
|
print("\n restart.lua zf181209.1753 \n")
|
||||||
|
|
||||||
|
restarttimer1=tmr.create()
|
||||||
|
tmr.alarm(restarttimer1, 2*1000, tmr.ALARM_SINGLE, function()
|
||||||
|
node.restart()
|
||||||
|
end)
|
||||||
|
|
||||||
|
print("hello zuzu")
|
||||||
|
|
||||||
|
|
||||||
88
LED_RGB_WS2812/chapeau_led/telnet_srv2.lua
Normal file
88
LED_RGB_WS2812/chapeau_led/telnet_srv2.lua
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
-- 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 zf181215.1326 \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
|
||||||
|
|
||||||
|
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")
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
a=3
|
|
||||||
b=5
|
|
||||||
print(a*b)
|
|
||||||
2
LED_RGB_WS2812/chapeau_led/vide.lua
Normal file
2
LED_RGB_WS2812/chapeau_led/vide.lua
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
--fichier vide
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
-- Petit WEB IDE tout simple autonome
|
-- Petit WEB IDE tout simple autonome
|
||||||
-- ATTENTION: tourne sur le port 88 !
|
-- ATTENTION: tourne sur le port 88 !
|
||||||
|
|
||||||
print("\n _web_ide2.lua zf181205.2112 \n")
|
print("\n _web_ide2.lua zf181210.1516 \n")
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
XChip's NodeMCU IDE
|
XChip's NodeMCU IDE
|
||||||
@@ -113,8 +113,9 @@ srv:listen(88,function(conn)
|
|||||||
if vars=="edit" then
|
if vars=="edit" then
|
||||||
conn:send("<script>function tag(c){document.getElementsByTagName('w')[0].innerHTML=c};\n")
|
conn:send("<script>function tag(c){document.getElementsByTagName('w')[0].innerHTML=c};\n")
|
||||||
conn:send("var x=new XMLHttpRequest()\nx.onreadystatechange=function(){if(x.readyState==4) document.getElementsByName('t')[0].value = x.responseText; };\nx.open('GET',location.pathname,true)\nx.send()</script>")
|
conn:send("var x=new XMLHttpRequest()\nx.onreadystatechange=function(){if(x.readyState==4) document.getElementsByName('t')[0].value = x.responseText; };\nx.open('GET',location.pathname,true)\nx.send()</script>")
|
||||||
conn:send("<a href='/'>Back to file list</a><br><br><textarea name=t cols=79 rows=17></textarea></br>")
|
conn:send("<h2><a href='/'>Back to file list</a>\n")
|
||||||
conn:send("<button onclick=\"tag('Saving');x.open('POST',location.pathname,true);\nx.onreadystatechange=function(){if(x.readyState==4) tag(x.responseText);};\nx.send(new Blob([document.getElementsByName('t')[0].value],{type:'text/plain'}));\">Save</button><a href='?run'>run</a><w></w>")
|
conn:send("<br><br><button onclick=\"tag('Saving');x.open('POST',location.pathname,true);\nx.onreadystatechange=function(){if(x.readyState==4) tag(x.responseText);};\nx.send(new Blob([document.getElementsByName('t')[0].value],{type:'text/plain'}));\">Save</button><a href='?run'>run</a><w></w>")
|
||||||
|
conn:send("</h2><br><textarea name=t cols=110 rows=50></textarea></br>")
|
||||||
end
|
end
|
||||||
|
|
||||||
if vars=="run" then
|
if vars=="run" then
|
||||||
|
|||||||
Reference in New Issue
Block a user