Legrand / Raritan / Server Technology Xerus™ JSON-RPC API

Loading...
Searching...
No Matches
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 */
17module 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 = "REMOTE-HUB-1"
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 = "USB-2"
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 = "REMOTE-HUB-1"
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 /**
296 * @brief rs485 interface used for modbus communication
297 *
298 * Supported values:
299 *
300 * (1) with SRC-080X, only the REMOTE HUB interfaces are support, possible values are:
301 * - "REMOTE-HUB-1" or "sensorhub0-rs485" (deprecated) mean port "REMOTE HUB 1"
302 * - "REMOTE-HUB-2" or "sensorhub1-rs485" (deprecated) mean port "REMOTE HUB 2"
303 *
304 * (2) with Raritan Modbus/RS-485 dongle "USB-MOD-DONGLE", possible values are:
305 * - "USB<topo>": where <topo> contains the USB port number and possibly the topology of USB hubs
306 * - "USB-2" means dongle connected to PDU USB port "USB A 2"
307 * - "USB-1-2-3" means dongle is connected to a first USB hub at port 3,
308 * and the first USB hub is connected to a second USB hub at port 2,
309 * and the second USB is connected to PDU USB port "USB A 1"
310 * - "<serial>": where <serial> is the serial number of USB donge, according to the label
311 */
312 string busInterface;
313 ModbusCfg.SerialSettings busSettings; ///< interface settings
314 int interframeDelayDeciChars; ///< (== 0) -> default, (< 0) -> no delay, (> 0) -> e.g. 35 means 3.5 chars
315 };
316
317 valueobject RemoteModbusTCPDevice extends RemoteModbusDevice {
318 string ipAddress; ///< modbus device ip address
319 int tcpPort; ///< modbus tcp port
320 };
321
322 valueobject RemoteSnmpDevice extends RemoteDevice {
323 string host; ///< host
324 };
325
326 valueobject RemoteSnmpV1V2Device extends RemoteSnmpDevice {
327 string community; ///< community string for v1/v2c
328 };
329
330 enumeration SnmpSecurityLevel {
331 NO_AUTH_NO_PRIV, ///< no authentication, no privacy
332 AUTH_NO_PRIV, ///< authentication, no privacy
333 AUTH_PRIV ///< authentication, privacy
334 };
335
336 enumeration SnmpAuthProtocol {
337 MD5, ///< MD5
338 SHA1, ///< SHA-1
339 SHA224, ///< SHA-224
340 SHA256, ///< SHA-256
341 SHA384, ///< SHA-384
342 SHA512 ///< SHA-512
343 };
344
345 enumeration SnmpPrivProtocol {
346 DES, ///< DES
347 AES128, ///< AES-128
348 AES192, ///< AES-192
349 AES256, ///< AES-256
350 AES192_3DES, ///< AES-192 with key extension (3DES)
351 AES256_3DES ///< AES-256 with key extension (3DES)
352 };
353
354 valueobject RemoteSnmpV3Device extends RemoteSnmpDevice {
355 string user; ///< security user name
356 SnmpSecurityLevel level; ///< security level (noAuthNoPriv|authNoPriv|authPriv)
357 SnmpAuthProtocol authProtocol; ///< authentication protocol (MD5|SHA|SHA-224|SHA-256|SHA-384|SHA-512)
358 string authPassphrase; ///< authentication protocol passphrase
359 SnmpPrivProtocol privacyProtocol; ///< privacy protocol (DES|AES|AES-192|AES-256)
360 string privacyPassphrase; ///< privacy protocol pass phrase
361 };
362
363 /* ======================= VALUE ENCODING ========================= */
364
365 /**
366 * interpretation of binary values
367 */
368 enumeration EncodingType {
369 BOOL, ///< boolean
370 INT, ///< signed integer of a size specified in ValueEncoding as two's complement
371 UINT, ///< unsigned integer of a size specified in ValueEncoding
372 IEEE754, ///< IEEE 754 floating point of a size specified in ValueEncoding
373 INT_ONES_COMPLEMENT, ///< integer as one's complement
374 INT_SIGN_MAGNITUDE, ///< signed integer with sign in MSB
375 INT_10K, ///< signed integer stored as 'modulo 10000' (int16[0] + 10000 * int16[1] + 10000^2 * int16[2] ...), the int16 parts are stores as two's complement
376 UINT_10K, ///< unsigned integer stored as 'modulo 10000' (uint16[0] + 10000 * uint16[1] + 10000^2 * uint16[2] ...)
377 INT_BCD, ///< signed integer as BCD, 10th complement
378 INT_SIGN_MAGNITUDE_BCD, ///< signed integer as BCD, with sign in MSB
379 UINT_BCD, ///< unsigned integer as BCD
380 INT_PACKED_BCD, ///< signed integer as packed BCD, 10th complement
381 INT_SIGN_MAGNITUDE_PACKED_BCD, ///< signed integer as packed BCD, with sign in MSB
382 UINT_PACKED_BCD ///< unsigned integer as packed BCD
383 };
384
385 /**
386 * @brief Here you define how certain read values are to be interpreted
387 *
388 * The rules leading to *_IGNORE and *_UNAVAILABLE are applied to numeric values and states.
389 *
390 * IGNORE can be time-limited using ignoreTimeout, see InterpretationRule. After the time has expired,
391 * the value is set to unavailable.
392 *
393 * NUMERIC_INVALID only affects NumericSensors. As DEFAULT for numeric sensors (if
394 * no rule is matched, or if DEFAULT is matched) the value is converted to a floating point
395 * number according to type specification.
396 *
397 * STATE_ON and STATE_OFF affect only StateSensors. If no such rule is specified, the state
398 * becomes true if the read value is integral and not 0. If STATE_ON or STATE_OFF are present in
399 * the rules, then the state is set to true or false only if a STATE_* rule matches. Otherwise
400 * (DEFAULT) the state becomes unavailable.
401
402 * REJECT_SENSOR means: do not accept this reading in any way. The sensor is treated as
403 * non-existent.
404 *
405 * REJECT_DEVICE means: do not accept this reading in any way. Instead, this is a clear
406 * indication that the device is defective, or it is a wrong device. All sensors that belong
407 * to this device are treated as non-existent.
408 * REJECT_DEVICE can be used in this way to detect devices. The sensor defined for this purpose
409 * does not have to be imported as gateway sensor (see Sensor.classId = "").
410 *
411 * DEFAULT on failed receives modbus exceptions REJECT_SENSOR. DEFAULT on modbus read errors
412 * (e.g. timeouts) is REJECT_DEVICE.
413 */
414 enumeration Interpretation {
415 DEFAULT, ///< use default decoding
416 REJECT_DEVICE, ///< device is treated as non-existent
417 REJECT_SENSOR, ///< sensor is treated as non-existent
418 IGNORE, ///< ignore (use previous value)
419 UNAVAILABLE, ///< set value to unavailable
420 NUMERIC_INVALID, ///< set numeric value to invalid
421 STATE_ON, ///< set state to ON
422 STATE_OFF ///< set state to OFF
423 };
424
425 /**
426 * InterpretationRule defines a rule that is applied to a reading, resulting in an Interpretation.
427 * A list of InterpretationRule is applied in the given order, and stopped after the first match.
428 * If no rule applies, the interpretation is Interpretation.DEFAULT.
429 **/
430 valueobject InterpretationRule {
431 Interpretation interpretation; ///< how to interpret the applied rule
432 int ignoreTimeout; ///< if > 0, ignoring stops after this timeout (seconds), and state changes to unavailable
433 };
434
435 valueobject InterpretationRuleInvertable extends InterpretationRule {
436 boolean invertCondition; ///< negate rule condition
437 };
438
439 /** InterpretationRuleModbusException is applied to modbus read exceptions
440 */
441 valueobject InterpretationRuleModbusException extends InterpretationRuleInvertable {
442 vector<int> exceptions; ///< list of modbus exception codes
443 };
444
445 /** InterpretationRuleModbusSystemError is applied to standard system errors returned
446 * from libmodbus
447 */
448 valueobject InterpretationRuleModbusSystemError extends InterpretationRuleInvertable {
449 vector<int> errnos; ///< list of system error codes
450 };
451
452 /** InterpretationRuleModbusSpecificError is applied to specific errors from libmodbus
453 */
454 valueobject InterpretationRuleModbusSpecificError extends InterpretationRuleInvertable {
455 vector<ModbusCfg.SpecificModbusErrors> errors; ///< list of specific libmodbus error codes
456 };
457
458 /** InterpretationRuleRAW is applied after swap, but before masking (because it has it's own mask)
459 */
460 valueobject InterpretationRuleRAW extends InterpretationRuleInvertable {
461 long value; ///< compare to value
462 long mask; ///< (0 = not masked, the same as 0xFFFF...)
463 };
464
465 /** InterpretationRuleRangeRAW is applied after swap, but before masking (because it has it's own mask)
466 */
467 valueobject InterpretationRuleRangeRAW extends InterpretationRuleInvertable {
468 long min; ///< minimum accepted value (always compare as unsigned)
469 long max; ///< maximum accepted value (always compare as unsigned)
470 long mask; ///< (0 = not masked, the same as 0xFFFF...)
471 };
472
473 /** InterpretationRuleEnum is applied to a reading and maps the values to the given Interpretation
474 */
475 valueobject InterpretationRuleEnum extends InterpretationRuleInvertable {
476 vector<long> enumValues; ///< values to map
477 };
478
479 /** InterpretationRuleIEEE* are applied after value is wapped, masked and interpreted as float / double
480 */
481 valueobject InterpretationRuleIEEE754INF extends InterpretationRuleInvertable {};
482 valueobject InterpretationRuleIEEE754NAN extends InterpretationRuleInvertable {};
483 valueobject InterpretationRuleCatchAll extends InterpretationRule {};
484
485 /**
486 * @brief Specification of value encoding
487 *
488 * Before an instance of Sensor can be created,
489 * an instance of ValueEncoding must be present.
490 * The Sensor locates the corresponding ValueEncoding
491 * using the sensor class id `encodingId`.
492 */
493 valueobject ValueEncoding {
494 string encodingId; ///< encoding type id
495 EncodingType type; ///< value coding type
496 boolean invertState; ///< invert when interpreting as state
497 vector<InterpretationRule> interpretationRules; ///< error/value interpretation rules
498 int minAccessInterval; ///< minimum time interval between two read accesses in seconds
499 };
500
501 valueobject NumericValueEncoding extends ValueEncoding {
502 float scalingFactor; ///< multiply with when interpreting as numeric value
503 float offset; ///< add value after applying scalingFactor
504 };
505
506 valueobject ModbusValueEncodingBit extends ValueEncoding {};
507
508 valueobject ModbusValueEncoding8 extends NumericValueEncoding {
509 /**
510 * 16-bit modbus words should be transferred in big-endian byte order.
511 * For modbus devices that do not comply with this, byteSwap = true must
512 * be set. Another application is to use byteSwap to address a single byte in
513 * a 16-bit modbus word in case 8-bit values are requested (ModbusValueEncoding8).
514 */
515 boolean byteSwap;
516 /**
517 * mask raw value before interpreting (0 = not masked, the same as 0xFFFF...)
518 */
519 long mask;
520 /**
521 * The least significant bit of the read word used in numerical interpretation.
522 * If `start` is greater than 0, then one or more least significant bits remain unused.
523 * 0 is the default value. For integer values a `start > 0` has mostly the same effect as
524 * using a `mask = ~(2^start-1)` and a `scalingFactor = 1/2^start`.
525 */
526 int start;
527 /**
528 * Word width in bits used in numerical interpretation.
529 * If `width` is smaller than the read word width, then the most significant bits remain unused.
530 * 0 is the default value.
531 * Example: 24 bit signed integer:
532 * `ModbusValueEncoding32` with `start = 0` and `width = 24` and 'type = INT`
533 * (Only for unsigned integer the use of `mask` would be sufficient.)
534 */
535 int width;
536 };
537
538 valueobject ModbusValueEncoding16 extends ModbusValueEncoding8 {};
539
540 enumeration ModbusEndianness {
541 MODBUS_BIG_ENDIAN, ///< use big endian modbus word order (default is big endian)
542 MODBUS_LITTLE_ENDIAN ///< use little endian modbus word order
543 };
544
545 valueobject ModbusValueEncoding32 extends ModbusValueEncoding16 {
546 /**
547 * Modbus 16-bit-words should be transmitted in big endian order. For modbus
548 * devices that do not comply with this, endianness must be set to LITTLE_ENDIAN.
549 */
550 ModbusEndianness endianness;
551 };
552
553 valueobject ModbusValueEncoding48 extends ModbusValueEncoding32 {};
554
555 valueobject ModbusValueEncoding64 extends ModbusValueEncoding32 {};
556
557
558 /* ======================= SENSORS ========================= */
559
560 /**
561 * Specification of a Sensor
562 */
563 valueobject Sensor {
564 /**
565 * Unique sensor id, is automatically generated if not set
566 */
567 string sensorId;
568
569 /**
570 * Set disabled = true prevents any usage of the specification
571 */
572 boolean disabled;
573
574 /**
575 * @brief remote device id
576 *
577 * deviceId is used to locate the corresponding RemoteDevice that
578 * provides the physical sensor
579 */
580 string deviceId;
581
582 /**
583 * @brief sensor class id
584 *
585 * classId is used to locate the corresponding SensorClass.
586 * classId = "" prevents the sensor specification from being used
587 * for an imported gateway sensor. The sensor value is read anyway, and a read
588 * error or a interpretation as Interpretation.REJECT_DEVICE
589 * prevents the successful detection of the device
590 */
591 string classId;
592
593 /**
594 * @brief sensor encoding id
595 *
596 * classId is used to locate the corresponding ValueEncoding
597 */
598 string encodingId;
599
600 /**
601 * @brief default sensor name
602 *
603 * defaultName is used as sensor slot name
604 */
605 string defaultName;
606 };
607
608 valueobject ModbusSensor extends Sensor {
609 ModbusCfg.ModbusFunction function; ///< Modbus function to be used
610 int regAddr; ///< Modbus server register address
611 };
612
613 valueobject SnmpSensor extends Sensor {
614 string oid; ///< sensor oid
615 };
616
617 /* ======================= FULL CONFIGURATION ========================= */
618
619 structure ConfigurationPackage {
620 boolean disabled; ///< prevents usage of all sensor specifications defined in this package
621 string name; ///< package name
622 vector<SensorClass> classes;
623 vector<RemoteDevice> devices;
624 vector<ValueEncoding> encodings;
625 vector<Sensor> sensors;
626 };
627
628 /**
629 * @brief Get all defined gateway sensors and required objects from config
630 *
631 * Read all Sensor Classes, Remote Devices, Value Encodings and Sensors
632 * at once to ensure that the overall configuration is consistent
633 *
634 * @return all defined gateway sensor feature configuration objects
635 */
636 map<string, ConfigurationPackage> getConfiguration();
637
638 constant int ERR_CONFIG_INCONSISTENT = 1;
639 constant int ERR_CONFIG_STORAGE_FAILED = 2;
640
641 /**
642 * @brief Replace defined gateway sensor and/or other configuration objects in config
643 *
644 * Write all Sensor Classes, Remote Devices, Value Encodings and Sensors
645 * at once to ensure that the overall configuration is consistent at every
646 * moment.
647 *
648 * The uniqueness of all IDs and the availability of all referenced elements are
649 * checked before the configuration is applied. Otherwise setConfiguration() returns
650 * with an error.
651 *
652 * @param cfg all defined gateway sensor feature configuration objects
653 * @return 0 if OK
654 * @return ERR_CONFIG_INCONSISTENT if consistency check has failed (e.g. non-unique identifiers)
655 * @return ERR_CONFIG_STORAGE_FAILED if configuration cannot be stored
656 */
657 int setConfiguration(in map<string, ConfigurationPackage> cfg);
658
659 /** Event: The gateway sensor feature configuration has changed */
660 valueobject ConfigurationChangedEvent extends idl.Event {
661 map<string, ConfigurationPackage> configuration; ///< the current gateway sensor feature configuration
662 };
663
664
665 /* ======================= FEEDBACK ========================= */
666
667 /**
668 * @brief Feedback from gateway sensor configuration usage
669 *
670 * There is no knowledge of Feedback required to configure gateway sensors.
671 * The following is only needed for special tools that monitor the usage
672 * of the configurations above.
673 */
674 structure FeedbackObject {
675 enumeration FeedbackState {
676 UNSPECIFIED,
677 INTENTIONALLY_UNUSED,
678 FAILED_PRECONDITIONS_UNUSED,
679 FAILED,
680 GOOD
681 };
682
683 string key; ///< empty or free defined value name
684 string value; ///< message or value
685 FeedbackState stateTansitionTo; ///< this FeedbackObject changes state, if not UNSPECIFIED
686 };
687
688 valueobject Feedback {
689 FeedbackObject.FeedbackState currentState; ///< Device or sensor state
690 vector<FeedbackObject> infos;
691 };
692
693 valueobject DeviceFeedback extends Feedback {
694 string packageId; ///< the configuration package id
695 string deviceId; ///< the same id as in RemoteDevice
696 };
697
698 valueobject SensorFeedback extends Feedback {
699 string packageId; ///< the configuration package id
700 string deviceId; ///< the same id as in RemoteDevice
701 string sensorId; ///< the same id as in Sensor
702 };
703
704 /**
705 * Get feedback from gateway sensor configuration usage
706 *
707 * @return Result: the full feedback
708 */
709 vector<Feedback> getFeedback();
710
711 /** Event: The configuration usage feedback has changed */
712 valueobject FeedbackChangedEvent extends idl.Event {
713 vector<Feedback> feedback; ///< the latest configuration usage feedback
714 };
715 };
716}
717
718#endif /* __PERIPHERAL_GATEWAY_SENSOR_MANAGER_IDL__ */
peripheral::GatewaySensorManager
Gateway Sensor Configuration Interface.
Definition GatewaySensorManager.idl:20
peripheral::GatewaySensorManager::ModbusEndianness
ModbusEndianness
Definition GatewaySensorManager.idl:540
peripheral::GatewaySensorManager::MODBUS_BIG_ENDIAN
@ MODBUS_BIG_ENDIAN
use big endian modbus word order (default is big endian)
Definition GatewaySensorManager.idl:541
peripheral::GatewaySensorManager::SnmpPrivProtocol
SnmpPrivProtocol
Definition GatewaySensorManager.idl:345
peripheral::GatewaySensorManager::AES128
@ AES128
AES-128.
Definition GatewaySensorManager.idl:347
peripheral::GatewaySensorManager::AES192_3DES
@ AES192_3DES
AES-192 with key extension (3DES)
Definition GatewaySensorManager.idl:350
peripheral::GatewaySensorManager::AES192
@ AES192
AES-192.
Definition GatewaySensorManager.idl:348
peripheral::GatewaySensorManager::AES256
@ AES256
AES-256.
Definition GatewaySensorManager.idl:349
peripheral::GatewaySensorManager::DES
@ DES
DES.
Definition GatewaySensorManager.idl:346
peripheral::GatewaySensorManager::SnmpAuthProtocol
SnmpAuthProtocol
Definition GatewaySensorManager.idl:336
peripheral::GatewaySensorManager::MD5
@ MD5
MD5.
Definition GatewaySensorManager.idl:337
peripheral::GatewaySensorManager::SHA256
@ SHA256
SHA-256.
Definition GatewaySensorManager.idl:340
peripheral::GatewaySensorManager::SHA384
@ SHA384
SHA-384.
Definition GatewaySensorManager.idl:341
peripheral::GatewaySensorManager::SHA224
@ SHA224
SHA-224.
Definition GatewaySensorManager.idl:339
peripheral::GatewaySensorManager::SHA1
@ SHA1
SHA-1.
Definition GatewaySensorManager.idl:338
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
interpretation of binary values
Definition GatewaySensorManager.idl:368
peripheral::GatewaySensorManager::INT_10K
@ INT_10K
signed integer stored as 'modulo 10000' (int16[0] + 10000 * int16[1] + 10000^2 * int16[2] ....
Definition GatewaySensorManager.idl:375
peripheral::GatewaySensorManager::INT_SIGN_MAGNITUDE_BCD
@ INT_SIGN_MAGNITUDE_BCD
signed integer as BCD, with sign in MSB
Definition GatewaySensorManager.idl:378
peripheral::GatewaySensorManager::IEEE754
@ IEEE754
IEEE 754 floating point of a size specified in ValueEncoding.
Definition GatewaySensorManager.idl:372
peripheral::GatewaySensorManager::UINT_10K
@ UINT_10K
unsigned integer stored as 'modulo 10000' (uint16[0] + 10000 * uint16[1] + 10000^2 * uint16[2] ....
Definition GatewaySensorManager.idl:376
peripheral::GatewaySensorManager::INT_SIGN_MAGNITUDE
@ INT_SIGN_MAGNITUDE
signed integer with sign in MSB
Definition GatewaySensorManager.idl:374
peripheral::GatewaySensorManager::INT_PACKED_BCD
@ INT_PACKED_BCD
signed integer as packed BCD, 10th complement
Definition GatewaySensorManager.idl:380
peripheral::GatewaySensorManager::INT_BCD
@ INT_BCD
signed integer as BCD, 10th complement
Definition GatewaySensorManager.idl:377
peripheral::GatewaySensorManager::INT_SIGN_MAGNITUDE_PACKED_BCD
@ INT_SIGN_MAGNITUDE_PACKED_BCD
signed integer as packed BCD, with sign in MSB
Definition GatewaySensorManager.idl:381
peripheral::GatewaySensorManager::INT_ONES_COMPLEMENT
@ INT_ONES_COMPLEMENT
integer as one's complement
Definition GatewaySensorManager.idl:373
peripheral::GatewaySensorManager::BOOL
@ BOOL
boolean
Definition GatewaySensorManager.idl:369
peripheral::GatewaySensorManager::UINT_BCD
@ UINT_BCD
unsigned integer as BCD
Definition GatewaySensorManager.idl:379
peripheral::GatewaySensorManager::INT
@ INT
signed integer of a size specified in ValueEncoding as two's complement
Definition GatewaySensorManager.idl:370
peripheral::GatewaySensorManager::UINT
@ UINT
unsigned integer of a size specified in ValueEncoding
Definition GatewaySensorManager.idl:371
peripheral::GatewaySensorManager::SnmpSecurityLevel
SnmpSecurityLevel
Definition GatewaySensorManager.idl:330
peripheral::GatewaySensorManager::AUTH_NO_PRIV
@ AUTH_NO_PRIV
authentication, no privacy
Definition GatewaySensorManager.idl:332
peripheral::GatewaySensorManager::NO_AUTH_NO_PRIV
@ NO_AUTH_NO_PRIV
no authentication, no privacy
Definition GatewaySensorManager.idl:331
peripheral::GatewaySensorManager::Interpretation
Interpretation
Here you define how certain read values are to be interpreted.
Definition GatewaySensorManager.idl:414
peripheral::GatewaySensorManager::DEFAULT
@ DEFAULT
use default decoding
Definition GatewaySensorManager.idl:415
peripheral::GatewaySensorManager::UNAVAILABLE
@ UNAVAILABLE
set value to unavailable
Definition GatewaySensorManager.idl:419
peripheral::GatewaySensorManager::IGNORE
@ IGNORE
ignore (use previous value)
Definition GatewaySensorManager.idl:418
peripheral::GatewaySensorManager::REJECT_SENSOR
@ REJECT_SENSOR
sensor is treated as non-existent
Definition GatewaySensorManager.idl:417
peripheral::GatewaySensorManager::NUMERIC_INVALID
@ NUMERIC_INVALID
set numeric value to invalid
Definition GatewaySensorManager.idl:420
peripheral::GatewaySensorManager::STATE_ON
@ STATE_ON
set state to ON
Definition GatewaySensorManager.idl:421
peripheral::GatewaySensorManager::REJECT_DEVICE
@ REJECT_DEVICE
device is treated as non-existent
Definition GatewaySensorManager.idl:416
peripheral::GatewaySensorManager::getFeedback
vector< Feedback > getFeedback()
Get feedback from gateway sensor configuration usage.
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 PosElement.idl:22
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:660
peripheral::GatewaySensorManager::ConfigurationChangedEvent::configuration
map< string, ConfigurationPackage > configuration
the current gateway sensor feature configuration
Definition GatewaySensorManager.idl:661
peripheral::GatewaySensorManager::ConfigurationPackage
Definition GatewaySensorManager.idl:619
peripheral::GatewaySensorManager::ConfigurationPackage::disabled
boolean disabled
prevents usage of all sensor specifications defined in this package
Definition GatewaySensorManager.idl:620
peripheral::GatewaySensorManager::ConfigurationPackage::name
string name
package name
Definition GatewaySensorManager.idl:621
peripheral::GatewaySensorManager::DeviceFeedback
Definition GatewaySensorManager.idl:693
peripheral::GatewaySensorManager::DeviceFeedback::packageId
string packageId
the configuration package id
Definition GatewaySensorManager.idl:694
peripheral::GatewaySensorManager::DeviceFeedback::deviceId
string deviceId
the same id as in RemoteDevice
Definition GatewaySensorManager.idl:695
peripheral::GatewaySensorManager::FeedbackChangedEvent
Event: The configuration usage feedback has changed.
Definition GatewaySensorManager.idl:712
peripheral::GatewaySensorManager::FeedbackChangedEvent::feedback
vector< Feedback > feedback
the latest configuration usage feedback
Definition GatewaySensorManager.idl:713
peripheral::GatewaySensorManager::FeedbackObject
Feedback from gateway sensor configuration usage.
Definition GatewaySensorManager.idl:674
peripheral::GatewaySensorManager::FeedbackObject::stateTansitionTo
FeedbackState stateTansitionTo
this FeedbackObject changes state, if not UNSPECIFIED
Definition GatewaySensorManager.idl:685
peripheral::GatewaySensorManager::FeedbackObject::value
string value
message or value
Definition GatewaySensorManager.idl:684
peripheral::GatewaySensorManager::FeedbackObject::key
string key
empty or free defined value name
Definition GatewaySensorManager.idl:683
peripheral::GatewaySensorManager::Feedback
Definition GatewaySensorManager.idl:688
peripheral::GatewaySensorManager::Feedback::currentState
FeedbackObject::FeedbackState currentState
Device or sensor state.
Definition GatewaySensorManager.idl:689
peripheral::GatewaySensorManager::InterpretationRuleCatchAll
Definition GatewaySensorManager.idl:483
peripheral::GatewaySensorManager::InterpretationRuleEnum
InterpretationRuleEnum is applied to a reading and maps the values to the given Interpretation.
Definition GatewaySensorManager.idl:475
peripheral::GatewaySensorManager::InterpretationRuleEnum::enumValues
vector< long > enumValues
values to map
Definition GatewaySensorManager.idl:476
peripheral::GatewaySensorManager::InterpretationRuleIEEE754INF
InterpretationRuleIEEE* are applied after value is wapped, masked and interpreted as float / double.
Definition GatewaySensorManager.idl:481
peripheral::GatewaySensorManager::InterpretationRuleIEEE754NAN
Definition GatewaySensorManager.idl:482
peripheral::GatewaySensorManager::InterpretationRuleInvertable
Definition GatewaySensorManager.idl:435
peripheral::GatewaySensorManager::InterpretationRuleInvertable::invertCondition
boolean invertCondition
negate rule condition
Definition GatewaySensorManager.idl:436
peripheral::GatewaySensorManager::InterpretationRuleModbusException
InterpretationRuleModbusException is applied to modbus read exceptions.
Definition GatewaySensorManager.idl:441
peripheral::GatewaySensorManager::InterpretationRuleModbusException::exceptions
vector< int > exceptions
list of modbus exception codes
Definition GatewaySensorManager.idl:442
peripheral::GatewaySensorManager::InterpretationRuleModbusSpecificError
InterpretationRuleModbusSpecificError is applied to specific errors from libmodbus.
Definition GatewaySensorManager.idl:454
peripheral::GatewaySensorManager::InterpretationRuleModbusSpecificError::errors
vector< ModbusCfg::SpecificModbusErrors > errors
list of specific libmodbus error codes
Definition GatewaySensorManager.idl:455
peripheral::GatewaySensorManager::InterpretationRuleModbusSystemError
InterpretationRuleModbusSystemError is applied to standard system errors returned from libmodbus.
Definition GatewaySensorManager.idl:448
peripheral::GatewaySensorManager::InterpretationRuleModbusSystemError::errnos
vector< int > errnos
list of system error codes
Definition GatewaySensorManager.idl:449
peripheral::GatewaySensorManager::InterpretationRuleRAW
InterpretationRuleRAW is applied after swap, but before masking (because it has it's own mask)
Definition GatewaySensorManager.idl:460
peripheral::GatewaySensorManager::InterpretationRuleRAW::value
long value
compare to value
Definition GatewaySensorManager.idl:461
peripheral::GatewaySensorManager::InterpretationRuleRAW::mask
long mask
(0 = not masked, the same as 0xFFFF...)
Definition GatewaySensorManager.idl:462
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW
InterpretationRuleRangeRAW is applied after swap, but before masking (because it has it's own mask)
Definition GatewaySensorManager.idl:467
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::mask
long mask
(0 = not masked, the same as 0xFFFF...)
Definition GatewaySensorManager.idl:470
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::max
long max
maximum accepted value (always compare as unsigned)
Definition GatewaySensorManager.idl:469
peripheral::GatewaySensorManager::InterpretationRuleRangeRAW::min
long min
minimum accepted value (always compare as unsigned)
Definition GatewaySensorManager.idl:468
peripheral::GatewaySensorManager::InterpretationRule
InterpretationRule defines a rule that is applied to a reading, resulting in an Interpretation.
Definition GatewaySensorManager.idl:430
peripheral::GatewaySensorManager::InterpretationRule::interpretation
Interpretation interpretation
how to interpret the applied rule
Definition GatewaySensorManager.idl:431
peripheral::GatewaySensorManager::InterpretationRule::ignoreTimeout
int ignoreTimeout
if > 0, ignoring stops after this timeout (seconds), and state changes to unavailable
Definition GatewaySensorManager.idl:432
peripheral::GatewaySensorManager::ModbusSensor
Definition GatewaySensorManager.idl:608
peripheral::GatewaySensorManager::ModbusSensor::regAddr
int regAddr
Modbus server register address.
Definition GatewaySensorManager.idl:610
peripheral::GatewaySensorManager::ModbusValueEncoding16
Definition GatewaySensorManager.idl:538
peripheral::GatewaySensorManager::ModbusValueEncoding32
Definition GatewaySensorManager.idl:545
peripheral::GatewaySensorManager::ModbusValueEncoding32::endianness
ModbusEndianness endianness
Modbus 16-bit-words should be transmitted in big endian order.
Definition GatewaySensorManager.idl:550
peripheral::GatewaySensorManager::ModbusValueEncoding48
Definition GatewaySensorManager.idl:553
peripheral::GatewaySensorManager::ModbusValueEncoding64
Definition GatewaySensorManager.idl:555
peripheral::GatewaySensorManager::ModbusValueEncoding8
Definition GatewaySensorManager.idl:508
peripheral::GatewaySensorManager::ModbusValueEncoding8::mask
long mask
mask raw value before interpreting (0 = not masked, the same as 0xFFFF...)
Definition GatewaySensorManager.idl:519
peripheral::GatewaySensorManager::ModbusValueEncoding8::width
int width
Word width in bits used in numerical interpretation.
Definition GatewaySensorManager.idl:535
peripheral::GatewaySensorManager::ModbusValueEncoding8::start
int start
The least significant bit of the read word used in numerical interpretation.
Definition GatewaySensorManager.idl:526
peripheral::GatewaySensorManager::ModbusValueEncoding8::byteSwap
boolean byteSwap
16-bit modbus words should be transferred in big-endian byte order.
Definition GatewaySensorManager.idl:515
peripheral::GatewaySensorManager::ModbusValueEncodingBit
Definition GatewaySensorManager.idl:506
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:501
peripheral::GatewaySensorManager::NumericValueEncoding::scalingFactor
float scalingFactor
multiply with when interpreting as numeric value
Definition GatewaySensorManager.idl:502
peripheral::GatewaySensorManager::NumericValueEncoding::offset
float offset
add value after applying scalingFactor
Definition GatewaySensorManager.idl:503
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:313
peripheral::GatewaySensorManager::RemoteModbusRTUDevice::busInterface
string busInterface
rs485 interface used for modbus communication
Definition GatewaySensorManager.idl:312
peripheral::GatewaySensorManager::RemoteModbusRTUDevice::interframeDelayDeciChars
int interframeDelayDeciChars
(== 0) -> default, (< 0) -> no delay, (> 0) -> e.g. 35 means 3.5 chars
Definition GatewaySensorManager.idl:314
peripheral::GatewaySensorManager::RemoteModbusTCPDevice
Definition GatewaySensorManager.idl:317
peripheral::GatewaySensorManager::RemoteModbusTCPDevice::tcpPort
int tcpPort
modbus tcp port
Definition GatewaySensorManager.idl:319
peripheral::GatewaySensorManager::RemoteModbusTCPDevice::ipAddress
string ipAddress
modbus device ip address
Definition GatewaySensorManager.idl:318
peripheral::GatewaySensorManager::RemoteSnmpDevice
Definition GatewaySensorManager.idl:322
peripheral::GatewaySensorManager::RemoteSnmpDevice::host
string host
host
Definition GatewaySensorManager.idl:323
peripheral::GatewaySensorManager::RemoteSnmpV1V2Device
Definition GatewaySensorManager.idl:326
peripheral::GatewaySensorManager::RemoteSnmpV1V2Device::community
string community
community string for v1/v2c
Definition GatewaySensorManager.idl:327
peripheral::GatewaySensorManager::RemoteSnmpV3Device
Definition GatewaySensorManager.idl:354
peripheral::GatewaySensorManager::RemoteSnmpV3Device::user
string user
security user name
Definition GatewaySensorManager.idl:355
peripheral::GatewaySensorManager::RemoteSnmpV3Device::privacyProtocol
SnmpPrivProtocol privacyProtocol
privacy protocol (DES|AES|AES-192|AES-256)
Definition GatewaySensorManager.idl:359
peripheral::GatewaySensorManager::RemoteSnmpV3Device::privacyPassphrase
string privacyPassphrase
privacy protocol pass phrase
Definition GatewaySensorManager.idl:360
peripheral::GatewaySensorManager::RemoteSnmpV3Device::level
SnmpSecurityLevel level
security level (noAuthNoPriv|authNoPriv|authPriv)
Definition GatewaySensorManager.idl:356
peripheral::GatewaySensorManager::RemoteSnmpV3Device::authProtocol
SnmpAuthProtocol authProtocol
authentication protocol (MD5|SHA|SHA-224|SHA-256|SHA-384|SHA-512)
Definition GatewaySensorManager.idl:357
peripheral::GatewaySensorManager::RemoteSnmpV3Device::authPassphrase
string authPassphrase
authentication protocol passphrase
Definition GatewaySensorManager.idl:358
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:698
peripheral::GatewaySensorManager::SensorFeedback::sensorId
string sensorId
the same id as in Sensor
Definition GatewaySensorManager.idl:701
peripheral::GatewaySensorManager::SensorFeedback::deviceId
string deviceId
the same id as in RemoteDevice
Definition GatewaySensorManager.idl:700
peripheral::GatewaySensorManager::SensorFeedback::packageId
string packageId
the configuration package id
Definition GatewaySensorManager.idl:699
peripheral::GatewaySensorManager::Sensor
Specification of a Sensor.
Definition GatewaySensorManager.idl:563
peripheral::GatewaySensorManager::Sensor::disabled
boolean disabled
Set disabled = true prevents any usage of the specification.
Definition GatewaySensorManager.idl:572
peripheral::GatewaySensorManager::Sensor::classId
string classId
sensor class id
Definition GatewaySensorManager.idl:591
peripheral::GatewaySensorManager::Sensor::deviceId
string deviceId
remote device id
Definition GatewaySensorManager.idl:580
peripheral::GatewaySensorManager::Sensor::defaultName
string defaultName
default sensor name
Definition GatewaySensorManager.idl:605
peripheral::GatewaySensorManager::Sensor::encodingId
string encodingId
sensor encoding id
Definition GatewaySensorManager.idl:598
peripheral::GatewaySensorManager::Sensor::sensorId
string sensorId
Unique sensor id, is automatically generated if not set.
Definition GatewaySensorManager.idl:567
peripheral::GatewaySensorManager::SnmpSensor
Definition GatewaySensorManager.idl:613
peripheral::GatewaySensorManager::SnmpSensor::oid
string oid
sensor oid
Definition GatewaySensorManager.idl:614
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
Specification of value encoding.
Definition GatewaySensorManager.idl:493
peripheral::GatewaySensorManager::ValueEncoding::minAccessInterval
int minAccessInterval
minimum time interval between two read accesses in seconds
Definition GatewaySensorManager.idl:498
peripheral::GatewaySensorManager::ValueEncoding::invertState
boolean invertState
invert when interpreting as state
Definition GatewaySensorManager.idl:496
peripheral::GatewaySensorManager::ValueEncoding::type
EncodingType type
value coding type
Definition GatewaySensorManager.idl:495
peripheral::GatewaySensorManager::ValueEncoding::interpretationRules
vector< InterpretationRule > interpretationRules
error/value interpretation rules
Definition GatewaySensorManager.idl:497
peripheral::GatewaySensorManager::ValueEncoding::encodingId
string encodingId
encoding type id
Definition GatewaySensorManager.idl:494
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:177