This commit reworks ozw somewhat and adds some device specific drivers
with examples. All of these drivers are kept in the UPM ozw library.
The OZW class has been reworked to make it a proper singleton, since
the OpenZWave::Manager() it depends on is already a singleton. This
avoids issues such as opening and initializing OpenZWave multiple
times.
A new, relatively thin base class, ozwInterface is also now present.
This class wraps some basic functionality, and handles initialization
of the OZW base class. It is intended to be inherited by device
driver classes. It operates on a node id for a device. Each OZW
device is referenced by a node id, which does not change unless the
device is removed (and possibly re-added) to a Z-Wave network.
Finally, a series of device specific drivers have been implemented.
These provide basic functionality to monitor and in some cases control
the operation of a Z-Wave device. They are the following:
ozwdump - This is a fake 'device' driver that initializes an OZW
network and dumps information on all of the nodes (devices) present.
Along with each node, available information on each valueid associated
with that node is also printed. This fake device and it's examples
replace the original ozw example.
aeotecss6 - Aeotec Smart Switch 6. This device allows control of the
switch, as well as reporting of information the switch makes
available, such as current consumption, volts, watts, and accumulated
energy use (kWh).
aeotecsdg2 - Aeotec Smart Dimmer Gen 2. This device is similar to the
Smart Switch 6, but also provides dimming functionality. It also
provides information on energy use.
aeotecdw2e - Aeotec Door/Window Sensor 2nd Edition. This device is a
magnetic switch with an embedded tamper switch used to detect the
opening/closing of windows and doors. This is a battery powered
device.
aeotecdsb09104 - Aeotec Home Energy Monitor. This device is intended
to be installed at the MAINS or Breaker box. It reports current and
cumulative energy consumption.
tzemt400 - Trane TZEMT400 Thermostat. This device is a thermostat
with Z-Wave functionality. The variant tested was the
TZEMT400BB32MAA. The driver reports various information on the status
of the thermostat, as well as the current measured temperature.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
This module implements support for the Honeywell TB7300 Communicating
Fan Coil Thermostat. It may also support the TB7200, though only the
TB7300 was available for development of this driver.
The TB7200 Series PI thermostats are designed for zoning applications,
and the TB7300 Series PI thermostats are designed for fan coil
control. Both Series are communicating thermostats with models
available in BACnet® MS/TP protocol and can be easily integrated into
a WEBs-AX building automation system based on the NiagaraAX® platform.
TB7200 and TB7300 Series thermostats are compatible with the Honeywell
Occupancy Sensor Cover. Thermostats equipped with an occupancy sensor
cover provide advanced active occupancy logic, which will
automatically switch occupancy levels from Occupied to Stand-By and
Unoccupied as required by local activity being present or not. This
advanced occupancy functionality provides advantageous energy savings
during occupied hours without sacrificing occupant comfort. All
thermostats can be ordered with or without a factory installed PIR
cover.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
This module implements support for the Amphenol Telaire Ventostat
T8100 Ventilation Controller with BACnet interface. It may also
support the T8200 and T8300 models, but they have not been tested.
The Telaire Ventostat T8100 reports Temperature, Humidity and CO2
concentrations. It supports an optional relay with a settable trigger
point. The unit this driver was tested under did not support the
optional relay. The temperature range supported is 0-50C, humidity is
0-100% non-condensing, and CO2 range is appoximately 0-2000 PPM for
the T8100. Other sensors in this family support wider ranges.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
This commit removes functionality that is now present in the
bacnetutil class. This simplifies the driver considerably. The
examples were modified to reflect the renaming of some utility
functions in bacnetutil.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
This module (bmx055) implements support for the following core Bosch
chipsets:
bma250e - accelerometer, 3 variants (chip id's 0x03, 0xf9, and 0xfa)
bmm150 - magnetometer
bmg160 - gyroscope
The other 3 devices are combinations of the above:
bmx055 - accel/gyro/mag
bmc160 - accel/mag
bmi055 - accel/gyro
...for 6 devices total.
For the combination devices, all of the sub-devices appear as
individual independent devices on the I2C/SPI bus.
The combination drivers provide basic configuration and data output.
For more detailed control as well as interrupt support, you should use
the core device drivers (accel/gyro/mag) directly.
These devices support both I2C and SPI communications. They must be
powered at 3.3vdc.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
This driver implements support for the Bosch BNO055 Absolute
Orientation 9DOF Fusion Hub. It was implemented on the Adafruit
variant at https://www.adafruit.com/products/2472.
The BNO055 is a System in Package (SiP), integrating a triaxial 14-bit
accelerometer, a triaxial 16-bit gyroscope with a range of ±2000
degrees per second, a triaxial geomagnetic sensor and a 32-bit cortex
M0+ microcontroller running Bosch Sensortec sensor fusion software, in
a single package.
This sensor handles the hard problem of combining various sensor
information into a reliable measurement of sensor orientation (refered
to as 'sensor fusion'). The onboard MCU runs this software and can
provide fusion output in the form of Euler Angles, Quaternions, Linear
Acceleration, and Gravity Vectors in 3 axes.
The focus on this driver has been on supporting the fusion components.
Less support is available for use of this device as a generic
accelerometer, gyroscope and magnetometer, however enough
infrastructure is available to add any missing functionality.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
This library adds support for both the BMP280 and BME280 sesnors from
Bosch. The BME is virtually identical to the BMP280 aside from some
slight register changes and adding support for a humidity sensor.
The BMP280 is an absolute barometric pressure sensor especially
designed for mobile applications. The sensor module is housed in an
extremely compact 8-pin metal-lid LGA package with a footprint of only
2.0 × 2.5 mm2 and 0.95 mm package height. Its small dimensions and its
low power consumption of 2.7 μA @1Hz allow the implementation in
battery driven devices such as mobile phones, GPS modules or watches.
The BME280 is as combined digital humidity, pressure and temperature
sensor based on proven sensing principles. The sensor module is housed
in an extremely compact metal-lid LGA package with a footprint of only
2.5 × 2.5 mm2 with a height of 0.93 mm. Its small dimensions and its
low power consumption allow the implementation in battery driven
devices such as handsets, GPS modules or watches. The BME280 is
register and performance compatible to the Bosch Sensortec BMP280
digital pressure sensor
These drivers support both I2C and SPI operation.
When using SPI on an Edison with the arduino breakout board, you
must specify a CS of -1 to the constructor, and connect the chip's
CS pin to arduino pin 10.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Noel Eck <noel.eck@intel.com>
This UPM module captures a still frame from a Linux V4L device, such
as a USB webcam, and and then allows you to save it as a JPEG image
into a file.
The camera and driver in use must support streaming, mmap-able buffers
and must provide data in YUYV format. This should encompass most
video cameras out there. It has been tested with a few off the shelf
USB cameras without any problems.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This driver requires the UPM BACNETMSTP driver (PR #385) to be merged
first.
This module implements support for the Veris E50H2 and E50H5
BACnet Energy Meters.
From the datasheet: The E50H5 BACnet MS/TP DIN Rail Meter with
Data Logging combines exceptional performance and easy
installation to deliver a cost-effective solution for power
monitoring applications. Native serial communication via BACnet
MS/TP provides complete accessibility of all measurements to your
Building Automation System. The data logging capability protects
data in the event of a power failure. The E50H5 can be easily
installed on standard DIN rail, surface mounted or contained in
an optional NEMA 4 enclosure, as needed. The front-panel LCD
display makes device installation and setup easy and provides
local access to the full set of detailed measurements.
This module was developed using the upm::BACNETMSTP module, based
on libbacnet-stack 0.8.3. Both libbacnet 0.8.3 and the
upm::BACNETMSTP libraries must be present in order to build this
module. This driver was developed on the E50H5. The Trend Log
functionality is not currently supported.
The Binary Input Objects are also not supported as these are only
used for the Alarm bits which are already available from Analog
Input Object 52 as an alarm bitfield incorporating all of the
supported alarm indicators.
It was connected using an RS232->RS485 interface. You cannot use
the built in MCU TTL UART pins for accessing this device -- you
must use a full Serial RS232->RS485 or USB-RS485 interface
connected via USB.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This module implements support for the Veris H8035 and H8036 Energy
Meters.
The H8036 is similar to the H8035, but provides much more data.
The Enercept H8035/H8036 is an innovative three-phase networked
(Modbus RTU) power transducer that combines electronics and high
accuracy industrial grade CTs in a single package. The need for
external electrical enclosures is eliminated, greatly reducing
installation time and cost. Color-coordination between voltage leads
and CTs makes phase matching easy. Additionally, these transducers
automatically detect and compensate for phase reversal, eliminating
the concern of CT load orientation. Up to 63 Transducers can be
daisy-chained on a single RS-485 network.
This module was developed using libmodbus 3.1.2, and the H8035. The
H8036 has not been tested. libmodbus 3.1.2 must be present for this
module to build.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
The Bosch BMI160 is a 3-axis Accelerometer and Gyroscope.
Additionally it supports an external Magnetometer, accessed through
the BMI160's register interface. This driver was developed with a
BMI160 "Shuttle" board, which included a BMM150 Magnetometer.
The device is driven by either 1.8v or 3.3vdc. This driver
incorporates the Bosch BMI160 driver code at
https://github.com/BoschSensortec/BMI160_driver .
While not all of the functionality of this device is supported
initially, the inclusion of the Bosch driver in the source code
makes it possible to support whatever features are required that
the driver bosch driver itself can support.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
The Veris TEX00 temperature sensor family is made up of a series of
RTD thermistors in wall mount packaging.
This driver was developed using the TED00, which utilizes a 10K Ohm
Type 2 thermistor. However, this driver can support the other 12
variants of the TE series as well by providing the correct sensor type
to the class constructor. These other sensor types have not been
tested. Only the TED00 hardware was tested with this driver.
This sensor must be connected as part of a voltage divider, with the
balancing resistor ideally matched to the sensor's 25C detection
range. For the TED00 (10kt2), a 10K Ohm (1% tolerance) resistor was
used in a circuit like the following:
GND o----|TED00(10k2)|----o----|balanceResistor(10K)|----o VCC (+5vdc)
|
|
|----o A0 (analog input to MCU)
A 3.3vdc voltage can be used as well if desired.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
The driver adds support for the Veris TEAMS Temperature Transmitter.
It provides it's output via a 4-20ma current loop. The supported
temperature range is 10C to 35C.
This sensor was developed with a Cooking Hacks (Libelium)
4-channel 4-20ma Arduino interface shield. For this interface,
the receiver resistance (rResistor) was specified as 165.0
ohms.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
The driver was developed using the Veris CWLSHTA CO2 Gas sensor. The
'T' variant supports a temperature sensor, and the 'H' variant
supports a humidity sensor.
All 3 signals are provided by the device as analog 0-5Vdc, 0-10Vdc, or
4-20ma loop current outputs. For devices supporting temperature, the
valid temperature range is 10C to 50C. The humidity ranges from 0% to
100% (non-condensing). The CO2 sensor ranges from 0 to 2000 ppm.
This driver was developed using the 5Vdc outputs and the 4-20ma
outputs. For voltage outputs, your MCU must be configured for 5V
operation. In addition, you must configure the sensor (via it's
configuration switches) to output 0-5VDC only. Using any other analog
reference voltage will require the appropriate external circuitry
(such as a voltage divider) in order to interface safely with your
MCU.
In addition, the sensor can be configured for 4-20ma usage, by
specifying the correct receiver resistance (in ohms) in the
constructor. This sensor was tested with a Cooking Hacks (Libelium)
4-channel 4-20ma Arduino interface shield. For this interface, the
receiver resistance was specified as 165.0 ohms.
Signed-off-by: Jon Trulson <jtrulson@ics.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>