diff --git a/debian/guh-plugins.install b/debian/guh-plugins.install
index 70e651bf..68ef0ccd 100644
--- a/debian/guh-plugins.install
+++ b/debian/guh-plugins.install
@@ -11,3 +11,5 @@ usr/lib/guh/plugins/libguh_devicepluginwakeonlan.so
usr/lib/guh/plugins/libguh_devicepluginwemo.so
usr/lib/guh/plugins/libguh_devicepluginwifidetector.so
usr/lib/guh/plugins/libguh_deviceplugindatetime.so
+usr/lib/guh/plugins/libguh_deviceplugingenericelements.so
+usr/lib/guh/plugins/libguh_deviceplugincommandlauncher.so
diff --git a/guh_0.1.8_amd64.deb b/guh_0.1.8_amd64.deb
deleted file mode 100644
index 4df38cee..00000000
Binary files a/guh_0.1.8_amd64.deb and /dev/null differ
diff --git a/libguh1_0.1.8_amd64.deb b/libguh1_0.1.8_amd64.deb
deleted file mode 100644
index 8448eeb1..00000000
Binary files a/libguh1_0.1.8_amd64.deb and /dev/null differ
diff --git a/plugins/deviceplugins/commandlauncher/commandlauncher.pro b/plugins/deviceplugins/commandlauncher/commandlauncher.pro
new file mode 100644
index 00000000..65c00415
--- /dev/null
+++ b/plugins/deviceplugins/commandlauncher/commandlauncher.pro
@@ -0,0 +1,10 @@
+include (../../plugins.pri)
+
+TARGET = $$qtLibraryTarget(guh_deviceplugincommandlauncher)
+
+SOURCES += \
+ deviceplugincommandlauncher.cpp
+
+HEADERS += \
+ deviceplugincommandlauncher.h
+
diff --git a/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp
new file mode 100644
index 00000000..5ecce404
--- /dev/null
+++ b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp
@@ -0,0 +1,254 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * *
+ * This file is part of guh. *
+ * *
+ * Guh is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, version 2 of the License. *
+ * *
+ * Guh 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with guh. If not, see . *
+ * *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+#include "deviceplugincommandlauncher.h"
+
+#include "plugin/device.h"
+#include "devicemanager.h"
+
+#include
+
+DeviceClassId applicationDeviceClassId = DeviceClassId("0f39fe9e-51ea-4230-9646-2482c6234791");
+DeviceClassId scriptDeviceClassId = DeviceClassId("96044325-a6fb-47c9-9117-f29c3b327978");
+StateTypeId runningStateTypeId = StateTypeId("28d7e933-ff05-4f4c-95a0-482689543de5");
+ActionTypeId executeActionTypeId = ActionTypeId("cf52b41d-3108-423c-8907-ca5b4d97cac5");
+ActionTypeId killActionTypeId = ActionTypeId("d21b1fed-1dd9-4c5a-a64e-0c6ba94059be");
+
+DevicePluginCommandLauncher::DevicePluginCommandLauncher()
+{
+}
+
+DeviceManager::DeviceSetupStatus DevicePluginCommandLauncher::setupDevice(Device *device)
+{
+ // Application
+ if(device->deviceClassId() == applicationDeviceClassId){
+ device->setName("Application launcher (" + device->paramValue("name").toString() + ")");
+ return DeviceManager::DeviceSetupStatusSuccess;
+ }
+
+ // Script
+ if(device->deviceClassId() == scriptDeviceClassId){
+ QStringList scriptArguments = device->paramValue("script").toString().split(QRegExp("[ \r\n][ \r\n]*"));
+ // check if script exists and if it is executable
+ QFileInfo fileInfo(scriptArguments.first());
+ if (!fileInfo.exists()) {
+ qWarning() << "ERROR: script " << scriptArguments.first() << "does not exist.";
+ return DeviceManager::DeviceSetupStatusFailure;
+ }
+ if (!fileInfo.isExecutable()) {
+ qWarning() << "ERROR: script " << scriptArguments.first() << "is not executable. Please check the permissions.";
+ return DeviceManager::DeviceSetupStatusFailure;
+ }
+ if (!fileInfo.isReadable()) {
+ qWarning() << "ERROR: script " << scriptArguments.first() << "is not readable. Please check the permissions.";
+ return DeviceManager::DeviceSetupStatusFailure;
+ }
+
+ device->setName("Bashscript launcher (" + device->paramValue("name").toString() + ")");
+ return DeviceManager::DeviceSetupStatusSuccess;
+ }
+ return DeviceManager::DeviceSetupStatusFailure;
+}
+
+DeviceManager::HardwareResources DevicePluginCommandLauncher::requiredHardware() const
+{
+ return DeviceManager::HardwareResourceNone;
+}
+
+DeviceManager::DeviceError DevicePluginCommandLauncher::executeAction(Device *device, const Action &action)
+{
+ // Application
+ if (device->deviceClassId() == applicationDeviceClassId ) {
+ // execute application...
+ if (action.actionTypeId() == executeActionTypeId) {
+ // check if we allready have started the application
+ if (m_applications.values().contains(device)) {
+ if (m_applications.key(device)->state() == QProcess::Running) {
+ return DeviceManager::DeviceErrorDeviceInUse;
+ }
+ }
+ QProcess *process = new QProcess(this);
+ connect(process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(applicationFinished(int,QProcess::ExitStatus)));
+ connect(process, &QProcess::stateChanged, this, &DevicePluginCommandLauncher::applicationStateChanged);
+
+ m_applications.insert(process, device);
+ m_startingApplications.insert(process, action.id());
+ process->start("/bin/bash", QStringList() << "-c" << device->paramValue("command").toString());
+
+ return DeviceManager::DeviceErrorAsync;
+ }
+ // kill application...
+ if (action.actionTypeId() == killActionTypeId) {
+ // check if the application is running...
+ if (!m_applications.values().contains(device)) {
+ return DeviceManager::DeviceErrorNoError;
+ }
+ QProcess *process = m_applications.key(device);
+ m_killingApplications.insert(process,action.id());
+ process->kill();
+
+ return DeviceManager::DeviceErrorAsync;
+ }
+ return DeviceManager::DeviceErrorActionTypeNotFound;
+ }
+
+ // Script
+ if (device->deviceClassId() == scriptDeviceClassId ) {
+ // execute script...
+ if (action.actionTypeId() == executeActionTypeId) {
+ // check if we allready have started the script
+ if (m_scripts.values().contains(device)) {
+ if (m_scripts.key(device)->state() == QProcess::Running) {
+ return DeviceManager::DeviceErrorDeviceInUse;
+ }
+ }
+ QProcess *process = new QProcess(this);
+ connect(process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(scriptFinished(int,QProcess::ExitStatus)));
+ connect(process, &QProcess::stateChanged, this, &DevicePluginCommandLauncher::scriptStateChanged);
+
+ m_scripts.insert(process, device);
+ m_startingScripts.insert(process, action.id());
+ process->start("/bin/bash", QStringList() << device->paramValue("script").toString());
+
+ return DeviceManager::DeviceErrorAsync;
+ }
+ // kill script...
+ if (action.actionTypeId() == killActionTypeId) {
+ // check if the script is running...
+ if (!m_scripts.values().contains(device)) {
+ return DeviceManager::DeviceErrorNoError;
+ }
+ QProcess *process = m_scripts.key(device);
+ m_killingScripts.insert(process,action.id());
+ process->kill();
+
+ return DeviceManager::DeviceErrorAsync;
+ }
+ return DeviceManager::DeviceErrorActionTypeNotFound;
+ }
+ return DeviceManager::DeviceErrorDeviceClassNotFound;
+}
+
+void DevicePluginCommandLauncher::deviceRemoved(Device *device)
+{
+ if (m_applications.values().contains(device)) {
+ QProcess * process = m_applications.key(device);
+ if (process->state() != QProcess::NotRunning) {
+ process->kill();
+ }
+ m_applications.remove(process);
+
+ if (m_startingApplications.contains(process)) {
+ m_startingApplications.remove(process);
+ }
+ if (m_killingApplications.contains(process)) {
+ m_killingApplications.remove(process);
+ }
+ process->deleteLater();
+ }
+ if (m_scripts.values().contains(device)) {
+ QProcess * process = m_scripts.key(device);
+ if (process->state() != QProcess::NotRunning) {
+ process->kill();
+ }
+ m_scripts.remove(process);
+
+ if (m_startingScripts.contains(process)) {
+ m_startingScripts.remove(process);
+ }
+ if (m_killingScripts.contains(process)) {
+ m_killingScripts.remove(process);
+ }
+ process->deleteLater();
+ }
+}
+
+void DevicePluginCommandLauncher::scriptStateChanged(QProcess::ProcessState state)
+{
+ QProcess *process = static_cast(sender());
+ Device *device = m_scripts.value(process);
+
+ switch (state) {
+ case QProcess::Running:
+ device->setStateValue(runningStateTypeId, true);
+ emit actionExecutionFinished(m_startingScripts.value(process), DeviceManager::DeviceErrorNoError);
+ m_startingScripts.remove(process);
+ break;
+ case QProcess::NotRunning:
+ device->setStateValue(runningStateTypeId, false);
+ if (m_killingScripts.contains(process)) {
+ emit actionExecutionFinished(m_killingScripts.value(process), DeviceManager::DeviceErrorNoError);
+ m_killingScripts.remove(process);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void DevicePluginCommandLauncher::scriptFinished(int exitCode, QProcess::ExitStatus exitStatus)
+{
+ Q_UNUSED(exitCode);
+ Q_UNUSED(exitStatus);
+
+ QProcess *process = static_cast(sender());
+ Device *device = m_scripts.value(process);
+
+ device->setStateValue(runningStateTypeId, false);
+
+ m_scripts.remove(process);
+ process->deleteLater();
+}
+
+void DevicePluginCommandLauncher::applicationStateChanged(QProcess::ProcessState state)
+{
+ QProcess *process = static_cast(sender());
+ Device *device = m_applications.value(process);
+
+ switch (state) {
+ case QProcess::Running:
+ device->setStateValue(runningStateTypeId, true);
+ emit actionExecutionFinished(m_startingApplications.value(process), DeviceManager::DeviceErrorNoError);
+ m_startingApplications.remove(process);
+ break;
+ case QProcess::NotRunning:
+ device->setStateValue(runningStateTypeId, false);
+ if (m_killingApplications.contains(process)) {
+ emit actionExecutionFinished(m_killingApplications.value(process), DeviceManager::DeviceErrorNoError);
+ m_killingApplications.remove(process);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void DevicePluginCommandLauncher::applicationFinished(int exitCode, QProcess::ExitStatus exitStatus)
+{
+ Q_UNUSED(exitCode);
+ Q_UNUSED(exitStatus);
+
+ QProcess *process = static_cast(sender());
+ Device *device = m_applications.value(process);
+
+ device->setStateValue(runningStateTypeId, false);
+
+ m_applications.remove(process);
+ process->deleteLater();
+}
diff --git a/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.h b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.h
new file mode 100644
index 00000000..0c419e7c
--- /dev/null
+++ b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.h
@@ -0,0 +1,59 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * *
+ * This file is part of guh. *
+ * *
+ * Guh is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, version 2 of the License. *
+ * *
+ * Guh 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with guh. If not, see . *
+ * *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#ifndef DEVICEPLUGINCOMMANDLAUNCHER_H
+#define DEVICEPLUGINCOMMANDLAUNCHER_H
+
+#include "plugin/deviceplugin.h"
+#include
+#include
+
+class DevicePluginCommandLauncher : public DevicePlugin
+{
+ Q_OBJECT
+
+ Q_PLUGIN_METADATA(IID "guru.guh.DevicePlugin" FILE "deviceplugincommandlauncher.json")
+ Q_INTERFACES(DevicePlugin)
+
+public:
+ explicit DevicePluginCommandLauncher();
+
+ DeviceManager::DeviceSetupStatus setupDevice(Device *device) override;
+ DeviceManager::HardwareResources requiredHardware() const override;
+ DeviceManager::DeviceError executeAction(Device *device, const Action &action) override;
+
+ void deviceRemoved(Device *device) override;
+
+private:
+ QHash m_scripts;
+ QHash m_applications;
+
+ // Hashes for action execution4
+ QHash m_startingScripts;
+ QHash m_startingApplications;
+ QHash m_killingScripts;
+ QHash m_killingApplications;
+
+private slots:
+ void scriptStateChanged(QProcess::ProcessState state);
+ void scriptFinished(int exitCode, QProcess::ExitStatus exitStatus);
+ void applicationStateChanged(QProcess::ProcessState state);
+ void applicationFinished(int exitCode, QProcess::ExitStatus exitStatus);
+};
+
+#endif // DEVICEPLUGINCOMMANDLAUNCHER_H
diff --git a/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.json b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.json
new file mode 100644
index 00000000..8bdca620
--- /dev/null
+++ b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.json
@@ -0,0 +1,78 @@
+{
+ "name": "Application and script launcher",
+ "id": "5d37b796-4872-4eab-a7af-94ca9ddd8199",
+ "vendors": [
+ {
+ "name": "guh",
+ "id": "2062d64d-3232-433c-88bc-0d33c0ba2ba6",
+ "deviceClasses": [
+ {
+ "deviceClassId": "0f39fe9e-51ea-4230-9646-2482c6234791",
+ "name": "Application launcher",
+ "createMethods": ["user"],
+ "paramTypes": [
+ {
+ "name": "name",
+ "type": "QString"
+ },
+ {
+ "name": "command",
+ "type": "QString"
+ }
+ ],
+ "stateTypes": [
+ {
+ "id": "28d7e933-ff05-4f4c-95a0-482689543de5",
+ "name": "running",
+ "type": "bool",
+ "defaultValue": false
+ }
+ ],
+ "actionTypes": [
+ {
+ "id": "cf52b41d-3108-423c-8907-ca5b4d97cac5",
+ "name": "execute"
+ },
+ {
+ "id": "d21b1fed-1dd9-4c5a-a64e-0c6ba94059be",
+ "name": "kill"
+ }
+ ]
+ },
+ {
+ "deviceClassId": "96044325-a6fb-47c9-9117-f29c3b327978",
+ "name": "Bashscript launcher",
+ "createMethods": ["user"],
+ "paramTypes": [
+ {
+ "name": "name",
+ "type": "QString"
+ },
+ {
+ "name": "script",
+ "type": "QString"
+ }
+ ],
+ "stateTypes": [
+ {
+ "id": "28d7e933-ff05-4f4c-95a0-482689543de5",
+ "name": "running",
+ "type": "bool",
+ "defaultValue": false
+ }
+ ],
+ "actionTypes": [
+ {
+ "id": "cf52b41d-3108-423c-8907-ca5b4d97cac5",
+ "name": "execute"
+ },
+ {
+ "id": "d21b1fed-1dd9-4c5a-a64e-0c6ba94059be",
+ "name": "kill"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/plugins/deviceplugins/deviceplugins.pro b/plugins/deviceplugins/deviceplugins.pro
index 70407799..368490f4 100644
--- a/plugins/deviceplugins/deviceplugins.pro
+++ b/plugins/deviceplugins/deviceplugins.pro
@@ -11,6 +11,8 @@ SUBDIRS += elro \
philipshue \
lgsmarttv \
datetime \
+ genericelements \
+ commandlauncher \
diff --git a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.cpp b/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.cpp
deleted file mode 100644
index 319e1193..00000000
--- a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************************
- * *
- * This file is part of guh. *
- * *
- * Guh is free software: you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation, version 2 of the License. *
- * *
- * Guh 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with guh. If not, see . *
- * *
- ***************************************************************************/
-
-/*!
- \page meisteranker.html
- \title Meister Anker
-
- \ingroup plugins
- \ingroup rf433
-
- This plugin allows to receive thermometer signals from Meister Anker
- devices.
-
- Following devices are supported:
-
- \chapter Supported devices
- \section1 Thermometer
- \table
- \header
- \li Model
- \li Device Type
- \row
- \li
- \li
- \endtable
- */
-
-#include "devicepluginmeisteranker.h"
-
-#include "plugin/device.h"
-#include "devicemanager.h"
-#include "hardware/radio433.h"
-
-#include
-#include
-
-VendorId meisterAnkerVendorId = VendorId("c181e749-5f72-4e25-a0af-094633abd7d5");
-DeviceClassId thermometer = DeviceClassId("e37e9f34-95b9-4a22-ae4f-e8b874eec871");
-
-DevicePluginMeisterAnker::DevicePluginMeisterAnker()
-{
-}
-
-QList DevicePluginMeisterAnker::supportedVendors() const
-{
- QList ret;
- Vendor meisterAnker(meisterAnkerVendorId, "Meister Anker");
- ret.append(meisterAnker);
- return ret;
-}
-
-QList DevicePluginMeisterAnker::supportedDevices() const
-{
- QList ret;
-
- // Thermometer
- DeviceClass deviceClassMeisterAnkerThermometer(pluginId(), meisterAnkerVendorId, thermometer);
- deviceClassMeisterAnkerThermometer.setName("Meister Anker Thermometer");
-
- QVariantList thermometerParams;
- QVariantMap idParam;
-
- // =======================================
- // id -> first 8 bits of codeword
- idParam.insert("name", "id");
- idParam.insert("type", "string");
- thermometerParams.append(idParam);
-
- deviceClassMeisterAnkerThermometer.setParams(thermometerParams);
-
- QList thermometerStates;
-
- StateType tempState(StateTypeId("a9849491-25f4-43a3-a6fe-3bfce43d6332"));
- tempState.setName("Temperature");
- tempState.setType(QVariant::Double);
- thermometerStates.append(tempState);
-
- StateType batteryState(StateTypeId("ebf951ba-75ca-47ac-ba3c-ea9ec1e7bbd1"));
- batteryState.setName("Battery");
- batteryState.setType(QVariant::Bool);
- thermometerStates.append(batteryState);
-
- deviceClassMeisterAnkerThermometer.setStates(thermometerStates);
-
- QList thermometerEvents;
-
- QVariantList paramsThermometer;
- QVariantMap paramThermometer;
- paramThermometer.insert("name", "temperature");
- paramThermometer.insert("type", "double");
- paramsThermometer.append(paramThermometer);
-
- EventType temperatureEvent(EventTypeId("174ab4d5-2ef0-491b-a55b-c895cedff80e"));
- temperatureEvent.setName("temperature");
- temperatureEvent.setParameters(paramsThermometer);
- thermometerEvents.append(temperatureEvent);
-
- QVariantList paramsThermometerBat;
- QVariantMap paramThermometerBat;
- paramThermometerBat.insert("name", "batteryStatus");
- paramThermometerBat.insert("type", "bool");
- paramsThermometerBat.append(paramThermometerBat);
-
- EventType batteryStatusEvent(EventTypeId("c376b532-993f-41c7-acc7-02b409136d32"));
- batteryStatusEvent.setName("batteryStatus");
- batteryStatusEvent.setParameters(paramsThermometerBat);
- thermometerEvents.append(batteryStatusEvent);
-
- // TODO: lock if we need a sync event
- // EventType syncEvent(QUuid("174ab4d5-2ef0-491b-a55b-c895cedff80e"));
- // temperatureEvent.setName("sync");
- // temperatureEvent.setParameters(paramsThermometer);
- // thermometerEvents.append(temperatureEvent);
-
-
- deviceClassMeisterAnkerThermometer.setEvents(thermometerEvents);
- ret.append(deviceClassMeisterAnkerThermometer);
-
- return ret;
-}
-
-DeviceManager::HardwareResources DevicePluginMeisterAnker::requiredHardware() const
-{
- return DeviceManager::HardwareResourceRadio433;
-}
-
-QString DevicePluginMeisterAnker::pluginName() const
-{
- return "Meister Anker";
-}
-
-QUuid DevicePluginMeisterAnker::pluginId() const
-{
- return QUuid("993a7c86-e4b9-44aa-b61e-1f7165df1348");
-}
-
-void DevicePluginMeisterAnker::executeAction(Device *device, const Action &action)
-{
- Q_UNUSED(device)
- Q_UNUSED(action)
-}
-
-void DevicePluginMeisterAnker::radioData(QList rawData)
-{
- // filter right here a wrong signal length
- if(rawData.length() != 49){
- return;
- }
-
- QByteArray binCode;
- int delay = rawData.first()/31;
-
- // parse rawdate to binary code
- if(delay > 240 && delay < 260){
-
- /* __
- * | |________ = 0 1100000000
- * __
- * | |________________ = 1 110000000000000000
- */
-
- for(int i = 1; i <= 48; i+=2 ){
- if(rawData.at(i) < 1000 && rawData.at(i+1) < 3000 && rawData.at(i+1) > 1000){
- binCode.append('0');
- }else if(rawData.at(i) < 1000 && rawData.at(i+1) > 3000){
- binCode.append('1');
- }else{
- return;
- }
- }
- }else{
- return;
- }
-
- //qDebug() << "bin code" << binCode;
-
- // =======================================
- // { ID },{ temp },{Batt},{,temp}
- // "XXXX","XXXX","XXXX","XXXX","XXXX","XXXX",
-
- QString idCode = QString(binCode.left(8));
- QByteArray temperatureBin = binCode.mid(8,8);
- QByteArray batteryBin = binCode.mid(16,4);
- QByteArray temperatureTenthBin = binCode.right(4);
-
- qDebug() << "id:" << idCode;
- qDebug() << "battery" << batteryBin;
-
- // check if we have a sync signal (id = 11111111)
- if(idCode == "11111111"){
- qDebug() << "temperatursensor sync signal";
- return;
- }
-
- // check if the battery is low
- bool batteryStatus;
- if(batteryBin.toInt(0,2) == 0){
- batteryStatus = true;
- }else{
- batteryStatus = false;
- }
-
- // check sign of temperature -> if first bit of temperature byte is 1 -> temp is negativ
- int sign = 0;
- if(temperatureBin.left(1).toInt() == 1){
- sign = -1;
- }else{
- sign = 1;
- }
-
- // calc temperature
- float temperature = sign*(temperatureBin.right(7).toInt(0,2) + (float)temperatureTenthBin.toInt(0,2)/10);
-
- // TODO: check if it is the same temperature than the last time
- // QString timeStamp = QDateTime::currentDateTime().toString("dd.MM.yyyy, hh:mm:ss");
-
-}
diff --git a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.h b/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.h
deleted file mode 100644
index 62b274fb..00000000
--- a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/****************************************************************************
- * *
- * This file is part of guh. *
- * *
- * Guh is free software: you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation, version 2 of the License. *
- * *
- * Guh 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 General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with guh. If not, see . *
- * *
- ***************************************************************************/
-
-#ifndef DEVICEPLUGINMEISTERANKER_H
-#define DEVICEPLUGINMEISTERANKER_H
-
-#include "plugin/deviceplugin.h"
-
-
-class DevicePluginMeisterAnker : public DevicePlugin
-{
- Q_OBJECT
-
- Q_PLUGIN_METADATA(IID "org.guh.DevicePlugin" FILE "devicepluginmeisteranker.json")
- Q_INTERFACES(DevicePlugin)
-
-public:
- explicit DevicePluginMeisterAnker();
-
- QList supportedVendors() const override;
- QList supportedDevices() const override;
- DeviceManager::HardwareResources requiredHardware() const override;
-
- QString pluginName() const override;
- QUuid pluginId() const override;
-
- void radioData(QList rawData) override;
-
-public slots:
- void executeAction(Device *device, const Action &action) override;
-};
-
-#endif // DEVICEPLUGINMEISTERANKER_H
diff --git a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.json b/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.json
deleted file mode 100644
index 0967ef42..00000000
--- a/plugins/deviceplugins/meisteranker/devicepluginmeisteranker.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/plugins/deviceplugins/meisteranker/meisteranker.pro b/plugins/deviceplugins/meisteranker/meisteranker.pro
deleted file mode 100644
index 3a6a5729..00000000
--- a/plugins/deviceplugins/meisteranker/meisteranker.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-include(../../plugins.pri)
-
-TARGET = $$qtLibraryTarget(guh_devicepluginmeisteranker)
-
-SOURCES += \
- devicepluginmeisteranker.cpp
-
-HEADERS += \
- devicepluginmeisteranker.h
-
-