Skip to main content

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, getInternalTemperature and getSupplyVoltage.
  • Siexpert (PREVIEW):
    • New plugin for reading Siemens expert files from Vectron locomotives.
  • smartCORE:
    • Module entries in smartcore.json and smartcore_dynamic.json accept 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.
  • TRDP:
    • New property trafficFilter: a list of port / groupAddress pairs, so one module instance can receive several multicast groups and ports.
    • New property joinGroup (per filter entry, default false): 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).
  • Batmon:
    • New property configurationErrorChannelName. The channel reports why a parameter set was rejected, e.g. VoltageAlwaysOnTooHigh (-3), WrongShutdownTime (2), OK (0).
  • Mav:
    • Country check: while the new optional boolean channel channelnameCountryCheck is true, data is only sent to the MÁV server when the country read from channelnameCurrentCountryCode (ISO 3166-1 alpha-2) matches the new targetCountryCode setting, compared case-insensitively. targetCountryCode defaults to HU; 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 configured sender at runtime and is transmitted as the SOAP Sender attribute.
    • New property channelnameHDOP: float input channel whose filtered value gates the locomotive start/stop event detection and is published as MAV.HdopFilt.
    • New property timezone (IANA time zone id, default Europe/Budapest) used to format the GPSTime field sent to the MÁV server.
    • New status value NO_SENDER (-6) on MAV.Status; the six existing values keep their numbers. All status values are now documented in the module description.
  • 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 modes M=, M+= and M*=.
    • 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 are json, ini, xml_attr and xml_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: nested nMax loops 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_Mode to batmon__PluginState. Installations that address the channel by name must either adapt or pin the old name via operatingModeChannelName.
    • 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. requestEnergySave is 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.
  • 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 separateEFFlag has been removed. Distinguishing 11-bit and 29-bit addressing is configured in the canbus module via keepEFFFlag (introduced in 2.10.1).
  • TRDP:
    • port is 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 #timezone macro.

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^2 returned 4 instead 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 name sRigth() 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 of unbalanced 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 Sender was transmitted when neither the sender setting nor the CustomerID channel supplied a value; the MÁV server rejects such requests. The case is now detected and reported as NO_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.
  • 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
  • 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 ANTIVALENT and ANTIVALENT2 as alias for a 2-bit unsigned integer.
  • Airpurifier:
    • A customised module for monitoring and controlling air filter units
  • Canbus:
    • The new property keepEFFFlag is used to pass the 2312^{31}-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 231=21474836482^{31} = 2147483648 in fmproducer.

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
    • #version macro 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 ReversedForMsbNumerics to EN61375_MVB
    • The EN61375_MVB schema 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.
  • smartCORE:
    • A new API class ChannelConsumer has been introduced to read smartCORE channels in a type-neutral manner. This simplifies and speeds up plugin development.
  • 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"
  • 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 2312^{31}-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}) ignored p## notation to select the feedback polynom
    • playback() 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
    • #property new attributes timeout=<val> and default=<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.
  • 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
  • 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: 1 enforces <bool> as image and channel datatype
    • "imageType": "bool" enforces "bitlength": 1 as "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/n did not start at a and did not check for range at first
    • timer(): syntax */n did 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 2162^{16} 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