From 400234422709cea8f788154643da3c60d3d8f8ea Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 10 Jun 2025 16:23:42 +0200 Subject: [PATCH] Fix syslog message id --- TEMPLATES.md | 5 +-- tasmota/tasmota_support/support.ino | 60 +++++++++++++++++++---------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/TEMPLATES.md b/TEMPLATES.md index 6f7282af8..9d45403f1 100644 --- a/TEMPLATES.md +++ b/TEMPLATES.md @@ -5,7 +5,7 @@ # Templates -Find below the available templates as of April 2025. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) +Find below the available templates as of June 2025. More template information can be found in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) ## Adapter Board ``` @@ -403,7 +403,6 @@ Shelly Vintage 4W 260lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0, Shelly Vintage 7W 750lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18} Shelly Vintage 7W 750lm 2700k {"NAME":"Shelly Vintage","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18} SmartDGM 9W 806lm {"NAME":"L-WB9W1","GPIO":[0,0,0,0,0,416,0,0,160,0,0,0,0,0],"FLAG":0,"BASE":18} -Smitch 10W 6500K {"NAME":"Smitch Ambience SB-0110","GPIO":[0,0,0,0,416,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18} Smitch 10W 6500K {"NAME":"Smitch 10W 6500K Dimmable Bulb (SB0110 - E27)","GPIO":[0,0,0,0,0,416,0,0,0,417,0,0,0,0],"FLAG":0,"BASE":1} TCP Smart 806lm Warm White {"NAME":"TCP Smart Clas","GPIO":[0,0,0,0,0,0,0,0,0,416,0,0,0,0],"FLAG":0,"BASE":1} TCP Smart 810lm Filament {"NAME":"TCP Filament","GPIO":[0,0,0,0,0,0,0,0,0,0,448,0,0,0],"FLAG":0,"BASE":18} @@ -464,7 +463,7 @@ QS-WiFi-D01-TRIAC 150W {"NAME":"QS-WiFi-D01-TRIAC","GPIO":[0,3200,0,3232,0 RJWF-02A {"NAME":"RJWF-02A","GPIO":[32,2272,0,2304,0,0,0,0,0,0,288,0,0,0],"FLAG":0,"BASE":54} Shelly Dimmer {"NAME":"Shelly Dimmer 1","GPIO":[0,3200,0,3232,5568,5600,0,0,192,0,193,288,0,4736],"FLAG":0,"BASE":18} Shelly Dimmer 2 {"NAME":"Shelly Dimmer 2","GPIO":[0,3200,0,3232,5568,5600,0,0,193,0,192,0,320,4736],"FLAG":0,"BASE":18} -Shelly Plus 0-10V Dimmer {"NAME":"Shelly Plus 0-10V Dimmer","GPIO":[288,0,0,0,192,0,0,0,0,0,0,0,0,0,193,1,0,0,0,0,0,32,416,0,0,0,0,0,4736,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} +Shelly Plus 0-10V Dimmer {"NAME":"Shelly Plus 0-10V Dimmer","GPIO":[288,0,0,0,192,0,0,0,0,0,0,0,0,0,193,1,0,0,0,0,0,32,448,0,0,0,0,0,4736,0,0,0,0,0,0,0],"FLAG":0,"BASE":1} Sonoff D1 {"NAME":"Sonoff D1","GPIO":[1,3200,0,3232,0,0,0,0,0,320,0,0,0,0],"FLAG":0,"BASE":74} ``` diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index ba0117893..9eef0b36a 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -2462,7 +2462,7 @@ void SyslogAsync(bool refresh) { return; } - char header[100]; + char header[128]; /* Legacy format (until v13.3.0.1) - HOSTNAME TAG: MSG SYSLOG-MSG = wemos5 ESP-HTP: Web server active on wemos5 with IP address 192.168.2.172 Result = 2023-12-20T13:41:11.825749+01:00 wemos5 ESP-HTP: Web server active on wemos5 with IP address 192.168.2.172 @@ -2496,49 +2496,67 @@ void SyslogAsync(bool refresh) { */ // snprintf_P(header, sizeof(header), PSTR("<134>%s %s ESP-"), GetSyslogDate(line).c_str(), NetworkHostname()); + char* msg_start = line +mxtime; + uint32_t msg_len = len -mxtime -1; + /* RFC5424 - Syslog protocol - VERSION TIMESTAMP HOSTNAME APP_NAME PROCID STRUCTURED-DATA MSGID MSG = Facility 16 (= local use 0), Severity 6 (= informational) => 16 * 8 + 6 = <134> VERSION = 1 TIMESTAMP = yyyy-mm-ddThh:mm:ss.nnnnnn-hh:mm (= local with timezone) - APP_NAME = Tasmota + APP_NAME = tasmota PROCID = - STRUCTURED-DATA = - - MSGID = ESP-HTP: + MSGID = HTP: SYSLOG-MSG = <134>1 1970-01-01T00:00:02.096000+01:00 wemos5 Tasmota - - ESP-HTP: Web server active on wemos5 with IP address 192.168.2.172 Result = 1970-01-01T00:00:02.096000+00:00 wemos5 Tasmota ESP-HTP: Web server active on wemos5 with IP address 192.168.2.172 Notice date and time is provided by Tasmota device. */ - char line_time[mxtime]; - subStr(line_time, line, " ", 1); // 00:00:02.096-026 - subStr(line_time, line_time, "-", 1); // 00:00:02.096 - String systime = GetDate() + line_time + "000" + GetTimeZone(); // 1970-01-01T00:00:02.096000+01:00 -// snprintf_P(header, sizeof(header), PSTR("<%d>1 %s %s tasmota - - ESP-"), 128 + min(loglevel * 3, 7), systime.c_str(), NetworkHostname()); - snprintf_P(header, sizeof(header), PSTR("<%d>1 %s %s tasmota - - -"), 128 + min(loglevel * 3, 7), systime.c_str(), NetworkHostname()); - - char* line_start = line +mxtime; + char timestamp[mxtime]; + subStr(timestamp, line, " ", 1); // 00:00:02.096-026 + subStr(timestamp, timestamp, "-", 1); // 00:00:02.096 /* - TasConsole.printf("Header: '"); + snprintf_P(header, sizeof(header), PSTR("<%d>1 %s%s000%s %s tasmota - - -"), + 128 + min(loglevel * 3, 7), + GetDate().c_str(), timestamp, GetTimeZone().c_str(), // 1970-01-01T00:00:02.096000+01:00 + NetworkHostname()); +*/ + char msgid[5]; + char* line_msgid = strchr(msg_start, ' '); + if (line_msgid - msg_start < sizeof(msgid)) { // Only 3 character message ids supported + subStr(msgid, msg_start, " ", 1); // HTP: + msg_start += strlen(msgid); + msg_len -= strlen(msgid); + } else { + strcpy(msgid, "-"); // - + } + snprintf_P(header, sizeof(header), PSTR("<%d>1 %s%s000%s %s tasmota - - %s"), + 128 + min(loglevel * 3, 7), // Error (1) = 131, Info (2) = 134, Debug (3) = 135, DebugMore = (4) 135 + GetDate().c_str(), timestamp, GetTimeZone().c_str(), // 1970-01-01T00:00:02.096000+01:00 + NetworkHostname(), msgid); +/* + TasConsole.printf("Loglevel "); + TasConsole.print(loglevel); + TasConsole.printf(", Header '"); TasConsole.printf(header); - TasConsole.printf("', line: '"); - TasConsole.write((uint8_t*)line_start, len -mxtime -1); + TasConsole.printf("', Msg '"); + TasConsole.write((uint8_t*)msg_start, msg_len); TasConsole.printf("'\r\n"); */ - #ifdef ESP8266 // Packets over 1460 bytes are not send - uint32_t line_len; - int32_t log_len = len -mxtime -1; + uint32_t package_len; + int32_t log_len = msg_len; while (log_len > 0) { PortUdp.write(header); - line_len = (log_len > 1460) ? 1460 : log_len; - PortUdp.write((uint8_t*)line_start, line_len); + package_len = (log_len > 1460) ? 1460 : log_len; + PortUdp.write((uint8_t*)msg_start, package_len); PortUdp.endPacket(); log_len -= 1460; - line_start += 1460; + msg_start += 1460; } #else PortUdp.write((const uint8_t*)header, strlen(header)); - PortUdp.write((uint8_t*)line_start, len -mxtime -1); + PortUdp.write((uint8_t*)msg_start, msg_len); PortUdp.endPacket(); #endif