Raritan / Server Technology Xerus™ PDU JSON-RPC API: GatewaySensorManager.idl Source File

Raritan / Server Technology Xerus™ PDU JSON-RPC API

GatewaySensorManager.idl
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3 * Copyright 2022 Raritan Inc. All rights reserved.
4 */
5
6 #ifndef __PERIPHERAL_GATEWAY_SENSOR_MANAGER_IDL__
7 #define __PERIPHERAL_GATEWAY_SENSOR_MANAGER_IDL__
8
9 #include <Sensor.idl>
10 #include <NumericSensor.idl>
11 #include <Event.idl>
12 #include <ModbusCfg.idl>
13
14 /**
15 * Peripheral Devices
16 */
17 module peripheral {
18
19 /** Gateway Sensor Configuration Interface */
20 interface GatewaySensorManager {
21
22 /*
23 To define a gateway sensor the following steps are required:
24
25 1) Create a [Numeric|State|Switch]SensorClass with a unique
26 *classId* and metadata.
27 This specification can be used for one or more gateway sensors.
28
29 2) Create a Remote[ModbusRTU|ModbusTCP|...]Device with a unique
30 *deviceId* and all information required to connect a remote
31 device that provides access to sensors and actuators to be associated
32 to one or more gateway sensors.
33
34 3) Create a ValueEncoding, e.g. ModbusValueEncoding[Bit|8|16|32|64],
35 with a unique *encodingId* and all information needed to correctly
36 interpret a received byte sequence.
37
38 Besides word width, masking and encoding (bool/int/uint/float) there
39 is also the possibility to define rules that interpret error codes and
40 special values.
41
42 A rule consists of a recognition feature (e.g. InterpretationRuleRAW,
43 InterpretationRuleIEEE754INF) and an interpretation (e.g. IGNORE,
44 NUMERIC_INVALID).
45
46 This specification can be used for one or more gateway sensors.
47
48 4) Create a [Modbus|...]Sensor, with references to configurations described
49 above: *classId*, *deviceId* and *encodingId*. The unique *sensorId* will be
50 generated if not set. Additionaly, [Modbus|...]Sensor has information necessary
51 to address the sensor on the referenced RemoteDevice.
52
53 5) Store all created classes using setConfiguration()
54
55
56 Example A) PMMC-1000
57
58 1) Create NumericSensorClass with
59 classId = "Temperature"
60 metaData = {
61 type = { NUMERIC, TEMPERATURE, DEGREE_CELSIUS },
62 decdigits = 1,
63 range = { -55, +85 },
64 accuracy = 0.1,
65 resolution = 0.1,
66 tolerance = 0,
67 noiseThreshold = -55,
68 thresholdCaps = { true, true, true, true }
69 }
70 defaultThresholds = {
71 upperCriticalActive = true,
72 upperCritical = 44.0,
73 upperWarningActive = true,
74 upperWarning = 37.0,
75 lowerWarningActive = true,
76 lowerWarning = 1.0,
77 lowerCriticalActive = true,
78 lowerCritical = -11,
79 assertionTimeout = 3,
80 deassertionHysteresis = 2.0F
81 }
82 preferCommonThresholds = false
83
84 2) Create RemoteModbusRTUDevice with
85 deviceId = "PMMC"
86 busInterface = "sensorhub1-rs485"
87 busSettings = {38400, NONE, 8, 1}
88 unitId = 247;
89 detectionIdentifiers = [ { VENDOR_NAME, "Raritan" },
90 { PRODUCT_CODE, "iPDU" }
91 { REVISION, "3\\.6.*"}
92 ]
93
94 3) Create ModbusValueEncoding32 with
95 encodingId = "IEEE754_32"
96 endianness = MODBUS_BIG_ENDIAN
97 type = IEEE754
98 interpretationRules = [
99 InterpretationRuleIEEE754NAN {
100 interpretation = INVALID
101 }
102 ]
103
104 4) Create ModbusSensor with
105 classId = "Temperature"
106 deviceId = "PMMC"
107 encodingId = "IEEE754_32"
108 function = HOLDING_REGISTER;
109 regAddr = 0x812
110 defaultName = "Room temperature"
111
112
113 Example B) Current sensor and check product code in INPUT_REGISTER 0
114
115 1) Create NumericSensorClass with
116 classId = "Current"
117 metaData = {
118 type = { NUMERIC, CURRENT, AMPERE },
119 decdigits = 2,
120 range = { 0, 100 },
121 accuracy = 0.01,
122 resolution = 0.01,
123 tolerance = 0,
124 noiseThreshold = 0.01,
125 thresholdCaps = { true, true, true, true }
126 }
127
128 2) Create RemoteModbusRTUDevice with
129 deviceId = "GW"
130 busInterface = "sensorhub1-rs485"
131 busSettings = {9600, NONE, 8, 1}
132 unitId = 1;
133
134 3) Create ModbusValueEncoding32 with
135 encodingId = "IEEE754_32_MIXED_LE"
136 endianness = MODBUS_LITTLE_ENDIAN
137 type = IEEE754
138 interpretationRules = [
139 InterpretationRuleRAW {
140 value = 0x00800000 # FLT_MIN
141 interpretation = IGNORE
142 ignoreTimeout = 60 # unavailable after 60 seconds
143 },
144 InterpretationRuleRAW {
145 value = 0x7f7fffff # FLT_MAX
146 interpretation = UNAVAILABLE
147 }
148 ]
149
150 Create ModbusValueEncoding16 with
151 encodingId = "GW_PRODUCT_UINT_16"
152 type = UINT
153 interpretationRules = [
154 InterpretationRuleRAW {
155 value = 1200 # product code
156 invertCondition = true
157 interpretation = REJECT_DEVICE # device detection failed
158 },
159 ]
160
161 4) Create ModbusSensor with
162 classId = "Current"
163 deviceId = "GW"
164 encodingId = "IEEE754_32_MIXED_LE"
165 function = INPUT_REGISTER;
166 regAddr = 0xD
167 defaultName = "AC Current ch2"
168
169 Create ModbusSensor with
170 classId = "" # used for device detection only
171 deviceId = "GW"
172 encodingId = "GW_PRODUCT_UINT_16"
173 function = INPUT_REGISTER;
174 regAddr = 0
175
176
177 Example C) Energy Meter
178
179 1) Create NumericSensorClass with
180 classId = "Energy"
181 metaData = {
182 type = { NUMERIC, POWER, WATT },
183 decdigits = 1,
184 range = { 0, 9999999 },
185 accuracy = 0.1,
186 resolution = 0.1,
187 tolerance = 0,
188 noiseThreshold = 0,
189 thresholdCaps = { }
190 }
191
192 2) Create RemoteModbusRTUDevice with
193 deviceId = "EX4"
194 busInterface = "sensorhub2-rs485"
195 busSettings = {9600, NONE, 8, 1}
196 unitId = 4;
197
198 3) Create ModbusValueEncoding32 with
199 encodingId = "UINT_24_MIXED_LE"
200 endianness = MODBUS_LITTLE_ENDIAN
201 mask = 0x00FFFFFF
202 type = UINT
203 scalingFactor = 10.0;
204
205 4) Create ModbusSensor with
206 classId = "Energy"
207 deviceId = "EX4"
208 encodingId = "UINT_24_MIXED_LE"
209 function = HOLDING_REGISTER;
210 regAddr = 0
211 defaultName = "Energy Meter"
212 */
213
214
215 /* ======================= SENSOR CLASSES ========================= */
216
217 /**
218 * @brief Specification of sensor class that stores sensor properties
219 *
220 * Before an instance of Sensor can be created,
221 * an instance of SensorClass must be present.
222 * The Sensor locates the corresponding SensorClass
223 * using the sensor class id `classId`.
224 */
225 valueobject SensorClass {
226 string classId; ///< sensor class id
227 };
228
229 /**
230 * @brief Sensor class that stores numeric sensor properties
231 */
232 valueobject NumericSensorClass extends SensorClass {
233 /**
234 * numeric sensor type, ranges, etc.
235 */
236 sensors.NumericSensor.MetaData metadata;
237
238 /**
239 * threshold values may be used initially and as default threshold values,
240 * depending on the value of the preferCommonThresholds field
241 */
242 sensors.NumericSensor.Thresholds defaultThresholds;
243
244 boolean preferCommonThresholds; ///< if true, use common default thresholds if available, otherwise use the value of the defaultThresholds field
245 };
246
247 /**
248 * @brief Sensor class that stores state sensor properties
249 */
250 valueobject StateSensorClass extends SensorClass {
251 sensors.Sensor.TypeSpec type; ///< state sensor type
252 };
253
254 /**
255 * @brief Sensor class that switch properties
256 */
257 valueobject SwitchSensorClass extends StateSensorClass { };
258
259
260 /* ======================= REMOTE DEVICES ========================= */
261
262 /**
263 * @brief Specification of a remote device that provides access to sensors
264 *
265 * It contains all the information required to connect a remote
266 * device that provides access to sensors and actuators to be connected
267 * to one or more gateway sensors.
268 *
269 * Before an instance of Sensor can be created, an instance
270 * of RemoteDevice must be present. The Sensor locates the
271 * corresponding RemoteDevice using the remote device id `deviceId`.
272 */
273 valueobject RemoteDevice {
274 string deviceId; ///< remote device id
275 boolean disabled; ///< prevents usage of all sensor specifications which reference this device
276 string name; ///< human readable remote device name
277 int timeoutMs; ///< communication access timeout, 0 = default
278 int retry; ///< communication retry count, 0 = default
279 };
280
281 constant int MODBUS_VENDOR_NAME = 0;
282 constant int MODBUS_PRODUCT_CODE = 1;
283 constant int MODBUS_REVISION = 2;
284 constant int MODBUS_VENDOR_URL = 3;
285 constant int MODBUS_PRODUCT_NAME = 5;
286 constant int MODBUS_MODEL_NAME = 6;
287 constant int MODBUS_APP_NAME = 7;
288
289 valueobject RemoteModbusDevice extends RemoteDevice {
290 map<int, string> detectionIdentifiers; ///< list of expected device identifiers
291 int unitId; ///< modbus server address
292 };
293
294 valueobject RemoteModbusRTUDevice extends RemoteModbusDevice {
295 string busInterface; ///< modbus/rs485 interface, e.g. 'sensorhub1-rs485`
296 ModbusCfg.SerialSettings busSettings; ///< interface settings
297 int interframeDelayDeciChars; ///< (== 0) -> default, (< 0) -> no delay, (> 0) -> e.g. 35 means 3.5 chars
298 };
299
300 valueobject RemoteModbusTCPDevice extends RemoteModbusDevice {
301 string ipAddress; ///< modbus device ip address
302 int tcpPort; ///< modbus tcp port
303 };
304
305
306 /* ======================= VALUE ENCODING ========================= */
307
308 /**
309 * @brief Specification of value encoding
310 *
311 * Before an instance of Sensor can be created,
312 * an instance of ValueEncoding must be present.
313 * The Sensor locates the corresponding ValueEncoding
314 * using the sensor class id `encodingId`.
315 */
316 enumeration EncodingType {
317 BOOL, ///< boolean
318 INT, ///< signed integer of a size specified in ValueEncoding
319 UINT, ///< unsigned integer of a size specified in ValueEncoding
320 IEEE754 ///< IEEE 754 floating point of a size specified in ValueEncoding
321 };
322
323 /**
324 * @brief Here you define how certain read values are to be interpreted
325 *
326 * The rules leading to *_IGNORE and *_UNAVAILABLE are applied to numeric values and states.
327 *
328 * IGNORE can be time-limited using ignoreTimeout, see InterpretationRule. After the time has expired,
329 * the value is set to unavailable.
330 *
331 * NUMERIC_INVALID only affects NumericSensors. As DEFAULT for numeric sensors (if
332 * no rule is matched, or if DEFAULT is matched) the value is converted to a floating point
333 * number according to type specification.
334 *
335 * STATE_ON and STATE_OFF affect only StateSensors. If no such rule is specified, the state
336 * becomes true if the read value is integral and not 0. If STATE_ON or STATE_OFF are present in
337 * the rules, then the state is set to true or false only if a STATE_* rule matches. Otherwise
338 * (DEFAULT) the state becomes unavailable.
339
340 * REJECT_SENSOR means: do not accept this reading in any way. The sensor is treated as
341 * non-existent.
342 *
343 * REJECT_DEVICE means: do not accept this reading in any way. Instead, this is a clear
344 * indication that the device is defective, or it is a wrong device. All sensors that belong
345 * to this device are treated as non-existent.
346 * REJECT_DEVICE can be used in this way to detect devices. The sensor defined for this purpose
347 * does not have to be imported as gateway sensor (see Sensor.classId = "").
348 *
349 * DEFAULT on failed receives modbus exceptions REJECT_SENSOR. DEFAULT on modbus read errors
350 * (e.g. timeouts) is REJECT_DEVICE.
351 */
352 enumeration Interpretation {
353 DEFAULT, ///< use default decoding
354 REJECT_DEVICE, ///< device is treated as non-existent
355 REJECT_SENSOR, ///< sensor is treated as non-existent
356 IGNORE, ///< ignore (use previous value)
357 UNAVAILABLE, ///< set value to unavailable
358 NUMERIC_INVALID, ///< set numeric value to invalid
359 STATE_ON, ///< set state to ON
360 STATE_OFF ///< set state to OFF
361 };
362
363 /**
364 * InterpretationRule defines a rule that is applied to a reading, resulting in an Interpretation.
365 * A list of InterpretationRule is applied in the given order, and stopped after the first match.
366 * If no rule applies, the interpretation is Interpretation.DEFAULT.
367 **/
368 valueobject InterpretationRule {
369 Interpretation interpretation; ///< how to interpret the applied rule
370 int ignoreTimeout; ///< if > 0, ignoring stops after this timeout (seconds), and state changes to unavailable
371 };
372
373 valueobject InterpretationRuleInvertable extends InterpretationRule {
374 boolean invertCondition; ///< negate rule condition
375 };
376
377 /** InterpretationRuleModbusException is applied to modbus read exceptions
378 */
379 valueobject InterpretationRuleModbusException extends InterpretationRuleInvertable {
380 vector<int> exceptions; ///< list of modbus exception codes
381 };
382
383 /** InterpretationRuleModbusSystemError is applied to standard system errors returned
384 * from libmodbus
385 */
386 valueobject InterpretationRuleModbusSystemError extends InterpretationRuleInvertable {
387 vector<int> errnos; ///< list of system error codes
388 };
389
390 /** InterpretationRuleModbusSpecificError is applied to specific errors from libmodbus
391 */
392 valueobject InterpretationRuleModbusSpecificError extends InterpretationRuleInvertable {
393 vector<ModbusCfg.SpecificModbusErrors> errors; ///< list of specific libmodbus error codes
394 };
395
396 /** InterpretationRuleRAW is applied after swap, but before masking (because it has it's own mask)
397 */
398 valueobject InterpretationRuleRAW extends InterpretationRuleInvertable {
399 long value; ///< compare to value
400 long mask; ///< (0 = not masked, the same as 0xFFFF...)
401 };
402
403 /** InterpretationRuleRangeRAW is applied after swap, but before masking (because it has it's own mask)
404 */
405 valueobject InterpretationRuleRangeRAW extends InterpretationRuleInvertable {
406 long min; ///< minimum accepted value
407 long max; ///< maximum accepted value
408 long mask; ///< (0 = not masked, the same as 0xFFFF...)
409 };
410
411 /** InterpretationRuleIEEE* are applied after value is wapped, masked and interpreted as float / double
412 */
413 valueobject InterpretationRuleIEEE754INF extends InterpretationRuleInvertable {};
414 valueobject InterpretationRuleIEEE754NAN extends InterpretationRuleInvertable {};
415 valueobject InterpretationRuleCatchAll extends InterpretationRule {};
416
417 valueobject ValueEncoding {
418 string encodingId; ///< encoding type id
419 EncodingType type; ///< value coding type
420 boolean invertState; ///< invert when interpreting as state
421 vector<InterpretationRule> interpretationRules; ///< error/value inerpretation rules
422 };
423
424 valueobject NumericValueEncoding extends ValueEncoding {
425 float scalingFactor; ///< multiply with when interpreting as numeric value
426 float offset; ///< add value after applying scalingFactor
427 };
428
429 valueobject ModbusValueEncodingBit extends ValueEncoding {};
430
431 valueobject ModbusValueEncoding8 extends NumericValueEncoding {
432 /**
433 * 16-bit modbus words should be transferred in big-endian byte order.
434 * For modbus devices that do not comply with this, byteSwap = true must
435 * be set. Another application is to use byteSwap to address a single byte in
436 * a 16-bit modbus word in case 8-bit values are requested (ModbusValueEncoding8).
437 */
438 boolean byteSwap;
439 long mask; ///< mask raw value before interpreting (0 = not masked, the same as 0xFFFF...)
440 };
441
442 valueobject ModbusValueEncoding16 extends ModbusValueEncoding8 {};
443
444 enumeration ModbusEndianness {
445 MODBUS_BIG_ENDIAN, ///< use big endian modbus word order (default is big endian)
446 MODBUS_LITTLE_ENDIAN ///< use little endian modbus word order
447 };
448
449 valueobject ModbusValueEncoding32 extends ModbusValueEncoding16 {
450 /**
451 * Modbus 16-bit-words should be transmitted in big endian order. For modbus
452 * devices that do not comply with this, endianness must be set to LITTLE_ENDIAN.
453 */
454 ModbusEndianness endianness;
455 };
456
457
458 valueobject ModbusValueEncoding64 extends ModbusValueEncoding32 {};
459
460
461 /* ======================= SENSORS ========================= */
462
463 /**
464 * Specification of a Sensor
465 */
466 valueobject Sensor {
467 /**
468 * Unique sensor id, is automatically generated if not set
469 */
470 string sensorId;
471
472 /**
473 * Set disabled = true prevents any usage of the specification
474 */
475 boolean disabled;
476
477 /**
478 * @brief remote device id
479 *
480 * deviceId is used to locate the corresponding RemoteDevice that
481 * provides the physical sensor
482 */
483 string deviceId;
484
485 /**
486 * @brief sensor class id
487 *
488 * classId is used to locate the corresponding SensorClass.
489 * classId = "" prevents the sensor specification from being used
490 * for an imported gateway sensor. The sensor value is read anyway, and a read
491 * error or a interpretation as Interpretation.REJECT_DEVICE
492 * prevents the successful detection of the device
493 */
494 string classId;
495
496 /**
497 * @brief sensor encoding id
498 *
499 * classId is used to locate the corresponding ValueEncoding
500 */
501 string encodingId;
502
503 /**
504 * @brief default sensor name
505 *
506 * defaultName is used as sensor slot name
507 */
508 string defaultName;
509 };
510
511 valueobject ModbusSensor extends Sensor {
512 ModbusCfg.ModbusFunction function; ///< Modbus function to be used
513 int regAddr; ///< Modbus server register address
514 };
515
516
517 /* ======================= FULL CONFIGURATION ========================= */
518
519 structure ConfigurationPackage {
520 boolean disabled; ///< prevents usage of all sensor specifications defined in this package
521 string name; ///< package name
522 vector<SensorClass> classes;
523 vector<RemoteDevice> devices;
524 vector<ValueEncoding> encodings;
525 vector<Sensor> sensors;
526 };
527
528 /**
529 * @brief Get all defined gateway sensors and required objects from config
530 *
531 * Read all Sensor Classes, Remote Devices, Value Encodings and Sensors
532 * at once to ensure that the overall configuration is consistent
533 *
534 * @return all defined gateway sensor feature configuration objects
535 */
536 map<string, ConfigurationPackage> getConfiguration();
537
538 constant int ERR_CONFIG_INCONSISTENT = 1;
539 constant int ERR_CONFIG_STORAGE_FAILED = 2;
540
541 /**
542 * @brief Replace defined gateway sensor and/or other configuration objects in config
543 *
544 * Write all Sensor Classes, Remote Devices, Value Encodings and Sensors
545 * at once to ensure that the overall configuration is consistent at every
546 * moment.
547 *
548 * The uniqueness of all IDs and the availability of all referenced elements are
549 * checked before the configuration is applied. Otherwise setConfiguration() returns
550 * with an error.
551 *
552 * @param cfg all defined gateway sensor feature configuration objects
553 * @return 0 if OK
554 * @return ERR_CONFIG_INCONSISTENT if consistency check has failed (e.g. non-unique identifiers)
555 * @return ERR_CONFIG_STORAGE_FAILED if configuration cannot be stored
556 */
557 int setConfiguration(in map<string, ConfigurationPackage> cfg);
558
559 /** Event: The gateway sensor feature configuration has changed */
560 valueobject ConfigurationChangedEvent extends idl.Event {
561 map<string, ConfigurationPackage> configuration; ///< the current gateway sensor feature configuration
562 };
563
564
565 /* ======================= FEEDBACK ========================= */
566
567 /**
568 * @brief Feedback from gateway sensor configuration usage
569 *
570 * There is no knowledge of Feedback required to configure gateway sensors.
571 * The following is only needed for special tools that monitor the usage
572 * of the configurations above.
573 */
574 structure FeedbackObject {
575 enumeration FeedbackState {
576 UNSPECIFIED,
577 INTENTIONALLY_UNUSED,
578 FAILED_PRECONDITIONS_UNUSED,
579 FAILED,
580 GOOD
581 };
582
583 string key; ///< empty or free defined value name
584 string value; ///< message or value
585 FeedbackState stateTansitionTo; ///< this FeedbackObject changes state, if not UNSPECIFIED
586 };
587
588 valueobject Feedback {
589 FeedbackObject.FeedbackState currentState; ///< Device or sensor state
590 vector<FeedbackObject> infos;
591 };
592
593 valueobject DeviceFeedback extends Feedback {
594 string packageId; ///< the configuration package id
595 string deviceId; ///< the same id as in RemoteDevice
596 };
597
598 valueobject SensorFeedback extends Feedback {
599 string packageId; ///< the configuration package id
600 string deviceId; ///< the same id as in RemoteDevice
601 string sensorId; ///< the same id as in Sensor
602 };
603
604 /**
605 * Get feedback from gateway sensor configuration usage
606 *
607 * @return Result: the full feedback
608 */
609 vector<Feedback> getFeedback();
610
611 /** Event: The configuration usage feedback has changed */
612 valueobject FeedbackChangedEvent extends idl.Event {
613 vector<Feedback> feedback; ///< the latest configuration usage feedback
614 };
615 };
616 }
617
618 #endif /* __PERIPHERAL_GATEWAY_SENSOR_MANAGER_IDL__ */
peripheral::GatewaySensorManager
Gateway Sensor Configuration Interface.
Definition: GatewaySensorManager.idl:20
peripheral::GatewaySensorManager::ModbusEndianness
ModbusEndianness
Definition: GatewaySensorManager.idl:444
peripheral::GatewaySensorManager::MODBUS_BIG_ENDIAN
@ MODBUS_BIG_ENDIAN
use big endian modbus word order (default is big endian)
Definition: GatewaySensorManager.idl:445
peripheral::GatewaySensorManager::getConfiguration
map< string, ConfigurationPackage > getConfiguration()
Get all defined gateway sensors and required objects from config.
peripheral::GatewaySensorManager::setConfiguration
int setConfiguration(in map< string, ConfigurationPackage > cfg)
Replace defined gateway sensor and/or other configuration objects in config.
peripheral::GatewaySensorManager::EncodingType
EncodingType
Specification of value encoding.
Definition: GatewaySensorManager.idl:316
peripheral::GatewaySensorManager::BOOL
@ BOOL
boolean
Definition: GatewaySensorManager.idl:317
peripheral::GatewaySensorManager::INT
@ INT
signed integer of a size specified in ValueEncoding
Definition: GatewaySensorManager.idl:318
peripheral::GatewaySensorManager::UINT
@ UINT
unsigned integer of a size specified in ValueEncoding
Definition: GatewaySensorManager.idl:319
peripheral::GatewaySensorManager::getFeedback
vector< Feedback > getFeedback()
Get feedback from gateway sensor configuration usage.
peripheral::GatewaySensorManager::Interpretation
Interpretation
Here you define how certain read values are to be interpreted.
Definition: GatewaySensorManager.idl:352
peripheral::GatewaySensorManager::DEFAULT
@ DEFAULT
use default decoding
Definition: GatewaySensorManager.idl:353
peripheral::GatewaySensorManager::UNAVAILABLE
@ UNAVAILABLE
set value to unavailable
Definition: GatewaySensorManager.idl:357
peripheral::GatewaySensorManager::IGNORE
@ IGNORE
ignore (use previous value)
Definition: GatewaySensorManager.idl:356
peripheral::GatewaySensorManager::REJECT_SENSOR
@ REJECT_SENSOR
sensor is treated as non-existent
Definition: GatewaySensorManager.idl:355
peripheral::GatewaySensorManager::NUMERIC_INVALID
@ NUMERIC_INVALID
set numeric value to invalid
Definition: GatewaySensorManager.idl:358
peripheral::GatewaySensorManager::STATE_ON
@ STATE_ON
set state to ON
Definition: GatewaySensorManager.idl:359
peripheral::GatewaySensorManager::REJECT_DEVICE
@ REJECT_DEVICE
device is treated as non-existent
Definition: GatewaySensorManager.idl:354
peripheral::ModbusCfg
Definition: ModbusCfg.idl:13
sensors::NumericSensor
A sensor with numeric readings.
Definition: NumericSensor.idl:17
sensors::Sensor
Sensor interface
Definition: Sensor.idl:15
idl
Basic IDL definitions.
Definition: Event.idl:10
peripheral
Peripheral Devices.
Definition: GatewaySensorManager.idl:17
peripheral::UNSPECIFIED
@ UNSPECIFIED
device type is unknown
Definition: PeripheralDeviceSlot.idl:25
sensors
Sensors Model.
Definition: AccumulatingNumericSensor.idl:13
idl::Event
Common base for all events.
Definition: Event.idl:13
peripheral::GatewaySensorManager::ConfigurationChangedEvent
Event: The gateway sensor feature configuration has changed.
Definition: GatewaySensorManager.idl:560
peripheral::GatewaySensorManager::ConfigurationChangedEvent::configuration
map< string, ConfigurationPackage > configuration
the current gateway sensor feature configuration
Definition: GatewaySensorManager.idl:561
peripheral::GatewaySensorManager::ConfigurationPackage
Definition: GatewaySensorManager.idl:519
peripheral::GatewaySensorManager::ConfigurationPackage::disabled
boolean disabled
prevents usage of all sensor specifications defined in this package
Definition: GatewaySensorManager.idl:520
peripheral::GatewaySensorManager::ConfigurationPackage::name
string name
package name
Definition: GatewaySensorManager.idl:521
peripheral::GatewaySensorManager::DeviceFeedback
Definition: GatewaySensorManager.idl:593
peripheral::GatewaySensorManager::DeviceFeedback::packageId
string packageId
the configuration package id
Definition: GatewaySensorManager.idl:594
peripheral::GatewaySensorManager::DeviceFeedback::deviceId
string deviceId
the same id as in RemoteDevice
Definition: GatewaySensorManager.idl:595
peripheral::GatewaySensorManager::FeedbackChangedEvent
Event: The configuration usage feedback has changed.
Definition: GatewaySensorManager.idl:612
peripheral::GatewaySensorManager::FeedbackChangedEvent::feedback
vector< Feedback > feedback
the latest configuration usage feedback
Definition: GatewaySensorManager.idl:613
peripheral::GatewaySensorManager::FeedbackObject
Feedback from gateway sensor configuration usage.
Definition: GatewaySensorManager.idl:574
peripheral::GatewaySensorManager::FeedbackObject::stateTansitionTo
FeedbackState stateTansitionTo
this FeedbackObject changes state, if not UNSPECIFIED
Definition: GatewaySensorManager.idl:585
peripheral::GatewaySensorManager::FeedbackObject::value
string value
message or value
Definition: GatewaySensorManager.idl:584
peripheral::GatewaySensorManager::FeedbackObject::key
string key
empty or free defined value name
Definition: GatewaySensorManager.idl:583
peripheral::GatewaySensorManager::Feedback
Definition: GatewaySensorManager.idl:588
peripheral::GatewaySensorManager::Feedback::currentState
FeedbackObject::FeedbackState currentState
Device or sensor state.
Definition: GatewaySensorManager.idl:589
peripheral::GatewaySensorManager::InterpretationRuleCatchAll
Definition: GatewaySensorManager.idl:415
peripheral::GatewaySensorManager::InterpretationRuleIEEE754INF
InterpretationRuleIEEE* are applied after value is wapped, masked and interpreted as float / double.
Definition: GatewaySensorManager.idl:413
peripheral::GatewaySensorManager::InterpretationRuleIEEE754NAN
Definition: GatewaySensorManager.idl:414
peripheral::GatewaySensorManager::InterpretationRuleInvertable
Definition: GatewaySensorManager.idl:373
peripheral::GatewaySensorManager::InterpretationRuleInvertable::invertCondition
boolean invertCondition
negate rule condition
Definition: GatewaySensorManager.idl:374
peripheral::GatewaySensorManager::InterpretationRuleModbusException
InterpretationRuleModbusException is applied to modbus read exceptions.
Definition: GatewaySensorManager.idl:379
peripheral::GatewaySensorManager::InterpretationRuleModbusException::exceptions
vector< int > exceptions
list of modbus exception codes
Definition: GatewaySensorManager.idl:380
peripheral::GatewaySensorManager::InterpretationRuleModbusSpecificError
InterpretationRuleModbusSpecificError is applied to specific errors from libmodbus.
Definition: GatewaySensorManager.idl:392
peripheral::GatewaySensorManager::InterpretationRuleModbusSpecificError::errors
vector< ModbusCfg::SpecificModbusErrors > errors
list of specific libmodbus error codes
Definition: GatewaySensorManager.idl:393
peripheral::GatewaySensorManager::InterpretationRuleModbusSystemError
InterpretationRuleModbusSystemError is applied to standard system errors returned from libmodbus.
Definition: GatewaySensorManager.idl:386
peripheral::GatewaySensorManager::InterpretationRuleModbusSystemError::errnos
vector< int > errnos
list of system error codes
Definition: GatewaySensorManager.idl:387
peripheral::GatewaySensorManager::InterpretationRuleRAW
InterpretationRuleRAW is applied after swap, but before masking (because it has it's own mask)
Definition: GatewaySensorManager.idl:398
peripheral::GatewaySensorManager::InterpretationRuleRAW::value
long value
compare to value
Definition: GatewaySensorManager.idl:399
peripheral::GatewaySensorManager::InterpretationRuleRAW::mask
long mask
(0 = not masked, the same as 0xFFFF...)
Definition: GatewaySensorManager.idl:400
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW
InterpretationRuleRangeRAW is applied after swap, but before masking (because it has it's own mask)
Definition: GatewaySensorManager.idl:405
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::mask
long mask
(0 = not masked, the same as 0xFFFF...)
Definition: GatewaySensorManager.idl:408
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::max
long max
maximum accepted value
Definition: GatewaySensorManager.idl:407
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::min
long min
minimum accepted value
Definition: GatewaySensorManager.idl:406
peripheral::GatewaySensorManager::InterpretationRule
InterpretationRule defines a rule that is applied to a reading, resulting in an Interpretation.
Definition: GatewaySensorManager.idl:368
peripheral::GatewaySensorManager::InterpretationRule::interpretation
Interpretation interpretation
how to interpret the applied rule
Definition: GatewaySensorManager.idl:369
peripheral::GatewaySensorManager::InterpretationRule::ignoreTimeout
int ignoreTimeout
if > 0, ignoring stops after this timeout (seconds), and state changes to unavailable
Definition: GatewaySensorManager.idl:370
peripheral::GatewaySensorManager::ModbusSensor
Definition: GatewaySensorManager.idl:511
peripheral::GatewaySensorManager::ModbusSensor::regAddr
int regAddr
Modbus server register address.
Definition: GatewaySensorManager.idl:513
peripheral::GatewaySensorManager::ModbusValueEncoding16
Definition: GatewaySensorManager.idl:442
peripheral::GatewaySensorManager::ModbusValueEncoding32
Definition: GatewaySensorManager.idl:449
peripheral::GatewaySensorManager::ModbusValueEncoding32::endianness
ModbusEndianness endianness
Modbus 16-bit-words should be transmitted in big endian order.
Definition: GatewaySensorManager.idl:454
peripheral::GatewaySensorManager::ModbusValueEncoding64
Definition: GatewaySensorManager.idl:458
peripheral::GatewaySensorManager::ModbusValueEncoding8
Definition: GatewaySensorManager.idl:431
peripheral::GatewaySensorManager::ModbusValueEncoding8::mask
long mask
mask raw value before interpreting (0 = not masked, the same as 0xFFFF...)
Definition: GatewaySensorManager.idl:439
peripheral::GatewaySensorManager::ModbusValueEncoding8::byteSwap
boolean byteSwap
16-bit modbus words should be transferred in big-endian byte order.
Definition: GatewaySensorManager.idl:438
peripheral::GatewaySensorManager::ModbusValueEncodingBit
Definition: GatewaySensorManager.idl:429
peripheral::GatewaySensorManager::NumericSensorClass
Sensor class that stores numeric sensor properties.
Definition: GatewaySensorManager.idl:232
peripheral::GatewaySensorManager::NumericSensorClass::defaultThresholds
sensors::NumericSensor Thresholds defaultThresholds
threshold values may be used initially and as default threshold values, depending on the value of the...
Definition: GatewaySensorManager.idl:242
peripheral::GatewaySensorManager::NumericSensorClass::metadata
sensors::NumericSensor MetaData metadata
numeric sensor type, ranges, etc.
Definition: GatewaySensorManager.idl:236
peripheral::GatewaySensorManager::NumericSensorClass::preferCommonThresholds
boolean preferCommonThresholds
if true, use common default thresholds if available, otherwise use the value of the defaultThresholds...
Definition: GatewaySensorManager.idl:244
peripheral::GatewaySensorManager::NumericValueEncoding
Definition: GatewaySensorManager.idl:424
peripheral::GatewaySensorManager::NumericValueEncoding::scalingFactor
float scalingFactor
multiply with when interpreting as numeric value
Definition: GatewaySensorManager.idl:425
peripheral::GatewaySensorManager::NumericValueEncoding::offset
float offset
add value after applying scalingFactor
Definition: GatewaySensorManager.idl:426
peripheral::GatewaySensorManager::RemoteDevice
Specification of a remote device that provides access to sensors.
Definition: GatewaySensorManager.idl:273
peripheral::GatewaySensorManager::RemoteDevice::timeoutMs
int timeoutMs
communication access timeout, 0 = default
Definition: GatewaySensorManager.idl:277
peripheral::GatewaySensorManager::RemoteDevice::name
string name
human readable remote device name
Definition: GatewaySensorManager.idl:276
peripheral::GatewaySensorManager::RemoteDevice::deviceId
string deviceId
remote device id
Definition: GatewaySensorManager.idl:274
peripheral::GatewaySensorManager::RemoteDevice::retry
int retry
communication retry count, 0 = default
Definition: GatewaySensorManager.idl:278
peripheral::GatewaySensorManager::RemoteDevice::disabled
boolean disabled
prevents usage of all sensor specifications which reference this device
Definition: GatewaySensorManager.idl:275
peripheral::GatewaySensorManager::RemoteModbusDevice
Definition: GatewaySensorManager.idl:289
peripheral::GatewaySensorManager::RemoteModbusDevice::detectionIdentifiers
map< int, string > detectionIdentifiers
list of expected device identifiers
Definition: GatewaySensorManager.idl:290
peripheral::GatewaySensorManager::RemoteModbusDevice::unitId
int unitId
modbus server address
Definition: GatewaySensorManager.idl:291
peripheral::GatewaySensorManager::RemoteModbusRTUDevice
Definition: GatewaySensorManager.idl:294
peripheral::GatewaySensorManager::RemoteModbusRTUDevice::busSettings
ModbusCfg::SerialSettings busSettings
interface settings
Definition: GatewaySensorManager.idl:296
peripheral::GatewaySensorManager::RemoteModbusRTUDevice::busInterface
string busInterface
modbus/rs485 interface, e.g. 'sensorhub1-rs485`
Definition: GatewaySensorManager.idl:295
peripheral::GatewaySensorManager::RemoteModbusRTUDevice::interframeDelayDeciChars
int interframeDelayDeciChars
(== 0) -> default, (< 0) -> no delay, (> 0) -> e.g. 35 means 3.5 chars
Definition: GatewaySensorManager.idl:297
peripheral::GatewaySensorManager::RemoteModbusTCPDevice
Definition: GatewaySensorManager.idl:300
peripheral::GatewaySensorManager::RemoteModbusTCPDevice::tcpPort
int tcpPort
modbus tcp port
Definition: GatewaySensorManager.idl:302
peripheral::GatewaySensorManager::RemoteModbusTCPDevice::ipAddress
string ipAddress
modbus device ip address
Definition: GatewaySensorManager.idl:301
peripheral::GatewaySensorManager::SensorClass
Specification of sensor class that stores sensor properties.
Definition: GatewaySensorManager.idl:225
peripheral::GatewaySensorManager::SensorClass::classId
string classId
sensor class id
Definition: GatewaySensorManager.idl:226
peripheral::GatewaySensorManager::SensorFeedback
Definition: GatewaySensorManager.idl:598
peripheral::GatewaySensorManager::SensorFeedback::sensorId
string sensorId
the same id as in Sensor
Definition: GatewaySensorManager.idl:601
peripheral::GatewaySensorManager::SensorFeedback::deviceId
string deviceId
the same id as in RemoteDevice
Definition: GatewaySensorManager.idl:600
peripheral::GatewaySensorManager::SensorFeedback::packageId
string packageId
the configuration package id
Definition: GatewaySensorManager.idl:599
peripheral::GatewaySensorManager::Sensor
Specification of a Sensor.
Definition: GatewaySensorManager.idl:466
peripheral::GatewaySensorManager::Sensor::disabled
boolean disabled
Set disabled = true prevents any usage of the specification.
Definition: GatewaySensorManager.idl:475
peripheral::GatewaySensorManager::Sensor::classId
string classId
sensor class id
Definition: GatewaySensorManager.idl:494
peripheral::GatewaySensorManager::Sensor::deviceId
string deviceId
remote device id
Definition: GatewaySensorManager.idl:483
peripheral::GatewaySensorManager::Sensor::defaultName
string defaultName
default sensor name
Definition: GatewaySensorManager.idl:508
peripheral::GatewaySensorManager::Sensor::encodingId
string encodingId
sensor encoding id
Definition: GatewaySensorManager.idl:501
peripheral::GatewaySensorManager::Sensor::sensorId
string sensorId
Unique sensor id, is automatically generated if not set.
Definition: GatewaySensorManager.idl:470
peripheral::GatewaySensorManager::StateSensorClass
Sensor class that stores state sensor properties.
Definition: GatewaySensorManager.idl:250
peripheral::GatewaySensorManager::StateSensorClass::type
sensors::Sensor TypeSpec type
state sensor type
Definition: GatewaySensorManager.idl:251
peripheral::GatewaySensorManager::SwitchSensorClass
Sensor class that switch properties.
Definition: GatewaySensorManager.idl:257
peripheral::GatewaySensorManager::ValueEncoding
Definition: GatewaySensorManager.idl:417
peripheral::GatewaySensorManager::ValueEncoding::invertState
boolean invertState
invert when interpreting as state
Definition: GatewaySensorManager.idl:420
peripheral::GatewaySensorManager::ValueEncoding::type
EncodingType type
value coding type
Definition: GatewaySensorManager.idl:419
peripheral::GatewaySensorManager::ValueEncoding::interpretationRules
vector< InterpretationRule > interpretationRules
error/value inerpretation rules
Definition: GatewaySensorManager.idl:421
peripheral::GatewaySensorManager::ValueEncoding::encodingId
string encodingId
encoding type id
Definition: GatewaySensorManager.idl:418
peripheral::ModbusCfg::SerialSettings
Definition: ModbusCfg.idl:14
sensors::NumericSensor::MetaData
Numeric sensor metadata.
Definition: NumericSensor.idl:40
sensors::NumericSensor::Thresholds
Numeric sensor thresholds.
Definition: NumericSensor.idl:111
sensors::Sensor::TypeSpec
Complete sensor type specification.
Definition: Sensor.idl:169