Changelog
All notable changes to this project will be documented in this file.
[2.11] - 2026-08-17
Added
- smartDrive:
- New plugin for the owasys smartDrive hardware: 4 analog inputs (
ain_channels, configurable sampling rate, scale/offset, measurement range and data reduction), supply voltage and internal temperature monitoring, status LEDs and a periodic internet connectivity check (pingUrl, HTTP HEAD every 60 s). - RPC calls
getStatus,getInternalTemperatureandgetSupplyVoltage.
- New plugin for the owasys smartDrive hardware: 4 analog inputs (
- Siexpert (PREVIEW):
- New plugin for reading Siemens expert files from Vectron locomotives.
- smartCORE:
- Module entries in
smartcore.jsonandsmartcore_dynamic.jsonaccept a new optional key"configFile"(a single file name or an array of them). The referenced files are loaded from the configuration search path and merged in order — arrays are concatenated, objects merged recursively — with the inline"config"block always taking precedence. This allows shared configuration fragments to be maintained once and reused across modules and devices. Missing or unreadable files are skipped with a warning; the measurement still starts.
- Module entries in
- TRDP:
- New property
trafficFilter: a list ofport/groupAddresspairs, so one module instance can receive several multicast groups and ports. - New property
joinGroup(per filter entry, defaultfalse): actively joins the multicast group via IGMP on the configured network interface instead of only filtering traffic that arrives anyway. - New property
pollingIntervalMs(default 1000, range 100…2000).
- New property
- Batmon:
- New property
configurationErrorChannelName. The channel reports why a parameter set was rejected, e.g.VoltageAlwaysOnTooHigh (-3),WrongShutdownTime (2),OK (0).
- New property
- Mav:
- Country check: while the new optional boolean channel
channelnameCountryCheckis true, data is only sent to the MÁV server when the country read fromchannelnameCurrentCountryCode(ISO 3166-1 alpha-2) matches the newtargetCountryCodesetting, compared case-insensitively.targetCountryCodedefaults toHU; an unknown or empty country suppresses sending. With the channel absent or false — the default — data is sent regardless of the country, so existing configurations behave unchanged. - New property
channelnameCustomerID: an optional optiCloud shared attribute that replaces the configuredsenderat runtime and is transmitted as the SOAPSenderattribute. - New property
channelnameHDOP: float input channel whose filtered value gates the locomotive start/stop event detection and is published asMAV.HdopFilt. - New property
timezone(IANA time zone id, defaultEurope/Budapest) used to format theGPSTimefield sent to the MÁV server. - New status value
NO_SENDER (-6)onMAV.Status; the six existing values keep their numbers. All status values are now documented in the module description.
- Country check: while the new optional boolean channel
- Math:
- derive() function to calculate a filtered derivation d/dt of an equidistant input signal
- #timezone - macro to enable automatic daylight savings in related functions, e.g.
decodeTime(..., {useTZ: <bool>})timer(..., {useTZ: <bool>})includes Howard Hinnant date library
memory()provides indexed storage of a given size; the data type is taken from the initialiser, with modesM=,M+=andM*=.sScan(fmt, s)extracts values from a string using scanf-style format placeholders.sGetKV(s, k [, {format, filter}])finds a key-value pair in a text; supported formats arejson,ini,xml_attrandxml_node. An optional index selects the n-th match.
Changed
- Math:
- Catalog Version 13
timer()now emits all pulses that fall into one evaluation interval instead of only the first one, and crontab entries are resolved with sub-second accuracy. Previously, timers could skip pulses at high tick rates.transit()/ state machines: nestednMaxloops that share a target state now count independently. The inner counter is reset when the outer loop re-enters the loop's start state.
- Batmon:
- The default name of the operating mode channel changed from
batmon__Operating_Modetobatmon__PluginState. Installations that address the channel by name must either adapt or pin the old name viaoperatingModeChannelName. - The operating mode channel now reports the full plugin state machine
(0…15, e.g.
GetParameter (6),Running (9),PostponeShutDown (14)) instead of the previous four coarse states. - The shutdown event and energy-save request channels are now fully described in
the module documentation.
requestEnergySaveis a latching flag: it is set once energy saving has been requested since module start and is only cleared by a module restart — it does not indicate current energy-saving activity.
- The default name of the operating mode channel changed from
- Mav:
- Three default values that did not match the module's behaviour were corrected.
- Changes on the optional channels (LocoNr, CustomerID, CountryCheck,
CurrentCountryCode) are reported at info level instead of only under
debugLog, and only when the value actually changes.
- Dbc:
- The property
separateEFFlaghas been removed. Distinguishing 11-bit and 29-bit addressing is configured in the canbus module viakeepEFFFlag(introduced in 2.10.1).
- The property
- TRDP:
portis now validated against the range 0…65535 instead of being accepted unchecked.
- GRPC:
- Adapted to the gRPC 1.80.0 API, as shipped with Yocto Wrynose.
- Third-party libraries:
- valijson 1.1.0 → 1.1.3, used to validate the module configuration against its schema.
- Howard Hinnant date library v3.0.4 newly included; it provides the time zone
handling behind the math
#timezonemacro.
Removed
- Microstrain (PREVIEW): the module has been removed.
Fixed
- Math
- playback() provides defaults to channels if not active
- #warn timeout had lots of false positives if first sample was a larger trusted interval
- safety and stability fixes
- A leading unary sign was applied to the base of a power expression instead of
to its result:
-2^2returned4instead of-4. The usual mathematical convention now applies (-2^2=-(2^2)). Formulas that relied on the old behaviour need explicit brackets. All other operators are unaffected;~and!keep their higher precedence. - The string function
sRight()was registered under the misspelled namesRigth()and could therefore not be called by its documented name. Formulas using the misspelling must be adapted. playback()no longer inserts trusted samples at the batch interval once replay data has been added.prioEnc()in edge mode returned a garbage value instead of the configured "none" value when no edge was present, and returned the "none" value instead of index 0 for an edge on the first input.sResource({$ref: '...'})did not resolve its resource reference at compile time and failed at runtime.makeDim()did not store the equidistant sampling interval.- The operator
;leaked memory when a variable was neither used nor published. - Deeply nested expressions could crash the module; expression depth is now limited to 128 levels and reported as a syntax error.
- Parser error messages name the expected bracket correctly (
missing ']'instead ofunbalanced opening ']').
- smartCORE:
- The first read of a channel could deliver a phantom sample carrying timestamp 0 and value 0 ahead of the first real measurement value. Modules reading channels received it through the normal sample iteration.
- Batmon:
- Temperatures below 0 °C were interpreted as unsigned and reported as large positive values.
- The wake-up event channel reported wrong values. The correct assignment is
none (0),KL15 switch-on edge (1),U_batt below Always-OFF threshold (2),U_batt above Always-ON threshold (3),periodic timer wakeup in energy-saving mode (4),deprecated (5),wakeup after CAN-requested sleep (6). Evaluations of this channel must be checked against the corrected assignment.
- Mav:
- An empty
Senderwas transmitted when neither thesendersetting nor the CustomerID channel supplied a value; the MÁV server rejects such requests. The case is now detected and reported asNO_SENDER (-6). - An empty value on the CustomerID shared attribute overwrote a correctly
configured
sender, and kept it overwritten until a non-empty value arrived. An optiCloud outage could therefore silence a vehicle whose local configuration was valid. Empty values are now discarded with a warning. - The HDOP consumer was not released when the module stopped. The stale handle survived a stop/start cycle, after which the module no longer consumed from that channel.
- An empty
- Dbc:
- If a multiplexed signal had no multiplexer, the remaining signals of the same message were silently dropped and their channels never appeared.
- Diagnostics:
- Error messages without a matching source no longer flood the log.
- The configured default error code was not evaluated.
[2.10.1] - 2026-05-12
Added
- Tx93 Support
- Diagnostics:
- Monitoring for
<string>patterns
- Monitoring for
- Math:
rampLimit(), which limits the steepness of a signal curve to a maximum gradient.encoder(), which emits a sequence of pulses as an encoder would do for given rotational speed
- Fmproducer:
- Imagetypes
ANTIVALENTandANTIVALENT2as alias for a 2-bit unsigned integer.
- Imagetypes
- Airpurifier:
- A customised module for monitoring and controlling air filter units
- Canbus:
- The new property
keepEFFFlagis used to pass the -bit field (EFF) to the message ID in fmproducer as a signature for 29-bit addressing modes. This allows messages in the range 0..2047 to be distinguished by addressing type (11-bit or 29-bit) and assigned their own specific meaning and interpretation. All 29-bit addresses must then be shifted by the offset in fmproducer.
- The new property
Changed
- Osfwriter
- reenabled property "compressed", default is false Need to be set explicitly by customer in RAIL / BATMON applications.
- Diagnostics:
- intensive code review process and reimplementation, documentation
- No longer any distinction between ErrorStream and value monitoring
- The monitoring type is independent of the data type of the monitored channel
- Math:
- Catalog Version 12
#versionmacro allows to limit the available function catalog to a former version.
- Rawplayback:
- code review process and documentation
- fmDispatcher receives the name of the module instance
- Fmproducer:
- property "addressSpec": renamed enum label
ReversedForMsbNumericstoEN61375_MVB - The
EN61375_MVBschema rejects all configurations that do not comply with the EN/IEC standard, e.g. Little-Endian or the shifting of an image across a byte boundary.
- property "addressSpec": renamed enum label
- smartCORE:
- A new API class
ChannelConsumerhas been introduced to read smartCORE channels in a type-neutral manner. This simplifies and speeds up plugin development.
- A new API class
- Opticloud:
- The ignore list is always expanded to include the patterns
"status.*"and"hidden.*", unless these are explicitly specified in the search pattern. - GPS splitting by default (if not listed in "splitGpsLocationChannels"): remove suffix ".Location" (if exists), append ".Latitude", ".Longitude", ".Altitude"
- The ignore list is always expanded to include the patterns
- Batmon:
- Internally disable AlwaysOn/Off config if less than 15.0 V
Fixed
- Diagnostics:
- Malfunction depending on different data types
- A strictly limited timeout for snapshot and monitored channels, ensuring that messages can be sent promptly
- Fmproducer:
- Corrected incorrect offset calculation for 2- and 4-bit images in the ?MVB? compatibility scheme, e.g. ANTIVALENT2 or ENUM4
- Canbus:
- The -bit (EFF) used as a signature for 29-bit addressing modes was always passed on to the message ID in fmproducer. As a result, 29-bit messages were not recognised or processed. Now, by default, only the address itself is used, without any status flags.
- Opticloud:
- Disabled GPS data transfer as Json-Object (as used in alarm snapshots), not yet supported by opticloud,
- GPS channels are no longer silently removed if they are not listed in "splitGpsLocationChannels", thereby resolving the unusual behaviour caused by empty "splitGpsLocationChannels" array
- Batmon:
- Unassigned alwaysOn/Off limits resulted in incorrect default values and a permanent breach of the spacing rule.
- Send control commands only shortly after measured data has been received to avoid collisions in ATMELs command processing queue
- PIC FW Workaround (2C-bug) for time and voltage parameters.
- Reading parameter set a 2nd time was skipped due to automatic time stamps on parameter data. Command get parameter now repeated up to 3 times on failure, too.
- Math:
bTest()did not pick the designated bit correctly.periodic(..., {mode: prbs})ignoredp##notation to select the feedback polynomplayback()fixed handling of second parameter as vector- `playback
[2.10.0] - 2026-03-10
Added
- smartRAIL V2.2 support
- Baumer:
- New plugin for connecting Baumer's BPIK high-performance bearingless encoder for measurement on wheel axles of rail vehicles
- Uses fmproducer to decode the content of data telegrams
- Mav:
- New plugin for GPS reporting to Hungarian State Railways Magyar Államvasutak
- Math: implements Catalog V11
- status of input channels is signaled to math and readable using isTimeout(), isEmpty(), isConnected(), isDefault()
- isTimeout() returns true, if input channel data is older specified timeout interval
- isEmpty() returns true, if input channel did not receive any data yet, a default may be assigned temporarily
- isConnected() returns true, if input channel is connected to smartCore, else a default is assigned
- isDefault() returns true, if an input variable is forced to the default value
- isError() returns true, if a calculated value/expression/variable is in an error state
- typeOf() returns index of a values type
- value() pick latest value from input channel ignoring the timestamp, breaking circular dependencies
- time() returns current time or latest timestamp of input channel
- propagate sequence properties to channel meta data
- experimental:
- playback() playback individual channels from OSF files
- shiftT() adjust timebase of an input channel by a small amount of time
#propertynew attributestimeout=<val>anddefault=<val>- timer() puts a warning into the log, if there's an enclosed automatic declaration in the crontab
- getField() supports reading complex numbers and array/matrix [...] data types
- Floatingpoint-NAN/INF values were copied into the Math context and eventually have been published into smartCORE channels, they are now filtered out.
- GRPC
- add new calls: getRelaisCount, GetHasTerminationResistor (RS485)
- GPS
- added one new signal: TrackCourse
- Added datareduction filter for gps coords and removed unused production parameter
- Batmon
- Added notification of status for PING/ATTN messages
- Setting voltage limits is suspended if doing so would cause the BATMON to be lost at the current operating voltage
- RPC call
requestShutdown({"sender": <str>})to put the Batmon into sleep mode in a controlled manner - Property
"passive": <bool>runs the plugin in read-only mode, in order to follow the BATMON shutdown command - Property
"auxPower": <bool>disables shutdown by smartCORE and the kernel if smartRAIL is not powered by the BATMON (debug) - Property
"debug": <uint32>bitmask to control debug output; the default may change with future versions / stability improvements
- FunctionGenerator:
- added check if both timeout parameters are not 0 to prevent CPU load from being too high
- Ruuvi:
- Add a parmeter to set reduceDelta value for channel filters
- Added default channel filter deltareduce of 0.1
- OptiCloud:
- Property
"transmitStatusChannels" : <bool>added to turn on/off STATUS channels about the optiCLoud module - Property:
"debugMask": <uint32>to control detailed debug output. Meaning of bits available on request. - Property:
"debugChannels": [<string>], array with wild-card-patterns to enable data transfer debugging for matching channels. sharedAttributes[]: property:"debug": <bool>, enables data transfer debugging- Explicit auxiliary support points on boolean, integer or float channels are added and transfered by MQTT a certain period (0.5 to 1.0 sec) before the transfer of all changed telemetry data.
- Property
- fmProducer:
- Property
"byteOrder": <enum>, default for all channels, support for litteEndian, bigEndian and custom byte mapping - Property
"addressSpec": <enum>, default for all channels, support for MVB, DBC, and other addressing schemes channels[]:- property
"byteOrder": <enum>, overrides default - property
"addressSpec": <enum>, overrides default - property
"debug": <bool>, for now: output picking info - property
"noFilter": <bool>to disable any input filtering at all -> performance boost for high speed data streams - Picked Floatingpoint-NAN/INF values were produced into OSF-channels, they are now filtered out
- property
- Property
- osfWriter:
- Floatingpoint-NAN values were written into the OSF file, they are now filtered out.
Changed
- Support for Debian version 13 / Trixie
- valijson: update to version 1.1.0
- fmProducer:
- Major rework of the internal "SimpleBufferPicker" class which is used to pick values out of process image for flexibility, performance and stability (see also section Fixed below)
- FastMessageDispatcher: major reworkfor performance and stability
- Support for
"double"and"BCD"image types bitlength: 1enforces<bool>as image and channel datatype"imageType": "bool"enforces"bitlength": 1as"float"(32) or"double"(64),"timedate48"(48) or"time64"(64) do with their implicit length, too."dataType": <enum>is obsolete for 99% of use cases. Let the plugin decide in first place.
- Batmon:
- Minor code changes in notification infos
- New status channel 'PluginState' for the new state machine (new enum tags) replaces 'OperatingMode'
- All measured values published as float rather than double now.
- Outputsignals AboutToShutdown, CriticalPowerStates, LowPowerState, RequestEnergySave changed slightly their behaviour, beeing more precise to their naming now.
- Check for non unique CAN-IDs and report
- TRDP
- switch to PcapPlusPlus library
- GPS
- changed default channel name
- removed status signal, not supported by gps chip
- GPS-Location output is now a persisted channel, restarting at the last known position after reboot.
- osfWriter
- Always writes to compressed osfz files now avoiding additional read/write-streams on the SD Card for data compression
- Property
"compress": <bool>is ignored but reported, if set to false.
- opticloud
- Major rework of implementation for flexibility, performance and stability
- If a splitter is not specified or matching, GpsLocation data is encoded as JSON-Subobject
"<chName>: {"lat": <numeric>, "lon": <numeric>, "alt": <numeric>}"by default rather beeing ignored.
- Math
- Catalog Version and Libraries git-ID is now published into omVersions.ini.
Fixed
- alarmmanager:
- Integrity error in the internal list of alarm messages, responsible for ghost messages and incomplete processing -> resolved, continue to monitor
- Missing lifetime control of internal list of alarm messages -> resolved
- fmProducer:
- picking of Timebase48, Time64, BiPolar, UniPolar types optimized for performance and fixed buggy scaling
- picking of String/ByteArray did not respect the configured bitoffset.
- Math:
- Produced samples that where not given by libmathexpressions -> fixed
- Unlinked input channel was orphaned and not handled -> assign const default
- Created time series channels with zero length -> fixed
- Picking variable indexed element from a const vector cVal[idx] or GetCol(cVal, idx) was const, too, and never updated -> fixed.
- decodeTime(): returned with failure on success -> fixed.
- timer(): had 0 as default for month/day filters, now 1
- timer(): syntax
a-b/ndid not start ataand did not check for range at first - timer(): syntax
*/ndid not start at 1 for month/day - assign
=: forwards const and linInterpolation flags - sample(): runs only to t_horizon, not INVAILD_TIME
- trigger(), threshold(), delay(), pulse(), prioEnc() forwarded const inputs though having timing parameters
- OPC/UA Server:
- fix if no channel values exists
- OPC/UA Client:
- fix when disconnecting from server. Nodes list will be recreated and reads the node ids again from server
- fix when reconfigure smartcore and write error message only once to log file
- Batmon:
- Historic battery voltage data was received with mod for mV, limiting the range to 0 .. 65,5V. Now recovering the missing upper bits based on the measured Voltage and assumed slow rates of change. This is a workaround for smartIO BATMON FW older than 2.1
- Historic data eventually had time stamps in the future, now filtered out
- Transferring parameter sets to the BATMON no longer causes the device to be lost due to an internal invalidated parameter set. This is a workaround for smartIO BATMON FW older than 2.1.
- Alarm snapshots now contain the correct channel names, identical to those in smartCore
- Ruuvi:
- fixed wrong datatype in schema
- GPS:
- Losing timebase when receiving and producing gps data.
- Produced NAN-Values in HDOP, VDOP, PDOP channels -> filtered now.
- Somehow Null-GPS coordinates bypassed the filters or was inserted ini opticloud / osfwriter / math -> fixed now.
- opticloud:
- Handling of multiple matches in channels selection -> first one wins, others ignored
- Handling of wild-mask-syntax in channel name patterns -> fixed
- Handling of (automatic) Ignore-List, if system oder hidden channels are explicitly selected in the search pattern.
[2.9.1] - 2025-05-23
Added
- support for owa5x
- Geofencing Added function to specify valid week day for a geofence
- Dostos2: Added new shared attribute AbfangenHyterese
- Zedas: Add fault import on alarm creation
Changed
- AlarmManager: use UUID format V1 (MAC + time based) instead of V4 for compatibility with optiCLOUD internal database
- optiCLOUD: send alarm uuid without curly brackets
- optiCLOUD: Added parameter to log alarm mqtt payload to log files
- Math: Function catalog version 9
- Math: Improvements and implementation of the following functions: stopwatch(), sFind(), isScalar(), isVector(), isMatrix(), isTensor(), peakHold()
- Dostos2: Changed status text for decision seven
- Dostos2: Removed timescatter for starttime in shutdown plan
- Dosto2: Using default values if two shared attributes are not found in data pool
- Dosto2: Increased shift logic number
- SCPI: MODules:FACTories:DOC?: return description from metadata.json and URL to documentation
- modules: remove MD files (documentation and CHANGELOG)
- thirdparty/valijson: update to version 1.0.5
Fixed
- AlarmManager: Fixed error in handling LoseSight alarm messages after reconfiguring smartcore.
- optiCLOUD: Release finished alarms. Handle Send and Idle states
- Math: Minor bug fixes in the math core
- Geofencing: Fixed logical bug
- Colibri: Fixed bug when reading timestamp in millisecs.
- fmproducer, fmudp: fix json syntax errors in metadata.json
- Zedas: Fix alarm and faults SOAP communcation
[2.9] - 2025-03-05
Added
- TRDP (PREVIEW) : NEW module (PREVIEW)
- Geofencing : Adds option to specify a valid time period for a geofence
- CAN-Bus : added restart-ms setup paramter
- System Infos : allow wwan interface name usb (Quectel NCM devices)
- optiCLOUD : add option to trace every shared attribute change (for debugging)
- Generic MQTT : add option to suppress null values
- Generic MQTT : add support for timestamp token to generate ISO 8601 timestamp
- CAN-Bus : added check if GPIOs are enabled in CMake settings
- CAN-Bus : added option to record rtr and error frames
Changed
- Core : update valijson to version 1.0.4
- Dosto2 : renaming shared attribute name
- Dosto2 : added two new shared attributes for duration in manual state
- Dosto2 : changes in shift logic 1. and 2. scenario
- Math (PREVIEW) : update libmathexpressions to latest version
- optiCLOUD : Report all relevant connection state
- optiCLOUD : shared attribute tracing: mark InitialValue entries
- Generic MQTT : ignore retained message
- CAN-Bus : renamed config parameters and removed unneeded code
- CAN-Bus : Documentation updated
Fixed
- Core : remove unneeded thread move on stopping thread
- Core : SmartModuleThreaded: Fix dead lock
- Core : remove unneeded thread move on stopping thread
- Core : fixed apparent memory leak
- Core : moving modules to destructing thread before destruction
- Geofencing : Fix when checking gps-channels during init process
- Geofencing : Removed unused min satcount channel
- Geofencing : Removed unused satcount channel
- Math (PREVIEW) : latest fix for #timeless operation in math
- System Infos : do not overwrite the old / existing ICCID with n.a. if no iccid is transmitted
- optiCLOUD : FIX: gps location not translated in snapshot data
- optiCLOUD : remove warning when shared attribute message does not contain every channel
- optiCLOUD : fixed threading related memory leak
- Generic MQTT : fixed threading related memory leak
- SSH Client (PREVIEW) : FIX: copy file with invalid destination path to server (now checking isNull(), isValid() and [0] == '\0') MOD: extended warning messages with more information about paths and files
[2.8.1] - 2024-09-12
Added
- microstrain (PREVIEW) : NEW module (PREVIEW)
- performancereport (PREVIEW) : NEW module (PREVIEW)
- fmproducer : improved configuration robustness by allowing for case-insensitive enum value selection where applicable
Fixed
- fmproducer : extracting MVB BIPOLAR typed data
- Remote (PREVIEW) : wildcard handling in channel name specification
- Remote (PREVIEW) : streaming restart on subsequent ReadSamplesBegin requests
- Remote (PREVIEW) : module cleanup
- System Infos : improved MD documentation
- Uptime : uptime estimation now using the monotonic clock fixing date and time adjustment related issues
[2.8] - 2024-08-05
Added
- batMON : NEW alarms for low and critical power states and for terminal 15
- CSV Writer (PREVIEW) : NEW module (PREVIEW)
- Math (PREVIEW) : added MD documentation (PREVIEW)
- ModBus : NEW transport parameter deviceTimeoutInMilliseconds
- OPC/UA Client (PREVIEW) : support for node IDs instead of browsepath
- OPC/UA Client (PREVIEW) : parameter for signal node ID
- OPC/UA Client (PREVIEW) : alias parameter to set channel name
- optiCLOUD : NEW channel config option useTrueTimestamps
- OSF Writer : NEW config parameter ignore for ignoring channels to be recorded
- OSF Writer : NEW CAN-Bus frame support
- Remote (PREVIEW) : NEW plugin for inter-process-communication (PREVIEW)
- SMS Alarms (PREVIEW) : NEW module (PREVIEW)
- SSH Client (PREVIEW) : NEW module (PREVIEW)
- ZEDAS (PREVIEW) : NEW module (PREVIEW)
Changed
- Math (PREVIEW) : using new logging mechanism
- OPC/UA Client (PREVIEW) : using new log message type
Fixed
- Geofencing : added MD documentation
- GPS : filtering out locations containing zero coordinates
- Math (PREVIEW) : fixed channel consumption issues wrt delayed samples
- ModBus : allowing for slave IDs up to 255
- ModBus : improved logging behavior
- ModBus : fixed response timeout issues
- ModBus : reading register blocks now grouped by slaves
- OPC/UA Client (PREVIEW) : added German MD documentation
- System Infos : improved logging behavior
- SCPI : NEW config parameter within omScpi.ini for restricting remote access
Removed
- notifier : REMOVED PLUGIN
- MVB : REMOVED D017M (TCN) support completely
[2.7.1] - 2024-04-29
Added
- Generic MQTT : NEW string data subscription
- Generic MQTT : NEW topic config option processOnChangeOnly
- Generic MQTT : NEW publish channel config option publishLastValue
- Generic MQTT : NEW payloadHint json-iterator
- Generic MQTT : NEW facilities for advanced timestamp extraction from subscribed data
Fixed
- HTTP : corrupt data transmissions
- SMS : error handling and process value formatting
- SMS : event queueing issues
[2.7] - 2024-04-04
Added
- Ecowitt : NEW support for selecting between Ecowitt WS2910 display with WN67 sensor and Ecowitt GW200A gateway with WH65 sensor in simulation
- Geofencing : timeout check for GPS data
- Generic MQTT : NEW support for authentication via Azure SAS Token
- OPC/UA Client (PREVIEW) : NEW module (PREVIEW)
- System Infos : NEW diskstatistics estimation
Changed
- REMOVED Debian 11 (bullseye) support
- batMON : running on current flash configuration parameters when JSON configuration is invalid
- Ecowitt : NEW user configurable measurement data channels
- Geofencing : cleaned up logging
Fixed
- Diagnostics (PREVIEW) : fixed missing alarms
- Diagnostics (PREVIEW) : improved documentation
- GPS : improved documentation
- Math (PREVIEW) : fixed input timeout handling
- Math (PREVIEW) : fixed persistent storage handling
- ModBus : allowing for slave address 247
- Generic MQTT : NEW MQTT client fixing various issues
- OPC/UA Client (PREVIEW) : fixed missing data after reconnect
- OPC/UA Client (PREVIEW) : removed connecting attempts from module initialization phase
- OPC/UA Client (PREVIEW) : checking for configuration type mismatch
- OPC/UA Client (PREVIEW) : module destruction and memory issues
- optiCLOUD : NEW MQTT client fixing various issues
- SCPI : identification query response
[2.6] - 2023-12-19
Added
- CAN-Bus : changed configuration parameter interface additionally allowing for arbitrary selection
- Diagnostics (PREVIEW) : NEW module (PREVIEW)
- GPS : NEW config parameter speedLimit
- GPS : NEW config parameter forwardToPort allowing for GPSD port forwarding
- GPS : NEW config parameter rebootIntervalMs for reboot on broken GPSD connection
- Math (PREVIEW) : NEW module (PREVIEW)
- Generic MQTT : NEW module (PREVIEW)
- OPC/UA Client (PREVIEW) : Floating-point support
- OPC/UA Client (PREVIEW) : config parameter acceptAllCertificates
- optiCLOUD : NEW alarm message transmission mechanism (PREVIEW) when config parameter alarmsEnabled is set to true
- optiCLOUD : implemented status channels
- optiCLOUD : transmitting device serial number
- ruuvi : NEW module (PREVIEW)
- System Infos : NEW channels for monthly and total monthly WWAN traffic amount
Changed
- Accelerometer : updated sensor setup to configure high resolution mode
- Accelerometer : updated default scale value to 2g
- HTTP : updated to latest cURL library
- optiCLOUD : adjusted log file categories
- optiCLOUD : augmented log messages by module instance index
- optiCLOUD : increased minimum polling cycle interval to one second
- System Infos : optiMEAS device detection
- SCPI : integrated SCPI module into smartCORE application
- SCPI : made start, stop and restart actions synchronous
Fixed
- Accelerometer : calculation for axes
- Accelerometer : removed debug logging
- batMON : writing historical data to temporary file
- batMON : processing recently recorded historical data only
- DBC : fixed automatic signal data type selection
- GPS : blocking in GPSD reconnect mechanism
- GPS : no direct reboot on broken GPSD connection
- ModBus : skipping RS485 configuration on generic serial port
- ModBus : fixed crash on RS485 configuration
- ModBus : fixed LSB address calculation
- ModBus : fixed crash upon invalid channel configuration
- ModBus : allowing for bitOffsets greater or equal 8
- ModBus : fixed return schema for probeChanel call interface
- ModBus : allowing for multi channel configurations based upon a single register
- OPC/UA Client (PREVIEW) : node and timestamp handling
- OPC/UA Client (PREVIEW) : crash on module destruction
- optiCLOUD : fixed naming issues within GPS location channel splitting
- optiCLOUD : fixed issues with invalid NaN and Inf representations within JSON payloads
- optiCLOUD : fixed invalid timestamp formatting leading up to connection losses
- optiCLOUD : fixed value to string conversion
- optiCLOUD : removed totally enqueued message size limit
- playback : allowing for empty string production
- smartIO MVB : fixed MVB port filtering wrt message data, single events and group events
- smartIO MVB : ignoring slave timeouts for single, group and general events
- smartIO MVB : interface to MVB messages module
- SCPI : missing error reporting on failed restart
[2.5] - 2023-06-29
Added
- Accelerometer : NEW module
- CAN-Bus : support for up to four CAN-Bus interfaces
- Event Counter : NEW module
- GPS : NEW config parameter posFixModeStabilizationTimeMs
- HTTP : NEW module
- OPC/UA Client (PREVIEW) : NEW module (PREVIEW)
- OPC/UA Server (PREVIEW) : NEW module (PREVIEW)
- optiCLOUD : NEW MQTT client timing and message amount config parameters
- optiCLOUD : NEW typical config examples
- optiCLOUD : NEW configuration option trustStore
- OSF Writer : NEW support for equidistant channels
- playback : NEW simulation module
- rawplayback : NEW simulation module
- smartIO HP : NEW module
- SMS : NEW module
Changed
- NEW combined data reduction filter
- ModBus : ModBus RTU reconnect on read error
- optiCLOUD : requesting initial shared attribute values by default
- optiCLOUD : creating shared attribute channels in a persistent way allowing for multi-cloud support
- optiCLOUD : renamed configuration parameter pollingIntervalMs (ensuring compatibility)
- optiCLOUD : adjusted default broker address
- optiCLOUD : allowing for simple plain channel name specification
Fixed
- improved documentation
- batMON : flash parameter reproduction
- batMON : inoperative state upon failed firmware version query
- fmproducer : measurement restart crashes
- GPS : module shutdown issues
- ModBus : improved stability
- MVB : measurement restart crashes
- optiCLOUD : MQTT client construction
- optiCLOUD : shared attribute request mechanism
- optiCLOUD : error message on failed RPC topic subscription
- System Infos : reading combined CPU usage for all CPUs
- System Infos : CAN port naming issues
[2.4.1] - 2023-04-13
Added
- GPS : simple plausibility check of GPS speed over ground
- Odometer : NEW offset parameter
Changed
- GPS : GPSD reconnect tries and GPSD waiting timeout cycles
- GPS : Reporting first received GPS sentence
- GPS : Rebooting upon unsuccessful GPSD restart retry
Fixed
- GPS : GPSD waiting timeout upon reconnect
- Odometer : checksum calculation
- Odometer : issues with channel buffer size
- Odometer : cleaned up logging
[2.4] - 2023-03-16
Added
- CAN-Bus : call-interface function write for sending CAN messages
- DBC : NEW CAN multiplex support
- Geofencing : MD documentation
- Geofencing : polygon support
- GPS : location and status notifications (in case of a GPSD connection)
- Odometer : MD documentation
- optiCLOUD : logging MQTT build and runtime library information
- optiCLOUD : channel-specific parameter minimumSendIntervalMs
- optiCLOUD : channel for MQTT upstream traffic amount estimation
- optiCLOUD : logging first MQTT message transmission on reconnect and error
- OSF Writer : NEW refreshIntervalMs configuration parameter for consumer-based sample rewrite
- OSF Writer : channel for OSF data volume amount estimation
- SCPI : Added UPTIME:SET action
- smartIO MVB : configuration parameter programFileString for including base64 encoded FPGA programs
- smartIO MVB : configuration parameter logEnabled
- smartIO MVB : logging first MVB frame arrival upon connection and reconnection
- smartIO MVB : dispatching MVB function codes MVB MASTERSHIP (0x08), MVB GENERAL EVENT (0x09) and MVB DEVICE STATUS (0x0F)
- System Infos : channel for CPU load per thread information
- System Infos : channels for WWAN upstream and downstream traffic amount estimation
- Uptime : NEW call-interface function setCounter (used e.g. via SCPI action UPTIME:SET)
Changed
- batMON : running upon current flash parameters if invalid JSON configuration parameters are specified
- DBC : combined handling of channelPrefix and NEW namespace parameters
- fmproducer : combined handling of channelPrefix and NEW namespace parameters
- Geofencing : default location id value
- MVB : combined handling of channelPrefix and NEW namespace parameters
- Odometer : adjusted default channel names and naming parameters
- optiCLOUD : sending additional last consumed sample before value change when needed
- optiCLOUD : renamed configuration parameter reproductionTimeoutMs to refreshIntervalMs (ensuring compatibility)
- optiCLOUD : removed configuration parameter brokerClientId
- optiCLOUD : augmenting default clientId by instance index when multiple modules are instantiated
- OSF Writer : writing additional trusted sample before value change when needed
- SCPI : writing multi-sample OSF data blocks within SCPI Live View (reducing data amount)
- smartIO MVB : NEW enabling MVB port and message filtering when in dispatching mode
- smartIO MVB : deactivated via configuration options portFilterDisabled and messageFilterDisabled
- smartIO MVB : disabled additional module-specific MVB frame and error log, removing ancient log files
- Uptime : renamed configuration parameter counterChannel to outputChannel
- Uptime : removed configuration parameter counterVariable (now set to outputChannel name)
Fixed
- CAN-Bus : removed unneeded reproduction parameter from demo configurations
- DBC : improved performance
- Geofencing : checking for valid geofence id
- Geofencing : cleaned up logging
- GPS : GPSD server reconnect mechanism
- ModBus : Added slaveId parameter for readWriteSequence call-interface function
- Odometer : issues with channel namespace separator
- Odometer : module destruction issues
- Odometer : added missing data reduction
- optiCLOUD : fixed reconnect and connection loss detection issues
- optiCLOUD : refactored and simplified consumption mechanism internals
- optiCLOUD : refactored and simplified MQTT message transmission mechanism internals
- optiCLOUD : removed unneeded samplesPerConsume configuration parameter
- optiCLOUD : fixed send-on-change-only behavior
- optiCLOUD : renamed MQTT client logging category for easier identification
- optiCLOUD : fixed SSL server verification issues when RTC was unsynchronized initially
- optiCLOUD : fixed blocking issues within SSL verification
- optiCLOUD : improved robustness in subscribing shared attributes and RPC request topics
- OSF Writer : refactored and simplified consumption mechanism internals
- OSF Writer : fixed writing empty multi-sample OSF data blocks
- SCPI : interface unblocking upon unsuccessful statemachine transition
- SCPI : fixed SYSTEM:VERSION:MINOR query for patched versions
- smartIO MVB : NEW smartIO restarting behavior upon MVB End-Of-Stream
- smartIO MVB : NEW configuration parameter eosRestartTimeoutMs (default 60s)
- smartIO MVB : NEW restarting on connection loss ONLY
- smartIO MVB : improved smartIO MVB library logging behavior upon restart
- smartIO MVB : fixed log file splitting within module-specific logging mechanism
- smartIO MVB : fixed default log file prefix within module-specific logging mechanism
- smartIO MVB : removed artifical restriction on log file count within module-specific logging mechanism
- System Infos : fixed stability issues
- Uptime : refactored and simplified consumption mechanism internals
- Uptime : now using trigger channel timestampes for counter channel samples
- Uptime : ensuring compatibility with configuration parameter counterChannel
[2.3.1] - 2022-12-10
Added
- batMON : NEW support for firmwares sending delayed ACK CAN frames
- batMON : NEW voltageDropDelayTime config parameter (for FW>=2 and PIC FW>=2)
- batMON : NEW batMON status channel
- batMON : NEW call-interface for shutdown-locking (used e.g. with the SMS module)
Changed
- batMON : NEW shutdown procedure SYSTEM:POWER:HALT (for smartMINI and smartRAIL systems with DeviceManager >= 20.2)
- batMON : writing firmware versions to omVersions INI file
- batMON : setting smartIO batMON RTC only once (and optionally to 0ns since epoch when not synced)
- batMON : integrated shutdown extension mechanism into new shutdown-locking mechanis
Fixed
- batMON : behavior on short voltage drops
- batMON : using CAN timestamps for diagnostics channels
- batMON : shutdown time configuration now wrt the internal offset
- batMON : initialization of diagnostics channels
- batMON : CAN frame data formatting within diagnostics output (now HEX encoded)
- batMON : removed redundant shutdown intialization via CAN command
[2.3] - 2022-08-11
Added
- batMON : configuration error status channel
- CAN-Bus : sample config for writing raw CAN data byte arrays to OSF file
- Ecowitt : NEW module
- Geofencing : channel representing the geofencing config JSON object
- Geofencing : config attributes for radius scaling and offsetting
- GPS : NEW seemless migration mechanism from serail (aka legacy) GPS modules to gpsd backend based
- ModBus : option enableInternalDataReduction (default==false)
- ModBus : Workload channel
- OSF Writer : tag and namespacesep attributes within OSF header
- OSF Writer : shifting the last (aka ancient) sample for channels with no production and setting its timestamp as a channel attribute
- SCPI : Added version queries
- SCPI : Added TIMEOUT and TIMEOUT? actions and queries for the execution timeout
- SCPI : Added migration mechanism for internal and external device specific configurations
- SCPI : Added CONFIG:GET? and CONFIG:SET queries for the persistent configuration
- System Infos : NEW module for obtaining system information
- System Infos : Added Board temperature
- System Infos : Added Mobile network traffic information
Changed
- general : introduced standardized default channel names
- general : added English MD documentation files
- general : added configuration examples
- general : improved logging messages
- batMON : NEW aynchronous configuration mechanism
- fmproducer : simplified channel configuration utilizing default values
- fmproducer : Filter chain based data reduction
- Geofencing : checking for valid GPS signal
- Geofencing : adjusted default channel names and naming parameters
- MVB : simplified channel configuration utilizing default values
- MVB : Filter chain based data reduction
- optiCLOUD : timestamping of telemetry when clock is synced
- optiCLOUD : auto-splitting of GPS location channels
- optiCLOUD : case-insensitive channel name specification
- optiCLOUD : added ignore config option for excluding channels
- OSF Writer : implemented zero-parameter configuration
- OSF Writer : case-insensitive channel name specification
- System Infos : Filter chain based data reduction
- System Infos : using NTP UDP communication for checking the clock synchronization state (Yocto 4 only)
- System Infos : improved configuration examples within MD documentation files
Fixed
- general : configuration schemas
- fmproducer : Fixed LONG INT data extraction
- fmproducer : Support for key-independent messages
- Geofencing : added missing data reduction
- Geofencing : cleaned up metadata
- Geofencing : fixed spelling issues
- Geofencing : removed invalid trip types from ipd list
- Geofencing : cleaned up logging
- GPS : simplified GPS NMEA device configuration
- ModBus : Advanced ModBus Auto-Address improvements
- MVB : Fixed LONG INT data extraction
- optiCLOUD : Removed additional data reduction, fixing missing data transmission
- optiCLOUD : Fixed crash on invalid broker address
- optiCLOUD : Removed internal message queueing
- optiCLOUD : Fixed consumption mechanism on overflow
- OSF Writer : Fixed trusted sample consumption
- OSF Writer : Fixed process value (PV) handling
- OSF Writer : Fixed consumption mechanism on overflow
- OSF Writer : Renamed ancient utc parameter
- SCPI : Fixed compound statement execution behavior
- SCPI : Fixed start, stop and restart transitions (esp. on external configuration change)
- SCPI : Fixed CONFIG:SET behavior (esp. wrt. configuration overlays)
- Uptime : moved persisten file backup to external partition
- Uptime : Migrated counter channels to timeserieses
Deprecated
- notifier : DEPRECATED module
- candbc : DEPRECATED module (use canbus and dbc instead)
[2.2] - 2022-03-25
Added
- Module Change Logs
- NEW Versioning scheme : distinguishing between STABLE, UNSTABLE and EXPERIMENTAL releases
- batMON : Spike filter for Supply Voltage, Current and MOSFET Temperature
- SysInfos : NEW System Info module providing device specific information
- Module specific Change Logs
- SCPI : Queries for Documentation and Change Log retrieval
Fixed
- SCPI : IDN? query
- SCPI : enabled restart within Ready state
- calc, CAN DBC, DBC, smartCALC : potential memory leaks on data reduction filter destruction
- GPS : checking for valid altitude
- ModBus : module shutdown
- OSF writer : disabled writing invalid samples
Changed
- SCPI : disabled schema validation within CONFIG:SET action
[2.1] - 2022-03-10
Added
- Module documentation files (MD)
- OSF writer : including latest sample within every newly generated OSF file
- GPS : NMEA parser error reporting
Fixed
- smartmvb : default log file settings
- GPS : configuration and communication mechanisms
- GPS, optiCLOUD : lat/lon/alt precision within optiCLOUD dashboard transmission
- uptime counter : fixed crash on non-existing trigger channel
- optiCLOUD : Byte Array data transmission
Changed
- SCPI : Revision of SCPI interface (??? TODO: describe what is changed !!!)
- optiCLOUD : non-string data transmission to JSON standard
[0.174] - 2022-02-09
Changed
- SCPI : Revision of SCPI interface
[0.172] - 2022-02-03
Changed
- (classic) MVB : duagon D017M driver removed
[0.171] - 2022-02-01
Added
- Robust reading of configuration and DBC content (autom. removal of '\r')
Fixed:
- Bug fixes data reduction filter
[0.167] - 2022-01-31
Added
- candbc, dbc : advanced data reduction
- smartcalc : new calculation module
Changed:
ModBus : removal BEKO Log specific HW Init
[0.165] - 2022-01-07
Added
- batMON : Data
- gpsd : New gpsd client module
- Completion of Cmake support
[0.164] - 2021-12-17
Added
- GPS/SCPI: New diagnostic functions Location/Date and log outputs
- Geofencing: additional parameters
Changed:
- Serialbus: cleanup
Fixed:
- smartIO MVB module: Error corrections
- OSF_UDP_Streamer: bugfix
- Odometer: fixed parameter handling
[0.161] - 2021-12-15
Added
- Improvements in smartCORE log output
- Provision of GPS information
- in the header section of OSF files
- via the SCPI interface
- via the smartCORE call interface
Fixed:
- opticloud plugin:
- Bugfix regarding empty credentials for the dashboard
[0.157] - 2021-12-14
Added
- Provision SIM card number / mobile signal strength
- opticloud plugin:
- Ability to use device specific credentials for dashboard
- Use of device serial number as default credentials for dashboard
Changed:
- scpi plugin:
- Rework
Fixed:
-
opticloud plugin:
- Reconnect mechanism
- SSL server verification
-
smartmvb plugin:
- Bug fixing
[0.139] - 2021-10-21
Changed:
- smartmvb plugin:
- Rework