diff --git a/debian/control b/debian/control index c5875e0a..294a664c 100644 --- a/debian/control +++ b/debian/control @@ -950,22 +950,6 @@ Description: nymea.io plugin for Sonos smart speakers This package will install the nymea.io plugin for Sonos smart speakers -Package: nymea-plugin-snapd -Architecture: any -Depends: ${shlibs:Depends}, - ${misc:Depends}, - nymea-plugins-translations, -Replaces: guh-plugin-snapd -Description: nymea.io plugin for snapd - The nymea daemon is a plugin based IoT (Internet of Things) server. The - server works like a translator for devices, things and services and - allows them to interact. - With the powerful rule engine you are able to connect any device available - in the system and create individual scenes and behaviors for your environment. - . - This package will install the nymea.io plugin for snapd - - Package: nymea-plugin-sunposition Architecture: any Depends: ${misc:Depends}, @@ -1274,7 +1258,6 @@ Section: libs Architecture: all Depends: nymea-plugins, nymea-plugin-simulation, - nymea-plugin-snapd, nymea-plugins-maker, nymea-plugins-merkurboard, Replaces: guh-plugins-all diff --git a/debian/nymea-plugin-snapd.install.in b/debian/nymea-plugin-snapd.install.in deleted file mode 100644 index 84739554..00000000 --- a/debian/nymea-plugin-snapd.install.in +++ /dev/null @@ -1 +0,0 @@ -usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginsnapd.so diff --git a/nymea-plugins.pro b/nymea-plugins.pro index 78d4ee71..f326f4a8 100644 --- a/nymea-plugins.pro +++ b/nymea-plugins.pro @@ -51,7 +51,6 @@ PLUGIN_DIRS = \ senic \ serialportcommander \ simulation \ - snapd \ somfytahoma \ sonos \ sunposition \ diff --git a/snapd/README.md b/snapd/README.md deleted file mode 100644 index c471f907..00000000 --- a/snapd/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Snapd - -This plugin allows to interact with the snap daemon in order to trigger updates, change the channel of snaps check if there are snaps which could be refreshed. -The plugin allows also to change the refresh schedule of snapd. diff --git a/snapd/integrationpluginsnapd.cpp b/snapd/integrationpluginsnapd.cpp deleted file mode 100644 index 3c13902c..00000000 --- a/snapd/integrationpluginsnapd.cpp +++ /dev/null @@ -1,292 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 "integrationpluginsnapd.h" -#include "integrations/thing.h" -#include "plugininfo.h" -#include "network/networkaccessmanager.h" - -IntegrationPluginSnapd::IntegrationPluginSnapd() -{ - -} - -IntegrationPluginSnapd::~IntegrationPluginSnapd() -{ - hardwareManager()->pluginTimerManager()->unregisterTimer(m_refreshTimer); - hardwareManager()->pluginTimerManager()->unregisterTimer(m_updateTimer); -} - -void IntegrationPluginSnapd::init() -{ - // Initialize plugin configurations - m_advancedMode = configValue(snapdPluginAdvancedModeParamTypeId).toBool(); - m_refreshTime = configValue(snapdPluginRefreshScheduleParamTypeId).toInt(); - connect(this, &IntegrationPluginSnapd::configValueChanged, this, &IntegrationPluginSnapd::onPluginConfigurationChanged); - - // Refresh timer for snapd checks - m_refreshTimer = hardwareManager()->pluginTimerManager()->registerTimer(2); - connect(m_refreshTimer, &PluginTimer::timeout, this, &IntegrationPluginSnapd::onRefreshTimer); - - // Check all 4 hours if there is an update available - m_updateTimer = hardwareManager()->pluginTimerManager()->registerTimer(14400); - connect(m_updateTimer, &PluginTimer::timeout, this, &IntegrationPluginSnapd::onUpdateTimer); -} - -void IntegrationPluginSnapd::startMonitoringAutoThings() -{ - // Check if we already have a controller and if snapd is available - if (m_snapdControl && !m_snapdControl->available()) { - return; - } - - // Check if we already have a thing for the snapd control - bool deviceAlreadyExists = false; - foreach (Thing *thing, myThings()) { - if (thing->thingClassId() == snapdControlThingClassId) { - deviceAlreadyExists = true; - } - } - - // Add thing if there isn't already one - if (!deviceAlreadyExists) { - ThingDescriptor descriptor(snapdControlThingClassId, "Update manager"); - emit autoThingsAppeared({descriptor}); - } -} - -void IntegrationPluginSnapd::postSetupThing(Thing *thing) -{ - if (m_snapdControl && m_snapdControl->thing() == thing) { - m_snapdControl->update(); - } -} - -void IntegrationPluginSnapd::thingRemoved(Thing *thing) -{ - if (thing->thingClassId() == snapdControlThingClassId) { - qCWarning(dcSnapd()) << "User deleted snapd control."; - - // Clean up old thing - if (m_snapdControl) { - delete m_snapdControl; - m_snapdControl = nullptr; - } - - // Respawn thing immediately - startMonitoringAutoThings(); - - } else if (thing->thingClassId() == snapThingClassId) { - if (m_snapDevices.values().contains(thing)) { - QString snapId = m_snapDevices.key(thing); - m_snapDevices.remove(snapId); - } - } -} - -void IntegrationPluginSnapd::setupThing(ThingSetupInfo *info) -{ - Thing *thing = info->thing(); - qCDebug(dcSnapd()) << "Setup" << thing->name() << thing->params(); - - if (thing->thingClassId() == snapdControlThingClassId) { - if (m_snapdControl) { - delete m_snapdControl; - m_snapdControl = nullptr; - } - - m_snapdControl = new SnapdControl(thing, this); - m_snapdControl->setPreferredRefreshTime(configValue(snapdPluginRefreshScheduleParamTypeId).toInt()); - connect(m_snapdControl, &SnapdControl::snapListUpdated, this, &IntegrationPluginSnapd::onSnapListUpdated); - - } else if (thing->thingClassId() == snapThingClassId) { - thing->setName(QString("%1").arg(thing->paramValue(snapThingNameParamTypeId).toString())); - m_snapDevices.insert(thing->paramValue(snapThingIdParamTypeId).toString(), thing); - } - - info->finish(Thing::ThingErrorNoError); -} - -void IntegrationPluginSnapd::executeAction(ThingActionInfo *info) -{ - Thing *thing = info->thing(); - Action action = info->action(); - - if (thing->thingClassId() == snapdControlThingClassId) { - - if (!m_snapdControl) { - qCDebug(dcSnapd()) << "There is currently no snapd controller."; - return info->finish(Thing::ThingErrorHardwareFailure); - } - - if (!m_snapdControl->connected()) { - qCDebug(dcSnapd()) << "Snapd controller not connected to to backend."; - return info->finish(Thing::ThingErrorHardwareFailure); - } - - if (action.actionTypeId() == snapdControlStartUpdateActionTypeId) { - m_snapdControl->snapRefresh(); - return info->finish(Thing::ThingErrorNoError); - } else if (action.actionTypeId() == snapdControlCheckUpdatesActionTypeId) { - m_snapdControl->checkForUpdates(); - return info->finish(Thing::ThingErrorNoError); - } - - return info->finish(Thing::ThingErrorActionTypeNotFound); - - } else if (thing->thingClassId() == snapThingClassId) { - - if (!m_snapdControl) { - qCDebug(dcSnapd()) << "There is currently no snapd controller."; - return info->finish(Thing::ThingErrorHardwareFailure); - } - - if (!m_snapdControl->connected()) { - qCDebug(dcSnapd()) << "Snapd controller not connected to the backend."; - return info->finish(Thing::ThingErrorHardwareFailure); - } - - if (action.actionTypeId() == snapChannelActionTypeId) { - QString snapName = thing->paramValue(snapThingNameParamTypeId).toString(); - m_snapdControl->changeSnapChannel(snapName, action.param(snapChannelActionChannelParamTypeId).value().toString()); - return info->finish(Thing::ThingErrorNoError); - } else if (action.actionTypeId() == snapRevertActionTypeId) { - QString snapName = thing->paramValue(snapThingNameParamTypeId).toString(); - m_snapdControl->snapRevert(snapName); - return info->finish(Thing::ThingErrorNoError); - } - - return info->finish(Thing::ThingErrorActionTypeNotFound); - } - - return info->finish(Thing::ThingErrorThingClassNotFound); -} - -void IntegrationPluginSnapd::onPluginConfigurationChanged(const ParamTypeId ¶mTypeId, const QVariant &value) -{ - qCDebug(dcSnapd()) << "Plugin configuration changed"; - - // Check advanced mode - if (paramTypeId == snapdPluginAdvancedModeParamTypeId) { - qCDebug(dcSnapd()) << "Advanced mode" << (value.toBool() ? "enabled." : "disabled."); - m_advancedMode = value.toBool(); - - // If advanced mode disabled, clean up all snap devices - if (!m_advancedMode) { - foreach (const QString deviceSnapId, m_snapDevices.keys()) { - Thing *thing = m_snapDevices.take(deviceSnapId); - qCDebug(dcSnapd()) << "Remove thing for snap" << thing->paramValue(snapThingNameParamTypeId).toString(); - emit autoThingDisappeared(thing->id()); - } - } else { - if (!m_snapdControl) - return; - - m_snapdControl->update(); - } - } - - // Check refresh schedule - if (paramTypeId == snapdPluginRefreshScheduleParamTypeId) { - if (!m_snapdControl) - return; - - m_refreshTime = value.toInt(); - qCDebug(dcSnapd()) << "Refresh schedule start time" << QTime(m_refreshTime, 0, 0).toString("hh:mm"); - m_snapdControl->setPreferredRefreshTime(m_refreshTime); - } -} - -void IntegrationPluginSnapd::onRefreshTimer() -{ - if (!m_snapdControl) { - startMonitoringAutoThings(); - return; - } - - m_snapdControl->update(); -} - -void IntegrationPluginSnapd::onUpdateTimer() -{ - if (!m_snapdControl) - return; - - m_snapdControl->checkForUpdates(); -} - -void IntegrationPluginSnapd::onSnapListUpdated(const QVariantList &snapList) -{ - // Check for new snap devices only in advanced mode - if (!m_advancedMode) - return; - - // Collect list of snap id's from snapList for remove checking - QStringList snapIdList; - - // Check if we have to create a new thing - foreach (const QVariant &snapVariant, snapList) { - QVariantMap snapMap = snapVariant.toMap(); - snapIdList.append(snapMap.value("id").toString()); - // If there is no thing for this snap yet - if (!m_snapDevices.contains(snapMap.value("id").toString())) { - ThingDescriptor descriptor(snapThingClassId, QString("Snap %1").arg(snapMap.value("name").toString())); - ParamList params; - params.append(Param(snapThingNameParamTypeId, snapMap.value("name"))); - params.append(Param(snapThingIdParamTypeId, snapMap.value("id"))); - params.append(Param(snapThingSummaryParamTypeId, snapMap.value("summary"))); - params.append(Param(snapThingDescriptionParamTypeId, snapMap.value("description"))); - params.append(Param(snapThingDeveloperParamTypeId, snapMap.value("developer"))); - descriptor.setParams(params); - - emit autoThingsAppeared({descriptor}); - } else { - // Update the states - Thing *thing = m_snapDevices.value(snapMap.value("id").toString(), nullptr); - if (!thing) { - qCWarning(dcSnapd()) << "Holding invalid snap thing. This should never happen. Please report a bug if you see this message."; - continue; - } - - thing->setStateValue(snapChannelStateTypeId, snapMap.value("channel").toString()); - thing->setStateValue(snapVersionStateTypeId, snapMap.value("version").toString()); - thing->setStateValue(snapRevisionStateTypeId, snapMap.value("revision").toString()); - } - } - - // Check if we have to remove a thing - foreach (const QString deviceSnapId, m_snapDevices.keys()) { - if (!snapIdList.contains(deviceSnapId)) { - Thing *thing = m_snapDevices.take(deviceSnapId); - qCDebug(dcSnapd()) << "The snap" << thing->paramValue(snapThingNameParamTypeId).toString() << "is not installed any more."; - emit autoThingDisappeared(thing->id()); - } - } -} diff --git a/snapd/integrationpluginsnapd.h b/snapd/integrationpluginsnapd.h deleted file mode 100644 index d0b85975..00000000 --- a/snapd/integrationpluginsnapd.h +++ /dev/null @@ -1,81 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 INTEGRATIONPLUGINSNAPD_H -#define INTEGRATIONPLUGINSNAPD_H - -#include "integrations/integrationplugin.h" -#include "plugintimer.h" - -#include -#include -#include -#include - -#include "snapdcontrol.h" - - -class IntegrationPluginSnapd: public IntegrationPlugin { - Q_OBJECT - Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginsnapd.json") - Q_INTERFACES(IntegrationPlugin) - -public: - explicit IntegrationPluginSnapd(); - ~IntegrationPluginSnapd(); - - void init() override; - void startMonitoringAutoThings() override; - void postSetupThing(Thing *thing) override; - void thingRemoved(Thing *thing) override; - - void setupThing(ThingSetupInfo *info) override; - void executeAction(ThingActionInfo *info) override; - -private: - SnapdControl *m_snapdControl = nullptr; - PluginTimer *m_refreshTimer = nullptr; - PluginTimer *m_updateTimer = nullptr; - - bool m_advancedMode = false; - int m_refreshTime = 2; - - // Snap list for faster access (snap id, thing) - QHash m_snapDevices; - -private slots: - void onPluginConfigurationChanged(const ParamTypeId ¶mTypeId, const QVariant &value); - void onRefreshTimer(); - void onUpdateTimer(); - void onSnapListUpdated(const QVariantList &snapList); - -}; - -#endif // INTEGRATIONPLUGINSNAPD_H diff --git a/snapd/integrationpluginsnapd.json b/snapd/integrationpluginsnapd.json deleted file mode 100644 index e9b2bef2..00000000 --- a/snapd/integrationpluginsnapd.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "name": "Snapd", - "displayName": "Snapd", - "id": "b82bce59-59bf-48b3-b781-54a6f45800f3", - "paramTypes": [ - { - "id": "017fe4c5-fc41-41fe-8e67-08fdaccb89ea", - "name": "advancedMode", - "displayName": "Advanced mode", - "type": "bool", - "defaultValue": false - }, - { - "id": "d2e697d1-9a68-4666-bf40-8d70fa694eec", - "name": "refreshSchedule", - "displayName": "Automatic daily refresh schedule", - "type": "int", - "unit": "Hours", - "minValue": 0, - "maxValue": 23, - "defaultValue": 2 - } - ], - "vendors": [ - { - "displayName": "Canonical", - "name": "canonical", - "id": "60582ddf-32ea-4fcd-a6f2-f3beaaf21517", - "thingClasses": [ - { - "id": "d90cda58-4d8c-4b7f-a982-38e56a95b72a", - "name": "snapdControl", - "displayName": "Update manager", - "createMethods": [ "auto" ], - "interfaces": [ "system" ], - "paramTypes": [ ], - "actionTypes": [ - { - "id": "45626b75-f09d-4dd1-b6c4-ee33201b47b0", - "name": "startUpdate", - "displayName": "Start update", - "paramTypes": [ ] - }, - { - "id": "4738f2c9-666e-45b9-91d3-7bcbf722b669", - "name": "checkUpdates", - "displayName": "Check for updates", - "paramTypes": [ ] - } - ], - "stateTypes": [ - { - "id": "6b662b3e-fd12-4f24-be77-aec066f16d8c", - "name": "snapdAvailable", - "displayName": "Update manager available", - "displayNameEvent": "Update manager available changed", - "type": "bool", - "defaultValue": false - }, - { - "id": "a6b1d24b-d523-4516-9bce-5b467e5e09b2", - "name": "updateAvailable", - "displayName": "System update available", - "displayNameEvent": "System update available changed", - "type": "bool", - "cached": false, - "defaultValue": false - }, - { - "id": "01ca7a22-5607-4c5e-a465-a2ae7e8b529c", - "name": "updateRunning", - "displayName": "System update running", - "displayNameEvent": "System update running changed", - "type": "bool", - "defaultValue": false - }, - { - "id": "c671545a-6bde-4c08-8e37-0d256841a3a5", - "name": "lastUpdateTime", - "displayName": "Last automatic system update", - "displayNameEvent": "Last automatic system update time changed", - "unit": "UnixTime", - "type": "int", - "defaultValue": 0 - }, - { - "id": "122c2423-a1d9-400f-80f8-b1f798975914", - "name": "nextUpdateTime", - "displayName": "Next automatic system update", - "displayNameEvent": "Next automatic system update time changed", - "unit": "UnixTime", - "type": "int", - "defaultValue": 0 - }, - { - "id": "4987aca3-3916-4cb3-938f-df6c99d04dbf", - "name": "status", - "displayName": "Status", - "displayNameEvent": "Status changed", - "type": "QString", - "defaultValue": "-" - } - ] - }, - { - "id": "ff0840d7-fcfc-4403-9d9f-301610d5a437", - "name": "snap", - "displayName": "Snap", - "createMethods": [ "auto" ], - "interfaces": ["system"], - "paramTypes": [ - { - "id": "4f38614d-8be0-48dc-a24d-cee9ff1f2a89", - "name": "name", - "displayName": "Name", - "type": "QString", - "defaultValue": "-" - }, - { - "id": "9afb98fb-f717-4f4c-8009-1a6514054c5f", - "name": "id", - "displayName": "ID", - "type": "QString", - "defaultValue": "-" - }, - { - "id": "12b9a65f-970b-49b5-b1d0-1625fc6d8758", - "name": "summary", - "displayName": "Summary", - "type": "QString", - "defaultValue": "-" - }, - { - "id": "fe24c61b-e154-4259-b7ca-6f0602e9d1c3", - "name": "description", - "displayName": "Description", - "type": "QString", - "defaultValue": "-" - }, - { - "id": "76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5", - "name": "developer", - "displayName": "Developer", - "type": "QString", - "defaultValue": "-" - } - ], - "actionTypes": [ - { - "id": "e061dee6-62fc-45cc-9c9f-403c2be52939", - "name": "revert", - "displayName": "Rollback to previous version" - } - ], - "stateTypes": [ - { - "id": "7be2b61e-3f59-4b92-b2bb-50d027bb92ff", - "name": "channel", - "displayName": "Channel", - "displayNameEvent": "Channel changed", - "displayNameAction": "Set channel", - "type": "QString", - "defaultValue": "stable", - "writable": true, - "possibleValues": [ - "stable", - "candidate", - "beta", - "edge" - ] - }, - { - "id": "532a95f3-db29-427e-bb32-d5a22029e586", - "name": "version", - "displayName": "Version", - "displayNameEvent": "Version changed", - "type": "QString", - "defaultValue": "-" - }, - { - "id": "f26a6404-e011-11e7-9224-2350048461eb", - "name": "revision", - "displayName": "Revision", - "displayNameEvent": "Revision changed", - "type": "QString", - "defaultValue": "-" - } - ] - } - ] - } - ] -} diff --git a/snapd/meta.json b/snapd/meta.json deleted file mode 100644 index 2ecfbde7..00000000 --- a/snapd/meta.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "title": "Snapd", - "tagline": "Control the Snap daemon.", - "icon": "snapd.svg", - "stability": "consumer", - "offline": true, - "technologies": [ - "cloud" - ], - "categories": [ - "tool" - ] -} diff --git a/snapd/snapd.pro b/snapd/snapd.pro deleted file mode 100644 index c437f433..00000000 --- a/snapd/snapd.pro +++ /dev/null @@ -1,17 +0,0 @@ -include(../plugins.pri) - -TARGET = $$qtLibraryTarget(nymea_integrationpluginsnapd) - -QT += network - -SOURCES += \ - integrationpluginsnapd.cpp \ - snapdcontrol.cpp \ - snapdconnection.cpp \ - snapdreply.cpp - -HEADERS += \ - integrationpluginsnapd.h \ - snapdcontrol.h \ - snapdconnection.h \ - snapdreply.h diff --git a/snapd/snapd.svg b/snapd/snapd.svg deleted file mode 100644 index b3d11790..00000000 --- a/snapd/snapd.svg +++ /dev/null @@ -1 +0,0 @@ -snapcraft_green-red_st_hexArtboard 1 \ No newline at end of file diff --git a/snapd/snapdconnection.cpp b/snapd/snapdconnection.cpp deleted file mode 100644 index 40664f52..00000000 --- a/snapd/snapdconnection.cpp +++ /dev/null @@ -1,386 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 "snapdconnection.h" -#include "extern-plugininfo.h" - -#include -#include -#include - - -SnapdConnection::SnapdConnection(QObject *parent) : - QLocalSocket(parent) -{ - connect(this, &QLocalSocket::connected, this, &SnapdConnection::onConnected); - connect(this, &QLocalSocket::disconnected, this, &SnapdConnection::onDisconnected); - connect(this, &QLocalSocket::readyRead, this, &SnapdConnection::onReadyRead); - connect(this, &QLocalSocket::stateChanged, this, &SnapdConnection::onStateChanged); - connect(this, SIGNAL(error(QLocalSocket::LocalSocketError)), this, SLOT(onError(QLocalSocket::LocalSocketError))); -} - -SnapdConnection::~SnapdConnection() -{ - close(); -} - -SnapdReply *SnapdConnection::get(const QString &path, QObject *parent) -{ - SnapdReply *reply = new SnapdReply(parent); - reply->setRequestPath(path); - reply->setRequestMethod("GET"); - reply->setRequestRawMessage(createRequestHeader("GET", path)); - - // Enqueue the new reply - m_replyQueue.enqueue(reply); - sendNextRequest(); - - // Note: the caller owns the object now - return reply; -} - -SnapdReply *SnapdConnection::post(const QString &path, const QByteArray &payload, QObject *parent) -{ - SnapdReply *reply = new SnapdReply(parent); - reply->setRequestPath(path); - reply->setRequestMethod("POST"); - QByteArray header = createRequestHeader("POST", path, payload); - reply->setRequestRawMessage(header.append(payload)); - - // Enqueue the new reply - m_replyQueue.enqueue(reply); - sendNextRequest(); - - // Note: the caller owns the object now - return reply; -} - -SnapdReply *SnapdConnection::put(const QString &path, const QByteArray &payload, QObject *parent) -{ - SnapdReply *reply = new SnapdReply(parent); - reply->setRequestPath(path); - reply->setRequestMethod("PUT"); - QByteArray header = createRequestHeader("PUT", path, payload); - reply->setRequestRawMessage(header.append(payload)); - - // Enqueue the new reply - m_replyQueue.enqueue(reply); - sendNextRequest(); - - // Note: the caller owns the object now - return reply; -} - -bool SnapdConnection::isConnected() const -{ - return m_connected; -} - -void SnapdConnection::setConnected(const bool &connected) -{ - if (m_connected == connected) - return; - - m_connected = connected; - emit connectedChanged(m_connected); - - // Clean up replies of disconnected - if (!m_connected) { - // Clean up current reply - if (m_currentReply) { - m_currentReply->setFinished(false); - m_currentReply = nullptr; - } - - // Clean up queue - while (!m_replyQueue.isEmpty()) { - QPointer reply = m_replyQueue.dequeue(); - if (!reply.isNull()) { - reply->deleteLater(); - } - } - } else { - // Start with a clean parsing - m_payload.clear(); - m_header.clear(); - m_chuncked = false; - } -} - -QByteArray SnapdConnection::createRequestHeader(const QString &method, const QString &path, const QByteArray &payload) -{ - QByteArray request; - request.append(QString("%1 %2 HTTP/1.1\r\n").arg(method).arg(path).toUtf8()); - request.append("Host: http\r\n"); - request.append("Accept: *\r\n"); - if (!payload.isEmpty()) { - request.append("Content-Type: application/json\r\n"); - request.append(QString("Content-Length: %1\r\n").arg(payload.count()).toUtf8()); - } - - request.append("\r\n"); - return request; -} - -QByteArray SnapdConnection::getChunckedPayload(const QByteArray &payload) -{ - // Read line by line - QStringList payloadLines = QString::fromUtf8(payload).split(QRegExp("\r\n")); - if (payloadLines.count() < 4) { - qCWarning(dcSnapd()) << "Chuncked payload invalid linecount" << payloadLines.count(); - return QByteArray(); - } - - int payloadSize = payloadLines.at(2).toInt(0, 16); - - if (m_debug) - qCDebug(dcSnapd()) << "Payload size" << payloadSize; - - if (payloadLines.at(3).toUtf8().size() != payloadSize) { - qCWarning(dcSnapd()) << "Invalid payload size" << payloadLines.at(3).toUtf8().size() << "!=" << payloadSize; - return QByteArray(); - } - - // Return just the payload - return payloadLines.at(3).toUtf8(); -} - -void SnapdConnection::processData() -{ - if (!m_currentReply) { - qCWarning(dcSnapd()) << "Data received without current reply" << m_payload; - return; - } - - if (m_header.isEmpty()) { - qCWarning(dcSnapd()) << "Could not process data. There is no header."; - m_currentReply->setFinished(); - return; - } - - // Get the raw payload - QByteArray payloadData; - if (m_chuncked) { - payloadData = getChunckedPayload(m_payload); - } else { - payloadData = m_payload; - } - - // Check if there are data to process - if (m_payload.isEmpty()) { - qCWarning(dcSnapd()) << "Could not process data. There is no payload to process."; - return; - } - - // Parse header - QHash parsedHeader; - QStringList headerLines = QString::fromUtf8(m_header).split(QRegExp("\r\n")); - - // Read status line - QString statusLine = headerLines.takeFirst(); - QStringList statusLineTokens = statusLine.split(QRegExp("[ \r\n][ \r\n]*")); - if (statusLineTokens.count() < 3) { - qCWarning(dcSnapd()) << "Could not parse HTTP status line:" << statusLine; - return; - } - - bool statusCodeOk = false; - int statusCode = statusLineTokens.at(1).simplified().toInt(&statusCodeOk); - if (!statusCodeOk) { - qCWarning(dcSnapd()) << "Could not parse HTTP status code:" << statusLineTokens.at(1); - return; - } - - QString statusMessage; - for (int i = 2; i < statusLineTokens.count(); i++) { - statusMessage.append(statusLineTokens.at(i).simplified()); - if (i < statusLineTokens.count() -1) { - statusMessage.append(" "); - } - } - - // Verify header formating - foreach (const QString &line, headerLines) { - if (!line.contains(":")) { - qCWarning(dcSnapd()) << "Invalid HTTP header. Missing \":\" in line" << line; - return; - } - - int index = line.indexOf(":"); - QString key = line.left(index).toUtf8().simplified(); - QString value = line.right(line.count() - index - 1).toUtf8().simplified(); - //qCDebug(dcSnapd()) << " Key:" << key << "Value:" << value; - parsedHeader.insert(key, value); - } - - // Parse payload - QJsonParseError error; - QJsonDocument jsonDoc = QJsonDocument::fromJson(payloadData, &error); - if (error.error != QJsonParseError::NoError) { - qCWarning(dcSnapd()) << "Got invalid JSON data from snapd:" << error.offset << error.errorString(); - qCWarning(dcSnapd()) << qUtf8Printable(payloadData); - return; - } - - if (m_debug) - qCDebug(dcSnapd()) << "<--" << m_currentReply->requestPath() << statusCode << statusMessage; - - // Fill reply - m_currentReply->setStatusCode(statusCode); - m_currentReply->setStatusMessage(statusMessage); - m_currentReply->setHeader(parsedHeader); - m_currentReply->setDataMap(jsonDoc.toVariant().toMap()); - m_currentReply->setFinished(); - - // Current data stream finished, reset for new messages - m_payload.clear(); - m_header.clear(); - m_chuncked = false; - - // Ready for next reply - m_currentReply = nullptr; - sendNextRequest(); -} - -void SnapdConnection::sendNextRequest() -{ - // Check if nothing else to do - if (m_replyQueue.isEmpty()) - return; - - // Check a reply is currently pending - if (m_currentReply) - return; - - // Dequeue and send next reply - SnapdReply *reply = m_replyQueue.dequeue(); - m_currentReply = reply; - - if (m_debug) - qCDebug(dcSnapd()) << "-->" << reply->requestMethod() << reply->requestPath(); - - // Send current reply request. If write failes, the reply is finished invalid and the owner has to delete it - qint64 bytesWritten = write(reply->requestRawMessage()); - if (bytesWritten < 0) { - qCWarning(dcSnapd()) << "Could not write request data" << reply->requestMethod() << reply->requestMethod(); - m_currentReply->setFinished(false); - m_currentReply = nullptr; - sendNextRequest(); - } -} - -void SnapdConnection::onConnected() -{ - setConnected(true); -} - -void SnapdConnection::onDisconnected() -{ - setConnected(false); -} - -void SnapdConnection::onError(const QLocalSocket::LocalSocketError &socketError) -{ - qCWarning(dcSnapd()) << "Socket error" << socketError << errorString(); -} - -void SnapdConnection::onStateChanged(const QLocalSocket::LocalSocketState &state) -{ - switch (state) { - case QLocalSocket::UnconnectedState: - qCDebug(dcSnapd()) << "Disconnected from snapd."; - break; - case QLocalSocket::ConnectingState: - qCDebug(dcSnapd()) << "Connecting to snapd..."; - break; - case QLocalSocket::ConnectedState: - qCDebug(dcSnapd()) << "Connected to snapd."; - break; - case QLocalSocket::ClosingState: - qCDebug(dcSnapd()) << "Closing connection to snapd."; - break; - default: - break; - } -} - -void SnapdConnection::onReadyRead() -{ - QByteArray data = readAll(); - - if (m_debug) - qCDebug(dcSnapd()) << "Data received:" << data; - - // If we are not appending to a reply - if (!m_chuncked) { - - // Parse header - int headerIndex = data.indexOf("\r\n\r\n"); - if (headerIndex < 0) { - qCWarning(dcSnapd()) << "Invalid response format. Could not find header/payload mark."; - return; - } - - m_header = data.left(headerIndex); - - if (m_debug) - qCDebug(dcSnapd()) << "Header:" << m_header; - - QByteArray payload = data.right(data.length() - (headerIndex)); - - if (m_debug) - qCDebug(dcSnapd()) << "Payload" << payload; - - // Check if this message is chuncked - if (m_header.contains("chunked")) { - - if (m_debug) - qCDebug(dcSnapd()) << "Chuncked message receiving"; - - m_chuncked = true; - m_payload.append(payload); - - if (m_payload.endsWith("\r\n0\r\n\r\n")) { - // Chuncked message finished - processData(); - } - } else { - // Not chucked - m_payload = payload; - processData(); - } - } else { - m_payload.append(data); - if (m_payload.endsWith("\r\n0\r\n\r\n")) { - // Chuncked message finished - processData(); - } - } -} diff --git a/snapd/snapdconnection.h b/snapd/snapdconnection.h deleted file mode 100644 index f27d6318..00000000 --- a/snapd/snapdconnection.h +++ /dev/null @@ -1,86 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 SNAPDCONNECTION_H -#define SNAPDCONNECTION_H - -#include -#include -#include - -#include "snapdreply.h" - -class SnapdConnection : public QLocalSocket -{ - Q_OBJECT -public: - explicit SnapdConnection(QObject *parent = nullptr); - ~SnapdConnection(); - - SnapdReply *get(const QString &path, QObject *parent); - SnapdReply *post(const QString &path, const QByteArray &payload, QObject *parent); - SnapdReply *put(const QString &path, const QByteArray &payload, QObject *parent); - - bool isConnected() const; - -private: - bool m_chuncked = false; - - QByteArray m_header; - QByteArray m_payload; - - bool m_connected = false; - bool m_debug = false; - - SnapdReply *m_currentReply = nullptr; - QQueue m_replyQueue; - - void setConnected(const bool &connected); - - // Helper methods - QByteArray createRequestHeader(const QString &method, const QString &path, const QByteArray &payload = QByteArray()); - QByteArray getChunckedPayload(const QByteArray &payload); - - void processData(); - void sendNextRequest(); - -signals: - void connectedChanged(const bool &connected); - -private slots: - void onConnected(); - void onDisconnected(); - void onError(const QLocalSocket::LocalSocketError &socketError); - void onStateChanged(const QLocalSocket::LocalSocketState &state); - void onReadyRead(); - -}; - -#endif // SNAPDCONNECTION_H diff --git a/snapd/snapdcontrol.cpp b/snapd/snapdcontrol.cpp deleted file mode 100644 index d43e8678..00000000 --- a/snapd/snapdcontrol.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 "snapdcontrol.h" -#include "extern-plugininfo.h" - -#include -#include -#include -#include - -SnapdControl::SnapdControl(Thing *thing, QObject *parent) : - QObject(parent), - m_device(thing), - m_snapdSocketPath("/run/snapd.socket") -{ - // If a change is one of following kind, the plugin will recognize it as update running - m_updateChangeKinds.append("install-snap"); - m_updateChangeKinds.append("remove-snap"); - m_updateChangeKinds.append("refresh-snap"); - m_updateChangeKinds.append("revert-snap"); - - m_snapConnection = new SnapdConnection(this); - connect(m_snapConnection, &SnapdConnection::connectedChanged, this, &SnapdControl::onConnectedChanged); -} - -Thing *SnapdControl::thing() -{ - return m_device; -} - -bool SnapdControl::available() const -{ - QFileInfo fileInfo(m_snapdSocketPath); - if (!fileInfo.exists()) { - qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "does not exist"; - return false; - } - - if (!fileInfo.isReadable()) { - qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "is not readable"; - return false; - } - - if (!fileInfo.isWritable()) { - qCDebug(dcSnapd()) << "The socket descriptor" << m_snapdSocketPath << "is not writable"; - return false; - } - - return true; -} - -bool SnapdControl::connected() const -{ - return m_snapConnection->isConnected(); -} - -bool SnapdControl::enabled() const -{ - return m_enabled; -} - -bool SnapdControl::timerBasedSchedule() const -{ - return m_timerBasedSchedule; -} - -void SnapdControl::loadSystemInfo() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - SnapdReply *reply = m_snapConnection->get("/v2/system-info", this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadSystemInfoFinished); -} - -void SnapdControl::loadSnapList() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - SnapdReply *reply = m_snapConnection->get("/v2/snaps", this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadSnapListFinished); -} - -void SnapdControl::loadRunningChanges() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - SnapdReply *reply = m_snapConnection->get("/v2/changes", this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onLoadRunningChangesFinished); -} - -void SnapdControl::configureRefreshSchedule() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - QVariantMap configuration; QVariantMap configMap; - configMap.insert("timer", m_preferredRefreshSchedule); - configMap.insert("schedule", m_preferredRefreshSchedule); - configuration.insert("refresh", configMap); - - qCDebug(dcSnapd()) << "Configure refresh schedule from" << m_currentRefreshSchedule << "-->" << m_preferredRefreshSchedule; - - SnapdReply *reply = m_snapConnection->put(QString("/v2/snaps/core/conf"), QJsonDocument::fromVariant(configuration).toJson(QJsonDocument::Compact), this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onConfigureRefreshScheduleFinished); -} - -bool SnapdControl::validAsyncResponse(const QVariantMap &responseMap) -{ - if (!responseMap.contains("type")) - return false; - - if (responseMap.value("type") == "error") - return false; - - return true; -} - -void SnapdControl::onConnectedChanged(const bool &connected) -{ - if (connected) { - thing()->setStateValue(snapdControlSnapdAvailableStateTypeId, true); - update(); - } else { - thing()->setStateValue(snapdControlSnapdAvailableStateTypeId, false); - } -} - -void SnapdControl::onLoadSystemInfoFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Load system info request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - QVariantMap result = reply->dataMap().value("result").toMap(); - QDateTime lastRefreshTime = QDateTime::fromString(result.value("refresh").toMap().value("last").toString(), Qt::ISODate); - QDateTime nextRefreshTime = QDateTime::fromString(result.value("refresh").toMap().value("next").toString(), Qt::ISODate); - - // Set update time information - thing()->setStateValue(snapdControlLastUpdateTimeStateTypeId, lastRefreshTime.toTime_t()); - thing()->setStateValue(snapdControlNextUpdateTimeStateTypeId, nextRefreshTime.toTime_t()); - - // Check if we are working on refresh timer or refresh schedule - if (result.value("refresh").toMap().contains("schedule")) { - // Schedule based core snap - m_timerBasedSchedule = false; - m_currentRefreshSchedule = result.value("refresh").toMap().value("schedule").toString(); - } else if (result.value("refresh").toMap().contains("timer")) { - // Timer based core snap: snapd >= 2.31 - m_timerBasedSchedule = true; - m_currentRefreshSchedule = result.value("refresh").toMap().value("timer").toString(); - } - - reply->deleteLater(); - - // Check if the refresh schedule should be updated - if (m_currentRefreshSchedule != m_preferredRefreshSchedule) { - configureRefreshSchedule(); - } -} - -void SnapdControl::onLoadSnapListFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Load system info request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - emit snapListUpdated(reply->dataMap().value("result").toList()); - reply->deleteLater(); -} - -void SnapdControl::onLoadRunningChangesFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Load running changes request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - // Load changes list - QVariantList changes = reply->dataMap().value("result").toList(); - reply->deleteLater(); - - // If there are no running changes, update is not running - if (changes.isEmpty()) { - // Update not running any more - thing()->setStateValue(snapdControlUpdateRunningStateTypeId, false); - thing()->setStateValue(snapdControlStatusStateTypeId, "-"); - return; - } - - bool updateRunning = false; - QString updateStatus = "-"; - - // Verifiy if a change is running and which one is currently doing something - foreach (const QVariant &changeVariant, changes) { - QVariantMap changeMap = changeVariant.toMap(); - - int changeId = changeMap.value("id").toInt(); - bool changeReady = changeMap.value("ready").toBool(); - QString changeKind = changeMap.value("kind").toString(); - QString changeStatus = changeMap.value("status").toString(); - QString changeSummary = changeMap.value("summary").toString(); - - // If there is a change kind "Doing" or "Do" - if ( (changeStatus == "Doing" || changeStatus == "Do") && m_updateChangeKinds.contains(changeKind)) { - // Set the status of the current running change - updateRunning = true; - if (changeStatus == "Doing") { - updateStatus = changeSummary; - qCDebug(dcSnapd()).noquote() << "Current change:" << changeId << (changeReady ? "ready" : "not ready") << changeStatus << changeKind << changeSummary; - - // TODO: calculate the overall percentage of the update process (Do + Doing / Done) - } - } - } - - thing()->setStateValue(snapdControlUpdateRunningStateTypeId, updateRunning); - thing()->setStateValue(snapdControlStatusStateTypeId, updateStatus); - - // If currently an update is running, lets force update available to false if set to true - // keep this below the setStateValue for updateRunning or we might have intermediate states indicating - // no update running and none available - if (updateRunning && thing()->stateValue(snapdControlUpdateAvailableStateTypeId).toBool()) { - thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, false); - } - -} - -void SnapdControl::onConfigureRefreshScheduleFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Set refresh schedule request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - if (!validAsyncResponse(reply->dataMap())) { - qCWarning(dcSnapd()) << "Async refresh configuration request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt(); - reply->deleteLater(); - return; - } - - qCDebug(dcSnapd()) << "Configure refresh schedule finished successfully"; - reply->deleteLater(); -} - -void SnapdControl::onSnapRefreshFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Snap refresh request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - if (!validAsyncResponse(reply->dataMap())) { - qCWarning(dcSnapd()) << "Async refresh request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt(); - } else { - loadRunningChanges(); - } - - reply->deleteLater(); -} - -void SnapdControl::onSnapRevertFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Snap revert request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - if (!validAsyncResponse(reply->dataMap())) { - qCWarning(dcSnapd()) << "Async change request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt();; - } else { - loadRunningChanges(); - } - - reply->deleteLater(); -} - -void SnapdControl::onCheckForUpdatesFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Check for snap updates request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - qCDebug(dcSnapd()) << "Check for available snap updates finished."; - if (reply->dataMap().value("result").toList().isEmpty()) { - qCDebug(dcSnapd()) << "There are no snap updates available."; - thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, false); - } else { - // Print available snap updates - qCDebug(dcSnapd()) << "Following snaps can be updated:"; - foreach (const QVariant &resultVariant, reply->dataMap().value("result").toList()) { - QVariantMap resultMap = resultVariant.toMap(); - qCDebug(dcSnapd()) << " -->" << resultMap.value("name").toString() << resultMap.value("version").toString(); - } - - thing()->setStateValue(snapdControlUpdateAvailableStateTypeId, true); - } - - reply->deleteLater(); -} - -void SnapdControl::onChangeSnapChannelFinished() -{ - SnapdReply *reply = static_cast(sender()); - if (!reply->isValid()) { - qCDebug(dcSnapd()) << "Change snap channel request finished with error" << reply->requestPath(); - reply->deleteLater(); - return; - } - - if (!validAsyncResponse(reply->dataMap())) { - qCWarning(dcSnapd()) << "Async change request finished with error" << reply->dataMap().value("status").toString() << reply->dataMap().value("status-code").toInt(); - } else { - loadRunningChanges(); - } - - reply->deleteLater(); -} - -void SnapdControl::enable() -{ - m_enabled = true; - update(); -} - -void SnapdControl::disable() -{ - m_enabled = false; - - if (m_snapConnection) { - m_snapConnection->close(); - } -} - -void SnapdControl::update() -{ - if (!m_snapConnection) - return; - - if (!available()) - return; - - if (!enabled()) - return; - - // Try to reconnect if unconnected - if (m_snapConnection->state() == QLocalSocket::UnconnectedState) { - m_snapConnection->connectToServer(m_snapdSocketPath, QLocalSocket::ReadWrite); - return; - } - - // Note: this makes sure the state is really connected (including connection initialisation stuff) - if (!m_snapConnection->isConnected()) - return; - - // Update information - if (thing()->stateValue(snapdControlUpdateRunningStateTypeId).toBool()) { - // Note: if an update is running, just load the changes to save system resources - loadRunningChanges(); - } else { - // Normal update - loadSystemInfo(); - loadSnapList(); - loadRunningChanges(); - } -} - -void SnapdControl::snapRefresh() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - QVariantMap request; - request.insert("action", "refresh"); - - qCDebug(dcSnapd()) << "Refresh all snaps"; - SnapdReply *reply = m_snapConnection->post("/v2/snaps", QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onSnapRefreshFinished); -} - -void SnapdControl::changeSnapChannel(const QString &snapName, const QString &channel) -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - QVariantMap request; - request.insert("action", "refresh"); - request.insert("channel", channel); - - qCDebug(dcSnapd()) << "Refresh snap" << snapName << "to channel" << channel; - SnapdReply *reply = m_snapConnection->post(QString("/v2/snaps/%1").arg(snapName), QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onChangeSnapChannelFinished); -} - -void SnapdControl::checkForUpdates() -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - qCDebug(dcSnapd()) << "Checking for available snap updates"; - SnapdReply *reply = m_snapConnection->get("/v2/find?select=refresh", this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onCheckForUpdatesFinished); -} - -void SnapdControl::setPreferredRefreshTime(int startTime) -{ - // Schedule the refresh between startTime and startTime + 59 minutes - QTime start(startTime, 0, 0); - QTime end = start.addSecs(3540); - m_preferredRefreshSchedule = QString("%1-%2").arg(start.toString("h:mm")).arg(end.toString("h:mm")); - qCDebug(dcSnapd()) << "Set preferred refresh schedule to " << m_preferredRefreshSchedule; -} - -void SnapdControl::snapRevert(const QString &snapName) -{ - if (!m_snapConnection) - return; - - if (!m_snapConnection->isConnected()) - return; - - QVariantMap request; - request.insert("action", "revert"); - - qCDebug(dcSnapd()) << "Revert snap" << snapName; - SnapdReply *reply = m_snapConnection->post(QString("/v2/snaps/%1").arg(snapName), QJsonDocument::fromVariant(request).toJson(QJsonDocument::Compact), this); - connect(reply, &SnapdReply::finished, this, &SnapdControl::onSnapRevertFinished); -} diff --git a/snapd/snapdcontrol.h b/snapd/snapdcontrol.h deleted file mode 100644 index 5b24fd34..00000000 --- a/snapd/snapdcontrol.h +++ /dev/null @@ -1,107 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 SNAPDCONTROL_H -#define SNAPDCONTROL_H - -#include -#include - -#include "integrations/thing.h" -#include "snapdconnection.h" - -class SnapdControl : public QObject -{ - Q_OBJECT -public: - explicit SnapdControl(Thing *thing, QObject *parent = nullptr); - - Thing *thing(); - - bool available() const; - bool connected() const; - bool enabled() const; - bool timerBasedSchedule() const; - -private: - Thing *m_device = nullptr; - SnapdConnection *m_snapConnection = nullptr; - - QString m_snapdSocketPath; - bool m_enabled = true; - - QStringList m_updateChangeKinds; - - bool m_timerBasedSchedule = false; - QString m_currentRefreshSchedule; - QString m_preferredRefreshSchedule; - - // Update calls - void loadSystemInfo(); - void loadSnapList(); - void loadRunningChanges(); - - void configureRefreshSchedule(); - - bool validAsyncResponse(const QVariantMap &responseMap); - -private slots: - void onConnectedChanged(const bool &connected); - - // Response handler for different requests - void onLoadSystemInfoFinished(); - void onLoadSnapListFinished(); - void onLoadRunningChangesFinished(); - void onConfigureRefreshScheduleFinished(); - - void onSnapRefreshFinished(); - void onSnapRevertFinished(); - void onCheckForUpdatesFinished(); - void onChangeSnapChannelFinished(); - -signals: - void snapListUpdated(const QVariantList &snapList); - -public slots: - void enable(); - void disable(); - - // Snapd request calls - void update(); - void snapRefresh(); - void checkForUpdates(); - - void setPreferredRefreshTime(int startTime); - - void snapRevert(const QString &snapName); - void changeSnapChannel(const QString &snapName, const QString &channel); -}; - -#endif // SNAPDCONTROL_H diff --git a/snapd/snapdreply.cpp b/snapd/snapdreply.cpp deleted file mode 100644 index b8464282..00000000 --- a/snapd/snapdreply.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 "snapdreply.h" - -QString SnapdReply::requestPath() const -{ - return m_requestPath; -} - -QString SnapdReply::requestMethod() const -{ - return m_requestMethod; -} - -QByteArray SnapdReply::requestRawMessage() const -{ - return m_requestRawMessage; -} - -int SnapdReply::statusCode() const -{ - return m_statusCode; -} - -QString SnapdReply::statusMessage() const -{ - return m_statusMessage; -} - -QHash SnapdReply::header() const -{ - return m_header; -} - -QVariantMap SnapdReply::dataMap() const -{ - return m_dataMap; -} - -bool SnapdReply::isFinished() const -{ - return m_isFinished; -} - -bool SnapdReply::isValid() const -{ - return m_valid; -} - -SnapdReply::SnapdReply(QObject *parent) : - QObject(parent) -{ - -} - -void SnapdReply::setRequestPath(const QString &requestPath) -{ - m_requestPath = requestPath; -} - -void SnapdReply::setRequestMethod(const QString &requestMethod) -{ - m_requestMethod = requestMethod; -} - -void SnapdReply::setRequestRawMessage(const QByteArray &rawMessage) -{ - m_requestRawMessage = rawMessage; -} - -void SnapdReply::setStatusCode(const int &statusCode) -{ - m_statusCode = statusCode; -} - -void SnapdReply::setStatusMessage(const QString &statusMessage) -{ - m_statusMessage = statusMessage; -} - -void SnapdReply::setHeader(const QHash header) -{ - m_header = header; -} - -void SnapdReply::setDataMap(const QVariantMap &dataMap) -{ - m_dataMap = dataMap; -} - -void SnapdReply::setFinished(const bool &valid) -{ - m_isFinished = true; - m_valid = valid; - - emit finished(); -} diff --git a/snapd/snapdreply.h b/snapd/snapdreply.h deleted file mode 100644 index 23e5c067..00000000 --- a/snapd/snapdreply.h +++ /dev/null @@ -1,90 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* -* 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 . -* -* 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 SNAPDREPLY_H -#define SNAPDREPLY_H - -#include -#include -#include - -class SnapdReply : public QObject -{ - Q_OBJECT - - friend class SnapdConnection; - -public: - // Request - QString requestPath() const; - QString requestMethod() const; - QByteArray requestRawMessage() const; - - // Response - int statusCode() const; - QString statusMessage() const; - QHash header() const; - QVariantMap dataMap() const; - - bool isFinished() const; - bool isValid() const; - -private: - explicit SnapdReply(QObject *parent = nullptr); - - QString m_requestPath; - QString m_requestMethod; - QByteArray m_requestRawMessage; - - int m_statusCode; - QString m_statusMessage; - QHash m_header; - QVariantMap m_dataMap; - - bool m_isFinished = false; - bool m_valid = false; - - // Methods for SnapdConnection - void setRequestPath(const QString &requestPath); - void setRequestMethod(const QString &requestMethod); - void setRequestRawMessage(const QByteArray &rawMessage); - - void setStatusCode(const int &statusCode); - void setStatusMessage(const QString &statusMessage); - void setHeader(const QHash header); - void setDataMap(const QVariantMap &dataMap); - void setFinished(const bool &valid = true); - -signals: - void finished(); - -}; - -#endif // SNAPDREPLY_H diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-cs.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-cs.ts deleted file mode 100644 index 1f7ae378..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-cs.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Rozšířený režim - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Automaticky denně obnovit seznam - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canonical - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Aktualizace systému k dispozici změněno - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Poslední aktualizace automatického systému čas změněn - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Poslední aktualizace automatického systému - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Další aktualizace automatického systému čas změněn - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Další aktualizace automatického systému - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Shrnutí - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Popis - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Vývojář - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanál - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Nastavit kanál - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Verze změněna - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Verze - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revize změněna - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revize - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Rolovat zpět k předchozí verzi - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Spustit aktualizaci - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Manager aktualizace - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Manager aktualizace k dispozici změněno - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Manager aktualizace k dispozici - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Aktualizace systému k dispozici - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Aktualizace systému běží - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Aktualizace systému běží změněno - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status změněn - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Název - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanál změněn - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Zkontrolovat aktualizace - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-da.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-da.ts deleted file mode 100644 index a9920a75..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-da.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Avanceret modus - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Tidsplan for automatisk daglig opdatering - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Fast - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Systemopdatering tilgængelig ændret - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Tidspunkt for sidste automatiske systemopdatering ændret - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Sidste automatiske systemopdatering - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Tidspunkt for næste automatiske systemopdatering ændret - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Næste automatiske systemopdatering - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - id - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Sammenfatning - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Beskrivelse - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Udvikler - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Indstil kanal - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version ændret - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revision ændret - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revision - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Gå tilbage til tidligere version - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Start opdatering - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Opdateringsstyring - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Opdateringsstyring tilgængelig ændret - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Opdateringsstyring tilgængelig - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Systemopdatering tilgængelig - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systemopdatering løber - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systemopdatering løber ændret - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status ændret - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Navn - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanal ændret - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Tjek for opdateringer - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-de.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-de.ts deleted file mode 100644 index b24d378b..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-de.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - Snapd - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Erweiterter Modus - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Automatischer täglicher Aktualisierungszeitplan - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canonical - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Systemupdate Verfügbarkeit geändert - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Letztes automatisches Systemupdate geändert - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Letzte automatische Systemaktualisierung - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Nächstes automatisches Systemupdate geändert - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Nächstes automatisches Systemupdate - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Zusammenfassung - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Beschreibung - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Entwickler - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Setze Kanal - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version geändert - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revision geändert - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revision - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Zurücksetzen auf vorhergehende Version - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Starte Systemupdate - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Update Manager - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Update Manager Verfügbarkeit geändert - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Update-Manager verfügbar - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Systemupdate verfügbar - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systemaktualisierung läuft - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systemupdate aktiv geändert - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status geändert - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Name - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanal geändert - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Nach Aktualisierungen suchen - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-en_US.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-en_US.ts deleted file mode 100644 index 3263943b..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-en_US.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-es.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-es.ts deleted file mode 100644 index e01b202a..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-es.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Modo avanzado - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Programación de actualización diaria automática - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canónica - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Actualización disponible del sistema modificada - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Última hora de actualización automática del sistema modificada - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Última actualización automática del sistema - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Próxima hora de actualización automática del sistema modificada - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Próxima actualización automática del sistema - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Estado - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - Identificación - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Resumen - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Descripción - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Desarrollador - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Fijar canal - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versión modificada - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versión - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisión modificada - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisión - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Retroceso a la versión anterior - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Iniciar actualización - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Actualizar gestor - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Actualización de gestor disponible modificada - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Actualización de gestor disponible - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Actualización de sistema disponible - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Actualización de sistema en funcionamiento - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Actualización de sistema en funcionamiento modificada - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Estado modificado - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Nombre - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal modificado - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Buscar actualizaciones - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-fr.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-fr.ts deleted file mode 100644 index 3e460f05..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-fr.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Mode avancé - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Calendrier de rafraîchissement quotidien automatique - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canonique - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Disponibilité de mise à jour du système modifiée - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Dernière heure de mise à jour automatique du système modifiée - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Dernière mise à jour automatique du système - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Prochaine heure de mise à jour automatique du système modifiée - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Prochaine mise à jour automatique du système - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Statut - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Récapitulatif - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Description - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Développeur - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Définir la chaîne - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version modifiée - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Version - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Révision modifiée - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Révision - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Retour à la version précédente - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Démarrer la mise a jour - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Gestionnaire de mise à jour - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Disponibilité du gestionnaire de mise à jour modifiée - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Gestionnaire de mise à jour disponible - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Mise à jour du système disponible - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Mise à jour du système en cours - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Le cours de la mise à jour du système a changé - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Statut modifié - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Nom - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal modifié - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Vérifier les mises à jour - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-it.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-it.ts deleted file mode 100644 index 07db6a09..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-it.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Modalità avanzata - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Programma di aggiornamento giornaliero automatico - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canonico - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Aggiornamento del sistema disponibile modificato - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Ora dell'ultimo aggiornamento automatico del sistema cambiato - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Ultimo aggiornamento automatico del sistema - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Ora del prossimo aggiornamento automatico del sistema cambiato - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Prossimo aggiornamento automatico del sistema - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Stato - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Sommario - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Descrizione - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Sviluppatore - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canale - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Imposta canale - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versione modificata - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versione - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisione modificata - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisione - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Ripristino della versione precedente - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Inizia aggiornamento - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Gestione aggiornamento - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Gestione aggiornamento disponibile cambiato - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Gestione aggiornamento disponibile - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Aggiornamento del sistema disponibile - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Esecuzione aggiornamento del sistema - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Esecuzione aggiornamento del sistema modificata - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Stato modificato - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Nome - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canale modificato - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Verifica aggiornamenti - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-nl.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-nl.ts deleted file mode 100644 index 7a5b2d87..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-nl.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Geavanceerde modus - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Automatisch dagelijks vernieuwingsschema - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canonical - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Beschikbaarheid systeemupdate - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Laatste tijd automatische systeemupdate bijgewerkt - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Laatste automatische systeemupdate - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Volgende tijd automatische systeemupdate bijgewerkt - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Volgende automatische systeemupdate - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Samenvatting - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Beschrijving - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Ontwikkelaar - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanaal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanaal instellen - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versie gewijzigd - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versie - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisie gewijzigd - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisie - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Terugdraaien naar vorige versie - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Update beginnen - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Update-manager - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Update-manager beschikbaar gewijzigd - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Update-manager beschikbaar - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Systeemupdate beschikbaar - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systeemupdate wordt uitgevoerd - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Systeemupdate wordt uitgevoerd gewijzigd - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Status gewijzigd - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Naam - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Kanaal gewijzigd - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Controleren op updates - - - diff --git a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-pt.ts b/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-pt.ts deleted file mode 100644 index 764bd8ca..00000000 --- a/snapd/translations/b82bce59-59bf-48b3-b781-54a6f45800f3-pt.ts +++ /dev/null @@ -1,235 +0,0 @@ - - - - - Snapd - - - Snapd - The name of the plugin Snapd ({b82bce59-59bf-48b3-b781-54a6f45800f3}) - - - - - Advanced mode - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {017fe4c5-fc41-41fe-8e67-08fdaccb89ea}) - Modo avançado - - - - Automatic daily refresh schedule - The name of the ParamType (ThingClass: snapd, Type: plugin, ID: {d2e697d1-9a68-4666-bf40-8d70fa694eec}) - Agenda de atualização automática diária - - - - Canonical - The name of the vendor ({60582ddf-32ea-4fcd-a6f2-f3beaaf21517}) - Canónico - - - - System update available changed - The name of the EventType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Alterada atualização do sistema disponível - - - - Last automatic system update time changed - The name of the EventType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Alterado último tempo de atualização automática do sistema - - - - - Last automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: lastUpdateTime, ID: {c671545a-6bde-4c08-8e37-0d256841a3a5}) ----------- -The name of the StateType ({c671545a-6bde-4c08-8e37-0d256841a3a5}) of ThingClass snapdControl - Última atualização automática do sistema - - - - Next automatic system update time changed - The name of the EventType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Alterada próxima atualização automática do sistema - - - - - Next automatic system update - The name of the ParamType (ThingClass: snapdControl, EventType: nextUpdateTime, ID: {122c2423-a1d9-400f-80f8-b1f798975914}) ----------- -The name of the StateType ({122c2423-a1d9-400f-80f8-b1f798975914}) of ThingClass snapdControl - Próxima atualização automática do sistema - - - - - Status - The name of the ParamType (ThingClass: snapdControl, EventType: status, ID: {4987aca3-3916-4cb3-938f-df6c99d04dbf}) ----------- -The name of the StateType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Estado - - - - ID - The name of the ParamType (ThingClass: snap, Type: thing, ID: {9afb98fb-f717-4f4c-8009-1a6514054c5f}) - ID - - - - Summary - The name of the ParamType (ThingClass: snap, Type: thing, ID: {12b9a65f-970b-49b5-b1d0-1625fc6d8758}) - Resumo - - - - Description - The name of the ParamType (ThingClass: snap, Type: thing, ID: {fe24c61b-e154-4259-b7ca-6f0602e9d1c3}) - Descrição - - - - Developer - The name of the ParamType (ThingClass: snap, Type: thing, ID: {76ead9c5-0a18-40a2-b31d-f6bb6dfea0a5}) - Desenvolvedor - - - - - - Channel - The name of the ParamType (ThingClass: snap, ActionType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the ParamType (ThingClass: snap, EventType: channel, ID: {7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) ----------- -The name of the StateType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal - - - - Set channel - The name of the ActionType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Configurar canal - - - - Version changed - The name of the EventType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versão alterada - - - - - Version - The name of the ParamType (ThingClass: snap, EventType: version, ID: {532a95f3-db29-427e-bb32-d5a22029e586}) ----------- -The name of the StateType ({532a95f3-db29-427e-bb32-d5a22029e586}) of ThingClass snap - Versão - - - - Revision changed - The name of the EventType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisão alterada - - - - - Revision - The name of the ParamType (ThingClass: snap, EventType: revision, ID: {f26a6404-e011-11e7-9224-2350048461eb}) ----------- -The name of the StateType ({f26a6404-e011-11e7-9224-2350048461eb}) of ThingClass snap - Revisão - - - - Rollback to previous version - The name of the ActionType ({e061dee6-62fc-45cc-9c9f-403c2be52939}) of ThingClass snap - Retroceder para versão anterior - - - - Start update - The name of the ActionType ({45626b75-f09d-4dd1-b6c4-ee33201b47b0}) of ThingClass snapdControl - Iniciar atualização - - - - Update manager - The name of the ThingClass ({d90cda58-4d8c-4b7f-a982-38e56a95b72a}) - Gestor de atualizações - - - - Update manager available changed - The name of the EventType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Gestor de atualizações - - - - - Update manager available - The name of the ParamType (ThingClass: snapdControl, EventType: snapdAvailable, ID: {6b662b3e-fd12-4f24-be77-aec066f16d8c}) ----------- -The name of the StateType ({6b662b3e-fd12-4f24-be77-aec066f16d8c}) of ThingClass snapdControl - Disponível gestor de atualizações - - - - - System update available - The name of the ParamType (ThingClass: snapdControl, EventType: updateAvailable, ID: {a6b1d24b-d523-4516-9bce-5b467e5e09b2}) ----------- -The name of the StateType ({a6b1d24b-d523-4516-9bce-5b467e5e09b2}) of ThingClass snapdControl - Disponível atualização do sistema - - - - - System update running - The name of the ParamType (ThingClass: snapdControl, EventType: updateRunning, ID: {01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) ----------- -The name of the StateType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Atualização do sistema em curso - - - - Snap - The name of the ThingClass ({ff0840d7-fcfc-4403-9d9f-301610d5a437}) - Snap - - - - System update running changed - The name of the EventType ({01ca7a22-5607-4c5e-a465-a2ae7e8b529c}) of ThingClass snapdControl - Alterada atualização do sistema em curso - - - - Status changed - The name of the EventType ({4987aca3-3916-4cb3-938f-df6c99d04dbf}) of ThingClass snapdControl - Estado alterado - - - - Name - The name of the ParamType (ThingClass: snap, Type: thing, ID: {4f38614d-8be0-48dc-a24d-cee9ff1f2a89}) - Nome - - - - Channel changed - The name of the EventType ({7be2b61e-3f59-4b92-b2bb-50d027bb92ff}) of ThingClass snap - Canal alterado - - - - Check for updates - The name of the ActionType ({4738f2c9-666e-45b9-91d3-7bcbf722b669}) of ThingClass snapdControl - Verificar atualizações - - -