- fix conditional messages not being sent to message definition in MQTT integration and not being used in KNX group association
- fix CSV dump of config files on command line
- fix DTM type with recent dates
- fix for some updated messages not appearing on KNX or MQTT
- fix for parsing certain condition ranges
- fix for "reload" command not starting the scan again
- fix datetime type mapping in MQTT
- add "inject" command
- add config path to verbose "info" command
- add "answer" command
- add option to inject start-up commands
- add verbose raw data option to "read" and "write" commands
- add option to allow write direction in "read" command when inline defining a new message
- add option to discover device via mDNS
- add dedicated log level for device messages
- add option to extend MQTT variables from env/cmdline
- add date+datetime mapping, better device update check, and remove single-field-message field names in Home Assistant MQTT discovery integration
- change default config path to https://ebus.github.io/ serving files generated from new TypeSpec message definition sources
- change validation of identifiers to no longer accept unusual characters
- change default device connection to be resolved automatically via mDNS
- fix MQTT topic string validation
- fix lost scanconfig default behaviour
- fix send empty message instead of logging an error for MQTT on messages without any field
- fix MacOS build
- fix name prefix warnings in Home Assistant MQTT discovery integration
- fix impossible usage of multi-field writes in MQTT integration
- fix initial broadcast scan
- fix potentially unusable SSL context
- fix SYN generator timing
- fix missing check for PB/SB validity
- fix non-SSL build
- fix scan when no signal
- fix negative float values in KNX integration
- add temperatures in Kelvin and ... to Home Assistant MQTT discovery integration
- add options to turn off scanconfig and limit number of retries
- remove dependency on argp
- add time fields to Home Assistant MQTT discovery integration
- add templates endpoint to HTTP JSON
- add reworked eBUS protocol engine that is especially useful for slow network issues
- add knxd support to devel docker image
- fix bounds check for variable length datatypes
- add timeout for enhanced protocol info exchange and allow more of them being optional
- fix some warnings in Home Assistant MQTT discovery integration
- fix for high traffic on KNX integration
- add workaround for libssl issues, add debug logging and force it using IPv4
- fix log level potentially set too late during startup
- fix too low timeout for config web service
- fix MQTT topic construction with prefix containing a separator
- add log entry for unstartable TCP ports
- add support for injecting scan messages being used for scan procedure
- add value lists support to MQTT integration and use it for Home Assistant MQTT discovery integration
- add update check for v5 device
- add "scan status" command and add the status to "info" command
- fix potentially invalid settings picked up from environment variables
- fix potentially unnecessary arbitration start for non-enhanced proto
- fix smaller issues in KNX integration
- fix numeric replacement+infinite and float min/max values in MQTT JSON payload format
- fix duplicate definition sent for same message when writable messages are included in MQTT integration
- fix UDP based devices no longer working since 22.4
- fix for older SSL libraries not automatically retrying if necessary
- fix enhanced side data transfer from device to host
- fix for fast participants starting immediately after own SYN at the end of a sent command
- add a single retry when initial config location check fails
- add support for setting visual ping, IP gateway, MAC from ID, and variant to ebuspicloader
- add step variable for numeric values to message definition in MQTT integration
- add yes/no values and writable heating curve to Home Assistant MQTT discovery integration
- add device version to update check and switch to Home Assistant update integration for current update check and additionally for device
- add preferred language support to web services and use it instead of default LANG environment with fallback to German
- add option to exit non-zero on non-success response from ebusd to ebusctl
- fix some smaller glitches (short argument names, compilation on small devices, argument help)
- fix revision in gh build for update check
- fix for include instruction without subdirectory
- add timeout to network device connection
- add continuation to initial scan until succeeded as well as repetition to incomplete regular scan
- add restart of enhanced device state when connection was reset
- add KNX integration via KNXnet/IP multicast routing and optionally via knxd client
- fix potential race condition in connection handling
- fix ebusctl final read
- fix missing MQTT topic prefix with "--mqttint=..."
- fix weird SSL connect errors
- fix for /decode endpoint
- fix for Home Assistant MQTT discovery config to truncate long updatecheck string
- add timeout check to arbitration
- add allow using older libmosquitto version
- add "isreverse" to /datatype endpoint
- add high speed serial mode to enhanced protocol
- add support for flashing via network to ebuspicloader
- add allow using "--mqttvar=..." multiple times to ease overriding integration settings
- fix for reconnect in HTTPS client
- fix for potentially truncated float representation
- fix for unmatchable incoming MQTT topics
- fix for non-JSON MQTT payload format
- add "--cafile" and "--capath" options with support for insecure HTTPS connections
- add support for extra infos of current adapter 3 firmware
- add option to send message dump to a file
- add "--mqttjson=short" option for smaller message payload
- add negative filtering to MQTT integration
- add rewrite outdated config path with the new one
- fix smaller bugs related to cleanup
- add more device latency to unix build
- fix for debian package overwriting previous conf files
- fix for potentially truncated float representation
- fix for determining unique field names in a message
- added arbitration delay setting to ebuspicloader
- updated new location of config and update check web service
- remove ebusfeed from regular build
- add support for picking up environment variables as command line options
- add support for generic MQTT integration by allowing publish of message definition content
- add support for Home Assistant MQTT discovery feature
- add Alpine Linux APKBUILD (thanks to tim-devel)
- add QoS setting and adjustable global topic to MQTT
- add option to move dynamic circuit and name parts to MQTT payload allowing to push to e.g. Azure IoT hub
- add SSL support to HTTP client
- fix for escaping double quote in CSV format
- adjusted helper shell scripts and Munin plugin to newer netcat
- fix for weekday in BDA data type (for sending only)
- fix some compiler warnings
- fix non-unique message keys in HTTP JSON output with "full" query parameter
- fix for message after debian install
- fix for replacing already existing message definitions
- fix missing length in CSV dump for some data types
- fix some missing data type lengths in "grab decode" result
- fix for injecting several messages via command line args
- added DTM and BDZ data types
- added "-n" argument to "hex" and "direct" commands for automatically determining message length from input
- added level/pollprio/condition/field flags and field result type as well as list of types to HTTP JSON output
- added message dump from commandline in JSON format
- added support for newer MQTT broker versions
- added some PIC calibration data to "ebuspicloader" verbose output
- added support for upcoming adapter 3 firmware enhancements
- added config override path
- added support for adding message definition, retrieving data types and raw messages, and decode data types from raw values to HTTP port
- added "--mqttverbose" option
- added verbose option to "info" command
- remove support for Debian 8 Jessie in docker
- fix for UDP device connection issue
- fix maxage check in HTTP/JSON port
- changed docker image to multi-architecture including Raspberry Pi, reduced image size
- added trailing wildcard to "ebuspicloader" port
- added i386 and arm64 architectures to docker image
- added more startup logging
- added colon as additional separator for "--log" option
- fix for publishing several MQTT updates at once
- optimized keep alive option for net devices
- fix for duplicate entry "minarbitrationmicros" in HTTP GET
- fix for extra send retry
- fix for newer compiler versions
- fix for potential illegal string usages
- fix for named net device not being resolvable during startup
- added Raspberry Pi docker image
- added support for Cygwin build
- added option to use "*" as trailing wildcard for circuit and name in MQTT /list topic
- added "--mqttinsecure" option
- updated to newest version of enhanced protocol
- added adapter 3 PIC tool "ebuspicloader" for uploading new firmware and configuring fix IP address
- fix for always enabled "--mqttchanges" option
- fix for dynamically adjusted poll priority
- fix for enhanced escape chars
- fix for too frequent logging on MQTT broker communication error
- fix for unexpected "different version available" message during update check
- fix for detecting subsequent fields with less than 8 bits not fitting into 1 byte
- fix for compilation and running on FreeBSD and MacOS with low latency setting for FTDI device (thanks to samm-git)
- fix for switching to daemon mode when log file was not opened
- fix for checking required arguments of "write" command with "-h"
- fix for potential MQTT reconnect issue after lost connection
- added option to set poll priority with MQTT get topic
- added "direct" command for listening to all valid messages from the bus
- added MQTT /list topic for retrieval of all known messages
- added support for init scripts on non-LSB distributions (thanks to andr2000)
- added support for logging to syslog instead of file (thanks to samm-git)
- added adjustable verbosity and option to include unknown messages to "listen" command
- fix for missing MQTT subscription after broker reconnect
- fix for answering to first scan only in answer mode
- fix dont add transfer latency to receive timeout when acting as SYN generator
- fix for bit combinations during write to SymbolString
- fix for MQTT handling after broker disconnect
- fix for NaN in JSON
- fix for deadlock in libmosquitto
- wait for being online before starting and automatically restart after 30 seconds
- added "--mqttchanges" option to only publish changed messages and changed to publish all messages by default
- added "--mqttclientid" to set own client ID instead of using the default
- added support for single quotes to all commands
- added "--mqttlog" and "--mqttversion" options
- added support for enhanced network protocol mode for recent ebusd-esp firmware that allows the arbitration to be done directly by the Wemos
- changed default configuration file location to config web service at ebusd.eu
- corrected tag name set by make_debian
- corrected MQTT /get topic on field level
- corrected weird IP address logging
- corrected logrotate script
- added support for retrieving configuration files from config web service
- changed docker image to be smaller size and fixed missing library dependencies
- added automatic reconnect to MQTT broker
- changed logging for messages from "updated" to "received" and "sent" depending on who initiated the request and added message direction/scan/poll/update info
- added support for serving .csv files and new argument maxage to HTTP/JSON port
- added timeout argument and error result code to ebusctl
- added "-def" option to "read" and "write" commands and "define" command to test message defintions and add new definitions during runtime and disabled all by default (use "--enabledefine" command line option).
- added "encode" and "decode" commands for testing field definitions
- added option to ignore failed host name resolution during initialization of MQTT
- added logging when device became invalid and close it on error
- corrected wrong defaults directory in Debian Jessie build
- corrected dump of chained messages
- corrected missing default MQTT topic
- corrected dump of value list and constant fields
- fix for input string vanishing on certain compiler versions in "write" command
- fix for potential endless waits
- corrected initial dumping and raw data logging
- corrected address check with "-s" or "-d" argument in "read" and "write" commands
- fixed timeout for update check
- corrected wrong initial scan load message
- corrected "read" command with field name and MQTT output by field when master and slave part both carry fields
- added helper script for reading all Vaillant registers for a single slave via "hex" command
- check all message definitions independent of any condition when checking/dumping configuration
- added option to disable automatic update check
- added scan config mode to start log entry
- added measurement and logging of min/max send-receive latency and include values in "info" command and JSON output
- drop initial potential garbage for UDP/TCP devices
- better support for cygwin builds
- added measurement of arbitration delay
- continue trying to get slave ID in scan config mode in case of communication errors
- switched to C++11 compiler
- separated access level from circuit name
- introduced access control list and user authentication for access to certain messages
- added automatic check for updates (ebusd and configuration)
- use CSV header line for determining columns and picking multi-language columns by language preference
- a circuit name is now required for all message configurations
- raw logging allows logging of messages or each sent/received byte defaulting to messages
- added systemd unit script
- corrected numeric condition formatting
- corrected reporting of CSV error position
- corrected last update time of write messages
- close log file on SIGHUP for better logrotate support
- only allow a single scan at the same time
- check allowed value range for base types during decoding
- ignore first seconds of data when calculating symbols per second
- exclude messages without name
- fix for potentially zero resolution
- fix for ebusd not answering scan request from another participant
- corrected missing update notification on master message part
- corrected grouping of JSON output by circuit
- corrected address conflict detection when in answer mode
- fixed potential memory leaks and misused iterator
- corrected duplicates when using "--dumpconfig"
- corrected unclean shutdown
- also use transfer latency for SYN generator
- fix for timeout message when decoding scan result failed
- corrected flushing in dump and raw files
- corrected unique keys in JSON port
- fix for potential invalid access during configuration reload
- added support for MQTT handling via libmosquitto (will be compiled in when library is available)
- allow empty ID in filename for circuit and suffix extraction
- use scan ID as fallback for default circuit name
- added U3N/U3R/S3N/S3R data types
- added another log facility "other"
- added support for using cmake in addition to autoconf
- added Docker support
- allow invalid SW and HW fields and remove all but alpha-numeric chars and underscore from ident when looking for scan config file
- added "auth" command and user/access information to "info" command output
- added user and secret arguments to HTTP/JSON port and added options to retrieve message definition and raw messages
- use ACL in "read"/"write"/"find"/"scan" commands
- added -a and -l options to "find" command
- added possibility to define different log level per area on command line and with "log" command
- added decode option to "grab" command presenting decoding hints for unknown messages
- added option to use different source address QQ to "read"/"write"/"hex" commands
- enhanced scan for individual slave
- wait for broadcast scan answers before doing individual scans
- enhanced SymbolString to be aware of master/slave and get rid of CRC (instead calculate while sending/receiving)
- allow TTQ/TTH types to use less than 8 bits
- added support for optional user-defined columns to config files
- added circuit-level attributes to config files for use in JSON
- added -N option to "read" command
- added "--inject" option to inject remaining arguments as already seen messages
- use scans initiated by other participants and allow "--readonly" with "--scanconfig[=none]"
- set the serial device to low latency mode to fix huge latency found on recent kernel versions
- fixed removed last byte in "hex" command answers
- corrected checking duplicates of chained messages
- fixed reading beyond message bounds
- corrected output precision with reciprocal divisor
- corrected caching of master-master messages
- corrected default dump file name to "/tmp/ebusd_dump.bin"
- extended default definition in CSV to allow message name and comment prefix/suffix
- added automatic reconnect of device if signal loss is persistent and extended "info" result with number of reconnects
- extended "grab" command to allow selection of all or only unknown messages in grab result
- added error log entry when ebusd address conflicts with another participant
- extended BTI/HTI/BTM types to allow replacement value
- added condition name to logging of "!load" instructions and "info" result
- added "--lograwdatafile" and "--lograwdatasize" options logging received/sent bytes to a dedicated text file
- added TTQ base type
- added support for constant value fields
- synchronously request a message if needed for loading "*.inc" files
- corrected derivation for TEM_P type
- allow chained messages to be polled
- removed CRC from slave answer in decode
- no longer poll scan messages since those are expected not to change
- added more message counts to "info" result
- added uih circuit with bar chart containing yields to HTML interface
- completely reworked base data types to allow user-defined types
- added first version of TEM specific data type
- allow inline rename of template reference
- removed "stop" command for enhanced security
- use broadcast ID messages for identification and automatic configuration file selection
- corrected extra separator in CSV style dump
- corrected BCD representation in JSON
- corrected serial close()
- fix for storing own prepared master data
- no longer show messages that did not receive data in "find" command
- check address argument for validity in "scan" command
- only use cached data if no input is necessary in "read" command
- fix for poll "continue" errors
- fix for checking command line arguments
- fix for DAY data type
- corrected checking of inline conditions
- escape special characters in string data types for JSON
- corrected dumping of value lists
- allow running multiple ebusd instances by configuration file (/etc/default/ebusd on debian)
- set keepalive option on network device
- added hex option to "find" command
- added optional initial active scan address to "--scanconfig" option that allows initiating a single destination address scan, a full scan, or sending a broadcast ident message (this is now the default)
- added MIN datatype
- avoid output of unprintable characters in string data types
- split verbosity of "read" and "find" commands into 3 levels
- added "indexed" parameter for JSON
- allow non-exact values for truncated time types
- added "hex" command for sending arbitrary hex data, disabled it by default (use "--enablehex" command line option), and limit "write -h" command to known messages only.
This increases security by avoiding unintended sending of arbitrary messages. - changed ebusd default address to 0x31 in order to avoid address conflicts with popular devices on the bus
- added "!load" instruction for CSV configuration files allowing conditional loading of single other CSV file
- added "!include" instruction for CSV configuration files in order to include other files
- added support for UDP connected devices
- require "-c" in "write" command
- corrected duplicate messages check with condition
- corrected maximum values for BCD and HCD types
- corrected weekday calculation (for smaller systems mainly)
- corrected determination of field name uniqueness
- corrected JSON read of passive messages
- allow CSV to contain empty lines (no field filled in)
- added shorter HCD and BCD data types
- added data type NTS (null terminated string)
- added EXP and EXR data types (exponential)
- added option for changing PID file
- allow using newlines within quoted fields in CSV
- added support for string based conditions and on-the-fly condition definition
- enhanced HTTP user interface
- increased default receive timeout to 25ms
- extract default circuit name from CSV file name
- automatically start grabbing all messages
- add circuit+message name of known messages to grab result
- added buffer for network devices and flush potentially buffered input when connecting
- added option for setting transfer latency and use default 10 ms for network device
- automatic configuration file selection by querying device identification ("--scanconfig").
Previous configuration files are still usable, but only without the "--scanconfig" command line parameter to ebusd (unless the files are renamed).
This is now enabled by default in the init.d (or systemd) scripts to work with ebusd-2.x.x configuration files. - support for chained messages with fields covering more than one message ID
- avoid multiple identical derived messages
- return "empty" for queries without result (e.g. grab result)
- fix for stopping main loop in rare cases
- fix for extracting default circuit name from CSV file name
- fix for using pselect
- fix for finishing active request when own master address reception timed out
- fix for some memory issues
- fix for closing serial device that is no tty
- fix for dumping message definition
- fix for cache invalidation
- fixes for answer mode
- respond to broadcast "write" command with "done broadcast"
- prepared for full file check with overlapping names and message keys
- added replacement value for date/time types
- extended "info" command with seen addresses, scan state, and loaded CSV file
- improved CSV file check
- insert index suffix extracted from CSV file name when applying defaults (format "ZZ.CCCCC[.index].csv")
- added support for MACH architecture (Mac OS)
- use empty condition messagename for referencing scan message
- allow read and write message definitions having the same ID
- add hint to decoding problems in "read" and "write" if answer was retrieved successfully
- added script for converting "grab result" to CSV
- exclusively lock serial device to prevent simultaneous access by another process
- extended "-i" parameter of "find" command to accept further ID parts
- include decode problems instead of returning invalid JSON
- extended allowed message ID length and max STR and HEX length
- extended "grab" command with "all" option for grabbing all messages instead of only unknown
- allow float values being used for int types
- added big endian data type variants (UIR, SIR, FLR, ULR, SLR)
- use numeric value as fallback for value lists with unknown value association
- increased verbosity during scan
- increased default bus acquisition retries from 2 to 3
- use named objects for JSON fields instead of array with fallback to numbered
- exclude conditions from "find -f" command
- let ebusd answer to scan request (if started with "--answer")
- add special length '*' for consuming remaining input for some string types (IGN, STR, HEX)
https://github.com/john30/ebusd/compare/v1.3.0...v2.0
- started with a new git repository for working on 2.0 version (previous repository was renamed to ebusd1)
- added support for conditional message definitions based on other message values
- fix for numeric parsing of empty string
- allow HTTP port query string keys without value
- fix for thread cleanup
- update last message update time when actively sending it
- trim CSV lines and fields
- corrected derivation of field name, comment and unit in templates
- check invalid divisor/values for string and value list based types
- fix for overriding destination address in "read" command
- fix for cached master data
- new "read" option "-n" for retrieving name/value pairs in numeric form
- new "find" option "-e" for exactly matching name and optional circuit (ignoring case)
- new "find" option "-F" for listing messages in CSV format with selected columns only
- added numeric, verbose, and required options to JSON and use "null" for unset or replacement value
- allow static ".json" files being served by HTTP port
- allow passing raw value when writing name/value pairs
- enhanced static HTML user interface to dynamic
- added possibility to use a different name for referenced field template
- added data type HCD (for Ochsner)
- added base type TTH (truncated time with 30 minutes resolution)
- added base type VTM (reverse HTM)
- added log entry for scan completion
- automatically invalidate cached data of messages with same name+circuit (ignoring level)
- added "info" command
- added circuit and name to verbose "read" output
- added option to pass additional input data to "read" command
- added messages without dedicated destination and cached data decoding error to "find" result
- new "write" option "-d" for overriding destination address
- allow CSV file name to define default destination address and circuit name (format "ZZ.CCCCC.csv") and if present, concat default circuit name and security suffix (circuit name in CSV starting with "#")
https://github.com/john30/ebusd/compare/v1.2.0...v1.3.0
- corrected missing newline in ebusctl
- avoid updating last message change time when only the querying master was modified
- notify running requests on device error
- new command line option "--readonly" for read-only access to the bus
- added support for retrieving data as JSON and additional files via optional HTTP port
- added first version of static HTML user interface (to be extended to a dynamic one later)
- new "read" option "-h" for sending hex read messages
- new "read" option "-p PRIO" for setting the poll priority of a message
- update cache on hex read or write
https://github.com/john30/ebusd/compare/v1.1.0...v1.2.0
- return passive messages returned in "read" regardless of their age
- corrected divisor for chains of derived number types
- corrected master number calculation (no influence on any behaviour)
- fixed signed char warning on some compilers
- corrected minimum lock count according to spec.
- differentiate between valid empty result and not found field name
- fixed scanning for messages in subdirectories for certain file systems (thanks to joltcoke)
- allow mixing references to base types and templates in message definition
- renamed "class" to "circuit" in commands and message definition
- fixed reading cached values
- extended max allowed data length to 25 (spec says 16)
- new command line option "--dumpconfig" for dumping message configurations
- new "find" command option "-f" for retrieving message configurations in CSV format
- new "find" command option "-i PB" to filter messages on primary command byte
- extended "read" command "FIELD" argument with optional ".N" for retrieving the N''th field with that name
- new "write" command option "-c" for compatibility with "read" and "find"
- automatically detect number of masters on the bus and add to "state" command
- support reciprocal divisor
- cache symbols instead of formatted strings. this allows retrieval of individual fields and verbose read from cache
- removed valid CRCs from log and hex "write"
- shortened manufacturer names for "scan"
- allow specifying multiple destination addresses in message definition and defaults
- added Arch Linux PKGBUILD scripts (thanks to cogano)
- new "read" command option "-d ZZ" for overriding destination address (e.g. for manual scan)
- allow message definitions without any field
- added broadcast ident message (requests all masters to send their identification) and added read ident for manual scan
- added support for AUTO-SYN generation (experimental!)
- added "grab" command for collecting and reporting seen unknown messages
https://github.com/john30/ebusd/compare/v1.0.0...v1.1.0
This is the first version of the completely reworked ebusd since October 2014.
A lot of problems were fixed, such as memory leaks and segmentation faults.
The daemon is now fully aware of the eBUS protocol and future versions will also support addressing a running daemon as answering master/slave. The main new feature is a completely rewritten configuration file engine, which allows the use of templates and defaults and thus simplifies the configuration files a lot. On the client side, a lot of commands have been added, such as "listen" (automatically send changed values listened to or polled), "find", and "state".
https://github.com/john30/ebusd/commits/master
Thanks to Roland Jax and other authors for all their work in previous versions!