Berry statedata fix non-printable delimiter

This commit is contained in:
Theo Arends 2025-09-26 11:30:51 +02:00
parent c3041865ff
commit 95a85e9886
3 changed files with 22 additions and 22 deletions

View File

@ -64,14 +64,14 @@ class mqttdata_cls
ipaddress = state['IPAddress'] # 192.168.2.123
end
var last_seen = tasmota.rtc('local')
var line = format("%s,%s,%s,%d", topic, ipaddress, uptime, last_seen)
var line = format("%s\001%s\001%s\001%d", topic, ipaddress, uptime, last_seen)
if self.list_buffer.size()
var list_index = 0
var list_size = size(self.list_buffer)
var topic_comma = format("%s,", topic) # Add find delimiter
var topic_delim = format("%s\001", topic) # Add find delimiter
while list_index < list_size # Use while loop as counter is decremented
if 0 == string.find(self.list_buffer[list_index], topic_comma)
if 0 == string.find(self.list_buffer[list_index], topic_delim)
self.list_buffer.remove(list_index) # Remove current state
list_size -= 1 # Continue for duplicates
end
@ -121,7 +121,7 @@ class mqttdata_cls
var list_index = 0
var list_size = size(self.list_buffer)
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var last_seen = int(splits[3])
if time_window > last_seen # Remove offline devices
self.list_buffer.remove(list_index)
@ -143,7 +143,7 @@ class mqttdata_cls
end
var msg = "</table><table style='width:100%;font-size:80%'>" # Terminate two column table and open new table
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var topic = splits[0] # topic or hostname
var ipaddress = splits[1]
var uptime = splits[2]

View File

@ -62,14 +62,14 @@ class mqttdata_cls
var hostname = config['hn']
var ipaddress = config['ip']
var devicename = config['dn']
var line = format("%s,%s,%s,%s", topic, hostname, ipaddress, devicename)
var line = format("%s\001%s\001%s\001%s", topic, hostname, ipaddress, devicename)
# tasmota.log(format("STD: 111 Size %03d, Topic '%s', Line '%s'", self.list_config.size(), topic, line), 3)
if self.list_config.size()
var list_index = 0
var list_size = size(self.list_config)
var topic_comma = format("%s,", topic) # Add find delimiter
var topic_delim = format("%s\001", topic) # Add find delimiter
while list_index < list_size # Use while loop as counter is decremented
if 0 == string.find(self.list_config[list_index], topic_comma)
if 0 == string.find(self.list_config[list_index], topic_delim)
self.list_config.remove(list_index) # Remove current config
list_size -= 1 # Continue for duplicates
end
@ -112,14 +112,14 @@ class mqttdata_cls
ipaddress = state['IPAddress'] # 192.168.2.208
end
var last_seen = tasmota.rtc('local')
var line = format("%s,%s,%s,%d,%s", topic, ipaddress, uptime, last_seen, devicename)
var line = format("%s\001%s\001%s\001%d\001%s", topic, ipaddress, uptime, last_seen, devicename)
if self.list_buffer.size()
var list_index = 0
var list_size = size(self.list_buffer)
var topic_comma = format("%s,", topic) # Add find delimiter
var topic_delim = format("%s\001", topic) # Add find delimiter
while list_index < list_size # Use while loop as counter is decremented
if 0 == string.find(self.list_buffer[list_index], topic_comma)
if 0 == string.find(self.list_buffer[list_index], topic_delim)
self.list_buffer.remove(list_index) # Remove current state
list_size -= 1 # Continue for duplicates
end
@ -169,7 +169,7 @@ class mqttdata_cls
var list_index = 0
var list_size = size(self.list_buffer)
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var last_seen = int(splits[3])
if time_window > last_seen # Remove offline devices
self.list_buffer.remove(list_index)
@ -191,7 +191,7 @@ class mqttdata_cls
end
var msg = "</table><table style='width:100%;font-size:80%'>" # Terminate two column table and open new table
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var topic = splits[0] # topic or hostname
var ipaddress = splits[1]
var uptime = splits[2]

View File

@ -70,14 +70,14 @@ class mqttdata_cls
var ipaddress = config['ip']
var devicename = config['dn']
var version = config['sw']
var line = format("%s,%s,%s,%s,%s", topic, hostname, ipaddress, devicename, version)
var line = format("%s\001%s\001%s\001%s\001%s", topic, hostname, ipaddress, devicename, version)
# tasmota.log(format("STD: 111 Size %03d, Topic '%s', Line '%s'", self.list_config.size(), topic, line), 3)
if self.list_config.size()
var list_index = 0
var list_size = size(self.list_config)
var topic_comma = format("%s,", topic) # Add find delimiter
var topic_delim = format("%s\001", topic) # Add find delimiter
while list_index < list_size # Use while loop as counter is decremented
if 0 == string.find(self.list_config[list_index], topic_comma)
if 0 == string.find(self.list_config[list_index], topic_delim)
self.list_config.remove(list_index) # Remove current config
list_size -= 1 # Continue for duplicates
end
@ -108,7 +108,7 @@ class mqttdata_cls
var state = json.load(data)
if state # Valid JSON state message
var config_splits = string.split(self.list_config[topic_index], ",")
var config_splits = string.split(self.list_config[topic_index], "\001")
topic = config_splits[1] # Hostname
var ipaddress = config_splits[2]
var devicename = config_splits[3]
@ -121,14 +121,14 @@ class mqttdata_cls
ipaddress = state['IPAddress'] # 192.168.2.208
end
var last_seen = tasmota.rtc('local')
var line = format("%s,%s,%s,%d,%s,%s", topic, ipaddress, uptime, last_seen, devicename, version)
var line = format("%s\001%s\001%s\001%d\001%s\001%s", topic, ipaddress, uptime, last_seen, devicename, version)
if self.list_buffer.size()
var list_index = 0
var list_size = size(self.list_buffer)
var topic_comma = format("%s,", topic) # Add find delimiter
var topic_delim = format("%s\001", topic) # Add find delimiter
while list_index < list_size # Use while loop as counter is decremented
if 0 == string.find(self.list_buffer[list_index], topic_comma)
if 0 == string.find(self.list_buffer[list_index], topic_delim)
self.list_buffer.remove(list_index) # Remove current state
list_size -= 1 # Continue for duplicates
end
@ -195,7 +195,7 @@ class mqttdata_cls
var list_index = 0
var list_size = size(self.list_buffer)
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var last_seen = int(splits[3])
if time_window > last_seen # Remove offline devices
self.list_buffer.remove(list_index)
@ -217,7 +217,7 @@ class mqttdata_cls
end
var msg = "</table><table style='width:100%;font-size:80%'>" # Terminate two column table and open new table
while list_index < list_size
var splits = string.split(self.list_buffer[list_index], ",")
var splits = string.split(self.list_buffer[list_index], "\001")
var topic = splits[0] # topic or hostname
var ipaddress = splits[1]
var uptime = splits[2]