- ThingsBoard CE v3.3.4.1 (March 22, 2022)
- ThingsBoard CE v3.3.4 (March 11, 2022)
- ThingsBoard CE v3.3.3 (January 27, 2022)
- ThingsBoard CE v3.3.2 (November 11, 2021)
- ThingsBoard CE v3.3.1 (September 3, 2021)
- ThingsBoard CE v3.3 (August 13, 2021)
ThingsBoard CE v3.3.4.1 (March 22, 2022)
Hot fix release with the following bug fixes:
- UI:
- Fix assets page permissions for customer;
ThingsBoard CE v3.3.4 (March 11, 2022)
Minor release with the following improvements and bug fixes:
Improvements
- Core:
- #6024 ThingsBoard Edge Community Edition support;
- #6056 Handling of PartitionChangeEvent in DefaultTbApiUsageStateService is synchronous;
- #6139 Refactoring validators - moved them to a separate classes;
- #6146 Edge - device profile is not removed from edge in case of removal from cloud;
- Performance improvements to launch sequence for environments with 1000s of Tenants;
- Performance improvement to insert of event entities. Batch insert implemented;
- Device State Service improvements and race condition fix;
- UI:
- Transport:
Bug Fixes
- Core & Rule Engine:
- #5991 Can delete device profile referenced by OTA update package;
- #6122 Support null values in TbMsgMetaData;
- #6132 Create Alarm rule node - Propagate To Tenant doesn’t work;
- #6174 Automatic conversion of rule chain metadata for compatibility with 3.3.2;
- #5996 Problems with LwM2M device profile, created during bulk import;
- #6204 Customer alarm permission checker fix;
- #6212 Fix unresolved dynamic values on API request;
- Update rule nodes configuration UI: Fix required message for ‘Period key value’ field of ‘calculate delta’ rule node;
- UI:
- #5975 Widget Development plugins loading order;
- #6022 Alarms table widget allows alarms to be cleared when “Allow alarms clear” is disabled;
- #6015 Improvement map control button tooltip; fix incorrect updated marker/polygon when editing;
- #5697 Functionality to decode Base64 values;
- #6092 Image map does not load image updates when initialized with empty image;
- #6123 Fixed edit action on Device Admin Table;
- #6127 Edit firmware dialog does not use default OTA package type;
- Map widgets - Fixed auto-zoom in edit mode;
- Fix trip animation widget - remove loading section after data retrieved;
- Fix time-window panel form validation - disable aggregation limit check when aggregation is not none;
- Transport:
- #6025 SNMP: Application fails to start because of SNMP transport initialization error;
- #6048 LwM2M: sending shared attributes after sleeping;
- #6050 LwM2M: fixed read/observe “dataRead” object 19;
- #6054 LwM2M: fixed “No value present”
- #6058 LwM2M: improved integration tests stability;
- #6118 LwM2M: Make getTasks in LwM2MBootstrapConfigStoreTaskProvider thread safe;
ThingsBoard CE v3.3.3 (January 27, 2022)
Minor release with the following improvements and bug fixes:
Improvements
- Core:
- Alarm Query performance improvements;
- Multi-root relation queries;
- Ability to configure default null ordering in SQL requests;
- REST API to fetch TB application version;
- Do not persist empty stats to reducing event table size and disk IOPS;
- Minor improvements to the thingsboard.yml comments;
- Add password policy for white-spaces;
- Notify IoT gateway about delete or rename of the device;
- #5200 ‘IN’ and ‘NOT IN’ conditions for the dashboard / alarm rule filters;
- #5749 Queue factories;
- #5760 SQL and TS batch thread count 3 for better hash distribution;
- #5814 API to clear events using filter;
- Rule Engine:
- Support of nested rule-chains with multiple outputs;
- #5569 Ability to save time-series data without update of the latest values. Useful for performance improvements in case on hybrid DB setup;
- Reduce CPU overhead for versions with in-memory cache;
- Environment variable to configure in-memory cache;
- #5843 Device actor session inactivity performance + memory footprint optimizations;
- #5751 Transactional deletion of device and proper cache eviction
- #5550 Upgrade enrichment attributes rule node;
- Misc performance improvements: immutable structures, pre-defined protobuf objects, etc;
- #5865 Added functionality to support 3.3.0 edge version rule chains;
- #5762 Suffix for the “clientId” param in the MQTT rule node;
- #5821 Add ignoreMetadataTs to ‘save timeseries’ rule node;
- #5889 Reduced number of scheduled messages for session timeout;
- #5921 Propagate alarms to Customer or Tenant without relations;
- #5926 Use message timestamp as alarm start timestamp in the ‘create alarm’ rule node;
- #5687 Self-intersecting polygons, polygons with holes, multiple polygons support;
- UI:
- Migration to Angular 12;
- Widget to embed different dashboard state;
- Ability to embed dashboard states inside markdown widget;
- #5942 Add script to generate data structures for custom widgets;
- #5797 Separate pages for entity details;
- #5770 Editor of markers and polygons in maps widgets;
- #5757 Improvement of multiple attribute widget;
- #5629 Widget to display Persistent RPC calls;
- #5856 Persistent page link for entities pages;
- Create nested rule chain from the selected region in the rule chain editor;
- Add tooltip offset settings for map widgets;
- #5655 Hide page size option on mobile view;
- #5772 Show legend settings in time-series and latest widgets only;
- #5795 Disable column sort if enable post-processing function;
- #5876 Image map resize calculates center position correctly;
- #5882 New map widget settings: “Disable zoom control”;
- #5910 Added additional condition to define showTitleIcon;
- Transport:
- LwM2M:
- Ability to define network configuration;
- #5930 Updated Eclipse Leshan version to 2.0.0-M5;
- Support of Base64 format to define client keys in RPK and X509 mode;
- Introduce support of new commands: Read-Composite, Write-Composite. Multiple-Instance Resources Read and Write;
- Introduce support of new content formats: SenML JSON, SenML CBOR;
- Improvements to configuration of Bootstrap behavior via Device Profile;
- Bootstrap server now supports: Read, Discover, Write, Delete commands;
- CoAP:
- #5930 Updated Californium version to 3.0.0;
- SNMP:
- Add Redis config for SNMP transport;
- MQTT:
- [5875] IP Rate limits for MQTT;
- LwM2M:
- Security:
- Update version of log4j-core, log4j-api and log4j-to-slf4j;
- Ability to limit alarm queries invocation count;
- #5823 Add NO XSS validation for names of rule nodes;
- Build scripts:
- Support of linux/arm64 docker containers;
- SQL tests are now running on real PostgreSQL instead of HSQL;
- Update grpc and netty versions to proper handle native windows ssl libraries;
Bug fixes
- Core & Rule Engine:
- Upgrade of device profiles from 3.2.2;
- #5492 Conversion of double values in WS subscriptions;
- #5753 Unsorted page link replaced with sort by id ASC;
- #5744 remediation for log4shell CVE-2021-45105;
- Link to Wiki page about UUID in REST API documentation;
- Notification about deleted attributes in the cluster mode;
- #5750 Notification about deleted time-series records;
- #5657 Fix search API Swagger description;
- #5793 Added functionality to handle pong responses on web sockets;
- #5822 Do not update WS last activity in case of general response;
- Removing old OTA tag if new tag is empty during OTA scheduling;
- #5869 Don’t allow system administrator to delete himself;
- #5864 Fixed aggregation by timezone in Timescale;
- Ignore no longer valid messages when processing strategy is completed or timed-out;
- #5557 Fix NPE in case of incorrect partitioning name parameter;
- #5787 Removed incorrect statistics calculation for regularQueryInvocationCnt/regularQueryInvocationTime;
- #5659 Add rpc response error when retry attempts ended;
- #5852 Support of double type in ‘save to custom table’ rule node;
- Prevent click actions and popup open while dragging the marker in map widgets.
- UI:
- #5755 Support of rectangles with cut area;
- Layout for Firefox;
- Open dashboard state in separate dialog showed a blank dialog;
- Right layout and state name propagation in mobile app;
- Resolve alias filter for query alias types;
- JSON form default values handling;
- #5529 Chinese translation for the API usage;
- #5778 Filter forms: constant type and boolean value;
- #5805 Help link for OTA updates;
- #5813 Cancel event on color picker;
- #5832 Problematic letters for different languages;
- #5872 Error in device-profile-autocomplete and tenant-profile-autocomplete in clear;
- #5879 Prevent saving of invalid form in the multiple input widget;
- #5883 Fixed OTA package autocomplete;
- #5913 Date Range Navigator: the calendar when selecting dates should be horizontal;
- #5923 Asset models added to public api;
- #5928 Fixed help link URL for the ‘Add user’ dialog;
- #5931 The timestamp of the exception in the Rule Engine Statistics dashboard is wrong;
- #5948 Change “snpm” directory to “snmp”;
- Transport:
- LwM2M:
- MQTT:
- Rest Client:
- #5566 Fixed widget type based methods in rest client;
- Edge:
- #5922 Minor fixes and code review comments;
- Build scripts:
- Integration test lifecycle;
- #5672 CASSANDRA_KEYSPACE_NAME ignored during install;
ThingsBoard CE v3.3.2 (November 11, 2021)
Minor release with the following improvements and bug fixes:
Improvements
- Core:
- REST API documentation:
- Described entities and methods;
- Authorize via user name and password;
- Latest version of Swagger;
- Help pages for user-defined JS functions:
- Described input parameters;
- Examples for various use cases;
- Help content is loaded from the external project;
- Ability to configure the external help url using ‘UI_HELP_BASE_URL’ parameter;
- Performance of SQL queries:
- Protection from an infinite recursion;
- Ability to configure max levels of recursion using ‘SQL_RELATIONS_MAX_LEVEL’ parameter;
- Timeout for all SQL queries to survive enormous heavy query using ‘JAVAX_PERSISTENCE_QUERY_TIMEOUT’ parameter;
- Bulk import improved and moved to back-end;
- Rule chains import/export improved;
- Separate buffered rate executors for Cassandra read and write queries;
- Entities text search by ‘substring’ instead of ‘startsWith’;
- Improve REST API error response handling;
- Added fields length validation;
- REST API documentation:
- Security:
- Support of SSL credentials configuration to setup HTTPS without SSL termination on the load balancer.
- Support of PEM format for certificates;
- Unified transport SSL credentials;
- Transport:
- HTTP/2 configuration support;
- Added out-of-the-box support for Efento water-meter devices;
- MQTT backward compatibility adaptor to support both JSON and Protobuf during firmware upgrade;
- Rule Engine:
- Add option for HTTP client rule node to not create any message body;
- Optimize retry strategy to correctly take into account all available settings: ‘retryFailed’, ‘retryTimeout’ and ‘retrySuccessful;
- Fixed parsing of updated polygon coordinates in rule engine;
- Fixed duplication of MQTT packets in the MQTT Rule Node;
- UI:
- New widget settings layout;
- Protobuf editor for MQTT device transport configuration
- QR code widget. Added helps for qrcode and markdown widgets;
- Updated dependencies: lodash and coreJS;
- Save translated title as ‘translatedDashboardTitle’ variable;
- Multiple Attributes widget: added select type for input;
- Optional data sources handling;
- Update ‘zh_CN’ locale;
- Added no data display message to entities and alarm tables;
- Added “toastTargetId” of widget-container to the “widgetContext”;
- Added argument ‘updatedData’ in function ‘updateNode’ in nav-tree component;
- Style of the mqtt transport settings in the device profile;
- Build scripts:
- K8S deployment instructions and scripts for AWS EKS;
- Cache cleanup added to the upgrade scripts;
- Logging of the progress during upgrade;
Bug fixes
- Core:
- Fixed security check in the ‘getPersistedRpcByDevice’ api call;
- Fixed Class Loader(CL) issues in Fork Join Pool after Java 11 migration. Replaced system CL with current thread CL.
- Fixed default ordering in entity queries;
- Fixed concurrency exception when deleting relation
- Can not use isolated tenant profiles in monolith setup;
- Fixed rest client json converter to parse json array;
- Set serialVersionUID for cached entity classes: Device and Tenant Profile, etc;
- Bump hsqldb version to 2.6.1 to fix sql timeout issues;
- Rule Engine:
- Default alarm details script function may cause infinite metadata growth;
- Deprecation of ‘delay’ rule node;
- Fixed NPE in the send rpc request node;
- Fix upgrade of device profile alarm rules from version 3.2.2;
- Corrected current relations deletion in the create relations rule node;
- Transport:
- LwM2M:
- Fix NPE in case model is null;
- Clear logging;
- Process ‘device deleted’ event from core;
- Process ‘update credentials’ event from core;
- MQTT:
- Fixed log typos in MqttTransportHandler;
- COAP:
- Fixed acknowledgement of CoAP requests;
- LwM2M:
- UI:
- Fixed camera input widget if entity is empty;
- Fixed duplicated requests on aliases entity autocomplete;
- Fixed map functions. Update map helps.
- Fixed using boundary values for digital gauge widget;
- Fixed gauge widgets incorrect display after some time of work;
- Fixed display toast in fullscreen dashboard mode;
- Fixed ‘copy text’ in markdown to work in plain HTTP;
- Fixed not load advanced settings in widget;
- Fixed Trip animation: fixed calculate start/endpoint; fixed update current position;
- Remove invalid JSON form fields in the time series table;
- Set pagination to the first page after update in table widgets;
- Not correct index in map-utils ‘parseData’ function;
ThingsBoard CE v3.3.1 (September 3, 2021)
Minor release with the following improvements and bug fixes:
Improvements
- Core:
- Added sequential RPC calls support;
- Edge functionality enabled by default;
- Additional thread pools naming (logging);
- Ability to override spring MVC async request-timeout property (avoid REST API timeouts)
- Transport:
- Added support for UTF-8 characters in MQTT credential Client ID;
- Improved Session Activity reporting - short-lived sessions support;
- LwM2M: advanced tracking of sent requests
- UI:
- New Markdown/HTML widget;
- Chart widgets: custom comparison intervals for data key;
- Chart widgets: tooltips visibility configuration;
- Added copy user id button within user details;
- Multiple attributes widget: added patterns support for widget title;
- Input widgets: added required field option;
- Added clear all filters option in events filter panel;
- Rule nodes forms: added show/hide password toggle to credentials fields of external rule nodes;
- New rxjs operators available in widget context (switchMap, catchError);
- Custom translations support for alarm type and alarm details in device profile alarm rules
- Build scripts:
- Improved maven artifacts dependency management
Bug fixes
- Core:
- Added validation and replacement of Queue names in the Device profile;
- Value of property SECURITY_USER_LOGIN_CASE_SENSITIVE is considered on password reset request;
- Corrected handling unique device name constraint violation for save device transaction
- Rule Engine:
- Fixed device profile update handling by rule node — new telemetry keys from device profile were ignored;
- Fixed NPE while tell next in Rule chain actor message processor
- UI:
- Hierarchy widget: process entity label from dashboard state;
- Fixed link to Resources library in SysAdmin home page;
- Fixed full-screen mode toggle in JSON forms;
- Improved queue name selector in device profile form;
- Fixed Show on widget button behavior: always display default widgets bundle;
- MQTT rule node form: credentials fields now optional;
- Global loading indication: added considering of canceled requests
ThingsBoard CE v3.3 (August 13, 2021)
Major release which contains 2126 commits and 1668 changed files.
Major Improvements
- Core:
- Interface to provision and communicate with ThingsBoard Edge;
- Firmware and Software over-the-air updates (FOTA & SOTA);
- Persistent RPC calls;
- API limits for number of created alarms;
- Alarm removal by TTL;
- Add Apple OAuth2 provider;
- Rule Engine:
- Non-blocking subscribe method to prevent locks on repartition event;
- Significant performance improvement of remote js-executor;
- Per-customer and system level api usage stats;
- Transports:
- LwM2M transport implementation;
- SNMP transport implementation;
- CoAP DTLS support;
- PSM and eDRX support for CoAP and LwM2M transports;
- Support of FOTA and SOTA updates for MQTT, HTTP, CoAP and LwM2M transports;
- Ability to launch MQTT and MQTTS simultaneously in one transport instance;
- Explicit fields presence support for protobuf payloads;
- Content format support for CoAP resources;
-
UI:
- Ability to manage resource library;
- Ability to manage OTA packages;
- Ability to manage Edge instances;
- Event filters for Debug, Error, Stats and other event types;
- FOTA dashboard;
- Update to Angular 11;
- Performance improvement: switched change detection strategy to OnPush;
- Performance improvement: moved widget header to widget container;
- QR Code widget
-
Mobile App support:
- Support of mobile widget actions: Scan QR code, take picture/photo, open map directions, etc;
- Support for dashboards in the mobile app;
- Ability to hide dashboard toolbar settings. Improve dashboard setting dialog. Handle dashboard right layout toggle in the mobile app;
- Ability to configure icons for dashboard and device profile entities.
- Ability to specify the mobile dashboard as an alarm details view for mobile application;
- Ability to control visibility and order of dashboards in the mobile application.
- Ability to hide widgets in the mobile mode.
Minor Improvements
-
Core:
- Performance improvement and bug fix in the device state service which impacts active/inactive device events calculation;
- Performance improvement for tenant state load;
- Performance improvement for the attributes cache;
- Performance improvement for querying events and cleanup of events;
- Performance improvement and memory management for DeviceActorMessageProcessor;
- Create assign/unassign device event when claiming/reclaiming device;
- Additional validation for entities to protect from XSS;
- Refactor predicate queries building;
- Ignore empty search conditions for filters;
- Ignore default value for filters with constant key type;
- Make alarm condition serializable;
- Ability to define consumer properties per topic;
- Improvement thread pool naming;
- New alarms API: getAllAlarms and getCustomerAlarms;
- “alarmConditionRepeats” and “alarmConditionDuration” metadata fields of alarms generated via alarm rules;
- Reset of JWT tokens when user changes password;
- Sync kafka commit to improve performance;
- Statistics collection using Prometheus;
- Method to find dashboard by name and tenant ID;
- Kafka client version set to 2.8.0; Optimized kafka producer/consumer parameters;
- Spring security version set to 5.4.4;
- Remove outdated versions of Netty;
- Add logging of error msg to easily identify root cause of failed logins;
- Add module cluster-api and used it in rule engine and other services;
- callback execution in the device state service;
- Transaction aware cache to synchronize cache put/evict operations with ongoing Spring-managed transactions;
- Transports:
- Support of server-side RPC requests via protobuf for CoAP and MQTT;
- Improvements to data converter to support big decimal values;
- Remove redundant lock on device creating for provisioning feature;
- Ability to queue configurable number of uplink MQTT messages while processing connect request;
- Correct close and cleanup of the MQTT session context;
- Rule Engine:
- Add transaction support to save/update/delete of rule chains.
- Dynamic alarm severity support in Create Alarm rule node;
- QueueController returns up to date list from thingsboard.yml;
- Move the message decoding out of the lock to reduce locking time;
- Queue check on the very first poll in the lifecycle before any subscribe method calls;
- Not going to sleep after pull if time left less than 1 millisecond.
- Ability to use HTML templates in the send email node;
- UI:
- Improvement of time window visualization in the mobile view;
- JSON input widget;
- Ability to configure dashboard logo;
- Improvement to query params handling;
- Ability to update dashboard image from screenshot;
- ‘Use entity lable in tab name’ checkbox in timeseries table;
- Entity info in widget actions as ‘additionalParams’ for entities table widget;
- Update to logic for ‘Set entity from widget’ in static widget;
- Move Transport type selector to transport configuration step in the device wizard;
- Ability to copy-paste content from widget;
- Cache cellContent, cellStyle, rowStyle in entity tables widget;
- Disable scroll zooming in the image map;
- Improvement to exception handling to exclude output like “object Object”;
- Improvement to chips after blur input;
- Improvement explanation of what’s accepted in entity alias “Entity Name”;
- Update to Czech translation;
- Ability to toggle show password in the input field of login form;
- focus for entity-key-list component after blur this component;
Bug Fixes
-
Core:
- Remove ServiceId from Kafka consumer GroupId;
- Cassandra prepared Statement initialization lock;
- Restore old Nashorn sandbox version until bug in library is fixed;
- Remove duplicate call of onData function for websocket subscriptions;
- Transaction management for component descriptors and events;
- Potential outdated server info on recalculatePartitions;
- Performance fix of alarm query based on pg_stat analysis;
- Performance fix of device count query;
- Update the ts_kv_latest table only if the value that arrives has the newer timestamp;
- Added cache cleanup when entity is renamed;
- org.apache.kafka.common.KafkaException: javax.security.auth.login.LoginException;
- Rest Api Call Node fixes: added default header Content-Type
- Postgresql driver version upgrade to 42.2.20 to fix connection issue with Postgres 11;
- Drop partition function in install script and added fix to upgrade script
- Configuration parameter name for Compression Type;
- Message order for Gateway and LwM2M transports in the core consumer;
- Duplication of sessions in the device actor cache;
- Authorization and password reset vulnerability;
- Entity view selection in relation query alias;
- Typo in equals method of widget bundle class;
- SerializationFailedException during device claiming;
- Dependency vulnerabilities;
- Spring security issue;
- Create device notification in DefaultTransportApiService;
-
UI:
- Updated device profiles table after added new profiles
- Access is forbidden error in the system admin change profile;
- Alarm rules validation when use changes key or value types;
- Switch control widget to update state after rpc call response;
- Widget type filter in the widgets selector;
- Title when make rule chain root in Chinese;
- Resolving of the assets page;
- Multiple datasource processing data in map widgets;
- Incorrect calculate minIntervalLimit;
- Some typos in rus/ukr translations;
- HTML action of identical widgets on the dashboard;
- Error message in Led Indicator;
- Entity autocomplete;
- Thresholds appearing when threshold attribute is not set in flot widgets;
- HttpCleint and DrugDrop is now accessible for widget extensions to avoid stackoverflow when importing external modules;
- Device credentials component validation;
- State controller to not update state when stateId is not changed;
- New dashboard settings in Safari;
- Typos in widgets descriptions;
- Do not “uppercase” unit title of digital gauges;
- Entities count datasource label overwriting, configured label was never displayed;
- Entity node level in the entity hierarchy widget;
- Applying default thresholds line width in the Bar Chart widget;
- Incorrect time window displaying;
- Displaying static widget configuration tabs, when configuration of advanced settings is empty;
- Not updated dashboard URL, after updated a current dashboard state;
- Tooltip in Map widget for Safari browser;
- Validation on removal of the alias that is used in the alarm widgets;
- Added missing help link in add device and add device-profile dialogs;
- Closing the main menu with the escape key;
- Clear password after save SMTP settings;
- Update of the device inactivity timeout attribute;
- Behaviour of ESC button while in main menu;
- StartTs and endTs in deleteEntityTimeseries;
-
Transports:
- Configuration of session cleanup;
- For statistics collection period;
- CoAP client can subscribe to attribute and rpc updates simultaneously;
- Removed unnecessary retain of PUBLISH message for QoS 2;
- Handling of duplicated read/observe requests for CoAP;
- Memory leak in GatewaySessionHandler by using weak hash map for locks;
- Rest Client:
- GetAlarms method;
- Removed redundant parameter for AlarmController, AlarmQuery and getAlarms;
- Reduced default log level;
- Include the limit value in the getTimeseries REST call;
-
Build/Installation scripts:
- JAVA_OPTS in K8S config maps to work with Java 11;
- Reference to the maven repositories;
- Updated HAProxy and Certbot version for docker-compose scripts;
- Update haproxy config. Enable HTTP/2;
- Upgrade Postgres to version 12 in the docker images;
- Logger template added for Top Rule Nodes by max execution time;
- Added prometheus-grafana monitoring to Docker scripts;
- Updated MSA read me file;
- Correct keystore file lookup from files instead of classpath;
- Update of os-maven-plugin version;
- Unique name for logs container in order to avoid container name conflicts;
- Improved black box tests;