Changelog
DeepHub® 2022 R2, 2.2.3
Fix error handling for rate limit errors for Amazon Keyspaces and Azure Cosmos DB.
Added new configuration parameters
cassandra_rate
andcassandra_burst_size
.Fixed count of active trackables and location providers for consumption reporting.
DeepHub® 2022 R2, 2.2.2
Added Cassandra support for Amazon Keyspaces and Azure Cosmos DB.
DeepHub® 2022 R2, 2.2.1
Fixed a bug where duplicated data might accumulate in a Cassandra database. An affected database will be cleaned during the first start of this version.
DeepHub® 2022 R2, 2.2.0
Fixed a bug where TrackableMotions could remain when the associated Trackable was deleted.
Fixed a bug where circular fences could not be posted.
Optimized internal event handling.
Fixed an issue where under extreme load conditions some events would not be forwarded through the websocket interface.
Added the API endpoint /license/key, to be able to update the key via an API call.
Improved the restart behavior of DeepHub by restoring event timers based on the most recent persisted locations. Events in intermediate states, like tolerance areas or exit delays, are not restored.
Fixed a bug where stationary trackables were not listed after a restart.
Added DeepHub API version 2 for all endpoints, implementing a preview of omlox™ API version 2. If authentication is used, the permission.yaml needs to be updated for the new /v2/ targets to be accessible.
Added the possibility to POST entities with a given id (i.e. without DeepHub generating a new id). This is only available for endpoints residing under API version 2 (e.g. /v2/zones).
Fixed a bug which could lead to database corruption with sqlite3. The database file is therefore migrated to a new version. Furthermore, the database file is renamed to
data.dat
(previouslyconfig.dat
). A backup of the database is created for each step before the migration:config.dat.bak
anddata.dat.v1v2.timestamp.bak
.Fixed an issue with temporary files from sqlite for read-only Docker containers. For these, it is required to set the environment variable SQLITE_TMPDIR to a writable folder, e.g., the mounted folder with the sqlite database.
DeepHub® 2022 R1, 2.1.1
Fixed a bug where subsequent location updates were rejected if their distance was close to floating point precision.
Enhanced the performance of SQlite operations.
DeepHub® 2022 R1, 2.1.0
Removing a colliding trackable via the API now triggers a collision end event.
Fixed a bug where event timers were not correctly removed.
DeepHub® 2022 R1, 2.0.0
Added a rule engine with locating rules and the API endpoint /trackables/rules/locating.
Added a validator API /validator/rules/locating to check rule expressions.
Added Cassandra support.
Added new configurable parameter “db_fast_writes” to be able to increase the rate at which location updates can be processed.
Fixed Trackable Removal Events.
Transformations to EPSG:32661 (UPS north) and EPSG:32761 (UPS south) are now supported.
Fixed timestamp for GeoJSON locations.
Fixed trackables id array for GeoJSON locations and fence events.
Fixed a memory leak when assigning an empty string to the properties member of a location.
DeepHub now aborts starting without a stack trace, presenting the underlying error message more prominently.
A location without a timestamp_generated will default to “now”, instead of 01.01.1970.
Outdated location updates no longer produce trackable motions.
Added support for ISO-24730 based RTLS systems.
Added health API endpoints: /health, /health/system, /health/ws, /health/zones/summary, /health/zones/:zone_id, /health/sources/summary, and /health/sources/:source_id.
Changed docker base image to Ubuntu version 22.04.
DeepHub® 2021 R2, 1.3.1
Updated error handling for environment variables.
DeepHub® 2021 R2, 1.3.0
Added auto-zone-extension (APE) feature to the zones API, allowing to automatically update mobile zones.
Added API to query trackables which are considered within a given fence according to their last reported location.
Added fine grained permission management for WebSocket subscriptions and messages. Refer to the Security & Authorization documentation for details.
Added the ability to configure via environment variables.
Added new parameter “spatial_query” to the API endpoints /fences/:fence_id/providers, /fences/:fence_id/trackables, /fences/:fence_id/locations, /trackables/:trackable_id/fences and /providers/:provider_id/fences allowing to choose between a spatial query (based on the last reported location) and the default query (taking into account timeouts).
Implemented coordinate transformations for endpoints which were missing these options.
Added new /trackable/:trackable_id/fences API endpoint. This returns the list of fences which contain the given trackable.
The file hub_config.yaml will no longer be created by default. Instead an example file is included in the bundle. Also, an empty configuration file no longer causes problems.
Added API to query motions which are considered within a given fence. (/fences/:fence_id/motions)
Fixed handling of infinite fence timeouts
Added new parameter “force_location_update” to the API endpoint POST /trackables and PUT /trackables/:trackable_id, to be able to update the respective TrackableMotion according to the assigned Location Providers if a more recent Location is available.
Added optional boolean property “incomplete_configuration” to zones. If true, the zone will be accepted by POST and PUT even if it is missing some configuration (e.g. missing position).
Added new parameter “foreign_id” to API endpoints GET /zones and /zones/summary to retrieve the zone with the given foreign ID.
DeepHub now enforces the restriction that proximity zones must not have ground control points.
Added the API endpoint /license/info to retrieve license information and warnings.
The value “-1” can be used to set the timeout/ fence_timeout, tolerance_timeout and exit_delay to infinite for providers, trackables and fences.
Added the API endpoint /license/info to retrieve license information and warnings.
The respective “ANY” and “OWN” permissions are now mutually exclusive. Furthermore, paths for a role must not occur more than once. This might require updating your permissions.yaml.
Updated the Cisco CMX Location Notification endpoint to accept both PUT and POST requests.
Fixed READ_OWN permissions for summary and root REST endpoints (e.g. /fences and /fences/summary) in case authentication is used. The returned lists are now filtered based on the roles ownership.
Fixed handling for erroneous consumption reporting.
Added support for https communication via proxy servers by configuring the environment variables “https_proxy” and “no_proxy”.
Fixed z coordinates being lost for invalid but repairable polygons.
DeepHub® 2021 R1, 1.2.1
Corrected mismatch to spec: “provider_id must be null in case the event was triggered by a Trackable”
Fixed return code handling for consumption reporting
DeepHub® 2021 R1, 1.2.0
Added filter and transform functionality to WebSocket subscriptions. Please refer to the WebSocket API documentation.
Internal changes and improvements related to event processing.
Added consumption and usage statistic API.
DeepHub® 2021 R1, 1.1.9
Log IP address in HTTP and WebSocket handlers on error.
Added /health API for health checking
Added a new special role named guest. This role allows to bypass authorization when assigned to endpoint in the permissions settings (e.g., for the /health endpoint).
DeepHub® 2021 R1, 1.1.8
Updated Zone and Fence API to include exit delay.
Fixed TrackableMotion does contain a point geometry instead of a polygon in case the Trackable does not define a radius.
Reject erroneous Trackable configurations with duplicate provider ID references.
Added trackable_motions:geojson topic to subscribe to geojson encoded motion updates.
Updated WebSocket session idle timeout configuration.
1.1.7
Fixed an issue caused by an external library where the docker container might get into a startup loop.
Fixed an issue where trackable motions did not get certain values assigned from the related trackable.
1.1.6
IMPORTANT CHANGE: The /v1/zones API was adapted to the latest version of the omlox™ specification. Most importantly, proximity based positioning systems (RFID or iBeacon) require the position to be defined when creating a zone, while ground control points must not be set. The position was previously optional, which allowed to create invalid proximity zones. For other types of RTLS systems ground control points are still required, and the position is still optional.
IMPORTANT CHANGE: The property collision_tolerance in the Trackable object has been renamed to exit_tolerance in the latest version of the specification, aligning property names between omlox™ Fences and omlox™ Trackables. This implementation of the Hub has been updated accordingly and may require to adapt the name of this property for client requests.
Added REST endpoints for handling omlox™ proximity events at /v1/providers/proximities and /v1/providers/:provider_id/proximity. Proximity events allow easier integrations of proximity based positioning systems (e.g. RFID or iBeacon). A proximity positioning system simply sends an omlox™ Proximity object and the Hub resolves the proximity information into a location by referring to the position defined for the zone which relates to the proximity positioning system.
Added REST endpoints to request trackable motions at /v1/trackables/motions and /v1/trackables/:trackable_id/motion.
Added WebSocket pub/sub topic trackable_motions according to the omlox™ motion specification. This topic provides real-time updates for trackable movements, also considering the trackable’s shape.
Added Hub configuration option persist_locations which enables to persist all location updates to the database. Previous locations will be loaded when the Hub starts. This option is now enabled by default. Please note that persisting locations affects overall performance.
Updated several configuration options.
Fixed an issue where a wrong crs was displayed in the location object for a certain API request.
Updated parsing the elevation_ref parameter of an omlox™ Location object according to the specification.
Fixed an issue where a trackable was not correctly removed from the spatial index after it was deleted.
1.1.4
Updated RPC support. See RPC Interface.md for documentation and usage.
Updated the admin frontend, added new features.
Updated trackable and collision API. See the api_draft folder with documentation and examples.
Added query parameters to conveniently update and select location and fence objects in various projections (local coordinates related to a zone, GPS and UTM projections supported throughout the API).
1.0.1
OpenID based authorization and Role Based Access Control (refer to Security Authorization.md)
Added admin frontend to /v1/web
Flexible server configuration options (refer to Server Configuration.md)
Fixed: Provider type was always “unknown” instead of actual type.
Added trackables array to location object. This allows to identify to which trackable(s) a location update belongs to for example for websocket location update subscriptions.
Added properties field to trackable object. This allows to add custom information associated to a trackable.
Improvements and fixes to the GeoFence engine.
1.0.0
Support for customizable IoT Sensors data:
Added „sensors“ property. The content of the sensors data is application defined.
New API endpoints /providers/$id/sensors (GET/PUT) and /trackables/$id/sensors (GET, returning a data array from sensors of all providers belonging to that trackable)
Added properties to allow fine grained event controls to the Fence object:
timeout: Timeout in milliseconds after which a FenceExit event should be triggered when no location updates are sent anymore. Infinite when 0 or null (default).
exit_tolerance: The distance tolerance to the geometry of a fence in meters before a fence exit event should be triggered when leaving the fence. Useful to avoid fluctuating entry / exit events due to positioning accuracy at the borders of a fence.
tolerance_timeout: Timeout in milliseconds after which a position outside of a fence, but still within exit_tolerance distance from the fence, should trigger an exit event when it’s not seeing any position update inside the fence.
Added params member to Websocket Subscribe request object to allow for parameters related to websocket subscriptions (e.g. crs and geojson parameters, same as query params available for location and fence REST API).
Basic Authentication and Security Support
0.9.7
Advanced 3D fence events and general improvements to fence event API. Fence events can now also overlap.
Added properties to Provider and Fence objects, allowing applications to set generic data.
Forward properties with FenceEvent, allowing applications to act on associated events (e.g. easily build a relationship between a MES production step and a fence event).
Fixed an issue when requesting GeoJson objects where the object might be invalid.
0.9.5
Added Websocket publish / subscribe API /ws/socket for location updates and fence events. Available topics: location_updates, location_updates:geojson, fence_events, fence_events:geojson.
Added parameter “crs” to all location APIs to query location data for a given projection (e.g. “EPSG:4326” or “local”).
Extended /trackables API. You can now create a trackable and locate the most recent location(s) of any of it’s assigned location providers via /trackables/:trackable_id/location(s)
Changed position type in Location object to use a GeoJson Point geometry. This simplifies the API and avoids use of differing geometry types in other parts of the API.
Updated /providers API
Improved data persistence
Added HTTP DELETE method to all API resources to clear current data
Added /zones/:zone_id/transform and SimpleTransform object specification to allow easy zone setup workflows (useful for example for RFID zone setup to locate scanners)
Added /fences/:fence_id/events API to generate FenceEvents via API instead of location based fence event generation by DeepHub. This may be useful for RFID scanners or general applications where a 3rd party server may generate its own fence events. This allows to use foreign generated fence events with a DeepHub fence to relate fence events to real world places.
Added /zones/:zone_id/createfence to allow easy creation from an approximated polygon of an existing zone definition.
0.9.1
Fixed geometry type definition for the fence region in the OAS specification and updated example data accordingly. Also provided more detailed description of Position, GeographicPoint and GeographicPolygon types.
Improved handling of invalid fence geometries and give more detailed error descriptions to a user for invalid geometry data.
Fixed “fence_name” should be “name” in the OAS Fence object specification.
0.9.0
First public release