Merge PR #307: OneWire PlugIn: Add W1 support

This commit is contained in:
Jenkins nymea 2020-09-14 12:40:44 +02:00
commit 2db4496296
11 changed files with 1023 additions and 267 deletions

View File

@ -38,7 +38,8 @@ This integration plugin allows to integrate one-wire devices like temperature se
* DS2408
## Usage
### OWFS Interface
First step is to setup the "One wire interface". During the device setup it is required to enter the OWFS init arguments. Default arguments are "--i2c=ALL:ALL", means OWFS is about to scan for one-wire bus masters on all I2C interfaces.
You can simulate one-wire device with following init argument: "--fake=10,22,28,05"
@ -49,6 +50,10 @@ The "One wire interface" thing has the toggle button to "Auto add one wire devic
NOTE: As long as the "Auto add one wire devices" feature is activated you won't be able to manually discover devices.
### W1 Kernel Driver
Install the kernel driver w1. Raspberry Pi users can use rasp-config to enable 'one wire' which enables W1. There are not further steps necessary, temperature sensors will be discovered if the driver has been loaded successfully.
## Requirements
* The package “nymea-plugin-onewire” must be installed.

View File

@ -43,17 +43,55 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info)
{
ThingClassId deviceClassId = info->thingClassId();
if (!m_w1Interface) {
m_w1Interface = new W1(this);
}
if (deviceClassId == temperatureSensorThingClassId ||
deviceClassId == singleChannelSwitchThingClassId ||
deviceClassId == dualChannelSwitchThingClassId ||
deviceClassId == eightChannelSwitchThingClassId) {
if (myThings().filterByThingClassId(oneWireInterfaceThingClassId).isEmpty()) {
//No one wire interface intitialized
//: Error discovering one wire devices
return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("No one wire interface initialized. Please set up a one wire interface first."));
if (!m_w1Interface->interfaceIsAvailable()) {
return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("No one wire interface initialized. Please set up a one wire interface first."));
}
QStringList deviceList = m_w1Interface->discoverDevices();
Q_FOREACH(QString device, deviceList) {
if (device.startsWith("10") ||
device.startsWith("22") ||
device.startsWith("28") ||
device.startsWith("3B", Qt::CaseInsensitive)) {
QString type = "Unkown";
if (device.startsWith("10")) { //
type = "DS18S20";
} else if (device.startsWith("22")) { //
type = "DS1822";
} else if (device.startsWith("28")) { //
type = "DS18B20";
} else if (device.startsWith("3B", Qt::CaseInsensitive)) { //DS1825
type = "DS1825";
}
ThingDescriptor descriptor(temperatureSensorThingClassId, type, "One wire temperature sensor");
ParamList params;
params.append(Param(temperatureSensorThingAddressParamTypeId, device));
params.append(Param(temperatureSensorThingTypeParamTypeId, type));
foreach (Thing *existingThing, myThings().filterByThingClassId(temperatureSensorThingClassId)){
if (existingThing->paramValue(temperatureSensorThingAddressParamTypeId).toString() == device) {
descriptor.setThingId(existingThing->id());
break;
}
}
descriptor.setParams(params);
info->addThingDescriptor(descriptor);
}
}
return info->finish(Thing::ThingErrorNoError);
}
foreach(Thing *parentDevice, myThings().filterByThingClassId(oneWireInterfaceThingClassId)) {
if (parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) {
//devices cannot be discovered since auto mode is enabled
@ -64,18 +102,18 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info)
m_runningDiscoveries.remove(parentDevice);
});
if (m_oneWireInterface)
m_oneWireInterface->discoverDevices();
if (m_owfsInterface)
m_owfsInterface->discoverDevices();
}
if (m_runningDiscoveries.isEmpty()) {
info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("All configured one wire interfaces are set up to automatically add new devices."));
}
return;
} else {
qCWarning(dcOneWire()) << "Discovery called for a deviceclass which does not support discovery? Device class ID:" << info->thingClassId().toString();
info->finish(Thing::ThingErrorThingClassNotFound);
}
qCWarning(dcOneWire()) << "Discovery called for a deviceclass which does not support discovery? Device class ID:" << info->thingClassId().toString();
info->finish(Thing::ThingErrorThingClassNotFound);
}
@ -85,69 +123,86 @@ void IntegrationPluginOneWire::setupThing(ThingSetupInfo *info)
if (thing->thingClassId() == oneWireInterfaceThingClassId) {
qCDebug(dcOneWire) << "Setup one wire interface";
if (m_oneWireInterface) {
if (m_owfsInterface) {
qCWarning(dcOneWire) << "One wire interface already set up";
//: Error setting up thing
return info->finish(Thing::ThingErrorThingInUse, QT_TR_NOOP("There can only be one one wire interface per system."));
}
m_oneWireInterface = new OneWire(this);
m_owfsInterface = new Owfs(this);
QByteArray initArguments = thing->paramValue(oneWireInterfaceThingInitArgsParamTypeId).toByteArray();
if (!m_oneWireInterface->init(initArguments)){
m_oneWireInterface->deleteLater();
m_oneWireInterface = nullptr;
if (!m_owfsInterface->init(initArguments)){
m_owfsInterface->deleteLater();
m_owfsInterface = nullptr;
//: Error setting up thing
return info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error initializing one wire interface."));
}
connect(m_oneWireInterface, &OneWire::devicesDiscovered, this, &IntegrationPluginOneWire::onOneWireDevicesDiscovered);
connect(m_owfsInterface, &Owfs::devicesDiscovered, this, &IntegrationPluginOneWire::onOneWireDevicesDiscovered);
return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == temperatureSensorThingClassId) {
} else if (thing->thingClassId() == temperatureSensorThingClassId) {
qCDebug(dcOneWire) << "Setup one wire temperature sensor" << thing->params();
if (!m_oneWireInterface) { //in case the child was setup before the interface
double temperature = m_oneWireInterface->getTemperature(thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray());
thing->setStateValue(temperatureSensorTemperatureStateTypeId, temperature);
QString address = thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray();
if (myThings().findById(thing->parentId())->thingClassId() == oneWireInterfaceThingClassId) {
if (m_owfsInterface) {
thing->setStateValue(temperatureSensorConnectedStateTypeId, m_owfsInterface->isConnected(address.toUtf8()));
thing->setStateValue(temperatureSensorTemperatureStateTypeId, m_owfsInterface->getTemperature(address.toUtf8()));
return info->finish(Thing::ThingErrorNoError);
} else {
//OWFS Interface is not yet initialized try a setup in 3 seconds
QTimer::singleShot(3000, this, [this, info]{setupThing(info);});
}
} else {
if (!m_w1Interface) {
m_w1Interface = new W1(this);
}
if (m_w1Interface->interfaceIsAvailable()) {
thing->setStateValue(temperatureSensorConnectedStateTypeId, m_w1Interface->deviceAvailable(address));
thing->setStateValue(temperatureSensorTemperatureStateTypeId, m_w1Interface->getTemperature(address));
return info->finish(Thing::ThingErrorNoError);
} else {
qCWarning(dcOneWire()) << "W1 interface is not available";
}
}
return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == singleChannelSwitchThingClassId) {
} else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire switch" << thing->params();
if (!m_oneWireInterface) {
if (m_owfsInterface) {
QByteArray address = thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(singleChannelSwitchDigitalOutputStateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
thing->setStateValue(singleChannelSwitchDigitalOutputStateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(singleChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
}
return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == dualChannelSwitchThingClassId) {
} else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire dual switch" << thing->params();
if (!m_oneWireInterface) {
if (m_owfsInterface) {
QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B));
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(dualChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
}
return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == eightChannelSwitchThingClassId) {
} else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire eight channel switch" << thing->params();
if (!m_oneWireInterface) {
if (m_owfsInterface) {
QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_H));
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_H));
thing->setStateValue(eightChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
}
return info->finish(Thing::ThingErrorNoError);
} else {
return info->finish(Thing::ThingErrorThingNotFound);
}
return info->finish(Thing::ThingErrorThingNotFound);
}
void IntegrationPluginOneWire::postSetupThing(Thing *thing)
@ -165,82 +220,83 @@ void IntegrationPluginOneWire::executeAction(ThingActionInfo *info)
Thing *thing = info->thing();
Action action = info->action();
if (!m_owfsInterface) {
//All current things with actions require an OWFS interface
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("OWFS interface is not available."));
}
if (thing->thingClassId() == oneWireInterfaceThingClassId) {
if (action.actionTypeId() == oneWireInterfaceAutoAddActionTypeId){
thing->setStateValue(oneWireInterfaceAutoAddStateTypeId, action.param(oneWireInterfaceAutoAddActionAutoAddParamTypeId).value());
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == singleChannelSwitchThingClassId) {
} else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
if (action.actionTypeId() == singleChannelSwitchDigitalOutputActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_A, action.param(singleChannelSwitchDigitalOutputActionDigitalOutputParamTypeId).value().toBool());
m_owfsInterface->setSwitchOutput(thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_A, action.param(singleChannelSwitchDigitalOutputActionDigitalOutputParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
} else {
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == dualChannelSwitchThingClassId) {
} else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
if (action.actionTypeId() == dualChannelSwitchDigitalOutput1ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_A, action.param(dualChannelSwitchDigitalOutput1ActionDigitalOutput1ParamTypeId).value().toBool());
m_owfsInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_A, action.param(dualChannelSwitchDigitalOutput1ActionDigitalOutput1ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == dualChannelSwitchDigitalOutput2ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_B, action.param(dualChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
} else if (action.actionTypeId() == dualChannelSwitchDigitalOutput2ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_B, action.param(dualChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
} else {
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == eightChannelSwitchThingClassId) {
} else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
if (action.actionTypeId() == eightChannelSwitchDigitalOutput1ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_A, action.param(eightChannelSwitchDigitalOutput1ActionDigitalOutput1ParamTypeId).value().toBool());
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_A, action.param(eightChannelSwitchDigitalOutput1ActionDigitalOutput1ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput2ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_B, action.param(eightChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput2ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_B, action.param(eightChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput3ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_C, action.param(eightChannelSwitchDigitalOutput3ActionDigitalOutput3ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput3ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_C, action.param(eightChannelSwitchDigitalOutput3ActionDigitalOutput3ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput4ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_D, action.param(eightChannelSwitchDigitalOutput4ActionDigitalOutput4ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput4ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_D, action.param(eightChannelSwitchDigitalOutput4ActionDigitalOutput4ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput5ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_E, action.param(eightChannelSwitchDigitalOutput5ActionDigitalOutput5ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput5ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_E, action.param(eightChannelSwitchDigitalOutput5ActionDigitalOutput5ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput6ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_F, action.param(eightChannelSwitchDigitalOutput6ActionDigitalOutput6ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput6ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_F, action.param(eightChannelSwitchDigitalOutput6ActionDigitalOutput6ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput7ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_G, action.param(eightChannelSwitchDigitalOutput7ActionDigitalOutput7ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput7ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_G, action.param(eightChannelSwitchDigitalOutput7ActionDigitalOutput7ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
}
if (action.actionTypeId() == eightChannelSwitchDigitalOutput8ActionTypeId){
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_H, action.param(eightChannelSwitchDigitalOutput8ActionDigitalOutput8ParamTypeId).value().toBool());
} else if (action.actionTypeId() == eightChannelSwitchDigitalOutput8ActionTypeId){
m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_H, action.param(eightChannelSwitchDigitalOutput8ActionDigitalOutput8ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError);
} else {
return info->finish(Thing::ThingErrorActionTypeNotFound);
}
return info->finish(Thing::ThingErrorActionTypeNotFound);
} else {
return info->finish(Thing::ThingErrorNoError);
}
return info->finish(Thing::ThingErrorNoError);
}
void IntegrationPluginOneWire::thingRemoved(Thing *thing)
{
if (thing->thingClassId() == oneWireInterfaceThingClassId) {
m_oneWireInterface->deleteLater();
m_oneWireInterface = nullptr;
m_owfsInterface->deleteLater();
m_owfsInterface = nullptr;
return;
}
if (myThings().filterByThingClassId(temperatureSensorThingClassId).isEmpty()) {
m_w1Interface->deleteLater();
m_w1Interface = nullptr;
}
if (myThings().empty()) {
hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer);
m_pluginTimer = nullptr;
@ -252,52 +308,68 @@ void IntegrationPluginOneWire::onPluginTimer()
{
foreach (Thing *thing, myThings()) {
if (thing->thingClassId() == oneWireInterfaceThingClassId) {
thing->setStateValue(oneWireInterfaceConnectedStateTypeId, m_oneWireInterface->interfaceIsAvailable());
thing->setStateValue(oneWireInterfaceConnectedStateTypeId, m_owfsInterface->interfaceIsAvailable());
if (thing->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) {
m_oneWireInterface->discoverDevices();
m_owfsInterface->discoverDevices();
}
}
if (thing->thingClassId() == temperatureSensorThingClassId) {
} else if (thing->thingClassId() == temperatureSensorThingClassId) {
QByteArray address = thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray();
double temperature = 0;
bool connected = false;
if (myThings().findById(thing->parentId())->thingClassId() == oneWireInterfaceThingClassId) {
if (m_owfsInterface) {
temperature = m_owfsInterface->getTemperature(address);
connected = m_owfsInterface->isConnected(address);
} else {
qCWarning(dcOneWire()) << "onPlugInTimer: OWFS interface not setup yet for thing" << thing->name();
}
} else {
temperature = m_w1Interface->getTemperature(address);
connected = m_w1Interface->deviceAvailable(address);
}
double temperature = m_oneWireInterface->getTemperature(address);
thing->setStateValue(temperatureSensorTemperatureStateTypeId, temperature);
}
if (thing->thingClassId() == singleChannelSwitchThingClassId) {
thing->setStateValue(temperatureSensorConnectedStateTypeId, connected);
} else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(singleChannelSwitchDigitalOutputStateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
}
if (thing->thingClassId() == dualChannelSwitchThingClassId) {
thing->setStateValue(singleChannelSwitchDigitalOutputStateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(singleChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
} else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B));
}
if (thing->thingClassId() == eightChannelSwitchThingClassId) {
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(dualChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
} else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_H));
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_H));
thing->setStateValue(eightChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
}
}
}
void IntegrationPluginOneWire::onOneWireDevicesDiscovered(QList<OneWire::OneWireDevice> oneWireDevices)
void IntegrationPluginOneWire::onOneWireDevicesDiscovered(QList<Owfs::OwfsDevice> oneWireDevices)
{
foreach(Thing *parentDevice, myThings().filterByThingClassId(oneWireInterfaceThingClassId)) {
bool autoDiscoverEnabled = parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool();
ThingDescriptors descriptors;
foreach (OneWire::OneWireDevice oneWireDevice, oneWireDevices){
foreach (Owfs::OwfsDevice oneWireDevice, oneWireDevices){
switch (oneWireDevice.family) {
//https://github.com/owfs/owfs-doc/wiki/1Wire-Device-List
case 0x10: //DS18S20

View File

@ -33,7 +33,8 @@
#include "plugintimer.h"
#include "integrations/integrationplugin.h"
#include "onewire.h"
#include "owfs.h"
#include "w1.h"
#include <QHash>
@ -54,13 +55,14 @@ public:
private:
PluginTimer *m_pluginTimer = nullptr;
OneWire *m_oneWireInterface = nullptr;
Owfs *m_owfsInterface = nullptr;
W1 *m_w1Interface = nullptr;
QHash<Thing*, ThingDiscoveryInfo*> m_runningDiscoveries;
private slots:
void onPluginTimer();
void onOneWireDevicesDiscovered(QList<OneWire::OneWireDevice> devices);
void onOneWireDevicesDiscovered(QList<Owfs::OwfsDevice> devices);
};
#endif // INTEGRATIONPLUGINONEWIRE_H

View File

@ -11,7 +11,7 @@
{
"id": "c36c68d9-6182-4ae1-972d-b8b5e0cf185f",
"name": "oneWireInterface",
"displayName": "One wire interface",
"displayName": "OWFS interface",
"interfaces": ["gateway"],
"createMethods": ["user"],
"paramTypes": [
@ -27,8 +27,8 @@
{
"id": "d0ded173-c382-4ee3-8e24-3647b4e16afa",
"name": "connected",
"displayName": "connected",
"displayNameEvent": "connected changed",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"defaultValue": false,
"type": "bool"
},
@ -68,11 +68,19 @@
}
],
"stateTypes": [
{
"id": "32305a16-b042-4574-8bd7-ad99d9e8e5da",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"defaultValue": false,
"type": "bool"
},
{
"id": "b04ee2a5-9b27-4ffc-9e12-7e05f5a41690",
"name": "temperature",
"displayName": "temperature",
"displayNameEvent": "temperature changed",
"displayName": "Temperature",
"displayNameEvent": "Temperature changed",
"unit": "DegreeCelsius",
"type": "double",
"defaultValue": 0
@ -102,7 +110,15 @@
"readOnly": true
}
],
"stateTypes": [
"stateTypes": [
{
"id": "16bae8e8-bfe1-4648-9018-f6ce610f4236",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"defaultValue": false,
"type": "bool"
},
{
"id": "ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40",
"name": "digitalOutput",
@ -139,6 +155,14 @@
}
],
"stateTypes": [
{
"id": "fb6e63db-316b-4959-a349-0ff58a679f71",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"defaultValue": false,
"type": "bool"
},
{
"id": "f8b6b4a7-355c-4580-a676-8a4d0d619ff9",
"name": "digitalOutput1",
@ -186,6 +210,14 @@
}
],
"stateTypes": [
{
"id": "b99585e0-5147-46e3-9474-fba555bac68a",
"name": "connected",
"displayName": "Connected",
"displayNameEvent": "Connected changed",
"defaultValue": false,
"type": "bool"
},
{
"id": "78fa12c0-246c-4112-8be6-5943d3c3cda5",
"name": "digitalOutput1",

View File

@ -8,10 +8,11 @@ LIBS += \
SOURCES += \
integrationpluginonewire.cpp \
onewire.cpp \
owfs.cpp \
w1.cpp \
HEADERS += \
integrationpluginonewire.h \
onewire.h \
owfs.h \
w1.h \

View File

@ -28,21 +28,21 @@
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "onewire.h"
#include "owfs.h"
#include "extern-plugininfo.h"
OneWire::OneWire(QObject *parent) :
Owfs::Owfs(QObject *parent) :
QObject(parent)
{
}
OneWire::~OneWire()
Owfs::~Owfs()
{
OW_finish();
}
bool OneWire::init(const QByteArray &owfsInitArguments)
bool Owfs::init(const QByteArray &owfsInitArguments)
{
//QByteArray initArguments;
//Test OWFS arguments
@ -52,6 +52,9 @@ bool OneWire::init(const QByteArray &owfsInitArguments)
//Test i2c
//initArguments.append("--i2c=ALL:ALL");
// W1 Kernel Module
//inifArguments.append("--w1");
if (OW_init(owfsInitArguments) < 0) {
qWarning(dcOneWire()) << "ERROR initialising one wire" << strerror(errno);
return false;
@ -60,7 +63,7 @@ bool OneWire::init(const QByteArray &owfsInitArguments)
return true;
}
bool OneWire::discoverDevices()
bool Owfs::discoverDevices()
{
char *dirBuffer = nullptr;
size_t dirLength ;
@ -75,7 +78,7 @@ bool OneWire::discoverDevices()
dirMembers = QByteArray(dirBuffer, dirLength).split(',');
free(dirBuffer);
QList<OneWireDevice> oneWireDevices;
QList<OwfsDevice> owfsDevices;
foreach(QByteArray member, dirMembers) {
/* Other system members:
@ -93,26 +96,31 @@ bool OneWire::discoverDevices()
if (family != 0) {
member.remove(member.indexOf('/'), 1);
QByteArray type;
OneWireDevice thing;
OwfsDevice thing;
thing.family = family;
thing.address = member;
thing.id = member.split('.').last();
thing.type = getValue(member, "type");
oneWireDevices.append(thing);
owfsDevices.append(thing);
}
}
emit devicesDiscovered(oneWireDevices);
emit devicesDiscovered(owfsDevices);
return true;
}
bool OneWire::interfaceIsAvailable()
bool Owfs::interfaceIsAvailable()
{
return true;
//TODO
//QByteArray fullPath;
//fullPath.append(m_path);
//if(OW_present(fullPath) < 0)
// return false;
//return true;
}
bool OneWire::isConnected(const QByteArray &address)
bool Owfs::isConnected(const QByteArray &address)
{
Q_UNUSED(address)
QByteArray fullPath;
fullPath.append(m_path);
fullPath.append(address);
@ -125,7 +133,7 @@ bool OneWire::isConnected(const QByteArray &address)
/* Takes a path and filename and prints the 1-wire value */
/* makes sure the bridging "/" in the path is correct */
/* watches for total length and free allocated space */
QByteArray OneWire::getValue(const QByteArray &address, const QByteArray &type)
QByteArray Owfs::getValue(const QByteArray &address, const QByteArray &type)
{
char * getBuffer ;
size_t getLength ;
@ -150,7 +158,7 @@ QByteArray OneWire::getValue(const QByteArray &address, const QByteArray &type)
return value;
}
void OneWire::setValue(const QByteArray &address, const QByteArray &type, const QByteArray &value)
void Owfs::setValue(const QByteArray &address, const QByteArray &type, const QByteArray &value)
{
Q_UNUSED(value)
QByteArray devicePath;
@ -167,20 +175,20 @@ void OneWire::setValue(const QByteArray &address, const QByteArray &type, const
}
}
double OneWire::getTemperature(const QByteArray &address)
double Owfs::getTemperature(const QByteArray &address)
{
QByteArray temperature = getValue(address, "temperature");
qDebug(dcOneWire()) << "Temperature" << temperature << temperature.replace(',','.').toDouble();
return temperature.toDouble();
}
QByteArray OneWire::getType(const QByteArray &address)
QByteArray Owfs::getType(const QByteArray &address)
{
QByteArray type = getValue(address, "type");
return type;
}
bool OneWire::getSwitchOutput(const QByteArray &address, SwitchChannel channel)
bool Owfs::getSwitchOutput(const QByteArray &address, SwitchChannel channel)
{
QByteArray c;
c.append("PIO.");
@ -215,7 +223,7 @@ bool OneWire::getSwitchOutput(const QByteArray &address, SwitchChannel channel)
return state.toInt();
}
bool OneWire::getSwitchInput(const QByteArray &address, SwitchChannel channel)
bool Owfs::getSwitchInput(const QByteArray &address, SwitchChannel channel)
{
QByteArray c;
c.append("sensed.");
@ -250,7 +258,7 @@ bool OneWire::getSwitchInput(const QByteArray &address, SwitchChannel channel)
return state.toInt();
}
void OneWire::setSwitchOutput(const QByteArray &address, SwitchChannel channel, bool state)
void Owfs::setSwitchOutput(const QByteArray &address, SwitchChannel channel, bool state)
{
QByteArray c;
c.append("PIO.");

View File

@ -28,18 +28,18 @@
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef ONEWIRE_H
#define ONEWIRE_H
#ifndef OWFS_H
#define OWFS_H
#include "owcapi.h"
#include <QObject>
class OneWire : public QObject
class Owfs : public QObject
{
Q_OBJECT
public:
enum OneWireProperty {
enum OwfsProperty {
Address, //The entire 64-bit unique ID
Crc, //The 8-bit error correction
Family, //The 8-bit family code
@ -59,15 +59,15 @@ public:
PIO_H
};
struct OneWireDevice {
struct OwfsDevice {
QByteArray address;
int family;
QByteArray id;
QByteArray type;
};
explicit OneWire(QObject *parent = nullptr);
~OneWire();
explicit Owfs(QObject *parent = nullptr);
~Owfs();
bool init(const QByteArray &owfsInitArguments);
QByteArray getPath();
@ -87,7 +87,7 @@ private:
void setValue(const QByteArray &address, const QByteArray &deviceType, const QByteArray &value);
signals:
void devicesDiscovered(QList<OneWireDevice> devices);
void devicesDiscovered(QList<OwfsDevice> devices);
};
#endif // ONEWIRE_H
#endif // OWFS_H

View File

@ -0,0 +1,451 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>IntegrationPluginOneWire</name>
<message>
<location filename="../integrationpluginonewire.cpp" line="57"/>
<source>No one wire interface initialized. Please set up a one wire interface first.</source>
<translation>Es wurde keine OWFS Schnittstelle initialisiert. Bitte richten Sie zuerst eine OWFS Schnittstelle ein.</translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="110"/>
<source>All configured one wire interfaces are set up to automatically add new devices.</source>
<translation>Alle konfigurierten OWFS-Schnittstellen sind so eingerichtet, dass automatisch neue Geräte hinzugefügt werden.</translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="129"/>
<source>There can only be one one wire interface per system.</source>
<extracomment>Error setting up thing</extracomment>
<translation>Es kann nur eine One-Wire-Schnittstelle pro System geben.</translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="138"/>
<source>Error initializing one wire interface.</source>
<extracomment>Error setting up thing</extracomment>
<translation>Fehler beim Initialisieren der One-Wire-Schnittstelle.</translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="160"/>
<source>No 1-Wire interface available</source>
<translation>Keine One-Wire-Schnittstelle verfügbar</translation>
</message>
</context>
<context>
<name>OneWire</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="114"/>
<source>1-channel switch</source>
<extracomment>The name of the ThingClass ({6db42501-5451-4aac-9525-5f886b3188e2})</extracomment>
<translation>1-Kanal Schalter</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="117"/>
<source>2-channel switch</source>
<extracomment>The name of the ThingClass ({023f2b93-61e1-4422-97f5-3d5c14a6628f})</extracomment>
<translation>2-Kanal Schalter</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="120"/>
<source>8-channel switch</source>
<extracomment>The name of the ThingClass ({71691119-3bda-4424-b853-1a00f21086e1})</extracomment>
<translation>8-Kanal Schalter</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="123"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="126"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="132"/>
<source>Address</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {e3e6e596-0cd4-42a3-8401-ccf6349314b7})
----------
The name of the ParamType (ThingClass: dualChannelSwitch, Type: thing, ID: {b9a1a23d-1fbf-4849-8aa2-2855e7deaf84})
----------
The name of the ParamType (ThingClass: singleChannelSwitch, Type: thing, ID: {c9d6b7fd-fa21-473a-b5ed-9c5227749f06})
----------
The name of the ParamType (ThingClass: temperatureSensor, Type: thing, ID: {b4368f34-d9bb-496f-84ba-091bd4b6a332})</extracomment>
<translation>Adresse</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="135"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="141"/>
<source>Auto add one wire devices</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, ActionType: autoAdd, ID: {64baf50e-8ed4-4526-8b92-7e4662d6fa39})
----------
The name of the ParamType (ThingClass: oneWireInterface, EventType: autoAdd, ID: {64baf50e-8ed4-4526-8b92-7e4662d6fa39})
----------
The name of the StateType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation>Automatisches hinzufügen von One-Wire-Geräten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="144"/>
<source>Auto add one wire devices changed</source>
<extracomment>The name of the EventType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation>Automatisches hinzufügen von One-Wire-Geräten geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="150"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="159"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="165"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="168"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="171"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="174"/>
<source>Connected</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, EventType: connected, ID: {b99585e0-5147-46e3-9474-fba555bac68a})
----------
The name of the StateType ({b99585e0-5147-46e3-9474-fba555bac68a}) of ThingClass eightChannelSwitch
----------
The name of the ParamType (ThingClass: dualChannelSwitch, EventType: connected, ID: {fb6e63db-316b-4959-a349-0ff58a679f71})
----------
The name of the StateType ({fb6e63db-316b-4959-a349-0ff58a679f71}) of ThingClass dualChannelSwitch
----------
The name of the ParamType (ThingClass: singleChannelSwitch, EventType: connected, ID: {16bae8e8-bfe1-4648-9018-f6ce610f4236})
----------
The name of the StateType ({16bae8e8-bfe1-4648-9018-f6ce610f4236}) of ThingClass singleChannelSwitch
----------
The name of the ParamType (ThingClass: temperatureSensor, EventType: connected, ID: {32305a16-b042-4574-8bd7-ad99d9e8e5da})
----------
The name of the StateType ({32305a16-b042-4574-8bd7-ad99d9e8e5da}) of ThingClass temperatureSensor
----------
The name of the ParamType (ThingClass: oneWireInterface, EventType: connected, ID: {d0ded173-c382-4ee3-8e24-3647b4e16afa})
----------
The name of the StateType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation>Verbunden</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="177"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="180"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="186"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="189"/>
<source>Connected changed</source>
<extracomment>The name of the EventType ({b99585e0-5147-46e3-9474-fba555bac68a}) of ThingClass eightChannelSwitch
----------
The name of the EventType ({fb6e63db-316b-4959-a349-0ff58a679f71}) of ThingClass dualChannelSwitch
----------
The name of the EventType ({16bae8e8-bfe1-4648-9018-f6ce610f4236}) of ThingClass singleChannelSwitch
----------
The name of the EventType ({32305a16-b042-4574-8bd7-ad99d9e8e5da}) of ThingClass temperatureSensor
----------
The name of the EventType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation>Verbunden geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="192"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="195"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="198"/>
<source>Digital output</source>
<extracomment>The name of the ParamType (ThingClass: singleChannelSwitch, ActionType: digitalOutput, ID: {ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40})
----------
The name of the ParamType (ThingClass: singleChannelSwitch, EventType: digitalOutput, ID: {ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40})
----------
The name of the StateType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation>Digitaler Ausgang</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="210"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="213"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="216"/>
<source>Digital output 1</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput1, ID: {78fa12c0-246c-4112-8be6-5943d3c3cda5})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput1, ID: {78fa12c0-246c-4112-8be6-5943d3c3cda5})
----------
The name of the StateType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch
----------
The name of the ParamType (ThingClass: dualChannelSwitch, ActionType: digitalOutput1, ID: {f8b6b4a7-355c-4580-a676-8a4d0d619ff9})
----------
The name of the ParamType (ThingClass: dualChannelSwitch, EventType: digitalOutput1, ID: {f8b6b4a7-355c-4580-a676-8a4d0d619ff9})
----------
The name of the StateType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClass dualChannelSwitch</extracomment>
<translation>Digitaler Ausgang 1</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="222"/>
<source>Digital output 1 changed</source>
<extracomment>The name of the EventType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch
----------
The name of the EventType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClass dualChannelSwitch</extracomment>
<translation>Digitaler Ausgang 1 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="225"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="231"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="237"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="240"/>
<source>Digital output 2</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput2, ID: {c7d2f4a8-2b13-4a48-81a8-72f4908c775b})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput2, ID: {c7d2f4a8-2b13-4a48-81a8-72f4908c775b})
----------
The name of the StateType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch
----------
The name of the ParamType (ThingClass: dualChannelSwitch, ActionType: digitalOutput2, ID: {82a78aed-5994-4af5-aecb-1806be5de1f3})
----------
The name of the ParamType (ThingClass: dualChannelSwitch, EventType: digitalOutput2, ID: {82a78aed-5994-4af5-aecb-1806be5de1f3})
----------
The name of the StateType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClass dualChannelSwitch</extracomment>
<translation>Digitaler Ausgang 2</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="246"/>
<source>Digital output 2 changed</source>
<extracomment>The name of the EventType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch
----------
The name of the EventType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClass dualChannelSwitch</extracomment>
<translation>Digitaler Ausgang 2 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="249"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="255"/>
<source>Digital output 3</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput3, ID: {4b2ac595-eba9-4364-8cd7-00ff8bccda5a})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput3, ID: {4b2ac595-eba9-4364-8cd7-00ff8bccda5a})
----------
The name of the StateType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 3</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="258"/>
<source>Digital output 3 changed</source>
<extracomment>The name of the EventType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 3 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="264"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="267"/>
<source>Digital output 4</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput4, ID: {bbbd1863-ef04-4687-803d-3c9ccdfc8d8f})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput4, ID: {bbbd1863-ef04-4687-803d-3c9ccdfc8d8f})
----------
The name of the StateType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 4</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="270"/>
<source>Digital output 4 changed</source>
<extracomment>The name of the EventType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 4 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="273"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="276"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="279"/>
<source>Digital output 5</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput5, ID: {50855d2b-a700-4030-8674-fee00cc0b4e2})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput5, ID: {50855d2b-a700-4030-8674-fee00cc0b4e2})
----------
The name of the StateType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 5</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="282"/>
<source>Digital output 5 changed</source>
<extracomment>The name of the EventType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 5 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="288"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="291"/>
<source>Digital output 6</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput6, ID: {a91ce593-09ba-4754-8a2e-e3f507313585})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput6, ID: {a91ce593-09ba-4754-8a2e-e3f507313585})
----------
The name of the StateType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 6</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="294"/>
<source>Digital output 6 changed</source>
<extracomment>The name of the EventType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 6 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="297"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="300"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="303"/>
<source>Digital output 7</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput7, ID: {5f46047c-b00d-486f-b169-b738fbc89cdb})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput7, ID: {5f46047c-b00d-486f-b169-b738fbc89cdb})
----------
The name of the StateType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 7</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="306"/>
<source>Digital output 7 changed</source>
<extracomment>The name of the EventType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 7 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="309"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="312"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="315"/>
<source>Digital output 8</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput8, ID: {63334a17-0847-4f53-8007-1b5e72b88aa8})
----------
The name of the ParamType (ThingClass: eightChannelSwitch, EventType: digitalOutput8, ID: {63334a17-0847-4f53-8007-1b5e72b88aa8})
----------
The name of the StateType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 8</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="318"/>
<source>Digital output 8 changed</source>
<extracomment>The name of the EventType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation>Digitaler Ausgang 8 geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="321"/>
<source>Digital output changed</source>
<extracomment>The name of the EventType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation>Digitaler Ausgang geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="324"/>
<source>OWFS init arguments</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, Type: thing, ID: {a0e773ff-fd19-499e-96f0-830168229cd3})</extracomment>
<translation>OWFS-Init-Argumente</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="327"/>
<source>OWFS interface</source>
<extracomment>The name of the ThingClass ({c36c68d9-6182-4ae1-972d-b8b5e0cf185f})</extracomment>
<translation>OWFS Schnittstelle</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="330"/>
<source>One Wire</source>
<extracomment>The name of the plugin OneWire ({2c697fb7-0645-466d-9cb9-aa1922c85bee})</extracomment>
<translation>One Wire</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="333"/>
<source>One wire</source>
<extracomment>The name of the vendor ({cecc5fae-29cf-40c0-b1f8-0af2dc8e8a63})</extracomment>
<translation>One Wire</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="336"/>
<source>Set auto add mode</source>
<extracomment>The name of the ActionType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation>Setze automatischen Add-Modus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="339"/>
<source>Set digital output</source>
<extracomment>The name of the ActionType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="342"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="345"/>
<source>Set digital output 1</source>
<extracomment>The name of the ActionType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch
----------
The name of the ActionType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClass dualChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 1</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="348"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="351"/>
<source>Set digital output 2</source>
<extracomment>The name of the ActionType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch
----------
The name of the ActionType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClass dualChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 2</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="354"/>
<source>Set digital output 3</source>
<extracomment>The name of the ActionType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 3</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="357"/>
<source>Set digital output 4</source>
<extracomment>The name of the ActionType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 4</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="360"/>
<source>Set digital output 5</source>
<extracomment>The name of the ActionType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 5</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="363"/>
<source>Set digital output 6</source>
<extracomment>The name of the ActionType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 6</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="366"/>
<source>Set digital output 7</source>
<extracomment>The name of the ActionType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 7</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="369"/>
<source>Set digital output 8</source>
<extracomment>The name of the ActionType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation>Setze digitalen Ausgang 8</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="372"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="375"/>
<source>Temperature</source>
<extracomment>The name of the ParamType (ThingClass: temperatureSensor, EventType: temperature, ID: {b04ee2a5-9b27-4ffc-9e12-7e05f5a41690})
----------
The name of the StateType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation>Temperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="378"/>
<source>Temperature Sensor</source>
<extracomment>The name of the ThingClass ({e13beb24-953c-48b3-9262-7cde31d42ef5})</extracomment>
<translation>Termperatursensor</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="381"/>
<source>Temperature changed</source>
<extracomment>The name of the EventType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation>Temperatur geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="384"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="387"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="390"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="393"/>
<source>Type</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {34c8f771-4141-4183-9eaf-becbaf362ac8})
----------
The name of the ParamType (ThingClass: dualChannelSwitch, Type: thing, ID: {b71ed57b-e768-4119-829e-a0f2c9fa5e18})
----------
The name of the ParamType (ThingClass: singleChannelSwitch, Type: thing, ID: {6efc8cb6-81ae-45c0-8910-708401d1ba68})
----------
The name of the ParamType (ThingClass: temperatureSensor, Type: thing, ID: {5005822d-6a32-4bb8-9b77-f79da7382f76})</extracomment>
<translation>Typ</translation>
</message>
</context>
</TS>

View File

@ -4,54 +4,58 @@
<context>
<name>IntegrationPluginOneWire</name>
<message>
<location filename="../integrationpluginonewire.cpp" line="54"/>
<location filename="../integrationpluginonewire.cpp" line="57"/>
<source>No one wire interface initialized. Please set up a one wire interface first.</source>
<extracomment>Error discovering one wire devices</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="72"/>
<location filename="../integrationpluginonewire.cpp" line="110"/>
<source>All configured one wire interfaces are set up to automatically add new devices.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="91"/>
<location filename="../integrationpluginonewire.cpp" line="129"/>
<source>There can only be one one wire interface per system.</source>
<extracomment>Error setting up thing</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="100"/>
<location filename="../integrationpluginonewire.cpp" line="138"/>
<source>Error initializing one wire interface.</source>
<extracomment>Error setting up thing</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginonewire.cpp" line="160"/>
<source>No 1-Wire interface available</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>OneWire</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="102"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="114"/>
<source>1-channel switch</source>
<extracomment>The name of the ThingClass ({6db42501-5451-4aac-9525-5f886b3188e2})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="105"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="117"/>
<source>2-channel switch</source>
<extracomment>The name of the ThingClass ({023f2b93-61e1-4422-97f5-3d5c14a6628f})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="108"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="120"/>
<source>8-channel switch</source>
<extracomment>The name of the ThingClass ({71691119-3bda-4424-b853-1a00f21086e1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="111"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="114"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="117"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="120"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="123"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="126"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="132"/>
<source>Address</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {e3e6e596-0cd4-42a3-8401-ccf6349314b7})
----------
@ -63,9 +67,9 @@ The name of the ParamType (ThingClass: temperatureSensor, Type: thing, ID: {b436
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="123"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="126"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="135"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="141"/>
<source>Auto add one wire devices</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, ActionType: autoAdd, ID: {64baf50e-8ed4-4526-8b92-7e4662d6fa39})
----------
@ -75,15 +79,66 @@ The name of the StateType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="132"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="144"/>
<source>Auto add one wire devices changed</source>
<extracomment>The name of the EventType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="135"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="141"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="150"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="159"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="165"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="168"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="171"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="174"/>
<source>Connected</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, EventType: connected, ID: {b99585e0-5147-46e3-9474-fba555bac68a})
----------
The name of the StateType ({b99585e0-5147-46e3-9474-fba555bac68a}) of ThingClass eightChannelSwitch
----------
The name of the ParamType (ThingClass: dualChannelSwitch, EventType: connected, ID: {fb6e63db-316b-4959-a349-0ff58a679f71})
----------
The name of the StateType ({fb6e63db-316b-4959-a349-0ff58a679f71}) of ThingClass dualChannelSwitch
----------
The name of the ParamType (ThingClass: singleChannelSwitch, EventType: connected, ID: {16bae8e8-bfe1-4648-9018-f6ce610f4236})
----------
The name of the StateType ({16bae8e8-bfe1-4648-9018-f6ce610f4236}) of ThingClass singleChannelSwitch
----------
The name of the ParamType (ThingClass: temperatureSensor, EventType: connected, ID: {32305a16-b042-4574-8bd7-ad99d9e8e5da})
----------
The name of the StateType ({32305a16-b042-4574-8bd7-ad99d9e8e5da}) of ThingClass temperatureSensor
----------
The name of the ParamType (ThingClass: oneWireInterface, EventType: connected, ID: {d0ded173-c382-4ee3-8e24-3647b4e16afa})
----------
The name of the StateType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="177"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="180"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="186"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="189"/>
<source>Connected changed</source>
<extracomment>The name of the EventType ({b99585e0-5147-46e3-9474-fba555bac68a}) of ThingClass eightChannelSwitch
----------
The name of the EventType ({fb6e63db-316b-4959-a349-0ff58a679f71}) of ThingClass dualChannelSwitch
----------
The name of the EventType ({16bae8e8-bfe1-4648-9018-f6ce610f4236}) of ThingClass singleChannelSwitch
----------
The name of the EventType ({32305a16-b042-4574-8bd7-ad99d9e8e5da}) of ThingClass temperatureSensor
----------
The name of the EventType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="192"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="195"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="198"/>
<source>Digital output</source>
<extracomment>The name of the ParamType (ThingClass: singleChannelSwitch, ActionType: digitalOutput, ID: {ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40})
----------
@ -93,12 +148,12 @@ The name of the StateType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="144"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="150"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="153"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="156"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="159"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="210"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="213"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="216"/>
<source>Digital output 1</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput1, ID: {78fa12c0-246c-4112-8be6-5943d3c3cda5})
----------
@ -114,8 +169,8 @@ The name of the StateType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="162"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="165"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="222"/>
<source>Digital output 1 changed</source>
<extracomment>The name of the EventType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch
----------
@ -123,12 +178,12 @@ The name of the EventType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="168"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="171"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="174"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="177"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="180"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="183"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="225"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="231"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="237"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="240"/>
<source>Digital output 2</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput2, ID: {c7d2f4a8-2b13-4a48-81a8-72f4908c775b})
----------
@ -144,8 +199,8 @@ The name of the StateType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="186"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="189"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="246"/>
<source>Digital output 2 changed</source>
<extracomment>The name of the EventType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch
----------
@ -153,9 +208,9 @@ The name of the EventType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="192"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="195"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="198"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="249"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="255"/>
<source>Digital output 3</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput3, ID: {4b2ac595-eba9-4364-8cd7-00ff8bccda5a})
----------
@ -165,15 +220,15 @@ The name of the StateType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="258"/>
<source>Digital output 3 changed</source>
<extracomment>The name of the EventType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="210"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="264"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="267"/>
<source>Digital output 4</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput4, ID: {bbbd1863-ef04-4687-803d-3c9ccdfc8d8f})
----------
@ -183,15 +238,15 @@ The name of the StateType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="213"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="270"/>
<source>Digital output 4 changed</source>
<extracomment>The name of the EventType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="216"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="222"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="273"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="276"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="279"/>
<source>Digital output 5</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput5, ID: {50855d2b-a700-4030-8674-fee00cc0b4e2})
----------
@ -201,15 +256,15 @@ The name of the StateType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="225"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="282"/>
<source>Digital output 5 changed</source>
<extracomment>The name of the EventType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="231"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="288"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="291"/>
<source>Digital output 6</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput6, ID: {a91ce593-09ba-4754-8a2e-e3f507313585})
----------
@ -219,15 +274,15 @@ The name of the StateType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="237"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="294"/>
<source>Digital output 6 changed</source>
<extracomment>The name of the EventType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="240"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="246"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="297"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="300"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="303"/>
<source>Digital output 7</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput7, ID: {5f46047c-b00d-486f-b169-b738fbc89cdb})
----------
@ -237,15 +292,15 @@ The name of the StateType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="249"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="306"/>
<source>Digital output 7 changed</source>
<extracomment>The name of the EventType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="255"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="258"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="309"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="312"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="315"/>
<source>Digital output 8</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput8, ID: {63334a17-0847-4f53-8007-1b5e72b88aa8})
----------
@ -255,56 +310,56 @@ The name of the StateType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="318"/>
<source>Digital output 8 changed</source>
<extracomment>The name of the EventType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="264"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="321"/>
<source>Digital output changed</source>
<extracomment>The name of the EventType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="267"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="324"/>
<source>OWFS init arguments</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, Type: thing, ID: {a0e773ff-fd19-499e-96f0-830168229cd3})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="270"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="327"/>
<source>OWFS interface</source>
<extracomment>The name of the ThingClass ({c36c68d9-6182-4ae1-972d-b8b5e0cf185f})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="330"/>
<source>One Wire</source>
<extracomment>The name of the plugin OneWire ({2c697fb7-0645-466d-9cb9-aa1922c85bee})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="273"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="333"/>
<source>One wire</source>
<extracomment>The name of the vendor ({cecc5fae-29cf-40c0-b1f8-0af2dc8e8a63})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="276"/>
<source>One wire interface</source>
<extracomment>The name of the ThingClass ({c36c68d9-6182-4ae1-972d-b8b5e0cf185f})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="279"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="336"/>
<source>Set auto add mode</source>
<extracomment>The name of the ActionType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="282"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="339"/>
<source>Set digital output</source>
<extracomment>The name of the ActionType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="288"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="342"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="345"/>
<source>Set digital output 1</source>
<extracomment>The name of the ActionType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch
----------
@ -312,8 +367,8 @@ The name of the ActionType ({f8b6b4a7-355c-4580-a676-8a4d0d619ff9}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="291"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="294"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="348"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="351"/>
<source>Set digital output 2</source>
<extracomment>The name of the ActionType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch
----------
@ -321,52 +376,67 @@ The name of the ActionType ({82a78aed-5994-4af5-aecb-1806be5de1f3}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="297"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="354"/>
<source>Set digital output 3</source>
<extracomment>The name of the ActionType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="300"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="357"/>
<source>Set digital output 4</source>
<extracomment>The name of the ActionType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="303"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="360"/>
<source>Set digital output 5</source>
<extracomment>The name of the ActionType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="306"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="363"/>
<source>Set digital output 6</source>
<extracomment>The name of the ActionType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="309"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="366"/>
<source>Set digital output 7</source>
<extracomment>The name of the ActionType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="312"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="369"/>
<source>Set digital output 8</source>
<extracomment>The name of the ActionType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="315"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="372"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="375"/>
<source>Temperature</source>
<extracomment>The name of the ParamType (ThingClass: temperatureSensor, EventType: temperature, ID: {b04ee2a5-9b27-4ffc-9e12-7e05f5a41690})
----------
The name of the StateType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="378"/>
<source>Temperature Sensor</source>
<extracomment>The name of the ThingClass ({e13beb24-953c-48b3-9262-7cde31d42ef5})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="318"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="321"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="324"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="327"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="381"/>
<source>Temperature changed</source>
<extracomment>The name of the EventType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="384"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="387"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="390"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="393"/>
<source>Type</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {34c8f771-4141-4183-9eaf-becbaf362ac8})
----------
@ -377,35 +447,5 @@ The name of the ParamType (ThingClass: singleChannelSwitch, Type: thing, ID: {6e
The name of the ParamType (ThingClass: temperatureSensor, Type: thing, ID: {5005822d-6a32-4bb8-9b77-f79da7382f76})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="330"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="333"/>
<source>connected</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, EventType: connected, ID: {d0ded173-c382-4ee3-8e24-3647b4e16afa})
----------
The name of the StateType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="336"/>
<source>connected changed</source>
<extracomment>The name of the EventType ({d0ded173-c382-4ee3-8e24-3647b4e16afa}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="339"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="342"/>
<source>temperature</source>
<extracomment>The name of the ParamType (ThingClass: temperatureSensor, EventType: temperature, ID: {b04ee2a5-9b27-4ffc-9e12-7e05f5a41690})
----------
The name of the StateType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="345"/>
<source>temperature changed</source>
<extracomment>The name of the EventType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

92
onewire/w1.cpp Normal file
View File

@ -0,0 +1,92 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* 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 "w1.h"
#include "extern-plugininfo.h"
W1::W1(QObject *parent) :
QObject(parent)
{
}
QStringList W1::discoverDevices()
{
QStringList deviceList;
QDir w1SysFSDir("/sys/bus/w1/devices/");
if (!w1SysFSDir.exists()) {
qCDebug(dcOneWire()) << "W1 kernel not loaded";
return deviceList;
}
w1SysFSDir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
w1SysFSDir.setSorting(QDir::Name);
QFileInfoList list = w1SysFSDir.entryInfoList();
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
if(fileInfo.fileName()[2] == '-') {
qCDebug(dcOneWire()) << "Found one wire device" << fileInfo.filePath();
deviceList.append(fileInfo.fileName());
}
}
return deviceList;
}
bool W1::interfaceIsAvailable()
{
QDir w1SysFSDir("/sys/bus/w1/devices/");
return w1SysFSDir.exists();
}
bool W1::deviceAvailable(const QString &address)
{
QDir temperatureSensor("/sys/bus/w1/devices/"+address);
return temperatureSensor.exists();
}
double W1::getTemperature(const QString &address)
{
QDir temperatureSensor("/sys/bus/w1/devices/"+address);
if (temperatureSensor.exists()) {
QFile temperature(temperatureSensor.path() +"/temperature");
if (!temperature.exists()) {
qCWarning(dcOneWire()) << "Directory doesn't exist" << temperature.fileName();
}
if (!temperature.open(QIODevice::ReadOnly | QIODevice::Text)){
qCWarning(dcOneWire()) << "Could not open file" << temperature.fileName();
return 0;
}
return temperature.readLine().toInt()/1000.00;
} else {
qCWarning(dcOneWire()) << "Could not find device" << temperatureSensor.currentPath();
}
return 0;
}

53
onewire/w1.h Normal file
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 W1_H
#define W1_H
#include <QObject>
#include <QDir>
#include <QFile>
class W1 : public QObject
{
Q_OBJECT
public:
explicit W1(QObject *parent = nullptr);
QStringList discoverDevices();
bool interfaceIsAvailable();
bool deviceAvailable(const QString &address);
double getTemperature(const QString &address);
private:
QList<QDir> m_w1BusMasters;
};
#endif // W1_H