IoT Sensor Reading

Okyline · 2026-05-30 17:10
id iot.sensor.reading
IoT sensor data stream message
Okyline symbols reference
@
Required
Field must be present
?
Nullable
Value can be null
{ , }
String Length
Min and max characters
(...)
Value Constraint
Number ranges or enums
~ ~
Format
Regex or built-in format
[ , ]
Array Size
Min and max elements
#
Key Field
Unique identifier
!
Uniqueness
No duplicate objects
Item Constraint
For array elements
1{
2 "$id": "iot.sensor.reading",
3 "$title": "IoT Sensor Reading",
4 "$description": "IoT sensor data stream message",
5 "$oky": {
6 "deviceId|# ~$DeviceId~|Device identifier": "SENS-GW-00482",
7 "timestamp|@ ~$DateTime~": "2025-01-08T14:32:07.342Z",
8 "gateway|@ ~$GatewayId~": "GW-PARIS-07",
9 "firmware|@ ~$SemVer~": "2.4.1",
10 "batteryLevel|@ (0..100)|Battery %": 87,
11 "signalStrength|@ (-120..0)|RSSI dBm": -67,
12 "location|@": {
13 "lat|@ (-90..90)": 48.8566,
14 "lon|@ (-180..180)": 2.3522,
15 "altitude|(-500..9000)": 35.2
16 },
17 "readings|@ [1,20] -> !": [
18 {
19 "sensorId|# ~$SensorId~": "TEMP-01",
20 "type|@ ($SENSOR_TYPE)": "TEMPERATURE",
21 "$appliedIf type": {
22 "('TEMPERATURE')": {
23 "unit|@ ('CELSIUS','FAHRENHEIT')": "CELSIUS",
24 "value|@ (-40..85)": 22.5
25 },
26 "('HUMIDITY')": {
27 "unit|@ ('PERCENT')": "PERCENT",
28 "value|@ (0..100)": 65
29 },
30 "('PRESSURE')": {
31 "unit|@ ('HPA')": "HPA",
32 "value|@ (300..1100)": 1013.25
33 },
34 "('CO2')": {
35 "unit|@ ('PPM')": "PPM",
36 "value|@ (0..10000)": 450
37 },
38 "('MOTION')": {
39 "unit|@ ('BOOLEAN')": "BOOLEAN",
40 "value|@": true
41 },
42 "('LIGHT')": {
43 "unit|@ ('LUX')": "LUX",
44 "value|@ (0..120000)": 500
45 }
46 }
47 }
48 ],
49 "alerts|[0,10]": [
50 {
51 "code|@ ~^[A-Z]{3}-[0-9]{3}$~": "BAT-001",
52 "severity|@ ($SEVERITY)": "WARNING",
53 "message|{1,200}": "Battery below 20%"
54 }
55 ],
56 "status|@ ($DEVICE_STATUS)": "ONLINE"
57 },
58 "$format": {
59 "DeviceId": "^SENS-[A-Z]{2}-[0-9]{5}$",
60 "GatewayId": "^GW-[A-Z]+-[0-9]{2}$",
61 "SensorId": "^[A-Z]{3,4}-[0-9]{2}$",
62 "SemVer": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
63 },
64 "$nomenclature": {
65 "SENSOR_TYPE": "TEMPERATURE, HUMIDITY, PRESSURE, CO2, MOTION, LIGHT",
66 "UNIT_TEMPERATURE": "CELSIUS, FAHRENHEIT",
67 "UNIT": "CELSIUS, FAHRENHEIT, PERCENT, HPA, PPM, LUX, BOOLEAN",
68 "QUALITY": "GOOD, DEGRADED, BAD, UNKNOWN",
69 "SEVERITY": "INFO, WARNING, CRITICAL",
70 "DEVICE_STATUS": "ONLINE, OFFLINE, MAINTENANCE, ERROR"
71 }
72}