An introduction to our Emulator API, accessible through both DT Studio and REST API.
Last updated
Overview
If you don't have access to physical sensors and want to test our services, the Sensor Emulator API gives you the ability to create and experiment with devices at will. An emulated sensor is designed to have all the features of a real sensor, making it a valuable tool for experimentation or debugging.
Explore DT Studio without the need for real sensors.
It can be interacted with through the REST API.
Emit any event type at will by simply clicking a button.
Generate events in your CI flow to automate integration tests.
You can find a list of all available emulator endpoints at our REST API Reference.
Prerequisites
Service Account
Creating, deleting, and interacting with emulated devices require that your User or Service Account has been granted the role of Project Developer or higher.
Creating an Emulated Device
In DT Studio, navigate to the project in which you want to create the emulated sensor. In the left-most menu, locate the API Integrations -> Emulator page. Click Create Device.
Under the new device creation page, select a Device Type. A Device name and labels are optional but can be useful when managing several emulated devices at once.
A request body with the following parameters is required.
{"type": "temperature"}
A list of all available parameters can be found in our REST API Reference.
Example Usage
Using cURL with a Service Account for authentication, the following example creates a new emulated temperature sensor with a given name and a "group-number" label.
Once the package is installed and authenticated as described in the Python API Reference, a new Emulated Device can be created by calling the following resource method.
Using our Python API with Service Account credentials for authentication, the following example creates a new Emulated Temperature Device.
import disruptive as dtdevice = dt.Emulator.create_device( project_id='<PROJECT_ID>', device_type=dt.Device.TEMPERATURE,)print(device)
Emitting Emulated Events
Events can be emitted at will using an emulated device.
In DT Studio, navigate to the project containing your emulated sensors. In the left-most menu, locate the API Integrations -> Emulator page. Click on your emulated device.
Under the details page of your emulated device, select the Event Type and related value you wish to emit. When set, click Send Event for immediate effect.
The body of the POST request should be the event to be published. The type of the published event must match the device type of the emulated event. For example, an emulated temperature sensor can't send objectPresent events. An overview of which events types are available for a given device type can be found here.
Note: The updateTime field is optional for all event types, and defaults to now.
Example Usage
As an example, to publish a temperature event, include the following body in the POST request.
{"temperature": {"value":42 }}
Using cURL with a Service Account for authentication, the following example emits a temperature event from the specified emulated temperature sensor.
Once the package is installed and authenticated as described in the Python API Reference, an emulated event can be published by calling the following resource method.
Using our Python API with Service Account credentials for authentication, the following example published a new motion event to an emulated motion sensor.
import disruptive as dtdt.Emulator.publish_event( device_id='<DEVICE_ID>', project_id='<PROJECT_ID>', data=dt.events.Motion( state='MOTION_DETECTED', ),)