v1.9.4 — October 2026
October 23, 2026
This release supports large rollouts from start to finish: every device has a lifecycle (registered, installed, retired), commissioning leaves a record, and new reports track the installation pace. Alarms gain notes with photos and a PDF of their history, and the platform now checks that commands sent to devices are actually carried out. It also brings new integrations and several API changes worth reviewing.
New features
Device lifecycle
Each device has a rollout state, independent of maintenance mode.
- States: Registered (added to the platform), Installed (mounted on site) and Retired (decommissioned, history kept). "Commissioned" and "in service" are not set by hand: they are derived from the commissioning test and from whether the device is currently reporting.
- Access: Manager → Devices → Devices → device → Details tab → Lifecycle section, with Mark as installed and Retire this device. Undoing an installation requires a reason.
- History: the Lifecycle history table shows date, transition, who made it and the reason.
- Bulk change: in the device list, with several devices selected, the Mark lifecycle button changes the state of all of them at once.
- Depots: in Manager → Facilities → Facility types, the Stock location (depot) checkbox marks stock locations. Their devices don't count in rollout figures even if they transmit.
- Devices that were already reporting from a field site start as Installed.
Rollout tracking: commissioning progress and throughput
Two new Manager reports to follow a rollout.
- Commissioning progress: installed versus target, in service versus installed, and sites commissioned per technician and per week. Parameters: date range, target and the number of hours used to decide whether a device is reporting.
- Commissioning throughput: commissioning pace per day, week and technician, with a projection to a target date. It can count working days only (on by default). Technicians are anonymized by default.
- Access: Manager → General Maintenance → reports.
On-site confirmation for commissioning
The commissioning test adds a technician confirmation and a history.
- Access: Manager → Devices → Devices → device → Details tab → Commissioning test section.
- Confirm on site: the technician confirms the output actually acted, since the platform only sees the device's acknowledgement.
- Commissioning records: a table with the date, who ran the test and the result (Successful, In progress or Failed), showing which part failed: command, on-site confirmation or notification.
Notes, photos and a PDF of each alarm's log
- Access: Monitor → Alarms → alarm → actions and Event log.
- Add note: adds a comment to the log without changing the alarm's state, including on resolved alarms.
- Download PDF: downloads a PDF with all of the alarm's transitions and notes.
- Photos: Add photos attaches up to 5 photos per note from the phone camera (JPEG, PNG or WebP up to 5 MB). They show as thumbnails in the log and in the PDF.
- Mobile: on narrow screens the view switches to a single column.
- Availability: requires the alarm lifecycle. Photos are also an add-on. Both available on request; contact support.
Alarm notices from all facilities
- Scope: the notification bell and pop-ups in Monitor report alarms from all of the client's facilities, not just the one on screen.
- Short alarms: alarms that open and close between two checks are no longer missed.
- Speed: the check runs every 5 seconds and again when you return to the tab.
- Detail: the pop-up shows the facility and marks alarms that are already back to normal.
- Muted devices: no longer make sound.
On/off command verification
When an action switches an output on or off, the platform checks that the device reaches the requested state.
- Behavior: after the command, the platform waits for the output to report the requested state. If it doesn't within the time limit (180 seconds by default), the command is retried once.
- Alarm: if the output still doesn't respond after the retry, the system alarm Output did not reach the requested state opens, with the requested state, the last reported state and the attempts. It closes on its own if the output reaches the state late or a later command is confirmed.
- Scope: commands from the action engine on outputs that have reported their state at least once. Manual, API and script commands are not verified.
Downlink retries on ThingPark
- Retry: if ThingPark reports that a command could not be transmitted, it is resent up to 3 times.
- Alarm: once retries are exhausted, the system alarm Command not transmitted by the network opens, and closes on its own when the network transmits to that endpoint again.
- Ordering: two commands are no longer sent back to back to the same device; the platform waits for the network's response.
Monitoring your own gateways with The Things Stack
Gateway monitoring adds a direct connection to The Things Stack for your own gateways.
- Own / Observed: the Type column tells your own gateways apart from those only seen through traffic.
- Connection: in Manager → Devices → LoRaWAN Gateways → gateway → Network server connection section, enter the gateway ID on the network server, the server and an API key (stored encrypted), with a Check now button. The platform checks the status every 5 minutes, whether or not there is sensor traffic.
- In Monitor: Monitor → LoRaWAN Gateways shows, for each of your gateways, its network server status, how long it has been connected or disconnected, last uplink and downlink, 24-hour traffic with an hourly chart, latency and protocol.
- Signal and radio: RSSI and SNR for your sensors and for everything it hears, the list of devices heard, and packets received and forwarded. If the gateway is connected but receives no uplinks, a notice suggests what to check.
- Availability: part of gateway monitoring, which is off by default. Can be enabled per client on request; contact support.
LORIOT gateway inventory
- Inventory: with the new Network API key (gateway inventory), the full list of gateways is read from the network server.
- Facility: each gateway is assigned to the facility of the devices it hears, or to the nearest one.
- Estimated location: the location of gateways that don't report one is estimated and marked as Estimated.
- Availability: part of gateway monitoring, available on request.
Silent sites digest configurable per client
- Access: Manager → client settings → Alarm settings tab → silent sites digest.
- Options: turn it on for the client, delivery days and time with time zone, hours without a signal for a site to count as silent, and number of alarms that counts as a burst.
- Recipients: the client's administrators or specific addresses.
- Until the client configures it, the instance-wide setting applies.
Communications with templates and approval
Prepare communications from templates and send them through an approval workflow before they go out.
- Prepare: in the device detail panel, Prepare communication opens the template with a suggested recipient and a preview.
- Approve: Monitor → Communications pending approval lists pending communications with their history, to approve them with a comment or reject them with a reason. Approval is granted per facility with a dedicated permission.
- Templates: Manager → Communication templates, with placeholders such as
{DEVICE_NAME},{FACILITY_NAME}or{COMFORT_SUMMARY}, a preview and optional mandatory approval. - Availability: off by default. Can be enabled per client on request; contact support.
Device follow-up and detailed location
- Access: the device detail panel in Monitor.
- Detailed location: detailed location data for the device.
- Follow-up status: a follow-up state with Change status (reason required) and Status history.
- History: a single sensor's history can be opened from its panel, and sensor comparison adds 3, 6 and 12 months plus Compare with the previous year.
Report visibility per client and comfort report
- Access: Manager → client settings → Reports tab. Each Monitor report has a toggle, with an option to go back to the default.
- Facility comfort summary: a new PDF report with temperature, humidity and CO2, comfort per dwelling and a before/after comparison for each intervention. It is hidden by default and can be shown from that tab.
New device map options
- Show connectivity as a ring around the pin: the pin takes the severity color and a ring shows connectivity, with a legend.
- Open the device map with the active facility only: the map opens on the active facility, with a toggle to see all of them.
- Access: Manager → client settings → Maps settings tab. Both options are off by default.
- Maintenance from the map: the device detail window on the Monitor map lets you put the device in maintenance and return it to service, with a narrower dedicated permission.
External geometry layer on maps
- Access: Manager → client settings → Maps settings tab → External geometry layer.
- Settings: the URL of a GeoJSON file (https), the layer name and the property that sets the color.
- Use: Monitor maps draw the layer without storing it, up to 20,000 shapes and 25 MB.
Refreshed heatmap
- Layers: the heatmap can be combined with the device and gateway layers, and includes a value legend.
- Variables: the metric map supports every variable, including the client's own (previously only 5 types).
"Value changed" trigger for actions
- Access: Manager → Actions → action → trigger.
- Use: the Value changed condition runs the action every time the value changes, on numeric, discrete and generic endpoints.
- Alerts do not support this condition.
Alarm sound in the mobile app
- Alarm sound on the mobile app: alarm push notifications use the app's own sound and high priority.
- Availability: off by default. Can be enabled per client on request; contact support. Requires an app version that includes the sound.
New integrations
- Davis WeatherLink: Manager → client settings → Integrations tab → Davis WeatherLink Weather Stations, with API v2 Key, API v2 Secret and Polling interval (minutes).
- Ecowitt: you can now set the date from which history is imported.
- Tekelek sensors: the TEK811 connects over TCP, and the TEK733, TEK822 and TEK880 join the device model catalog.
- Scheduled external provider: an integration that periodically sends the client's data to an external service over https, which returns its results through the uplink API.
Improvements
- AI Copilot: answers in the user's language, chains several lookups before answering, handles dates, times and long IDs correctly, and the quota now takes cost into account as well. It is still an add-on available on request.
- Alarm type on alerts: an alert can open alarms of a chosen type instead of the generic one, including in alert templates.
- Alert templates: the editor shows threshold units, and the apply report explains why each device failed.
- Alert schedules: times are labeled as being in the site's time zone, and all 7 days fit on one row.
- Alarm details: simple-alert alarms show their condition (previously a dash).
- Alarm lifecycle: its setting moves to the client's new Alarm settings tab.
- Clearer errors: when deleting something that has dependencies, the message says what is blocking it. A command to an NB-IoT or Cat-M1 device that hasn't connected yet reports that it was queued, instead of a timeout.
- Commands: sending a new command to an endpoint cancels the earlier pending ones, with the reason "Replaced by command N".
- Duplicate uplinks: a resent uplink that was already processed is discarded.
- Notification retries: permanent rejections (non-existent mailbox, invalid phone number) are dropped right away instead of being retried for 48 hours.
- Reports: parameter drop-downs always include search, and the device parameter of Endpoints data history Extended searches on the server.
- History chart: alarms with custom severities are drawn with their color and name.
- Gateway addresses: are normalized, and the duplicate-address error says which device is using it.
- Action retrigger cooldown: a minimum time between triggers of the same action can be set. It is off by default.
- Period picker: relative ranges get a label, such as "Last 14 days".
- Interface: better contrast for secondary buttons and text and in the migration wizard, and no white borders in dark mode.
- Translations: endpoint states are translated, and Chinese is available in the migration wizard and bulk operations.
- Email over OAuth 2.0 with Microsoft 365: self-hosted installations can send notifications through Microsoft 365 using OAuth 2.0.
- Stability: fewer sporadic database errors under concurrent operations.
API changes
PrivateKeyremoved from devices:DeviceService.EnumDevices,GetDeviceand the other methods that return theDeviceentity (including theCreateDeviceresponse) no longer include the device's private key. TheDevice.PrivateKeyfield stays in the contract but is alwaysnull./api/v2never returned it.- Deprecation notice:
GET /api/v2/instance/details/{seqFrom}is deprecated. UseGET /api/v2/instance/mapping/{seqFrom}, which requires the same permissions and returns the instance map as a tree: the response structure is different, so code that reads it needs to be adapted. It will be removed on April 23, 2027. - Entity images:
EntityImageServicerequires access permission on the entity (device, endpoint or alarm) in addition to the API permission, and only accepts those three types. - New methods:
DeviceService:SetDeviceLifecycleState,EnumDeviceLifecycleLog,ConfirmCommissioningTestOnSite,EnumDeviceCommissioningTests,EnumClientCommissioningTests,GetDeviceLocationDetails,SetDeviceLocationDetails,SetDeviceFollowUpState,EnumDeviceFollowUpLog.AlarmService:EnumRecentAlarms,AddAlarmNote,GetAlarmEventLogPdf.CommandService:EnumCommandHistory, with each command's lifecycle (Queued, SentToNetwork, Acknowledged, Confirmed, Failed, Cancelled, Expired).GatewayService:RefreshGatewayLnsStatus,EnumGatewayLnsSamples,EnumGatewayHeardDevices.- New
CommunicationService.
- Entities:
DeviceaddsLifecycleStateandFollowUpState;FacilityTypeaddsIsStockLocation;AlertandAlertTemplateaddAlarmTypeID. - New system alarms: 13 (Command not transmitted by the network) and 14 (Output did not reach the requested state).
- New error codes: among others, 18009 (command queued for a device that hasn't connected yet), 28005 and 28006 (a script tried to store a NaN or infinite value) and 33001 to 33007 (communications).
- CoolAutomation Cloud: the «CoolAutomation.CloudIntegration» integration is no longer offered for new devices.
Bug fixes
- Expired session: Monitor logs out and goes to the login page instead of silently polling.
- Geozones: the editor keeps working after Google Maps retired its drawing tool, no longer loses the last vertex and no longer zooms on double-click.
- Simultaneous creation: creating two facilities or two devices at the same time no longer makes one of them fail.
- Deleting devices: a device with a latched alarm open can now be deleted, deletion is no longer rolled back when an endpoint alarm was open, and deleting a gateway no longer orphans its devices.
- Reusable serial: the address of a deleted device can be used again.
- Data loss: a database error in the middle of an uplink no longer loses the data, and the measurement queue no longer drops readings on a timeout.
- Offline alarms: alarms that could not be created are retried, and devices that were registered but never sent data no longer count as "no signal".
- Monitor → Devices: context-menu commands are no longer lost after filtering, and the table refreshes the state as soon as a command is accepted.
- Map widget in asset tracking mode: no longer always empty.
- XY chart: no longer errors on a zero-length range or with aggregations on endpoints without earlier samples.
- Date picker: rejects zero-length or inverted ranges.
- Dashboard report: uses the range saved in the favorite; scheduled PDFs used to come out with the last range viewed.
- LoRaWAN signal: signal quality showed 0% while the device was reporting.
- Dashboards generated from templates: Device widgets are no longer empty, and the chip bar always appears.
- Gateways: TTN v3 tracking registers gateways again, LORIOT gateways can be saved and moved between facilities, and LORIOT downlinks go out one at a time and are retried.
- Deleted custom severity: its alarms no longer show a missing text.
- Alert templates: applying a template no longer stops halfway on an error.
- Email notifications: the recipient field lists all recipients, not just the first one.
- Floor plans: changing the background no longer loses the file or returns an error.
- Metric and text widgets: the value is no longer cut off.
- Forms: pressing Enter inside a multi-line box no longer saves the modal.
- Log in as: the user once again gets the email notice when an administrator logs in as them, in all 8 languages.
- Clients: deleting a client with severity escalation no longer fails.
- Devices: editing a device with invalid data returns a clear error instead of an internal one.
Support
For questions, contact the Cloud Studio team: contacto@cloud.studio.