mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-29 02:44:20 +01:00
Merge branch 'main' of github.com:joBr99/nspanel-widget-ui
This commit is contained in:
@@ -17,6 +17,11 @@ Send's normal Custom Commands to the Screen in the following format:
|
||||
|
||||
- `FlashNextion URL`
|
||||
|
||||
Start's flashing a tft file to the nextion screen via Nextion Upload Protocol 1.1
|
||||
Might be required to send the command twice (known issue, didn't investigate yet)
|
||||
|
||||
- `FlashNextionFast URL`
|
||||
|
||||
Start's flashing a tft file to the nextion screen via Nextion Upload Protocol 1.2
|
||||
Might be required to send the command twice (known issue, didn't investigate yet)
|
||||
|
||||
@@ -24,6 +29,14 @@ Webserver must be reachable via HTTP and support Range Header
|
||||
|
||||
Example: `FlashNextion http://192.168.75.30:8123/local/nspanel.tft`
|
||||
|
||||
- `GetDriverVersion`
|
||||
|
||||
Returns the version currently defined in the berry script
|
||||
|
||||
- `UpdateDriverVersion URL`
|
||||
|
||||
Downloads the autoexec.be script from the specified URL and loads it.
|
||||
|
||||
|
||||
Besides the commands, serial input will be published on 'RESULT' Topic, depending on the input in one of the following formats:
|
||||
- `{"CustomRecv":%s}`
|
||||
|
||||
@@ -15,10 +15,11 @@ class TftDownloader
|
||||
var current_chunk
|
||||
var current_chunk_start
|
||||
var download_range
|
||||
|
||||
|
||||
def init(host, port, file, download_range)
|
||||
self.tft_file_size = 0
|
||||
|
||||
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.file = file
|
||||
@@ -118,6 +119,7 @@ class Nextion : Driver
|
||||
var ser
|
||||
var flash_size
|
||||
var flash_mode
|
||||
var flash_version
|
||||
var flash_skip
|
||||
var flash_current_byte
|
||||
var tftd
|
||||
@@ -128,6 +130,7 @@ class Nextion : Driver
|
||||
log("NSP: Initializing Driver")
|
||||
self.ser = serial(17, 16, 115200, serial.SERIAL_8N1)
|
||||
self.flash_mode = 0
|
||||
self.flash_version = 1
|
||||
self.flash_skip = false
|
||||
tasmota.add_driver(self)
|
||||
end
|
||||
@@ -199,8 +202,7 @@ class Nextion : Driver
|
||||
end
|
||||
end
|
||||
|
||||
def start_flash(url)
|
||||
|
||||
def start_flash(url)
|
||||
import string
|
||||
var host
|
||||
var port
|
||||
@@ -224,7 +226,6 @@ class Nextion : Driver
|
||||
#print(host,port,file)
|
||||
|
||||
self.tftd = TftDownloader(host, port, file, 32768)
|
||||
#self.tftd = TftDownloader("192.168.75.30", 8123, "/local/test.tft", 32768)
|
||||
|
||||
# get size of tft file
|
||||
self.flash_size = self.tftd.get_file_size()
|
||||
@@ -270,13 +271,18 @@ class Nextion : Driver
|
||||
var msg = self.ser.read()
|
||||
if size(msg) > 0
|
||||
print("NSP: Received Raw =", msg)
|
||||
if (self.flash_mode==1)
|
||||
if self.flash_mode==1
|
||||
var str = msg[0..-4].asstring()
|
||||
log(str, 3)
|
||||
# TODO: add check for firmware versions < 126 and send proto 1.1 command for thoose
|
||||
if (string.find(str,"comok 2")==0)
|
||||
self.sendnx(string.format("whmi-wri %d,115200,1",self.flash_size)) # Nextion Upload Protocol 1.1
|
||||
#self.sendnx(string.format("whmi-wris %d,115200,1",self.flash_size)) # Nextion Upload Protocol 1.2
|
||||
if self.flash_version==1
|
||||
log("NSP: Flashing 1.1")
|
||||
self.sendnx(string.format("whmi-wri %d,115200,1",self.flash_size)) # Nextion Upload Protocol 1.1
|
||||
else
|
||||
log("NSP: Flashing 1.2")
|
||||
self.sendnx(string.format("whmi-wris %d,115200,1",self.flash_size)) # Nextion Upload Protocol 1.2
|
||||
end
|
||||
|
||||
# skip to byte (upload protocol 1.2)
|
||||
elif (size(msg)==1 && msg[0]==0x08)
|
||||
@@ -321,10 +327,53 @@ class Nextion : Driver
|
||||
end
|
||||
end
|
||||
|
||||
def get_current_version(cmd, idx, payload, payload_json)
|
||||
import string
|
||||
var version_of_this_script = 2
|
||||
var jm = string.format("{\"nlui_driver_version\":\"%s\"}", version_of_this_script)
|
||||
tasmota.publish_result(jm, "RESULT")
|
||||
end
|
||||
|
||||
tasmota.add_cmd('GetDriverVersion', get_current_version)
|
||||
|
||||
def update_berry_driver(cmd, idx, payload, payload_json)
|
||||
def task()
|
||||
import string
|
||||
var cl = webclient()
|
||||
cl.begin(payload)
|
||||
var r = cl.GET()
|
||||
if r == 200
|
||||
print("Sucessfully downloaded nspanel-lovelace-ui berry driver")
|
||||
else
|
||||
print("Error while downloading nspanel-lovelace-ui berry driver")
|
||||
end
|
||||
r = cl.write_file("autoexec.be")
|
||||
if r < 0
|
||||
print("Error while writeing nspanel-lovelace-ui berry driver")
|
||||
else
|
||||
print("Scucessfully written nspanel-lovelace-ui berry driver")
|
||||
var s = load('autoexec.be')
|
||||
if s == true
|
||||
var jm = string.format("{\"nlui_driver_update\":\"%s\"}", "succeeded")
|
||||
tasmota.publish_result(jm, "RESULT")
|
||||
else
|
||||
var jm = string.format("{\"nlui_driver_update\":\"%s\"}", "failed")
|
||||
tasmota.publish_result(jm, "RESULT")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
tasmota.set_timer(0,task)
|
||||
tasmota.resp_cmnd_done()
|
||||
end
|
||||
|
||||
tasmota.add_cmd('UpdateDriverVersion', update_berry_driver)
|
||||
|
||||
var nextion = Nextion()
|
||||
|
||||
def flash_nextion(cmd, idx, payload, payload_json)
|
||||
def task()
|
||||
def task()
|
||||
nextion.flash_version = 1
|
||||
nextion.start_flash(payload)
|
||||
end
|
||||
tasmota.set_timer(0,task)
|
||||
@@ -333,6 +382,17 @@ end
|
||||
|
||||
tasmota.add_cmd('FlashNextion', flash_nextion)
|
||||
|
||||
def flash_nextion_1_2(cmd, idx, payload, payload_json)
|
||||
def task()
|
||||
nextion.flash_version = 2
|
||||
nextion.start_flash(payload)
|
||||
end
|
||||
tasmota.set_timer(0,task)
|
||||
tasmota.resp_cmnd_done()
|
||||
end
|
||||
|
||||
tasmota.add_cmd('FlashNextionFast', flash_nextion_1_2)
|
||||
|
||||
def send_cmd(cmd, idx, payload, payload_json)
|
||||
nextion.sendnx(payload)
|
||||
tasmota.resp_cmnd_done()
|
||||
|
||||
Reference in New Issue
Block a user