Browse Source

modify script for new way of serving gz files

tags/FSM1.0
Simon Schmidt 2 years ago
parent
commit
4e6445fea8
6 changed files with 56 additions and 35 deletions
  1. 1
    0
      .gitignore
  2. 38
    0
      create_gz_c_arr.py
  3. 9
    32
      create_gz_files.py
  4. BIN
      data/comp.html.gz
  5. BIN
      data/compress.html.gz
  6. 8
    3
      doku.md

+ 1
- 0
.gitignore View File

@@ -1,6 +1,7 @@
.pio
.vscode
compress
data_gz
platformio.ini
include/wifi_credentials.h
include/*.gz.h

+ 38
- 0
create_gz_c_arr.py View File

@@ -0,0 +1,38 @@
#!/usr/bin/python3

import os, gzip
# https://www.mischianti.org/2020/10/26/web-server-with-esp8266-and-esp32-byte-array-gzipped-pages-and-spiffs-2/

def convert_to_gzip(src, out, f):
input_file = f'{src}{f}'
output_file = f'{out}{f}.gz.h'
output_charp = f'{f.replace(".", "_")}_gz'

top = ''
with open(input_file, 'rb') as f_in:
gz = gzip.compress(f_in.read())
gzlen = len(gz)

top += f'// filename: {f}.gz.h\n'
top += f'#define {output_charp}_len {gzlen}\n'
top += f'const char {output_charp}[] = '
top += '{'

with open(output_file, 'wb') as f_out:
for i, b in enumerate(gz):
if not i%10:
top += '\n '
top += f'0x{b:02X}, '
top = top[:-2]
top += '};'
f_out.write(top.encode(encoding='utf-8'))


src='data/'
out='compress/'

if not 'compress' in os.listdir():
os.mkdir('compress')

for f in os.listdir(src):
convert_to_gzip(src, out, f)

+ 9
- 32
create_gz_files.py View File

@@ -1,38 +1,15 @@
#!/usr/bin/python3

import os, gzip
# https://www.mischianti.org/2020/10/26/web-server-with-esp8266-and-esp32-byte-array-gzipped-pages-and-spiffs-2/
# https://stackoverflow.com/questions/8156707/gzip-a-file-in-python

def convert_to_gzip(src, out, f):
input_file = f'{src}{f}'
output_file = f'{out}{f}.gz.h'
output_charp = f'{f.replace(".", "_")}_gz'
src_dir='data'
out_dir='data_gz'

top = ''
with open(input_file, 'rb') as f_in:
gz = gzip.compress(f_in.read())
gzlen = len(gz)
if not 'data_gz' in os.listdir():
os.mkdir('data_gz')

top += f'// filename: {f}.gz.h\n'
top += f'#define {output_charp}_len {gzlen}\n'
top += f'const char {output_charp}[] = '
top += '{'

with open(output_file, 'wb') as f_out:
for i, b in enumerate(gz):
if not i%10:
top += '\n '
top += f'0x{b:02X}, '
top = top[:-2]
top += '};'
f_out.write(top.encode(encoding='utf-8'))


src='data/'
out='compress/'

if not 'compress' in os.listdir():
os.mkdir('compress')

for f in os.listdir(src):
convert_to_gzip(src, out, f)
for f in os.listdir(src_dir):
with open(f'{src_dir}/{f}', 'rb') as f_in:
with gzip.open(f'{out_dir}/{f}.gz', 'wb') as f_out:
f_out.writelines(f_in)

BIN
data/comp.html.gz View File


BIN
data/compress.html.gz View File


+ 8
- 3
doku.md View File

@@ -68,10 +68,15 @@ TODO:
- maybe compress files ?


LED Flickering issue
### LED Flickering issue
https://github.com/NachtRaveVL/PCA9685-Arduino/issues/15
PlatformIO Library veraltet !!

PlatformIO Library veraltet

### TIMER in OTA unterbrechen !!!!!

###TIMER in OTA unterbrechen !!!!!
### further improvments
with streamFile gzip encoded Files can be sent
this reduces space on fs !
new easier script needed to just convert to .gz
maybe measure timings on ESP

Loading…
Cancel
Save