All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.5.5 - 2024-09-05
- Runtime/UI: Ability to set up the RS-485 connection by full file reference. That allows it to bind the connection to the physical port, persistently through the reboots.
- Runtime/UI: Ability to view stdout log in control interface.
- Runtime: Improved the GSM state information handling for the UI.
- Runtime: Using Armbian_23.8.1_Orangepipcplus_jammy_current_6.1.47 image as a base now. Should fix the issue of losing GSM connection when device is rebooted with GSM USB stick inserted.
- UI: Correctly processing "unknown" status on GSM interface.
- UI: LWG-1 callibration UI bug fix.
0.5.4 - 2024-05-09
- UI: Manufacturing interface texts review.
- UI: Battery level was not displaying on 0% for LoraSens devices.
- UI: Interface was not updating after switching LWG-1 device on/off (perpetual spinner).
- Runtime: Flush FS cache after writing command file to the external USB stick.
0.5.3 - 2024-04-08
- Runtime: Config is backed up on changes. Config file write is an atomic operation now.
- Runtime: Temporary Modbus registers for LoraSens LWG-1 data with additional LoraSens related settings in config file.
- Tasks:
lorasens-logger
task to read and store information from LWG-1 (weight) and LTH-1 (temperature/humidity) sensors.
- Runtime: Background task logging LoraSens data incorrectly wrote loaded/unloaded counters.
- Runtime: Don't start Modbus TCP server if it's disabled in configuration (preventing SIGTERM errors).
- Runtime: Additional
opcb224l
fixes in config schema. - Runtime: Fixed an error while detecting USB device unplugging (RS-485 module).
0.5.2 - 2024-02-27
- Runtime: Added missing
opcb224l
support in config schema.
0.5.1 - 2024-02-23
- Runtime: IPKA master protocol support on RS-485.
- Runtime/UI: LTE USB modems basic support (currently only Huawei E353(3.se)).
- Runtime: Sometimes disconnection reslted in SIGPIPE error in Modbus TCP server.
- UI: In stream log ASCII was incorrectly decoded.
- UI: Debug connection log didn't display the direction of transfer (TX/RX) for messages that can't be parsed by highlighter.
- Runtime: RS-485 module now forcefully ends the receiving process after the buffer is full. This is important when there is a constant stream of data or noise is on the line.
0.5.0 - 2024-02-12
- Runtime: New OPCB-224L, supporting LoraSens protocol able to connect and read data from LoRa sensor devices.
- Runtime: LWG-1 weight sensor array device support.
- Runtime: Background task to log incoming LoraSens data from sensors.
- UI: Interface for managing connected LoraSens devices
- Runtime: API and internal procedures for managing authorized SSH keys.
- UI: Interface for managing authorized SSH keys on the device.
- Runtime: Reporting connectivity telemetrics to the external server for licensed devices. Can be disabled and configured in config file.
- UI: Hiding the private key on license picture on LAN/Internet page.
- UI: Increased the timeout for retrieving Wi-Fi list API request (sometimes Wi-Fi scanning can take more than 10s).
- UI: Link to changelog in the successful update notification.
- UI/Runtime: SD-card speed testing utility on the "control" page.
- Runtime: Enabling SPI interface for OPCB-224L automatically. Can be disabled in the config file.
- Runtime: Authorized root SSH key is only set once during the first boot.
- Runtime: Incorrect path was reported in log regarding restoring factory value in config.
- Runtime: In some cases, Node 20 process was taking 300% CPU because of Linux kernel's bug with uvlib. Using UV_USE_IO_URING=0 environment value now to fix the issue.
- UI: When the connection with VPN was lost, device was displaying VPN status as "unregistered".
0.4.0 - 2024-01-31
- Runtime: Runtime and API for running user-created tasks. Tasks are JS scripts that are executed in worker threads and running on background. OPCB provides helper library, allowing user tasks communicate with OPCB runtime via Redis/Sqlite. Tasks project is initialized in user folder from the template by API request. Tasks project includes tools to compile JS from TypeScript and a set of helper function to interact with other OPCB runtime modules.
- Runtime: Added Modbus library, allowing to easily encode/decode Modbus RTU/ASCII/TCP requests and responses. Useful for Modbus-related tasks.
- Runtime: Reporting
ttyUSB0
as available TTY if no interfaces were found, to provide a chance to set up TTY connection without an inserted USB device. - Runtime: Automatic filesystem check on boot. Helpful in cases when FS was corrupted due to power loss or incorrect shutdown. Can be disabled in config.
- Runtime: Updated NodeJS to v20.9.0.
- Runtime: Centralized schemas and sqlite procedures.
- Runtime: RS-485 port open error log message moved to debug log.
- UI: Since WiFi password is randomized and set after finalizing manufacture process, finalization UI doesn't attempt to connect browser to the API, and just displays a success message after receiving confirmation from API, losing the connection and waiting for 10s delay.
- UI: Displaying LAN/WiFi IP addresses as links in "Internet" section.
- UI: Additional information icons in form fields are now marked with blue color to accentuate the interactibility.
- UI: Displaying a list of connected command files in the footer.
- UI: Displaying username in the header for non-admin users.
- UI: Modbus TCP Server logs were not displayed properly.
- UI: Cloud actions (unbind and access from the cloud) are hidden when UI is proxied through cloud.
- UI: Fixed multiple "success" messages being displayed during firmware update process.
- Runtime: RS-485 TTY stop and parity bit option "1N" was not working.
- Runtime: RS-485 port was waiting forever to send a message if there is noise present on the TTY.
- UI: Message about firmware version update was displayed incorrectly after factory settings reset and also for newly manufactured devices.
- UI: Debug log interface was incorrectly resized for logs containing long lines.
- Runtime: Runtime failed with error if the list of TTYs, available Wi-Fi's or timezones was empty during processing.
- UI: Added non-caching headers to some static files (changelog, label) to fix the issue of displaying old version of the file after it was updated.
0.3.7 - 2023-11-09
- Runtime: WiFi password is automatically encoded in Base64 in configuration file.
- Runtime: Default "admin" user password and WiFi Access Point password are randomised during the manufacturing.
- Runtime: Printing default admin/AP password on the device label image.
- Runtime: Removed ttyS* interfaces from RS-485 interfaces list.
- Runtime: Internal refactoring of Redis/Sqlite communication code.
- Runtime: During the manufacturing testing, OPCB sends API authentication token to the testing server, instead of relying on default password to be known.
- Runtime: Incorrect WiFi mode information in
OPCB_INFO
command file.
0.3.6 - 2023-09-14
- Runtime: Remote tests during the manufacturing process.
- UI: Interface proxying through the Overvis server for the remote access.
- Runtime: Remote test server configuration changes.
0.3.5 - 2023-09-11
- Runtime: New command file: insert USB stick with the file named
SSH_AUTH_KEY
and a public SSH key inside it, this file will be added to/root/.ssh/authorized_keys
on the device. - Runtime: New command file: insert USB stick with the empty file named
OPCB_INFO
and wait 10 seconds. OPCB runtime will write basic information in that file in the JSON format. This information includes the device's IP address in the local network. - UI: After successful background update, notification is displayed after the next user login.
- UI: Disablable auto-scrolling in Modbus debug logs.
- Runtime: Automated manufacturing testing scaffolding and UI.
- Runtime: Wi-Fi connection is established on the background, to reduce the time of device's settings changing procedure.
- UI: Removed localhost IP address from the default value in the new Modbus TCP client creation form.
- Runtime: Reordering in OPCB Modbus registers list, also some value multipliers were changed. OPCB Modbus registers table is still not frozen, and will probably be changed in the future updates.
- Runtime: Code for the proxying the interface through the Overvis server, for the remote access from Overvis Cloud.
- UI: Increased all requests timeouts to improve the usability for environment with slow network connections.
- Runtime: Several small fixes in Linux management procedures.
- UI: Correctly displaying the debug log output for the case when several Modbus TCP requests are packed into one TCP packet.
- UI: Automatically reconnecting debug log Websocket on disconnection, displaying socket connection/disconnection messages in log.
- UI: Fixed the link to Overvis network for the device binded to the cloud.
- Runtime: RS-485 interfaces restarted on any settings change.
0.3.4 - 2023-07-11
- UI: Added ability to unbind device from the cloud account.
- Runtime: Communications API for OCP servers integration.
- Runtime: Vaious performance and speed optimisations in RS-485 module.
- Runtime: Performance and speed optimizations in Modbus TCP modules.
- UI: New RS-485 connection is set to "RTU Master" by default.
- UI: Log output performance optimization.
- Runtime: Some Modbus OPCB registers were incorrectly returning errors on read.
- Runtime: Restore identity sometimes failed with timeout error. Increased timeout.
- UI: Fixed page footer styling.
0.3.3 - 2023-06-28
- Runtime: Reporting runtime errors to Sentry.
- Runtime: Storing last executed runtime version to config file.
- Runtime: Subsystem to automatically migrate config and filesystem changes on start.
- UI: Added label display on the manufacturing page.
- Runtime: RS-485 time metrics logging and performance optimisations.
- UI: Request generator form now restrict incorrect numbers on input.
- Runtime: Reworked
opcb-runner
config schema. Specified defaults. - Runtime: Moved device label image to the user directory.
- Runtime: Fixed an issue where the RS-485 configuration was not fully synchronized.
- UI: UI was incorrectly displaying restart/reboot procedure counters.
- UI: Quick setup page was not redirecting to dashboard after submitting.
- UI: Log output optimizations. Temporarily restricted logs length to 1000 items, until proper performance fix is implemented.
- UI: Hex switch in request generator wasn't working correctly.
0.3.2 - 2023-06-20
- UI: Device name is now saved on input focus lose.
- Runtime: MAC was not updating during runtime, only after restart.
- Runtime: Runtime failed on start without internet connection, because
git fetch
command exited with error status code. - Runtime: Default config file should not contain any RS-485 connections.
- UI: Bug that was constantly refreshing error display component during the connection loss.
- UI: Quick setup was adding the
ttyS0
RS-485 device instead ofttyUSB0
. - UI: Expecting
Failed to fetch
error on all fetch requests. - UI: Wi-Fi password was not sent correctly to backend.
- UI: Increased timeout on Wi-Fi settings saving.
- UI: All dropdowns in forms were cut off by modal windows.
- UI: Quick setup page was sending multiple slow requests, merged them into one.
- UI: Increased timeout for all settings change requests.
- Runtime: Runtime failed on start without internet connection, because wireguard service couldn't be started.
0.3.1 - 2023-06-19
- UI: Redirection to the Quick Setup interface when accessing OPCB through Wi-Fi Access Point.
- UI: Additional information in the connection loss error messages.
- UI: Updated Next.JS to the latest version.
- UI: Updated Mantine UI to the latest version.
- UI: General clean-up of the UI code.
- Runtime: Automatically installing
iputils-ping
package instead of the default ping package. Since this package can receive the delay as a fractional value. - Runtime: Additional logging for debugging.
- UI: Copying Modbus log content to clipboard was broken.
- Runtime: Error while saving factory configuration.
- Runtime: Incorrect network mask was set for AP/station wifi which prevented the assignment of the IP address for the connected clients.
- UI: Manufacturing interface displayed the incorrect message about the device being already registered for the unregistered device.
- UI: Properly displaying errors on manufacturer's pages: restore / register.
0.3.0 - 2023-06-14
This is the initial version of the OPCB firmware. Version 0.2.0 was a pure C-based code that was rewritten from scratch in 0.3.0 release.
OPCB package in its current version supports the following:
- LAN connection.
- WiFi connection.
- RS-485 Modbus connection through TTY
- Modbus TCP client/server.
- Wireguard VPN connection.
- Communicating with OPCB using Modbus.
- HTTP UI + API.
- Simple Modbus debuging and logging UI tools.
- User accounts and authentication.
- Controlling execution (Linux) environment.
- Manufacturing UI for registration of the device in the cloud.
- Configuration is stored in JSON + Sqlite database.