IIODEVICES Service
Overview
The iiodevices service provides access to data from industrial i/o devices. For now it permits to get data from acceleration, gyroscope and electronic compass.
General Scheme
As soon as a client subscribes to the agl-service-iiodevices binding, the binding reads values from the sensors and sends it to subscribers as events. Subscribers can choose their frequency and indicate what values they want at subscription.
Verbs
Name | Description | JSON Parameters |
---|---|---|
subscribe | subscribe to 9 axis events | Request: {"event": "acceleration", "args":"xy", "frequency": "10" } |
unsubscribe | unsubscribe to accelero events | Request: {"event": "acceleration" } |
Events
For now, there are 3 different events matching with the different available sensors.
- "acceleration": is for acceleration data
- "gyroscope": is for gyroscope data
- "compass": is for electronic compass data
Frequency
The frequency is in Hertz, if the frequency is not set, events are triggered via a file descriptor.
Client Demo example
Here is an example to show how to get data from iiodevices with the demo client.
Launch afb-client-demo
First, launch the client demo with right port and right TOKEN, the example below matches with ff(6.x) AGL version.
afb-client-demo ws://localhost:1055/api?token=HELLO
Subscribe to acceleration
Here is a list of different examples to subscribe to acceleration data.
Subscribe to acceleration with x,y and z axis with a frequency of 0.1 Hz
iiodevices subscribe { "event": "acceleration", "args": "xyz", "frequency": "0.1" }
Subscribe to acceleration with x and z axis
iiodevices subscribe { "event": "acceleration", "args": "xz" }
Events will be sent each time a new value is available (sent by iiodevice).
Unsubscribe to acceleration
iiodevices unsubscribe { "event": "acceleration" }
Remaining issues
- Provide a json file to configure the device name and the channel name.
- Handle several values simultaneously, see triggers.
- Update this binding for other iiodevices.
- Only read channel values at the maximum frequency.
- Change args values into json arrays.
M3ULCB Kingfisher
M3ULCB Kingfisher is equipped with a 9 axis sensor device (LSM9DS0) and the R-Car Starter Kit can read sensor values via I2C interface and iiodevices are provided for these sensors.
Tests dependencies
Kernel modules
To use industrial I/O dummy device we need to load kernel modules :
- industrialio
- industrialio-configfs
- industrialio-sw-device
- industrialio-sw-trigger
- iio-trig-hrtimer
- iio_dummy