From c75bd3ff0f2a748f91b10d9a192eae27b11a6118 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Mon, 26 Dec 2022 22:06:58 +0100 Subject: [PATCH] add tapp file for testing --- tasmota/autoexec.be | 218 ++++++++++++++++--------------- tasmota/nsp-lovelace-driver.tapp | Bin 0 -> 15247 bytes 2 files changed, 115 insertions(+), 103 deletions(-) create mode 100644 tasmota/nsp-lovelace-driver.tapp diff --git a/tasmota/autoexec.be b/tasmota/autoexec.be index 9e911eee..2dcda175 100644 --- a/tasmota/autoexec.be +++ b/tasmota/autoexec.be @@ -15,18 +15,18 @@ class Nextion : Driver static flash_block_size = 4096 var flash_mode - var flash_start_millis + var flash_start_millis var flash_size var flash_written var flash_buff var flash_offset - var flash_proto_version - var flash_proto_baud + var flash_proto_version + var flash_proto_baud var awaiting_offset var tcp var ser var last_per - var url + var url def split_55(b) var ret = [] @@ -60,7 +60,7 @@ class Nextion : Driver return crc end - # encode using custom protocol 55 BB [payload length] [payload length] [payload] [crc] [crc] + # encode using custom protocol 55 BB [payload length] [payload length] [payload] [crc] [crc] def encode(payload) var b = bytes() b += self.header @@ -100,7 +100,7 @@ class Nextion : Driver def screeninit() log("NXP: Screen Initialized") - self.sendnx("recmod=1") + self.sendnx("recmod=1") end def write_block() @@ -138,8 +138,8 @@ class Nextion : Driver if (self.flash_written==self.flash_size) log("FLH: Flashing complete - Time elapsed: %d", (tasmota.millis()-self.flash_start_millis)/1000) self.flash_mode = 0 - self.ser.deinit() - self.ser = serial(17, 16, 115200, serial.SERIAL_8N1) + self.ser.deinit() + self.ser = serial(17, 16, 115200, serial.SERIAL_8N1) end end @@ -153,20 +153,20 @@ class Nextion : Driver if (self.flash_mode==1) var strv = msg[0..-4].asstring() if string.find(strv,"comok 2")>=0 - tasmota.delay(50) + tasmota.delay(50) log("FLH: Send (High Speed) flash start") - self.flash_start_millis = tasmota.millis() + self.flash_start_millis = tasmota.millis() #self.sendnx(string.format("whmi-wris %d,115200,res0",self.flash_size)) - if self.flash_proto_version == 0 - self.sendnx(string.format("whmi-wri %d,%d,res0",self.flash_size,self.flash_proto_baud)) - else - self.sendnx(string.format("whmi-wris %d,%d,res0",self.flash_size,self.flash_proto_baud)) - end - if self.flash_proto_baud != 115200 - tasmota.delay(50) - self.ser.deinit() - self.ser = serial(17, 16, self.flash_proto_baud, serial.SERIAL_8N1) - end + if self.flash_proto_version == 0 + self.sendnx(string.format("whmi-wri %d,%d,res0",self.flash_size,self.flash_proto_baud)) + else + self.sendnx(string.format("whmi-wris %d,%d,res0",self.flash_size,self.flash_proto_baud)) + end + if self.flash_proto_baud != 115200 + tasmota.delay(50) + self.ser.deinit() + self.ser = serial(17, 16, self.flash_proto_baud, serial.SERIAL_8N1) + end elif size(msg)==1 && msg[0]==0x08 log("FLH: Waiting offset...",3) self.awaiting_offset = 1 @@ -174,10 +174,10 @@ class Nextion : Driver self.awaiting_offset = 0 self.flash_offset = msg.get(0,4) log("FLH: Flash offset marker "+str(self.flash_offset),3) - if self.flash_offset != 0 - self.open_url_at(self.url, self.flash_offset) - self.flash_written = self.flash_offset - end + if self.flash_offset != 0 + self.open_url_at(self.url, self.flash_offset) + self.flash_written = self.flash_offset + end self.write_block() elif size(msg)==1 && msg[0]==0x05 self.write_block() @@ -219,7 +219,7 @@ class Nextion : Driver end def open_url_at(url, pos) - self.url = url + self.url = url import string var host var port @@ -245,8 +245,8 @@ class Nextion : Driver self.tcp.connect(host,port) log("FLH: Connected:"+str(self.tcp.connected()),3) var get_req = "GET "+get+" HTTP/1.0\r\n" - get_req += string.format("Range: bytes=%d-\r\n", pos) - get_req += string.format("HOST: %s:%s\r\n\r\n",host,port) + get_req += string.format("Range: bytes=%d-\r\n", pos) + get_req += string.format("HOST: %s:%s\r\n\r\n",host,port) self.tcp.write(get_req) var a = self.tcp.available() i = 1 @@ -274,43 +274,43 @@ class Nextion : Driver end end #print(headers) - # check http respose for code 200/206 + # check http respose for code 200/206 if string.find(headers,"200 OK")>0 || string.find(headers,"206 Partial Content")>0 log("FLH: HTTP Respose is 200 OK or 206 Partial Content",3) - else + else log("FLH: HTTP Respose is not 200 OK or 206 Partial Content",3) - print(headers) - return -1 + print(headers) + return -1 + end + # only set flash size if pos is zero + if pos == 0 + # check http respose for content-length + var tag = "Content-Length: " + i = string.find(headers,tag) + if (i>0) + var i2 = string.find(headers,"\r\n",i) + var s = headers[i+size(tag)..i2-1] + self.flash_size=int(s) + end + log("FLH: Flash file size: "+str(self.flash_size),3) end - # only set flash size if pos is zero - if pos == 0 - # check http respose for content-length - var tag = "Content-Length: " - i = string.find(headers,tag) - if (i>0) - var i2 = string.find(headers,"\r\n",i) - var s = headers[i+size(tag)..i2-1] - self.flash_size=int(s) - end - log("FLH: Flash file size: "+str(self.flash_size),3) - end end def flash_nextion(url) self.flash_size = 0 var res = self.open_url_at(url, 0) - if res != -1 - self.begin_nextion_flash() - end + if res != -1 + self.begin_nextion_flash() + end end def init() log("NXP: Initializing Driver") self.ser = serial(17, 16, 115200, serial.SERIAL_8N1) self.flash_mode = 0 - self.flash_proto_version = 1 - self.flash_proto_baud = 921600 + self.flash_proto_version = 1 + self.flash_proto_baud = 921600 end end @@ -320,51 +320,63 @@ var nextion = Nextion() tasmota.add_driver(nextion) def get_current_version(cmd, idx, payload, payload_json) - import string - var version_of_this_script = 7 - var jm = string.format("{\"nlui_driver_version\":\"%s\"}", version_of_this_script) - tasmota.publish_result(jm, "RESULT") + import string + var version_of_this_script = 8 + 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("Sucessfully 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() + def task() + import path + import string + if path.exists("nsp-lovelace-driver.tapp") + var r = string.find(payload, ".tapp") + if r < 0 + print("URL doesn't contain .tapp skipping update") + else + r = tasmota.urlfetch(payload, "nsp-lovelace-driver.tapp") + if r < 0 + print("Update failed") + else + tasmota.cmd("Restart 1") + end + end + else + var r = string.find(payload, ".be") + if r < 0 + print("URL doesn't contain .be skipping update") + else + var cl = webclient() + cl.begin(payload) + 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("Sucessfully written nspanel-lovelace-ui berry driver") + tasmota.cmd("Restart 1") + end + end + end + end + tasmota.set_timer(0,task) + tasmota.resp_cmnd_done() end tasmota.add_cmd('UpdateDriverVersion', update_berry_driver) def flash_nextion(cmd, idx, payload, payload_json) def task() - nextion.flash_proto_version = 1 - nextion.flash_proto_baud = 921600 + nextion.flash_proto_version = 1 + nextion.flash_proto_baud = 921600 nextion.flash_nextion(payload) end tasmota.set_timer(0,task) @@ -372,35 +384,35 @@ def flash_nextion(cmd, idx, payload, payload_json) end def flash_nextion_adv(cmd, idx, payload, payload_json) - def task() - if idx==0 - nextion.flash_proto_version = 1 - nextion.flash_proto_baud = 921600 + def task() + if idx==0 + nextion.flash_proto_version = 1 + nextion.flash_proto_baud = 921600 elif idx==1 - nextion.flash_proto_version = 0 - nextion.flash_proto_baud = 921600 + nextion.flash_proto_version = 0 + nextion.flash_proto_baud = 921600 elif idx==2 - nextion.flash_proto_version = 1 - nextion.flash_proto_baud = 115200 + nextion.flash_proto_version = 1 + nextion.flash_proto_baud = 115200 elif idx==3 - nextion.flash_proto_version = 0 - nextion.flash_proto_baud = 115200 + nextion.flash_proto_version = 0 + nextion.flash_proto_baud = 115200 elif idx==4 - nextion.flash_proto_version = 1 - nextion.flash_proto_baud = 256000 + nextion.flash_proto_version = 1 + nextion.flash_proto_baud = 256000 elif idx==5 - nextion.flash_proto_version = 0 - nextion.flash_proto_baud = 256000 + nextion.flash_proto_version = 0 + nextion.flash_proto_baud = 256000 elif idx==6 - nextion.ser.deinit() - nextion.ser = serial(17, 16, 9600, serial.SERIAL_8N1) - nextion.flash_proto_version = 0 - nextion.flash_proto_baud = 921600 + nextion.ser.deinit() + nextion.ser = serial(17, 16, 9600, serial.SERIAL_8N1) + nextion.flash_proto_version = 0 + nextion.flash_proto_baud = 921600 else - nextion.flash_proto_version = 0 - nextion.flash_proto_baud = 115200 + nextion.flash_proto_version = 0 + nextion.flash_proto_baud = 115200 end - + nextion.flash_nextion(payload) end tasmota.set_timer(0,task) diff --git a/tasmota/nsp-lovelace-driver.tapp b/tasmota/nsp-lovelace-driver.tapp new file mode 100644 index 0000000000000000000000000000000000000000..1990df03879f9696aeab581773586f0e62816b8a GIT binary patch literal 15247 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