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

@ -39,6 +39,7 @@ This integration plugin allows to integrate one-wire devices like temperature se
## Usage ## 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. 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" 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. 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 ## Requirements
* The package “nymea-plugin-onewire” must be installed. * The package “nymea-plugin-onewire” must be installed.

View File

@ -43,16 +43,54 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info)
{ {
ThingClassId deviceClassId = info->thingClassId(); ThingClassId deviceClassId = info->thingClassId();
if (!m_w1Interface) {
m_w1Interface = new W1(this);
}
if (deviceClassId == temperatureSensorThingClassId || if (deviceClassId == temperatureSensorThingClassId ||
deviceClassId == singleChannelSwitchThingClassId || deviceClassId == singleChannelSwitchThingClassId ||
deviceClassId == dualChannelSwitchThingClassId || deviceClassId == dualChannelSwitchThingClassId ||
deviceClassId == eightChannelSwitchThingClassId) { deviceClassId == eightChannelSwitchThingClassId) {
if (myThings().filterByThingClassId(oneWireInterfaceThingClassId).isEmpty()) { if (myThings().filterByThingClassId(oneWireInterfaceThingClassId).isEmpty()) {
//No one wire interface intitialized if (!m_w1Interface->interfaceIsAvailable()) {
//: 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.")); 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)) { foreach(Thing *parentDevice, myThings().filterByThingClassId(oneWireInterfaceThingClassId)) {
if (parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) { if (parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) {
@ -64,18 +102,18 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info)
m_runningDiscoveries.remove(parentDevice); m_runningDiscoveries.remove(parentDevice);
}); });
if (m_oneWireInterface) if (m_owfsInterface)
m_oneWireInterface->discoverDevices(); m_owfsInterface->discoverDevices();
} }
if (m_runningDiscoveries.isEmpty()) { if (m_runningDiscoveries.isEmpty()) {
info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("All configured one wire interfaces are set up to automatically add new devices.")); info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("All configured one wire interfaces are set up to automatically add new devices."));
} }
return; return;
} } else {
qCWarning(dcOneWire()) << "Discovery called for a deviceclass which does not support discovery? Device class ID:" << info->thingClassId().toString(); qCWarning(dcOneWire()) << "Discovery called for a deviceclass which does not support discovery? Device class ID:" << info->thingClassId().toString();
info->finish(Thing::ThingErrorThingClassNotFound); info->finish(Thing::ThingErrorThingClassNotFound);
}
} }
@ -85,69 +123,86 @@ void IntegrationPluginOneWire::setupThing(ThingSetupInfo *info)
if (thing->thingClassId() == oneWireInterfaceThingClassId) { if (thing->thingClassId() == oneWireInterfaceThingClassId) {
qCDebug(dcOneWire) << "Setup one wire interface"; qCDebug(dcOneWire) << "Setup one wire interface";
if (m_oneWireInterface) { if (m_owfsInterface) {
qCWarning(dcOneWire) << "One wire interface already set up"; qCWarning(dcOneWire) << "One wire interface already set up";
//: Error setting up thing //: Error setting up thing
return info->finish(Thing::ThingErrorThingInUse, QT_TR_NOOP("There can only be one one wire interface per system.")); 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(); QByteArray initArguments = thing->paramValue(oneWireInterfaceThingInitArgsParamTypeId).toByteArray();
if (!m_oneWireInterface->init(initArguments)){ if (!m_owfsInterface->init(initArguments)){
m_oneWireInterface->deleteLater(); m_owfsInterface->deleteLater();
m_oneWireInterface = nullptr; m_owfsInterface = nullptr;
//: Error setting up thing //: Error setting up thing
return info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error initializing one wire interface.")); 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); return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == temperatureSensorThingClassId) { } else if (thing->thingClassId() == temperatureSensorThingClassId) {
qCDebug(dcOneWire) << "Setup one wire temperature sensor" << thing->params(); qCDebug(dcOneWire) << "Setup one wire temperature sensor" << thing->params();
if (!m_oneWireInterface) { //in case the child was setup before the interface QString address = thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray();
double temperature = m_oneWireInterface->getTemperature(thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray()); if (myThings().findById(thing->parentId())->thingClassId() == oneWireInterfaceThingClassId) {
thing->setStateValue(temperatureSensorTemperatureStateTypeId, temperature); if (m_owfsInterface) {
} thing->setStateValue(temperatureSensorConnectedStateTypeId, m_owfsInterface->isConnected(address.toUtf8()));
thing->setStateValue(temperatureSensorTemperatureStateTypeId, m_owfsInterface->getTemperature(address.toUtf8()));
return info->finish(Thing::ThingErrorNoError); 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";
}
} }
if (thing->thingClassId() == singleChannelSwitchThingClassId) { } else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire switch" << thing->params(); qCDebug(dcOneWire) << "Setup one wire switch" << thing->params();
if (!m_oneWireInterface) { if (m_owfsInterface) {
QByteArray address = thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray(); 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); return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == dualChannelSwitchThingClassId) { } else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire dual switch" << thing->params(); qCDebug(dcOneWire) << "Setup one wire dual switch" << thing->params();
if (!m_oneWireInterface) { if (m_owfsInterface) {
QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(); QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A)); thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B)); thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(dualChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
}
if (thing->thingClassId() == eightChannelSwitchThingClassId) { } else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
qCDebug(dcOneWire) << "Setup one wire eight channel switch" << thing->params(); qCDebug(dcOneWire) << "Setup one wire eight channel switch" << thing->params();
if (!m_oneWireInterface) { if (m_owfsInterface) {
QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(); QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A)); thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B)); thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_C)); thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_D)); thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_E)); thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_F)); thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_G)); thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_H)); thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_H));
thing->setStateValue(eightChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else {
return info->finish(Thing::ThingErrorThingNotFound); return info->finish(Thing::ThingErrorThingNotFound);
}
} }
void IntegrationPluginOneWire::postSetupThing(Thing *thing) void IntegrationPluginOneWire::postSetupThing(Thing *thing)
@ -165,82 +220,83 @@ void IntegrationPluginOneWire::executeAction(ThingActionInfo *info)
Thing *thing = info->thing(); Thing *thing = info->thing();
Action action = info->action(); 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 (thing->thingClassId() == oneWireInterfaceThingClassId) {
if (action.actionTypeId() == oneWireInterfaceAutoAddActionTypeId){ if (action.actionTypeId() == oneWireInterfaceAutoAddActionTypeId){
thing->setStateValue(oneWireInterfaceAutoAddStateTypeId, action.param(oneWireInterfaceAutoAddActionAutoAddParamTypeId).value()); thing->setStateValue(oneWireInterfaceAutoAddStateTypeId, action.param(oneWireInterfaceAutoAddActionAutoAddParamTypeId).value());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} }
return info->finish(Thing::ThingErrorActionTypeNotFound); return info->finish(Thing::ThingErrorActionTypeNotFound);
}
if (thing->thingClassId() == singleChannelSwitchThingClassId) { } else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
if (action.actionTypeId() == singleChannelSwitchDigitalOutputActionTypeId){ 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); return info->finish(Thing::ThingErrorNoError);
} } else {
return info->finish(Thing::ThingErrorActionTypeNotFound); return info->finish(Thing::ThingErrorActionTypeNotFound);
} }
} else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
if (thing->thingClassId() == dualChannelSwitchThingClassId) {
if (action.actionTypeId() == dualChannelSwitchDigitalOutput1ActionTypeId){ 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); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == dualChannelSwitchDigitalOutput2ActionTypeId){
if (action.actionTypeId() == dualChannelSwitchDigitalOutput2ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_B, action.param(dualChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_B, action.param(dualChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else {
return info->finish(Thing::ThingErrorActionTypeNotFound); return info->finish(Thing::ThingErrorActionTypeNotFound);
} }
} else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
if (thing->thingClassId() == eightChannelSwitchThingClassId) {
if (action.actionTypeId() == eightChannelSwitchDigitalOutput1ActionTypeId){ 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); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput2ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput2ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_B, action.param(eightChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_B, action.param(eightChannelSwitchDigitalOutput2ActionDigitalOutput2ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput3ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput3ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_C, action.param(eightChannelSwitchDigitalOutput3ActionDigitalOutput3ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_C, action.param(eightChannelSwitchDigitalOutput3ActionDigitalOutput3ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput4ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput4ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_D, action.param(eightChannelSwitchDigitalOutput4ActionDigitalOutput4ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_D, action.param(eightChannelSwitchDigitalOutput4ActionDigitalOutput4ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput5ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput5ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_E, action.param(eightChannelSwitchDigitalOutput5ActionDigitalOutput5ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_E, action.param(eightChannelSwitchDigitalOutput5ActionDigitalOutput5ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput6ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput6ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_F, action.param(eightChannelSwitchDigitalOutput6ActionDigitalOutput6ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_F, action.param(eightChannelSwitchDigitalOutput6ActionDigitalOutput6ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput7ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput7ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_G, action.param(eightChannelSwitchDigitalOutput7ActionDigitalOutput7ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_G, action.param(eightChannelSwitchDigitalOutput7ActionDigitalOutput7ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} } else if (action.actionTypeId() == eightChannelSwitchDigitalOutput8ActionTypeId){
if (action.actionTypeId() == eightChannelSwitchDigitalOutput8ActionTypeId){ m_owfsInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), Owfs::SwitchChannel::PIO_H, action.param(eightChannelSwitchDigitalOutput8ActionDigitalOutput8ParamTypeId).value().toBool());
m_oneWireInterface->setSwitchOutput(thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(), OneWire::SwitchChannel::PIO_H, action.param(eightChannelSwitchDigitalOutput8ActionDigitalOutput8ParamTypeId).value().toBool());
return info->finish(Thing::ThingErrorNoError); 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) void IntegrationPluginOneWire::thingRemoved(Thing *thing)
{ {
if (thing->thingClassId() == oneWireInterfaceThingClassId) { if (thing->thingClassId() == oneWireInterfaceThingClassId) {
m_oneWireInterface->deleteLater(); m_owfsInterface->deleteLater();
m_oneWireInterface = nullptr; m_owfsInterface = nullptr;
return; return;
} }
if (myThings().filterByThingClassId(temperatureSensorThingClassId).isEmpty()) {
m_w1Interface->deleteLater();
m_w1Interface = nullptr;
}
if (myThings().empty()) { if (myThings().empty()) {
hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer); hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer);
m_pluginTimer = nullptr; m_pluginTimer = nullptr;
@ -252,52 +308,68 @@ void IntegrationPluginOneWire::onPluginTimer()
{ {
foreach (Thing *thing, myThings()) { foreach (Thing *thing, myThings()) {
if (thing->thingClassId() == oneWireInterfaceThingClassId) { if (thing->thingClassId() == oneWireInterfaceThingClassId) {
thing->setStateValue(oneWireInterfaceConnectedStateTypeId, m_oneWireInterface->interfaceIsAvailable()); thing->setStateValue(oneWireInterfaceConnectedStateTypeId, m_owfsInterface->interfaceIsAvailable());
if (thing->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) { if (thing->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) {
m_oneWireInterface->discoverDevices(); m_owfsInterface->discoverDevices();
} }
} } else if (thing->thingClassId() == temperatureSensorThingClassId) {
if (thing->thingClassId() == temperatureSensorThingClassId) {
QByteArray address = thing->paramValue(temperatureSensorThingAddressParamTypeId).toByteArray(); 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); thing->setStateValue(temperatureSensorTemperatureStateTypeId, temperature);
} thing->setStateValue(temperatureSensorConnectedStateTypeId, connected);
} else if (thing->thingClassId() == singleChannelSwitchThingClassId) {
if (thing->thingClassId() == singleChannelSwitchThingClassId) { if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(singleChannelSwitchThingAddressParamTypeId).toByteArray(); 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));
} else if (thing->thingClassId() == dualChannelSwitchThingClassId) {
if (thing->thingClassId() == dualChannelSwitchThingClassId) { if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray(); QByteArray address = thing->paramValue(dualChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A)); thing->setStateValue(dualChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B)); thing->setStateValue(dualChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
} thing->setStateValue(dualChannelSwitchConnectedStateTypeId, m_owfsInterface->isConnected(address));
} else if (thing->thingClassId() == eightChannelSwitchThingClassId) {
if (thing->thingClassId() == eightChannelSwitchThingClassId) { if (!m_owfsInterface)
continue;
QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray(); QByteArray address = thing->paramValue(eightChannelSwitchThingAddressParamTypeId).toByteArray();
thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_A)); thing->setStateValue(eightChannelSwitchDigitalOutput1StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_A));
thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_B)); thing->setStateValue(eightChannelSwitchDigitalOutput2StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_B));
thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_C)); thing->setStateValue(eightChannelSwitchDigitalOutput3StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_C));
thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_D)); thing->setStateValue(eightChannelSwitchDigitalOutput4StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_D));
thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_E)); thing->setStateValue(eightChannelSwitchDigitalOutput5StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_E));
thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_F)); thing->setStateValue(eightChannelSwitchDigitalOutput6StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_F));
thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_G)); thing->setStateValue(eightChannelSwitchDigitalOutput7StateTypeId, m_owfsInterface->getSwitchOutput(address, Owfs::SwitchChannel::PIO_G));
thing->setStateValue(eightChannelSwitchDigitalOutput8StateTypeId, m_oneWireInterface->getSwitchOutput(address, OneWire::SwitchChannel::PIO_H)); 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)) { foreach(Thing *parentDevice, myThings().filterByThingClassId(oneWireInterfaceThingClassId)) {
bool autoDiscoverEnabled = parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool(); bool autoDiscoverEnabled = parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool();
ThingDescriptors descriptors; ThingDescriptors descriptors;
foreach (OneWire::OneWireDevice oneWireDevice, oneWireDevices){ foreach (Owfs::OwfsDevice oneWireDevice, oneWireDevices){
switch (oneWireDevice.family) { switch (oneWireDevice.family) {
//https://github.com/owfs/owfs-doc/wiki/1Wire-Device-List //https://github.com/owfs/owfs-doc/wiki/1Wire-Device-List
case 0x10: //DS18S20 case 0x10: //DS18S20

View File

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

View File

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

View File

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

View File

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

View File

@ -28,18 +28,18 @@
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef ONEWIRE_H #ifndef OWFS_H
#define ONEWIRE_H #define OWFS_H
#include "owcapi.h" #include "owcapi.h"
#include <QObject> #include <QObject>
class OneWire : public QObject class Owfs : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
enum OneWireProperty { enum OwfsProperty {
Address, //The entire 64-bit unique ID Address, //The entire 64-bit unique ID
Crc, //The 8-bit error correction Crc, //The 8-bit error correction
Family, //The 8-bit family code Family, //The 8-bit family code
@ -59,15 +59,15 @@ public:
PIO_H PIO_H
}; };
struct OneWireDevice { struct OwfsDevice {
QByteArray address; QByteArray address;
int family; int family;
QByteArray id; QByteArray id;
QByteArray type; QByteArray type;
}; };
explicit OneWire(QObject *parent = nullptr); explicit Owfs(QObject *parent = nullptr);
~OneWire(); ~Owfs();
bool init(const QByteArray &owfsInitArguments); bool init(const QByteArray &owfsInitArguments);
QByteArray getPath(); QByteArray getPath();
@ -87,7 +87,7 @@ private:
void setValue(const QByteArray &address, const QByteArray &deviceType, const QByteArray &value); void setValue(const QByteArray &address, const QByteArray &deviceType, const QByteArray &value);
signals: 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> <context>
<name>IntegrationPluginOneWire</name> <name>IntegrationPluginOneWire</name>
<message> <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> <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>All configured one wire interfaces are set up to automatically add new devices.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>There can only be one one wire interface per system.</source>
<extracomment>Error setting up thing</extracomment> <extracomment>Error setting up thing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../integrationpluginonewire.cpp" line="100"/> <location filename="../integrationpluginonewire.cpp" line="138"/>
<source>Error initializing one wire interface.</source> <source>Error initializing one wire interface.</source>
<extracomment>Error setting up thing</extracomment> <extracomment>Error setting up thing</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<location filename="../integrationpluginonewire.cpp" line="160"/>
<source>No 1-Wire interface available</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>OneWire</name> <name>OneWire</name>
<message> <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> <source>1-channel switch</source>
<extracomment>The name of the ThingClass ({6db42501-5451-4aac-9525-5f886b3188e2})</extracomment> <extracomment>The name of the ThingClass ({6db42501-5451-4aac-9525-5f886b3188e2})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>2-channel switch</source>
<extracomment>The name of the ThingClass ({023f2b93-61e1-4422-97f5-3d5c14a6628f})</extracomment> <extracomment>The name of the ThingClass ({023f2b93-61e1-4422-97f5-3d5c14a6628f})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>8-channel switch</source>
<extracomment>The name of the ThingClass ({71691119-3bda-4424-b853-1a00f21086e1})</extracomment> <extracomment>The name of the ThingClass ({71691119-3bda-4424-b853-1a00f21086e1})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="123"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="114"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="126"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="117"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="129"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="120"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="132"/>
<source>Address</source> <source>Address</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {e3e6e596-0cd4-42a3-8401-ccf6349314b7}) <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> <translation type="unfinished"></translation>
</message> </message>
<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="135"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="126"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="138"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="129"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="141"/>
<source>Auto add one wire devices</source> <source>Auto add one wire devices</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, ActionType: autoAdd, ID: {64baf50e-8ed4-4526-8b92-7e4662d6fa39}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Auto add one wire devices changed</source>
<extracomment>The name of the EventType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment> <extracomment>The name of the EventType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="147"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="138"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="150"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="141"/> <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> <source>Digital output</source>
<extracomment>The name of the ParamType (ThingClass: singleChannelSwitch, ActionType: digitalOutput, ID: {ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) <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> <translation type="unfinished"></translation>
</message> </message>
<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="201"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="147"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="204"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="150"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="207"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="153"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="210"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="156"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="213"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="159"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="216"/>
<source>Digital output 1</source> <source>Digital output 1</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput1, ID: {78fa12c0-246c-4112-8be6-5943d3c3cda5}) <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> <translation type="unfinished"></translation>
</message> </message>
<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="219"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="165"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="222"/>
<source>Digital output 1 changed</source> <source>Digital output 1 changed</source>
<extracomment>The name of the EventType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch <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> <translation type="unfinished"></translation>
</message> </message>
<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="225"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="171"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="228"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="174"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="231"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="177"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="234"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="180"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="237"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="183"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="240"/>
<source>Digital output 2</source> <source>Digital output 2</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput2, ID: {c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) <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> <translation type="unfinished"></translation>
</message> </message>
<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="243"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="189"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="246"/>
<source>Digital output 2 changed</source> <source>Digital output 2 changed</source>
<extracomment>The name of the EventType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch <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> <translation type="unfinished"></translation>
</message> </message>
<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="249"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="195"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="252"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="198"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="255"/>
<source>Digital output 3</source> <source>Digital output 3</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput3, ID: {4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 3 changed</source>
<extracomment>The name of the EventType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="261"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="207"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="264"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="210"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="267"/>
<source>Digital output 4</source> <source>Digital output 4</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput4, ID: {bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 4 changed</source>
<extracomment>The name of the EventType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="273"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="219"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="276"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="222"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="279"/>
<source>Digital output 5</source> <source>Digital output 5</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput5, ID: {50855d2b-a700-4030-8674-fee00cc0b4e2}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 5 changed</source>
<extracomment>The name of the EventType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="285"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="231"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="288"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="234"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="291"/>
<source>Digital output 6</source> <source>Digital output 6</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput6, ID: {a91ce593-09ba-4754-8a2e-e3f507313585}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 6 changed</source>
<extracomment>The name of the EventType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="297"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="243"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="300"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="246"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="303"/>
<source>Digital output 7</source> <source>Digital output 7</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput7, ID: {5f46047c-b00d-486f-b169-b738fbc89cdb}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 7 changed</source>
<extracomment>The name of the EventType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="309"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="255"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="312"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="258"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="315"/>
<source>Digital output 8</source> <source>Digital output 8</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, ActionType: digitalOutput8, ID: {63334a17-0847-4f53-8007-1b5e72b88aa8}) <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output 8 changed</source>
<extracomment>The name of the EventType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the EventType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Digital output changed</source>
<extracomment>The name of the EventType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment> <extracomment>The name of the EventType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>OWFS init arguments</source>
<extracomment>The name of the ParamType (ThingClass: oneWireInterface, Type: thing, ID: {a0e773ff-fd19-499e-96f0-830168229cd3})</extracomment> <extracomment>The name of the ParamType (ThingClass: oneWireInterface, Type: thing, ID: {a0e773ff-fd19-499e-96f0-830168229cd3})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>One Wire</source>
<extracomment>The name of the plugin OneWire ({2c697fb7-0645-466d-9cb9-aa1922c85bee})</extracomment> <extracomment>The name of the plugin OneWire ({2c697fb7-0645-466d-9cb9-aa1922c85bee})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>One wire</source>
<extracomment>The name of the vendor ({cecc5fae-29cf-40c0-b1f8-0af2dc8e8a63})</extracomment> <extracomment>The name of the vendor ({cecc5fae-29cf-40c0-b1f8-0af2dc8e8a63})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="276"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="336"/>
<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"/>
<source>Set auto add mode</source> <source>Set auto add mode</source>
<extracomment>The name of the ActionType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment> <extracomment>The name of the ActionType ({64baf50e-8ed4-4526-8b92-7e4662d6fa39}) of ThingClass oneWireInterface</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output</source>
<extracomment>The name of the ActionType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment> <extracomment>The name of the ActionType ({ca10a9fd-e4e0-4608-a2d2-6a4ce9644f40}) of ThingClass singleChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="342"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="288"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="345"/>
<source>Set digital output 1</source> <source>Set digital output 1</source>
<extracomment>The name of the ActionType ({78fa12c0-246c-4112-8be6-5943d3c3cda5}) of ThingClass eightChannelSwitch <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> <translation type="unfinished"></translation>
</message> </message>
<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="348"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="294"/> <location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="351"/>
<source>Set digital output 2</source> <source>Set digital output 2</source>
<extracomment>The name of the ActionType ({c7d2f4a8-2b13-4a48-81a8-72f4908c775b}) of ThingClass eightChannelSwitch <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> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 3</source>
<extracomment>The name of the ActionType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({4b2ac595-eba9-4364-8cd7-00ff8bccda5a}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 4</source>
<extracomment>The name of the ActionType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({bbbd1863-ef04-4687-803d-3c9ccdfc8d8f}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 5</source>
<extracomment>The name of the ActionType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({50855d2b-a700-4030-8674-fee00cc0b4e2}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 6</source>
<extracomment>The name of the ActionType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({a91ce593-09ba-4754-8a2e-e3f507313585}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 7</source>
<extracomment>The name of the ActionType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({5f46047c-b00d-486f-b169-b738fbc89cdb}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Set digital output 8</source>
<extracomment>The name of the ActionType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment> <extracomment>The name of the ActionType ({63334a17-0847-4f53-8007-1b5e72b88aa8}) of ThingClass eightChannelSwitch</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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> <source>Temperature Sensor</source>
<extracomment>The name of the ThingClass ({e13beb24-953c-48b3-9262-7cde31d42ef5})</extracomment> <extracomment>The name of the ThingClass ({e13beb24-953c-48b3-9262-7cde31d42ef5})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<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="381"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="321"/> <source>Temperature changed</source>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="324"/> <extracomment>The name of the EventType ({b04ee2a5-9b27-4ffc-9e12-7e05f5a41690}) of ThingClass temperatureSensor</extracomment>
<location filename="../../../build-nymea-plugins-Desktop-Debug/onewire/plugininfo.h" line="327"/> <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> <source>Type</source>
<extracomment>The name of the ParamType (ThingClass: eightChannelSwitch, Type: thing, ID: {34c8f771-4141-4183-9eaf-becbaf362ac8}) <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> The name of the ParamType (ThingClass: temperatureSensor, Type: thing, ID: {5005822d-6a32-4bb8-9b77-f79da7382f76})</extracomment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </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> </context>
</TS> </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