New Plugin: I²C devices

master
Michael Zanetti 2020-05-03 23:25:05 +02:00
parent 2be91df5f0
commit d6dc0ba07b
15 changed files with 1866 additions and 7 deletions

25
debian/control vendored
View File

@ -325,6 +325,19 @@ Description: nymea.io plugin for gpio
This package will install the nymea.io plugin for gpio
Package: nymea-plugin-i2cdevices
Architecture: any
Section: libs
Depends: ${shlibs:Depends},
${misc:Depends},
nymea-plugins-translations,
Description: nymea.io plugin for I2C devies
This plugin adds support for I2C devices to nymea.
Currently supported devices are the ADS1114/1114/1115 and the Pi-16ADC.
.
This package will install the nymea.io plugin for AD converters
Package: nymea-plugin-kodi
Architecture: any
Depends: ${shlibs:Depends},
@ -966,6 +979,7 @@ Depends: nymea-plugin-boblight,
nymea-plugin-avahimonitor,
nymea-plugin-anel,
nymea-plugin-gpio,
nymea-plugin-i2cdevices,
nymea-plugin-mqttclient,
nymea-plugin-remotessh,
nymea-plugin-serialportcommander,
@ -973,14 +987,11 @@ Depends: nymea-plugin-boblight,
nymea-plugin-onewire,
nymea-plugin-dynatrace,
Replaces: guh-plugins-maker
Description: Plugins for nymea IoT server - Meta package for makers, tinkers and hackers
The nymea daemon is a plugin based IoT (Internet of Things) server. The
server works like a translator for devices, things and services and
allows them to interact.
With the powerful rule engine you are able to connect any device available
in the system and create individual scenes and behaviors for your environment.
Description: Meta package for nymea makers, tinkerers and hackers plugins.
This package is a meta package that pulls in useful nymea plugins for makers.
Such plugins allow tinkering with GPIOs, I2C, One-Wire, raw MQTT and more.
.
This package will install nymea plugins for maker, tinker and hackers.
This package will install nymea plugins for makers, tinkerers and hackers.
Package: nymea-plugins-merkurboard

View File

@ -0,0 +1 @@
usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationplugini2cdevices.so

101
i2cdevices/README.md Normal file
View File

@ -0,0 +1,101 @@
# I²C devices
This integration plugin adds support for some I²C devices.
Currently supported devices are:
* ADS1113/ADS1114/ADS1115
* Pi-16ADC
## ADS1113/ADS1114/ADS1115
The ADS1113/1114/1115 is a 4 channel, I²C-compatible, 16-Bit ADC by Texas Instruments and supports
measuring input voltages from 0 to 6.144V.
### Usage
In order to use this device within nymea, it needs to be connected to the I²C bus. At least SDA,
SCL, GND and VDD must be connected. VDD can be any desired voltage from 2V to 5.5V. Input channels
are to be connected at the according pins and will perform an analog to digital conversion of their
input voltage.
> IMPORTANT: The input voltage on the connected AINX channels must never exceed VDD + 0.3V.
The measured input value will be a floating point value from 0 to 1, depending on the selected input gain.
For instance, if the selected input gain is 4.096V, a voltage of 0V will be indicated in nymea as
0 while an input voltage of 4.096V will be represented as 1.
Setup can be done by performing a discovery for it in nymea. Please verify that the found results
are matching with the address configuration of the device. If the address pin is not connected
at all, the I²C address will be 72 (0x48). It can be configured to another I²C address by connecting
the address pin as follows:
| Pin | Address (Hex) |
|:---:|:-------------:|
| GND | 72 (0x48) |
| VDD | 73 (0x49) |
| SDA | 74 (0x4a) |
| SCL | 75 (0x4b) |
-----------------------
By assigning different addresses, up to 4 such devices can be used on a single I²C bus.
> Note: At this point, this plugin does not support the devices dual channel mode.
## Pi-16ADC
The Pi-16ADC is a 16 channel analog/digital converter Raspberry Pi HAT by Alchemy Power and
supports measuring input voltage from 0 to 2.5V.
### Usage
In order to use this device within nymea, it needs to be plugged onto the Rasperry. The
analog input channels can be connected to to the respective channels. Unused channels
should be connected to GND in order to prevent them from oscillating.
The measured input value will be a floating point voltage value from 0V to 2.5V.
Setup can be done by performing a discovery for it in nymea. Please verify that the found results
are matching with the address configuration of the device. The default address is 118 (0x76).The
jumpers on the board can be used to configure the I²C address of the board by setting the jumpers
to low (connect AX to GND), high (connect AX to +) or floating (remove jumper). The following
table shows the possible address configurations:
| A2 | A1 | A0 | Address (Hex) |
|:-----:|:-----:|:-----:|:-------------:|
| Low | Low | Low | 20 (0x14) |
| Low | Low | High | 22 (0x16) |
| Low | Low | Float | 21 (0x15) |
| Low | High | Low | 38 (0x26) |
| Low | High | High | 52 (0x34) |
| Low | High | Float | 39 (0x27) |
| Low | Float | Low | 23 (0x17) |
| Low | Float | High | 37 (0x25) |
| Low | Float | Float | 36 (0x24) |
| High | Low | Low | 86 (0x56) |
| High | Low | High | 100 (0x64) |
| High | Low | Float | 87 (0x57) |
| High | High | Low | 116 (0x74) |
| High | High | High | 118 (0x76) |
| High | High | Float | 117 (0x75) |
| High | Float | Low | 101 (0x65) |
| High | Float | High | 103 (0x67) |
| High | Float | Float | 102 (0x66) |
| Float | Low | Low | 53 (0x35) |
| Float | Low | High | 55 (0x37) |
| Float | Low | Float | 54 (0x36) |
| Float | High | Low | 71 (0x47) |
| Float | High | High | 85 (0x55) |
| Float | High | Float | 54 (0x54) |
| Float | Float | Low | 68 (0x44) |
| Float | Float | High | 70 (0x46) |
| Float | Float | Float | 69 (0x45) |
-----------------------------------------
By assigning different addresses, multiple such boards can be stacked on top of each other if
more than 16 channels are required.
> Note: At this point, this plugin does not support the devices dual channel mode.
Additional information ca be found at the devices users guide at
[https://www.alchemy-power.com/wp-content/uploads/2017/03/Pi-16ADC-User-Guide.pdf](https://www.alchemy-power.com/wp-content/uploads/2017/03/Pi-16ADC-User-Guide.pdf).

View File

@ -0,0 +1,97 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "ads1115channel.h"
#include "extern-plugininfo.h"
#include <unistd.h>
#define REGISTER_CONVERSATION 0x00
#define REGISTER_CONFIG 0x01
#define OPERATIONAL_STATE_IDLE 0x00
#define OPERATIONAL_STATE_CONVERSATION 0x80
#define CONVERSION_MODE_CONTINUOUS 0x00
#define CONVERSION_MODE_SINGLE 0x40
#define CHANNEL_MODE_DIFFERENTIAL 0x00
#define CHANNEL_MODE_SINGLE 0x01
ADS1115Channel::ADS1115Channel(const QString &portName, int address, int channel, Gain gain, QObject *parent):
I2CDevice(portName, address, parent),
m_channel(channel),
m_gain(gain)
{
}
QByteArray ADS1115Channel::readData(int fd)
{
// Start a configuration conversation
unsigned char writeBuf[3] = {0};
writeBuf[0] = REGISTER_CONFIG; // Select config register
writeBuf[1] |= OPERATIONAL_STATE_CONVERSATION; // Set conversation bit
writeBuf[1] |= CHANNEL_MODE_SINGLE;
writeBuf[1] |= m_channel << 4;
writeBuf[1] |= m_gain << 1;
writeBuf[1] |= CONVERSION_MODE_SINGLE;
writeBuf[2] = 0x85; // 0b10000101: Data rate: 100, not using comparator
if (write(fd, writeBuf, 3) != 3) {
qCWarning(dcI2cDevices()) << "ADS1115: could not write config register";
return QByteArray();
}
// Wait for device to accept configuration (conversation bit is cleared)
char readBuf[2] = {0};
do {
if (read(fd, readBuf, 2) != 2) {
qCWarning(dcI2cDevices()) << "ADS1115: could not read ADC data";
return QByteArray();
}
} while (!(readBuf[0] & OPERATIONAL_STATE_CONVERSATION));
// Select conversation register
writeBuf[0] = REGISTER_CONVERSATION;
if (write(fd, writeBuf, 1) != 1) {
qCWarning(dcI2cDevices()) << "ADS1115: could not write select register";
return QByteArray();
}
// Read conversation register
if (read(fd, readBuf, 2) != 2) {
qCWarning(dcI2cDevices()) << "ADS1115: could not read ADC data";
return QByteArray();
}
return QByteArray(readBuf, 2);
}

View File

@ -0,0 +1,63 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef ADS1115_H
#define ADS1115_H
#include <QThread>
#include <QMutex>
#include <hardware/i2c/i2cdevice.h>
class ADS1115Channel: public I2CDevice
{
Q_OBJECT
public:
enum Gain {
Gain_6_144 = 0,
Gain_4_096 = 1,
Gain_2_048 = 2,
Gain_1_024 = 3,
Gain_0_512 = 4,
Gain_0_256 = 5
};
explicit ADS1115Channel(const QString &portName, int address, int channel, Gain gain, QObject *parent = nullptr);
QByteArray readData(int fd) override;
private:
int m_channel = 0;
Gain m_gain = Gain_4_096;
};
#endif // ADS1115_H

12
i2cdevices/i2cdevices.pro Normal file
View File

@ -0,0 +1,12 @@
include(../plugins.pri)
HEADERS += \
integrationplugini2cdevices.h \
ads1115channel.h \
pi16adcchannel.h
SOURCES += \
integrationplugini2cdevices.cpp \
ads1115channel.cpp \
pi16adcchannel.cpp

View File

@ -0,0 +1,212 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "integrationplugini2cdevices.h"
#include "plugininfo.h"
#include "pi16adcchannel.h"
#include "ads1115channel.h"
#include <hardware/i2c/i2cmanager.h>
#include <QDebug>
IntegrationPluginI2CDevices::IntegrationPluginI2CDevices(): IntegrationPlugin()
{
m_ads1115ChannelMap.insert(0, ads1115Channel1StateTypeId);
m_ads1115ChannelMap.insert(1, ads1115Channel2StateTypeId);
m_ads1115ChannelMap.insert(2, ads1115Channel3StateTypeId);
m_ads1115ChannelMap.insert(3, ads1115Channel4StateTypeId);
m_ads1115OvervoltageMap.insert(0, ads1115Channel1overvoltageStateTypeId);
m_ads1115OvervoltageMap.insert(1, ads1115Channel2overvoltageStateTypeId);
m_ads1115OvervoltageMap.insert(2, ads1115Channel3overvoltageStateTypeId);
m_ads1115OvervoltageMap.insert(3, ads1115Channel4overvoltageStateTypeId);
m_pi16adcChannelMap.insert(0, pi16ADCChannel1StateTypeId);
m_pi16adcChannelMap.insert(1, pi16ADCChannel2StateTypeId);
m_pi16adcChannelMap.insert(2, pi16ADCChannel3StateTypeId);
m_pi16adcChannelMap.insert(3, pi16ADCChannel4StateTypeId);
m_pi16adcChannelMap.insert(4, pi16ADCChannel5StateTypeId);
m_pi16adcChannelMap.insert(5, pi16ADCChannel6StateTypeId);
m_pi16adcChannelMap.insert(6, pi16ADCChannel7StateTypeId);
m_pi16adcChannelMap.insert(7, pi16ADCChannel8StateTypeId);
m_pi16adcChannelMap.insert(8, pi16ADCChannel9StateTypeId);
m_pi16adcChannelMap.insert(9, pi16ADCChannel10StateTypeId);
m_pi16adcChannelMap.insert(10, pi16ADCChannel11StateTypeId);
m_pi16adcChannelMap.insert(11, pi16ADCChannel12StateTypeId);
m_pi16adcChannelMap.insert(12, pi16ADCChannel13StateTypeId);
m_pi16adcChannelMap.insert(13, pi16ADCChannel14StateTypeId);
m_pi16adcChannelMap.insert(14, pi16ADCChannel15StateTypeId);
m_pi16adcChannelMap.insert(15, pi16ADCChannel16StateTypeId);
m_pi16adcOvervoltageMap.insert(0, pi16ADCChannel1overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(1, pi16ADCChannel2overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(2, pi16ADCChannel3overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(3, pi16ADCChannel4overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(4, pi16ADCChannel5overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(5, pi16ADCChannel6overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(6, pi16ADCChannel7overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(7, pi16ADCChannel8overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(8, pi16ADCChannel9overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(9, pi16ADCChannel10overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(10, pi16ADCChannel11overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(11, pi16ADCChannel12overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(12, pi16ADCChannel13overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(13, pi16ADCChannel14overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(14, pi16ADCChannel15overvoltageStateTypeId);
m_pi16adcOvervoltageMap.insert(15, pi16ADCChannel16overvoltageStateTypeId);
}
void IntegrationPluginI2CDevices::init() {
}
void IntegrationPluginI2CDevices::discoverThings(ThingDiscoveryInfo *info)
{
foreach (const I2CScanResult &scanResult, hardwareManager()->i2cManager()->scanRegisters()) {
qCDebug(dcI2cDevices()) << "Found I2C deevice on port:" << scanResult.portName << "0x" + QString::number(scanResult.address, 16);
if (info->thingClassId() == pi16ADCThingClassId) {
// Depending on jumper settings, the Pi-16ADC can be any of those:
QList<int> addresses = {0x14, 0x15, 0x16, 0x17, 0x24, 0x25, 0x26, 0x27, 0x34, 0x35, 0x36, 0x37, 0x44, 0x45, 0x46, 0x47, 0x54, 0x55, 0x56, 0x57, 0x64, 0x65, 0x66, 0x67, 0x74, 0x75, 0x76};
if (addresses.contains(scanResult.address)) {
ThingDescriptor descriptor(pi16ADCThingClassId, "Pi-16ADC", QString("%1: 0x%2").arg(scanResult.portName).arg(scanResult.address, 0, 16));
ParamList params;
params << Param(pi16ADCThingI2cPortParamTypeId, scanResult.portName);
params << Param(pi16ADCThingI2cAddressParamTypeId, scanResult.address);
descriptor.setParams(params);
info->addThingDescriptor(descriptor);
}
}
if (info->thingClassId() == ads1115ThingClassId) {
// The ADS1115 has selectable addresses from 0x48 to 0x51
if (scanResult.address >= 0x48 && scanResult.address <= 0x4B) {
ThingDescriptor descriptor(ads1115ThingClassId, "ADS1113/ADS1114/ADS1115", QString("%1: 0x%2").arg(scanResult.portName).arg(scanResult.address, 0, 16));
ParamList params;
params << Param(ads1115ThingI2cPortParamTypeId, scanResult.portName);
params << Param(ads1115ThingI2cAddressParamTypeId, scanResult.address);
descriptor.setParams(params);
info->addThingDescriptor(descriptor);
}
}
}
info->finish(Thing::ThingErrorNoError);
}
void IntegrationPluginI2CDevices::setupThing(ThingSetupInfo *info)
{
if (info->thing()->thingClassId() == pi16ADCThingClassId) {
QString i2cPortName = info->thing()->paramValue(pi16ADCThingI2cPortParamTypeId).toString();
int i2cAddress = info->thing()->paramValue(pi16ADCThingI2cAddressParamTypeId).toInt();
Q_UNUSED(i2cAddress)
for (int i = 0; i < 16; i++) {
Pi16ADCChannel *pi16ADC = new Pi16ADCChannel(i2cPortName, i2cAddress, i, this);
if (!hardwareManager()->i2cManager()->open(pi16ADC)) {
delete pi16ADC;
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Failed to open I2C port."));
return;
}
Thing *thing = info->thing();
connect(pi16ADC, &Pi16ADCChannel::readingAvailable, thing, [this, thing, i](const QByteArray &data){
if (data.length() != 3) {
qCWarning(dcI2cDevices()) << "Error reading from" << thing->name();
return;
}
int value = ((((data[0]&0x3F))<<16))+((data[1]<<8))+(((data[2]&0xE0)));
const int max = 8388608;
double transformedValue = 2.5 * value / max;
thing->setStateValue(m_pi16adcChannelMap.value(i), transformedValue);
thing->setStateValue(m_pi16adcOvervoltageMap.value(i), (data[0] & 0xC0));
});
hardwareManager()->i2cManager()->startReading(pi16ADC, 5000);
m_i2cDevices.insert(pi16ADC, thing);
}
info->finish(Thing::ThingErrorNoError);
}
if (info->thing()->thingClassId() == ads1115ThingClassId) {
QString i2cPortName = info->thing()->paramValue(ads1115ThingI2cPortParamTypeId).toString();
int i2cAddress = info->thing()->paramValue(ads1115ThingI2cAddressParamTypeId).toInt();
double gainParam = info->thing()->paramValue(ads1115ThingInputGainParamTypeId).toDouble();
ADS1115Channel::Gain inputGain = ADS1115Channel::Gain_4_096;
if (qFuzzyCompare(gainParam, 6.144)) {
inputGain = ADS1115Channel::Gain_6_144;
} else if (qFuzzyCompare(gainParam, 4.096)) {
inputGain = ADS1115Channel::Gain_4_096;
} else if (qFuzzyCompare(gainParam, 2.048)) {
inputGain = ADS1115Channel::Gain_2_048;
} else if (qFuzzyCompare(gainParam, 1.024)) {
inputGain = ADS1115Channel::Gain_1_024;
} else if (qFuzzyCompare(gainParam, 0.512)) {
inputGain = ADS1115Channel::Gain_0_512;
} else if (qFuzzyCompare(gainParam, 0.256)) {
inputGain = ADS1115Channel::Gain_0_256;
}
for (int i = 0; i < 4; i++) {
ADS1115Channel *ads1115 = new ADS1115Channel(i2cPortName, i2cAddress, i, inputGain, this);
if (!hardwareManager()->i2cManager()->open(ads1115)) {
delete ads1115;
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Failed to open I2C port."));
return;
}
Thing *thing = info->thing();
connect(ads1115, &ADS1115Channel::readingAvailable, thing, [this, thing, i](const QByteArray &data){
if (data.length() != 2) {
qCWarning(dcI2cDevices()) << "Error reading from" << thing;
return;
}
const int max = 32768;
int value = static_cast<qint16>(data[0]) * 256 + static_cast<qint16>(data[1]);
double transformedValue = qMin(1.0 * value / max, 1.0);
thing->setStateValue(m_ads1115ChannelMap.value(i), transformedValue);
thing->setStateValue(m_ads1115OvervoltageMap.value(i), value > 32768);
});
hardwareManager()->i2cManager()->startReading(ads1115, 5000);
m_i2cDevices.insert(ads1115, thing);
}
info->finish(Thing::ThingErrorNoError);
}
}
void IntegrationPluginI2CDevices::thingRemoved(Thing *thing)
{
foreach (I2CDevice* i2cDevice, m_i2cDevices.keys(thing)) {
hardwareManager()->i2cManager()->close(i2cDevice);
i2cDevice->deleteLater();
m_i2cDevices.take(i2cDevice);
}
}

View File

@ -0,0 +1,63 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef INTEGRATIONPLUGINPII2CDEVICES_H
#define INTEGRATIONPLUGINPII2CDEVICES_H
#include <integrations/integrationplugin.h>
class I2CDevice;
class IntegrationPluginI2CDevices: public IntegrationPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationplugini2cdevices.json")
Q_INTERFACES(IntegrationPlugin)
public:
IntegrationPluginI2CDevices();
void init() override;
void discoverThings(ThingDiscoveryInfo *info) override;
void setupThing(ThingSetupInfo *info) override;
void thingRemoved(Thing *thing) override;
private:
QHash<I2CDevice*, Thing*> m_i2cDevices;
QHash<int, StateTypeId> m_ads1115ChannelMap;
QHash<int, StateTypeId> m_ads1115OvervoltageMap;
QHash<int, StateTypeId> m_pi16adcChannelMap;
QHash<int, StateTypeId> m_pi16adcOvervoltageMap;
};
#endif

View File

@ -0,0 +1,456 @@
{
"id": "7318d45b-2eed-472c-ae08-aad56db31e28",
"name": "i2cDevices",
"displayName": "I²C devices",
"vendors": [
{
"id": "4625197b-96ab-4566-9425-5579a4acf4c0",
"name": "alchemyPower",
"displayName": "Alchemy Power Inc.",
"thingClasses": [
{
"id": "15ecc88f-cdf0-498f-b1bc-bb630bcfb3c7",
"name": "pi16ADC",
"displayName": "Pi-16ADC",
"createMethods": ["user", "discovery"],
"setupMethod": "justAdd",
"paramTypes": [
{
"id": "1c99ab01-ccb9-4ca6-a8d9-c2c2cfafd0af",
"name": "i2cPort",
"displayName": "I2C port",
"type": "QString"
},
{
"id": "97f047d2-a6dc-4d40-9235-03baa1502c61",
"name": "i2cAddress",
"displayName": "I2C address",
"type": "int"
}
],
"stateTypes": [
{
"id": "bcb5a45f-cacb-4a74-ba81-3309875e77eb",
"name": "channel1",
"displayName": "Channel 1",
"displayNameEvent": "Channel 1 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "1a41c14f-d9e2-40d5-a424-6ec0391362aa",
"name": "channel1overvoltage",
"displayName": "Channel 1 overvoltage",
"displayNameEvent": "Channel 1 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "d48dab3f-cefd-4efc-a7c9-9a56d1763e5a",
"name": "channel2",
"displayName": "Channel 2",
"displayNameEvent": "Channel 2 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "83232516-eb5c-4e50-adda-6c03e26d90f2",
"name": "channel2overvoltage",
"displayName": "Channel 2 overvoltage",
"displayNameEvent": "Channel 2 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "d52cd791-6d92-49e4-b46b-593cb0691d46",
"name": "channel3",
"displayName": "Channel 3",
"displayNameEvent": "Channel 1 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "9af3c914-f9b9-48a5-9022-ede4a0f5f2f7",
"name": "channel3overvoltage",
"displayName": "Channel 3 overvoltage",
"displayNameEvent": "Channel 3 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "5a2e61c6-8934-40fb-b0ae-755563e1f01c",
"name": "channel4",
"displayName": "Channel 4",
"displayNameEvent": "Channel 4 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "6f2ae858-a5de-45cc-bc6c-1119a3b2e767",
"name": "channel4overvoltage",
"displayName": "Channel 4 overvoltage",
"displayNameEvent": "Channel 4 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "0eeff27c-aa76-4473-9fe5-baeb94c0fc4f",
"name": "channel5",
"displayName": "Channel 5",
"displayNameEvent": "Channel 5 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "a298ce28-72a1-4bb8-965e-22061f367a73",
"name": "channel5overvoltage",
"displayName": "Channel 5 overvoltage",
"displayNameEvent": "Channel 5 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "75a336da-4486-4709-830e-ac5ceafa44f7",
"name": "channel6",
"displayName": "Channel 6",
"displayNameEvent": "Channel 6 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "276f1a63-2403-4c3e-9bf4-96f6c510f5d0",
"name": "channel6overvoltage",
"displayName": "Channel 6 overvoltage",
"displayNameEvent": "Channel 6 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "ca863478-b520-4a3f-900b-e864d2c975f2",
"name": "channel7",
"displayName": "Channel 7",
"displayNameEvent": "Channel 7 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "07561810-a851-42dd-88c9-61afd3c761b6",
"name": "channel7overvoltage",
"displayName": "Channel 7 overvoltage",
"displayNameEvent": "Channel 7 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "582bd216-ac59-4045-b9ec-d7922c5db52d",
"name": "channel8",
"displayName": "Channel 8",
"displayNameEvent": "Channel 8 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "c22e5e29-e078-4b27-b602-d8ee90f333bc",
"name": "channel8overvoltage",
"displayName": "Channel 8 overvoltage",
"displayNameEvent": "Channel 8 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "fe58220c-6916-4194-9015-d948580d4daf",
"name": "channel9",
"displayName": "Channel 9",
"displayNameEvent": "Channel 9 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "0d6218c9-b848-4b5f-be88-69f88d05490c",
"name": "channel9overvoltage",
"displayName": "Channel 9 overvoltage",
"displayNameEvent": "Channel 9 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "88fa2326-76a7-40ad-921c-725d9c871ef4",
"name": "channel10",
"displayName": "Channel 10",
"displayNameEvent": "Channel 10 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "3a999e76-b1bb-453a-931e-17f0130a7788",
"name": "channel10overvoltage",
"displayName": "Channel 10 overvoltage",
"displayNameEvent": "Channel 10 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "015320ae-350d-4797-a5ed-7e7f74569b7a",
"name": "channel11",
"displayName": "Channel 11",
"displayNameEvent": "Channel 11 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "d22fe888-69a9-4328-98a8-4499f34edb53",
"name": "channel11overvoltage",
"displayName": "Channel 11 overvoltage",
"displayNameEvent": "Channel 11 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "096bcf38-aa9b-434f-b45d-b4164bfd4eef",
"name": "channel12",
"displayName": "Channel 12",
"displayNameEvent": "Channel 12 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "edb9cac9-b819-48bb-9a5b-e7da5e3558ea",
"name": "channel12overvoltage",
"displayName": "Channel 12 overvoltage",
"displayNameEvent": "Channel 12 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "7e28eb87-87c6-4864-bfad-e457c1187d6a",
"name": "channel13",
"displayName": "Channel 13",
"displayNameEvent": "Channel 13 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "dbb3a3f7-3fce-4f8a-bf19-2c4bade5c60a",
"name": "channel13overvoltage",
"displayName": "Channel 13 overvoltage",
"displayNameEvent": "Channel 13 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "ea3dde63-092d-4857-b836-70016647872c",
"name": "channel14",
"displayName": "Channel 14",
"displayNameEvent": "Channel 14 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "0633d37f-894c-4fcd-a818-3779cf2e507c",
"name": "channel14overvoltage",
"displayName": "Channel 14 overvoltage",
"displayNameEvent": "Channel 14 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "d580d189-cb9e-446d-8a19-5c0c7891ed1b",
"name": "channel15",
"displayName": "Channel 15",
"displayNameEvent": "Channel 15 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "43fb2001-3020-48b0-adc0-3ccd1d52e912",
"name": "channel15overvoltage",
"displayName": "Channel 15 overvoltage",
"displayNameEvent": "Channel 15 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "80fabf7c-39cb-4ff2-aa55-a7760b13b0d5",
"name": "channel16",
"displayName": "Channel 16",
"displayNameEvent": "Channel 16 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 2.5,
"ioType": "analogInput"
},
{
"id": "b5b51627-acf8-4cb6-91b9-6aafd3074d97",
"name": "channel16overvoltage",
"displayName": "Channel 16 overvoltage",
"displayNameEvent": "Channel 16 overvoltage changed",
"type": "bool",
"defaultValue": false
}
]
}
]
},
{
"id": "2edf543e-dc2c-4693-bb0c-e76c0d305fad",
"name": "texasInstruments",
"displayName": "Texas Instruments",
"thingClasses": [
{
"id": "7f285010-8bc1-4a45-b9d0-185fbac0c14d",
"name": "ads1115",
"displayName": "ADS1113/ADS1114/ADS1115",
"createMethods": ["user", "discovery"],
"setupMethod": "justAdd",
"paramTypes": [
{
"id": "190c932f-5c97-497b-89b6-d34e37087467",
"name": "i2cPort",
"displayName": "I2C port",
"type": "QString"
},
{
"id": "d3a14498-f0f4-4480-9a07-2fc8ed6fa3e9",
"name": "i2cAddress",
"displayName": "I2C address",
"type": "int"
},
{
"id": "c1845769-636e-4744-965c-8bb0b96b80b1",
"name": "inputGain",
"displayName": "Input gain",
"type": "double",
"allowedValues": [ 6.144, 4.096, 2.048, 1.024, 0.512, 0.256 ],
"unit": "Volt",
"defaultValue": 4.096
}
],
"stateTypes": [
{
"id": "2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc",
"name": "channel1",
"displayName": "Channel 1",
"displayNameEvent": "Channel 1 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1,
"ioType": "analogInput"
},
{
"id": "b2b8f75a-37f9-44c1-aa08-90bbb2c19fbd",
"name": "channel1overvoltage",
"displayName": "Channel 1 overvoltage",
"displayNameEvent": "Channel 1 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "5ee7a800-a8ef-4298-aa0b-284afec75e68",
"name": "channel2",
"displayName": "Channel 2",
"displayNameEvent": "Channel 2 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1,
"ioType": "analogInput"
},
{
"id": "78898e55-760a-471f-ae02-011b69040dc2",
"name": "channel2overvoltage",
"displayName": "Channel 2 overvoltage",
"displayNameEvent": "Channel 2 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e",
"name": "channel3",
"displayName": "Channel 3",
"displayNameEvent": "Channel 3 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1,
"ioType": "analogInput"
},
{
"id": "b6ed4cd1-486e-40e3-b6fa-577c9a1831b6",
"name": "channel3overvoltage",
"displayName": "Channel 3 overvoltage",
"displayNameEvent": "Channel 3 overvoltage changed",
"type": "bool",
"defaultValue": false
},
{
"id": "caba4fc0-7c06-4724-bd70-cc44b3451e17",
"name": "channel4",
"displayName": "Channel 4",
"displayNameEvent": "Channel 4 value changed",
"type": "double",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1,
"ioType": "analogInput"
},
{
"id": "187faeb9-d357-4bef-a7de-2b0e195510b8",
"name": "channel4overvoltage",
"displayName": "Channel 4 overvoltage",
"displayNameEvent": "Channel 4 overvoltage changed",
"type": "bool",
"defaultValue": false
}
]
}
]
}
]
}

9
i2cdevices/meta.json Normal file
View File

@ -0,0 +1,9 @@
{
"title": "I²C devices",
"tagline": "Allows using various analog to digital converters with nymea",
"icon": "",
"stability": "community",
"offline": true,
"technologies": ["i2c"],
"categories": []
}

View File

@ -0,0 +1,88 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "pi16adcchannel.h"
#include "extern-plugininfo.h"
#include <QDebug>
#include <unistd.h>
static QHash<int, char> channelMap = {
{0, 0xB0},
{1, 0xB8},
{2, 0xB1},
{3, 0xB9},
{4, 0xB2},
{5, 0xBA},
{6, 0xB3},
{7, 0xBB},
{8, 0xB4},
{9, 0xBC},
{10, 0xB5},
{11, 0xBD},
{12, 0xB6},
{13, 0xBE},
{14, 0xB7},
{15, 0xBF}
};
Pi16ADCChannel::Pi16ADCChannel(const QString &portName, int address, int channel, QObject *parent):
I2CDevice(portName, address, parent),
m_channel(channel)
{
}
QByteArray Pi16ADCChannel::readData(int fd)
{
// The chip requires a minimum of 200ms of wating between each call or it might just ignore it.
// Make sure to wait here long enough for any previous access having settled
QThread::msleep(200);
// Select the wanted channel
qint64 len = write(fd, &channelMap[m_channel], 1);
if (len != 1) {
qCWarning(dcI2cDevices()) << "Pi-16ADC: Error writing channel config to device";
return QByteArray();
}
// Wait for write the chip to settle
QThread::msleep(200);
// ready to read the value
char readBuf[3] = {0};
if (read(fd, readBuf, 3) != 3) {
qCWarning(dcI2cDevices()) << "Pi-16ADC: could not read ADC data" << readBuf;
return QByteArray();
}
return QByteArray(readBuf, 3);
}

View File

@ -0,0 +1,53 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU Lesser General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; version 3. This project is distributed in the hope that
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef PI16ADC_H
#define PI16ADC_H
#include <QObject>
#include <QThread>
#include <QMutex>
#include <QHash>
#include <hardware/i2c/i2cdevice.h>
class Pi16ADCChannel : public I2CDevice
{
Q_OBJECT
public:
explicit Pi16ADCChannel(const QString &portName, int address, int channel, QObject *parent = nullptr);
QByteArray readData(int fileDescriptor) override;
private:
int m_channel = 0;
};
#endif // PI16ADC_H

View File

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>IntegrationPluginADConverters</name>
<message>
<location filename="../integrationpluginadconverters.cpp" line="94"/>
<location filename="../integrationpluginadconverters.cpp" line="155"/>
<source>Failed to open I2C port.</source>
<translation>Fehler beim Öffnen des I2C ports.</translation>
</message>
</context>
<context>
<name>adConverters</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="90"/>
<source>ADC converters</source>
<extracomment>The name of the plugin adConverters ({7318d45b-2eed-472c-ae08-aad56db31e28})</extracomment>
<translation>ADC Konverter</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="93"/>
<source>ADS1113/ADS1114/ADS1115</source>
<extracomment>The name of the ThingClass ({7f285010-8bc1-4a45-b9d0-185fbac0c14d})</extracomment>
<translation>ADS1113/ADS1114/ADS1115</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="96"/>
<source>Alchemy Power Inc.</source>
<extracomment>The name of the vendor ({4625197b-96ab-4566-9425-5579a4acf4c0})</extracomment>
<translation>Alchemy Powert Inc.</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="99"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="102"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="105"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="108"/>
<source>Channel 1</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel1, ID: {2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc})
----------
The name of the StateType ({2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel1, ID: {bcb5a45f-cacb-4a74-ba81-3309875e77eb})
----------
The name of the StateType ({bcb5a45f-cacb-4a74-ba81-3309875e77eb}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 1</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="111"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="114"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="117"/>
<source>Channel 1 value changed</source>
<extracomment>The name of the EventType ({2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc}) of ThingClass ads1115
----------
The name of the EventType ({d52cd791-6d92-49e4-b46b-593cb0691d46}) of ThingClass pi16ADC
----------
The name of the EventType ({bcb5a45f-cacb-4a74-ba81-3309875e77eb}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 1 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="120"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="123"/>
<source>Channel 10</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel10, ID: {88fa2326-76a7-40ad-921c-725d9c871ef4})
----------
The name of the StateType ({88fa2326-76a7-40ad-921c-725d9c871ef4}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 10</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="126"/>
<source>Channel 10 value changed</source>
<extracomment>The name of the EventType ({88fa2326-76a7-40ad-921c-725d9c871ef4}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 10 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="132"/>
<source>Channel 11</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel11, ID: {015320ae-350d-4797-a5ed-7e7f74569b7a})
----------
The name of the StateType ({015320ae-350d-4797-a5ed-7e7f74569b7a}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 11</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="135"/>
<source>Channel 11 value changed</source>
<extracomment>The name of the EventType ({015320ae-350d-4797-a5ed-7e7f74569b7a}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 11 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="141"/>
<source>Channel 12</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel12, ID: {096bcf38-aa9b-434f-b45d-b4164bfd4eef})
----------
The name of the StateType ({096bcf38-aa9b-434f-b45d-b4164bfd4eef}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 12</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="144"/>
<source>Channel 12 value changed</source>
<extracomment>The name of the EventType ({096bcf38-aa9b-434f-b45d-b4164bfd4eef}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 12 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="150"/>
<source>Channel 13</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel13, ID: {7e28eb87-87c6-4864-bfad-e457c1187d6a})
----------
The name of the StateType ({7e28eb87-87c6-4864-bfad-e457c1187d6a}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 13</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="153"/>
<source>Channel 13 value changed</source>
<extracomment>The name of the EventType ({7e28eb87-87c6-4864-bfad-e457c1187d6a}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 13 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="159"/>
<source>Channel 14</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel14, ID: {ea3dde63-092d-4857-b836-70016647872c})
----------
The name of the StateType ({ea3dde63-092d-4857-b836-70016647872c}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 14</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="162"/>
<source>Channel 14 value changed</source>
<extracomment>The name of the EventType ({ea3dde63-092d-4857-b836-70016647872c}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 14 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="165"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="168"/>
<source>Channel 15</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel15, ID: {d580d189-cb9e-446d-8a19-5c0c7891ed1b})
----------
The name of the StateType ({d580d189-cb9e-446d-8a19-5c0c7891ed1b}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 15</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="171"/>
<source>Channel 15 value changed</source>
<extracomment>The name of the EventType ({d580d189-cb9e-446d-8a19-5c0c7891ed1b}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 15 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="177"/>
<source>Channel 16</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel16, ID: {80fabf7c-39cb-4ff2-aa55-a7760b13b0d5})
----------
The name of the StateType ({80fabf7c-39cb-4ff2-aa55-a7760b13b0d5}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 16</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="180"/>
<source>Channel 16 value changed</source>
<extracomment>The name of the EventType ({80fabf7c-39cb-4ff2-aa55-a7760b13b0d5}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 16 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="186"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="189"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="192"/>
<source>Channel 2</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel2, ID: {5ee7a800-a8ef-4298-aa0b-284afec75e68})
----------
The name of the StateType ({5ee7a800-a8ef-4298-aa0b-284afec75e68}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel2, ID: {d48dab3f-cefd-4efc-a7c9-9a56d1763e5a})
----------
The name of the StateType ({d48dab3f-cefd-4efc-a7c9-9a56d1763e5a}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 2</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="195"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="198"/>
<source>Channel 2 value changed</source>
<extracomment>The name of the EventType ({5ee7a800-a8ef-4298-aa0b-284afec75e68}) of ThingClass ads1115
----------
The name of the EventType ({d48dab3f-cefd-4efc-a7c9-9a56d1763e5a}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 2 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="210"/>
<source>Channel 3</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel3, ID: {1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e})
----------
The name of the StateType ({1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel3, ID: {d52cd791-6d92-49e4-b46b-593cb0691d46})
----------
The name of the StateType ({d52cd791-6d92-49e4-b46b-593cb0691d46}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 3</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="213"/>
<source>Channel 3 value changed</source>
<extracomment>The name of the EventType ({1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e}) of ThingClass ads1115</extracomment>
<translation>Wert Kanal 3 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="216"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="222"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="225"/>
<source>Channel 4</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel4, ID: {caba4fc0-7c06-4724-bd70-cc44b3451e17})
----------
The name of the StateType ({caba4fc0-7c06-4724-bd70-cc44b3451e17}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel4, ID: {5a2e61c6-8934-40fb-b0ae-755563e1f01c})
----------
The name of the StateType ({5a2e61c6-8934-40fb-b0ae-755563e1f01c}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 4</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="231"/>
<source>Channel 4 value changed</source>
<extracomment>The name of the EventType ({caba4fc0-7c06-4724-bd70-cc44b3451e17}) of ThingClass ads1115
----------
The name of the EventType ({5a2e61c6-8934-40fb-b0ae-755563e1f01c}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 4 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="237"/>
<source>Channel 5</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel5, ID: {0eeff27c-aa76-4473-9fe5-baeb94c0fc4f})
----------
The name of the StateType ({0eeff27c-aa76-4473-9fe5-baeb94c0fc4f}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 5</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="240"/>
<source>Channel 5 value changed</source>
<extracomment>The name of the EventType ({0eeff27c-aa76-4473-9fe5-baeb94c0fc4f}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 5 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="246"/>
<source>Channel 6</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel6, ID: {75a336da-4486-4709-830e-ac5ceafa44f7})
----------
The name of the StateType ({75a336da-4486-4709-830e-ac5ceafa44f7}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 6</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="249"/>
<source>Channel 6 value changed</source>
<extracomment>The name of the EventType ({75a336da-4486-4709-830e-ac5ceafa44f7}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 6 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="255"/>
<source>Channel 7</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel7, ID: {ca863478-b520-4a3f-900b-e864d2c975f2})
----------
The name of the StateType ({ca863478-b520-4a3f-900b-e864d2c975f2}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 7</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="258"/>
<source>Channel 7 value changed</source>
<extracomment>The name of the EventType ({ca863478-b520-4a3f-900b-e864d2c975f2}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 7 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="264"/>
<source>Channel 8</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel8, ID: {582bd216-ac59-4045-b9ec-d7922c5db52d})
----------
The name of the StateType ({582bd216-ac59-4045-b9ec-d7922c5db52d}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 8</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="267"/>
<source>Channel 8 value changed</source>
<extracomment>The name of the EventType ({582bd216-ac59-4045-b9ec-d7922c5db52d}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 8 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="270"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="273"/>
<source>Channel 9</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel9, ID: {fe58220c-6916-4194-9015-d948580d4daf})
----------
The name of the StateType ({fe58220c-6916-4194-9015-d948580d4daf}) of ThingClass pi16ADC</extracomment>
<translation>Kanal 9</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="276"/>
<source>Channel 9 value changed</source>
<extracomment>The name of the EventType ({fe58220c-6916-4194-9015-d948580d4daf}) of ThingClass pi16ADC</extracomment>
<translation>Wert Kanal 9 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="279"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="282"/>
<source>I2C address</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {d3a14498-f0f4-4480-9a07-2fc8ed6fa3e9})
----------
The name of the ParamType (ThingClass: pi16ADC, Type: thing, ID: {97f047d2-a6dc-4d40-9235-03baa1502c61})</extracomment>
<translation>I2C Adresse</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="288"/>
<source>I2C port</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {190c932f-5c97-497b-89b6-d34e37087467})
----------
The name of the ParamType (ThingClass: pi16ADC, Type: thing, ID: {1c99ab01-ccb9-4ca6-a8d9-c2c2cfafd0af})</extracomment>
<translation>I2C Port</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="291"/>
<source>Input gain</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {c1845769-636e-4744-965c-8bb0b96b80b1})</extracomment>
<translation>Eingangspegel</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="294"/>
<source>Pi-16ADC</source>
<extracomment>The name of the ThingClass ({15ecc88f-cdf0-498f-b1bc-bb630bcfb3c7})</extracomment>
<translation>Pi-16ADC</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="297"/>
<source>Texas Instruments</source>
<extracomment>The name of the vendor ({2edf543e-dc2c-4693-bb0c-e76c0d305fad})</extracomment>
<translation>Texas Instruments</translation>
</message>
</context>
</TS>

View File

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>IntegrationPluginADConverters</name>
<message>
<location filename="../integrationpluginadconverters.cpp" line="94"/>
<location filename="../integrationpluginadconverters.cpp" line="155"/>
<source>Failed to open I2C port.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>adConverters</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="90"/>
<source>ADC converters</source>
<extracomment>The name of the plugin adConverters ({7318d45b-2eed-472c-ae08-aad56db31e28})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="93"/>
<source>ADS1113/ADS1114/ADS1115</source>
<extracomment>The name of the ThingClass ({7f285010-8bc1-4a45-b9d0-185fbac0c14d})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="96"/>
<source>Alchemy Power Inc.</source>
<extracomment>The name of the vendor ({4625197b-96ab-4566-9425-5579a4acf4c0})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="99"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="102"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="105"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="108"/>
<source>Channel 1</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel1, ID: {2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc})
----------
The name of the StateType ({2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel1, ID: {bcb5a45f-cacb-4a74-ba81-3309875e77eb})
----------
The name of the StateType ({bcb5a45f-cacb-4a74-ba81-3309875e77eb}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="111"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="114"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="117"/>
<source>Channel 1 value changed</source>
<extracomment>The name of the EventType ({2d2ca0f6-ad6c-41f5-9aa6-cd08c43fc4bc}) of ThingClass ads1115
----------
The name of the EventType ({d52cd791-6d92-49e4-b46b-593cb0691d46}) of ThingClass pi16ADC
----------
The name of the EventType ({bcb5a45f-cacb-4a74-ba81-3309875e77eb}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="120"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="123"/>
<source>Channel 10</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel10, ID: {88fa2326-76a7-40ad-921c-725d9c871ef4})
----------
The name of the StateType ({88fa2326-76a7-40ad-921c-725d9c871ef4}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="126"/>
<source>Channel 10 value changed</source>
<extracomment>The name of the EventType ({88fa2326-76a7-40ad-921c-725d9c871ef4}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="132"/>
<source>Channel 11</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel11, ID: {015320ae-350d-4797-a5ed-7e7f74569b7a})
----------
The name of the StateType ({015320ae-350d-4797-a5ed-7e7f74569b7a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="135"/>
<source>Channel 11 value changed</source>
<extracomment>The name of the EventType ({015320ae-350d-4797-a5ed-7e7f74569b7a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="141"/>
<source>Channel 12</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel12, ID: {096bcf38-aa9b-434f-b45d-b4164bfd4eef})
----------
The name of the StateType ({096bcf38-aa9b-434f-b45d-b4164bfd4eef}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="144"/>
<source>Channel 12 value changed</source>
<extracomment>The name of the EventType ({096bcf38-aa9b-434f-b45d-b4164bfd4eef}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="150"/>
<source>Channel 13</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel13, ID: {7e28eb87-87c6-4864-bfad-e457c1187d6a})
----------
The name of the StateType ({7e28eb87-87c6-4864-bfad-e457c1187d6a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="153"/>
<source>Channel 13 value changed</source>
<extracomment>The name of the EventType ({7e28eb87-87c6-4864-bfad-e457c1187d6a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="159"/>
<source>Channel 14</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel14, ID: {ea3dde63-092d-4857-b836-70016647872c})
----------
The name of the StateType ({ea3dde63-092d-4857-b836-70016647872c}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="162"/>
<source>Channel 14 value changed</source>
<extracomment>The name of the EventType ({ea3dde63-092d-4857-b836-70016647872c}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="165"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="168"/>
<source>Channel 15</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel15, ID: {d580d189-cb9e-446d-8a19-5c0c7891ed1b})
----------
The name of the StateType ({d580d189-cb9e-446d-8a19-5c0c7891ed1b}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="171"/>
<source>Channel 15 value changed</source>
<extracomment>The name of the EventType ({d580d189-cb9e-446d-8a19-5c0c7891ed1b}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="177"/>
<source>Channel 16</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel16, ID: {80fabf7c-39cb-4ff2-aa55-a7760b13b0d5})
----------
The name of the StateType ({80fabf7c-39cb-4ff2-aa55-a7760b13b0d5}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="180"/>
<source>Channel 16 value changed</source>
<extracomment>The name of the EventType ({80fabf7c-39cb-4ff2-aa55-a7760b13b0d5}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="186"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="189"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="192"/>
<source>Channel 2</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel2, ID: {5ee7a800-a8ef-4298-aa0b-284afec75e68})
----------
The name of the StateType ({5ee7a800-a8ef-4298-aa0b-284afec75e68}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel2, ID: {d48dab3f-cefd-4efc-a7c9-9a56d1763e5a})
----------
The name of the StateType ({d48dab3f-cefd-4efc-a7c9-9a56d1763e5a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="195"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="198"/>
<source>Channel 2 value changed</source>
<extracomment>The name of the EventType ({5ee7a800-a8ef-4298-aa0b-284afec75e68}) of ThingClass ads1115
----------
The name of the EventType ({d48dab3f-cefd-4efc-a7c9-9a56d1763e5a}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="210"/>
<source>Channel 3</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel3, ID: {1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e})
----------
The name of the StateType ({1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel3, ID: {d52cd791-6d92-49e4-b46b-593cb0691d46})
----------
The name of the StateType ({d52cd791-6d92-49e4-b46b-593cb0691d46}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="213"/>
<source>Channel 3 value changed</source>
<extracomment>The name of the EventType ({1f44b1f5-afc8-4e6e-919f-7b1d158a8b6e}) of ThingClass ads1115</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="216"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="222"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="225"/>
<source>Channel 4</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, EventType: channel4, ID: {caba4fc0-7c06-4724-bd70-cc44b3451e17})
----------
The name of the StateType ({caba4fc0-7c06-4724-bd70-cc44b3451e17}) of ThingClass ads1115
----------
The name of the ParamType (ThingClass: pi16ADC, EventType: channel4, ID: {5a2e61c6-8934-40fb-b0ae-755563e1f01c})
----------
The name of the StateType ({5a2e61c6-8934-40fb-b0ae-755563e1f01c}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="231"/>
<source>Channel 4 value changed</source>
<extracomment>The name of the EventType ({caba4fc0-7c06-4724-bd70-cc44b3451e17}) of ThingClass ads1115
----------
The name of the EventType ({5a2e61c6-8934-40fb-b0ae-755563e1f01c}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="237"/>
<source>Channel 5</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel5, ID: {0eeff27c-aa76-4473-9fe5-baeb94c0fc4f})
----------
The name of the StateType ({0eeff27c-aa76-4473-9fe5-baeb94c0fc4f}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="240"/>
<source>Channel 5 value changed</source>
<extracomment>The name of the EventType ({0eeff27c-aa76-4473-9fe5-baeb94c0fc4f}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="246"/>
<source>Channel 6</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel6, ID: {75a336da-4486-4709-830e-ac5ceafa44f7})
----------
The name of the StateType ({75a336da-4486-4709-830e-ac5ceafa44f7}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="249"/>
<source>Channel 6 value changed</source>
<extracomment>The name of the EventType ({75a336da-4486-4709-830e-ac5ceafa44f7}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="255"/>
<source>Channel 7</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel7, ID: {ca863478-b520-4a3f-900b-e864d2c975f2})
----------
The name of the StateType ({ca863478-b520-4a3f-900b-e864d2c975f2}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="258"/>
<source>Channel 7 value changed</source>
<extracomment>The name of the EventType ({ca863478-b520-4a3f-900b-e864d2c975f2}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="264"/>
<source>Channel 8</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel8, ID: {582bd216-ac59-4045-b9ec-d7922c5db52d})
----------
The name of the StateType ({582bd216-ac59-4045-b9ec-d7922c5db52d}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="267"/>
<source>Channel 8 value changed</source>
<extracomment>The name of the EventType ({582bd216-ac59-4045-b9ec-d7922c5db52d}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="270"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="273"/>
<source>Channel 9</source>
<extracomment>The name of the ParamType (ThingClass: pi16ADC, EventType: channel9, ID: {fe58220c-6916-4194-9015-d948580d4daf})
----------
The name of the StateType ({fe58220c-6916-4194-9015-d948580d4daf}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="276"/>
<source>Channel 9 value changed</source>
<extracomment>The name of the EventType ({fe58220c-6916-4194-9015-d948580d4daf}) of ThingClass pi16ADC</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="279"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="282"/>
<source>I2C address</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {d3a14498-f0f4-4480-9a07-2fc8ed6fa3e9})
----------
The name of the ParamType (ThingClass: pi16ADC, Type: thing, ID: {97f047d2-a6dc-4d40-9235-03baa1502c61})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="288"/>
<source>I2C port</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {190c932f-5c97-497b-89b6-d34e37087467})
----------
The name of the ParamType (ThingClass: pi16ADC, Type: thing, ID: {1c99ab01-ccb9-4ca6-a8d9-c2c2cfafd0af})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="291"/>
<source>Input gain</source>
<extracomment>The name of the ParamType (ThingClass: ads1115, Type: thing, ID: {c1845769-636e-4744-965c-8bb0b96b80b1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="294"/>
<source>Pi-16ADC</source>
<extracomment>The name of the ThingClass ({15ecc88f-cdf0-498f-b1bc-bb630bcfb3c7})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/adconverters/plugininfo.h" line="297"/>
<source>Texas Instruments</source>
<extracomment>The name of the vendor ({2edf543e-dc2c-4693-bb0c-e76c0d305fad})</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -20,6 +20,7 @@ PLUGIN_DIRS = \
genericelements \
genericthings \
gpio \
i2cdevices \
httpcommander \
keba \
kodi \