import json
from spotflow_device import DeviceClient
client = DeviceClient.start(device_id="weatherstation001",
provisioning_token="secret", db="spotflow.db")
sender = client.create_stream_sender()
payload = json.dumps({"temperatureCelsius": 21.6})
sender.send_message(payload.encode())
Device SDK is integrated with your device SW, allowing your device to access all platform features. The SDK is fully maintained by us, so you can focus on your code.
Devices are connected to the platform via stateful MQTT connection managed by Device SDK. That allows to limit delay in receiving updates from the cloud and to avoid performance hit when establishing new connections.
IoT gateway can be used to shield your devices from Internet threats, manage connectivity issues, and optimize traffic to make sure that all data is delivered to the cloud, even if the connectivity to the Internet is unreliable.
Secrets can be generated via platform API and embedded into the device software at the factory. Once deployed to the field, devices are fully available on the platform without additional configuration.
Interacting with devices from the cloud via RPC-like synchronous methods or asynchronous methods such as messaging or desired state configuration.
Keeping the configuration of your devices always up to date via automatically evaluated and applied configuration that is stored in the cloud and target group of devices using tags.
Understanding your devices' status and their cloud activity. Setting up alerting rules that match your IoT solution requirements.
Device SDK provides a single interface to ingest data of any type and size to the platform.
The platform stores all incoming data to platform's storage. You can route the data to various storages such as object storages, databases, message queues, or your apps.
Data is automatically formated to the structure according to your configuration. The platform supports time windows and sessions, and data is automatically deduplicated.
Device SDK provides device-side data buffering to ensure that no data is lost in case of power failure or unstable connection. Priority data is always sent first to make sure that are available for your business critical applications.
REST APIs documented with OpenAPI specification and SDKs to access all platform features programmatically to address specific needs of your IoT solution.
Command-line interface to streamline your CI/CD and Spotflow Portal to work with the platform without the need for coding skills.
Platform's storage with for role-based access control, built on cloud-native technologies such as Azure Blob Storage to allow easy integration with your existing data ecosystem.
Customize the platform to your company branding and manage access via your corporate Active Directory services.
Visualize data in our managed Grafana or use your Grafana instance.
Route logs, traces, and metrics to your OpenTelemetry endpoint to monitor your fleet.
Use visualization tools such as Tableau, PowerBI, Looker, JupyterLab, and more.
Code it, pack it into Docker container, and upload it to the container registry. Select instances of Spotflow IoT gateway where the platform should deploy it.
All your edge gateways are managed from the platform and communicates with the deployments of Spotflow IoT gateway.
Once container is deployed, it is kept up-to-date and running. Update is facilitated by uploading new versions to the repository and configuring new version for the edge gateways.
Define what data should be processed locally and what data should be routed to the cloud platform.
Strong identity verification is ensured using a zero-trust security model for communication between devices and the platform. TLS 1.2+ secures data in transit, and 256-bit AES protects data at rest. Users interacting with the platform can be authenticated by industry-standard identity providers, including MFA, or use existing accounts from 3rd party identity providers. Administrators are provided with tools for configuring granular authorization rules, encouraging the principle of least privilege.
The platform's design allows to gracefully handle transient network issues, partial failures of the underlying infrastructure, or unexpected traffic spikes. All services providing management capabilities for users are deployed in multiple replicas for high availability. Platform architecture allows the introduction of new features with minimal risk of breaking existing functionality. Updates and fixes are deployed with zero downtime. All data is stored in multiple replicas within one data center or geographically distributed for maximum data durability.
Horizontal scalability is embedded into the platform's architecture. It can support a few devices as well as hundreds of thousands while keeping the same performance. Capacity is adjusted dynamically with regard to the current load. Components of the platform are scaled independently, which allows scaling the platform precisely for the customer's workload in a cost-efficient manner.
The platform is designed to seamlessly fit into your existing ecosystem thanks to the open standards and best engineering practices. From industry-standard transport protocols, data formats, and storage to common application interfaces. This approach is followed by not only externally facing APIs but also by platform internals, which allows extending dedicated platform instances with your custom functionality.
All management APIs provide strong consistency guarantees. Sending data from devices into the platform is an asynchronous process, so there is a short delay between the platform’s frontend accepting data from devices and the moment when the data is available in the cloud. However, we guarantee per-device in-order delivery of data and the storages used for device data is strongly consistent. Cloud-to-device operations provide strong or eventual consistency, depending on the method chosen by the user.