diff --git a/eq-3/README.md b/eq-3/README.md index a16e98f6..42373281 100644 --- a/eq-3/README.md +++ b/eq-3/README.md @@ -1,28 +1,38 @@ # eQ-3 -This plugin allows to find and control devices from Max!(eQ-3). To use this devices, you need at least -one [Max! Cube LAN Gateway](http://www.eq-3.de/max-heizungssteuerung-produktdetail/items/bc-lgw-o-tw.html) -in you local network. Once the cube is connected (DHCP), you can auto detect the cube in the network and -add it to your [nymea](https://nymea.io) devices. Also more than one cube in the network is supported. All -devices, which are connected to a cube, will be autogenerated. For the setup of a cube, the original -software is recomanded (min/max setpoint temperature, weekly program...). +This plugin allows to find and control radiation equipment by EQ-3. -## Supported devices +Currently supported devices are the [EQ-3 Max! Cube LAN Gateway](http://www.eq-3.de/max-heizungssteuerung-produktdetail/items/bc-lgw-o-tw.html) +as well as [Eqiva Bluetooth Smart Radiator Thermostat](https://www.eq-3.com/products/eqiva/bluetooth-smart-radiator-thermostat.html). + +To use this plugin, you need either a Max! Cube LAN Gateway with radiator or wall thermostats connected, or one or more +Eqiva Bluetooth Smart Radiator Thermostats within the range of the Bluetooth signal from your nymea system. + +### Eqiva Bluetooth Smart Radiator Thermostat + +In order to use the [Eqiva Bluetooth Smart Radiator Thermostat](https://www.eq-3.com/products/eqiva/bluetooth-smart-radiator-thermostat.html) +with nymea, the nymea system is required to have Bluetooth support and the nymea system and the Thermostat need to be located within +the range of Bluetooth between each other. Once the thermostat is connected to the radiator and calibrated for it (refer to the +Eqiva Smart Bluetooth Radiator Thermostat Manual) it can be added to nymea through the device setup. + +Note: It is recommended to set the Radiator Thermostat mode to "Manual" if nymea should be controlling the target temperature. When the +radiator thermostat's mode is set to "Auto", it will manage temperature settings on its own and disregard nymea's commands. ### Max! Cube LAN Gateway -This [cube](http://www.eq-3.de/max-heizungssteuerung-produktdetail/items/bc-lgw-o-tw.html) can be discovered in the network. Every device, which is connected with the cube, will be appear automatically, once the cube is configrued and -added to nymea. +Once the cube is connected to the same network as the nymea system, it can be added to nymea through. Having connected multiple +Max! Cubes to the same network is also supported. Thermostats connected to the cube will be automatically detected and added +to the nymea system. If using the Max! Cube with nymea, it is recommended to keep the Cube's settings at factory defaults as +schedules set up in the Cube will be conflicting with schedules set through nymea. ### Max! Wall Thermostat -In order to use this device, you need a [Max! Cube LAN Gateway](http://www.eq-3.de/max-heizungssteuerung-produktdetail/ -items/bc-lgw-o-tw.html). A [MAX! Wall Thermostat](http://www.eq-3.de/max-raumloesung-produktdetail/items/bc-tc-c-wm.html) can not be added, -it will appear automatically in the device list, once you add it to the cube. +In order to use a [MAX! Wall Thermostat](http://www.eq-3.de/max-raumloesung-produktdetail/items/bc-tc-c-wm.html) with nymea a +Max! Cube LAN Gateway is required. Once the thermostat is connected to the Max! Cube, it will automatically appear in nymea, +provided the Cube has been set up in nymea. ### Max! Radiator Thermostat -In order to use this device, you need a [Max! Cube LAN Gateway](http://www.eq-3.de/max-heizungssteuerung-produktdetail/ -items/bc-lgw-o-tw.html). A [MAX! Radiator Thermostat](http://www.eq-3.de/max-heizungssteuerung-produktdetail/items/bc-rt-trx-cyg.html) can not be added, -it will appear automatically in the device list, once you add it to the cube. - +In order to use a [MAX! Radiator Thermostat](http://www.eq-3.de/max-heizungssteuerung-produktdetail/items/bc-rt-trx-cyg.html) +with nymea a Max! Cube LAN Gateway is required. Once the thermostat is connected to the Max! Cube, it will automatically appear in nymea, +provided the Cube has been set up in nymea. diff --git a/eq-3/deviceplugineq-3.cpp b/eq-3/deviceplugineq-3.cpp index 7fd73eac..26ab4906 100644 --- a/eq-3/deviceplugineq-3.cpp +++ b/eq-3/deviceplugineq-3.cpp @@ -86,7 +86,6 @@ void DevicePluginEQ3::discoverDevices(DeviceDiscoveryInfo *info) return; } if (deviceClassId == eqivaBluetoothDeviceClassId) { - EqivaBluetoothDiscovery *eqivaBluetoothDiscovery = new EqivaBluetoothDiscovery(hardwareManager()->bluetoothLowEnergyManager(), this); // Clean up the discovery when the DiscoveryInfo goes away... @@ -97,7 +96,7 @@ void DevicePluginEQ3::discoverDevices(DeviceDiscoveryInfo *info) qCDebug(dcEQ3()) << "Discovery finished"; foreach (const QString &result, results) { - qCDebug(dcEQ3()) << "Discovered device" << result; + qCDebug(dcEQ3()) << "Discovered EQ-3 device" << result; DeviceDescriptor descriptor(eqivaBluetoothDeviceClassId, "Eqiva Bluetooth Thermostat", result); ParamList params; params << Param(eqivaBluetoothDeviceMacAddressParamTypeId, result); @@ -207,6 +206,11 @@ void DevicePluginEQ3::setupDevice(DeviceSetupInfo *info) connect(eqivaDevice, &EqivaBluetooth::valveOpenChanged, device, [device, eqivaDevice](){ device->setStateValue(eqivaBluetoothValveOpenStateTypeId, eqivaDevice->valveOpen()); }); + // Battery critical state + device->setStateValue(eqivaBluetoothBatteryCriticalStateTypeId, eqivaDevice->batteryCritical()); + connect(eqivaDevice, &EqivaBluetooth::batteryCriticalChanged, device, [device, eqivaDevice](){ + device->setStateValue(eqivaBluetoothBatteryCriticalStateTypeId, eqivaDevice->batteryCritical()); + }); } info->finish(Device::DeviceErrorNoError); @@ -335,6 +339,9 @@ void DevicePluginEQ3::executeAction(DeviceActionInfo *info) } connect(eqivaDevice, &EqivaBluetooth::commandResult, info, [info, commandId](int commandIdResult, bool success){ + if (!success) { + qCWarning(dcEQ3()) << "Error writing characteristic"; + } if (commandId == commandIdResult) { info->finish(success ? Device::DeviceErrorNoError : Device::DeviceErrorHardwareFailure); } diff --git a/eq-3/deviceplugineq-3.json b/eq-3/deviceplugineq-3.json index 527b49f2..eb8d6842 100644 --- a/eq-3/deviceplugineq-3.json +++ b/eq-3/deviceplugineq-3.json @@ -532,7 +532,7 @@ "id": "3c51327b-a823-4479-bd4b-f4ba64267ed8", "name": "eqivaBluetooth", "displayName": "Eqiva Bluetooth Smart Radiator Thermostat", - "interfaces": ["heating", "thermostat", "connectable"], + "interfaces": ["heating", "thermostat", "connectable", "battery"], "createMethods": ["discovery"], "setupMethod": "JustAdd", "paramTypes": [ @@ -628,6 +628,14 @@ "minValue": 0, "maxValue": 100, "defaultValue": 0 + }, + { + "id": "174f6388-0fbe-4d04-82ea-99c63bcf6f5a", + "name": "batteryCritical", + "displayName": "Battery critical", + "displayNameEvent": "Battery critical changed", + "type": "bool", + "defaultValue": false } ] } diff --git a/eq-3/eqivabluetooth.cpp b/eq-3/eqivabluetooth.cpp index 135a67f3..9ae727ec 100644 --- a/eq-3/eqivabluetooth.cpp +++ b/eq-3/eqivabluetooth.cpp @@ -5,11 +5,41 @@ #include #include -const QBluetoothUuid eqivaServiceUuid = QBluetoothUuid(QString("{3e135142-654f-9090-134a-a6ff5bb77046}")); + +const QBluetoothUuid eqivaCommandServiceUuid = QBluetoothUuid(QString("{3e135142-654f-9090-134a-a6ff5bb77046}")); +//I | EQ3: Service discovered: "Unknown Service" "{3e135142-654f-9090-134a-a6ff5bb77046}" +//I | EQ3: C: --> {3fa4585a-ce4a-3bad-db4b-b8df8179ea09} (Handle 0x411 Name: ): 0313091e0b2936000000000000000000  )6 +//I | EQ3: C: --> {d0e8434d-cd29-0996-af41-6c90f4e0eb2a} (Handle 0x421 Name: ): 00000000000000000000000000000000 +//I | EQ3: D: --> {00002902-0000-1000-8000-00805f9b34fb} (Handle 0x430 Name: Client Characteristic Configuration): 0100 + +const QBluetoothUuid eqivaGapServiceUuid = QBluetoothUuid(QString("00001800-0000-1000-8000-00805f9b34fb")); +//I | EQ3: Service discovered: "Generic Access" "{00001800-0000-1000-8000-00805f9b34fb}" +//I | EQ3: C: --> {00002a00-0000-1000-8000-00805f9b34fb} (Handle 0x111 Name: GAP Device Name): 43432d52542d424c45CC-RT-BLE +//I | EQ3: C: --> {00002a01-0000-1000-8000-00805f9b34fb} (Handle 0x121 Name: GAP Appearance): 0000 +//I | EQ3: C: --> {00002a02-0000-1000-8000-00805f9b34fb} (Handle 0x131 Name: GAP Peripheral Privacy Flag): 00 +//I | EQ3: C: --> {00002a03-0000-1000-8000-00805f9b34fb} (Handle 0x141 Name: GAP Reconnection Address): +//I | EQ3: C: --> {00002a04-0000-1000-8000-00805f9b34fb} (Handle 0x151 Name: GAP Peripheral Preferred Connection Parameters): 0000000000000000 + +const QBluetoothUuid eqivaGattServiceUuid = QBluetoothUuid(QString("00001801-0000-1000-8000-00805f9b34fb")); +//I | EQ3: Service discovered: "Generic Attribute" "{00001801-0000-1000-8000-00805f9b34fb}" +//I | EQ3: C: --> {00002a05-0000-1000-8000-00805f9b34fb} (Handle 0x211 Name: GATT Service Changed): 00000000 +//I | EQ3: D: --> {00002902-0000-1000-8000-00805f9b34fb} (Handle 0x220 Name: Client Characteristic Configuration): 0200 + +const QBluetoothUuid eqivaDeviceInfoServiceUuid = QBluetoothUuid(QString("0000180a-0000-1000-8000-00805f9b34fb")); +//I | EQ3: Service discovered: "Device Information" "{0000180a-0000-1000-8000-00805f9b34fb}" +//I | EQ3: C: --> {00002a29-0000-1000-8000-00805f9b34fb} (Handle 0x311 Name: Manufacturer Name String): 65712d33eq-3 +//I | EQ3: C: --> {00002a24-0000-1000-8000-00805f9b34fb} (Handle 0x321 Name: Model Number String): 43432d52542d424c45CC-RT-BLE + +const QBluetoothUuid eqivaUnknownServiceUuid = QBluetoothUuid(QString("9e5d1e47-5c13-43a0-8635-82ad38a1386f")); +//I | EQ3: Service discovered: "Unknown Service" "{9e5d1e47-5c13-43a0-8635-82ad38a1386f}" +//I | EQ3: C: --> {e3dd50bf-f7a7-4e99-838e-570a086c666b} (Handle 0xff02 Name: ): +//I | EQ3: D: --> {00002902-0000-1000-8000-00805f9b34fb} (Handle 0xff03 Name: Client Characteristic Configuration): 0000 +//I | EQ3: C: --> {92e86c7a-d961-4091-b74f-2409e72efe36} (Handle 0xff05 Name: ): +//I | EQ3: C: --> {347f7608-2e2d-47eb-913b-75d4edc4de3b} (Handle 0xff07 Name: ): 00100200 + const QBluetoothUuid commandCharacteristicUuid = QBluetoothUuid(QString("3fa4585a-ce4a-3bad-db4b-b8df8179ea09")); const QBluetoothUuid notificationCharacteristicUuid = QBluetoothUuid(QString("d0e8434d-cd29-0996-af41-6c90f4e0eb2a")); -const QBluetoothUuid eqivaDeviceInfoServiceUuid = QBluetoothUuid(QString("9e5d1e47-5c13-43a0-8635-82ad38a1386f")); // Protocol // Commands: @@ -37,14 +67,14 @@ const quint8 modeBoost1 = 0x0C; // at the end it returns to automatic mode const quint8 modeBoost2 = 0x0D; // at the end it returns to manual mode const quint8 modeBoost3 = 0x0E; // at the end it returns to holiday mode -const quint8 lockOff = 0x00; -const quint8 windowLockOn = 0x10; -const quint8 keyLockOn = 0x20; -const quint8 windowAndKeyOn = 0x30; +const quint8 lockOff = 0x00; +const quint8 windowLockOn = 0x10; +const quint8 keyLockOn = 0x20; +const quint8 batteryCriticalOn = 0x80; -const quint8 setModeAuto = 0x00; -const quint8 setModeManual = 0x40; -const quint8 setModeHoliday = 0x40; // Same as manual but with a time limit +const quint8 setModeAuto = 0x00; +const quint8 setModeManual = 0x40; +const quint8 setModeHoliday = 0x40; // Same as manual but with a time limit EqivaBluetooth::EqivaBluetooth(BluetoothLowEnergyManager *bluetoothManager, const QBluetoothAddress &hostAddress, const QString &name, QObject *parent): QObject(parent), @@ -57,9 +87,30 @@ EqivaBluetooth::EqivaBluetooth(BluetoothLowEnergyManager *bluetoothManager, cons connect(m_bluetoothDevice, &BluetoothLowEnergyDevice::stateChanged, this, &EqivaBluetooth::controllerStateChanged); m_bluetoothDevice->connectDevice(); - m_refreshTimer.setInterval(30000); + m_refreshTimer.setInterval(5000); m_refreshTimer.setSingleShot(true); connect(&m_refreshTimer, &QTimer::timeout, this, &EqivaBluetooth::sendDate); + + m_reconnectTimer.setSingleShot(true); + connect(&m_reconnectTimer, &QTimer::timeout, this, [this](){ + qCDebug(dcEQ3()) << m_name << "Trying to reconnect"; + m_reconnectAttempt++; + m_bluetoothDevice->connectDevice(); + }); + + m_commandTimeout.setInterval(3000); + m_commandTimeout.setSingleShot(true); + connect(&m_commandTimeout, &QTimer::timeout, this, [this](){ + // Put current command back to the queue as it didn't succeed + qCWarning(dcEQ3()) << m_name << "Command timed out:" << m_currentCommand.id << m_currentCommand.name << "Putting command back to queue"; + m_commandQueue.prepend(m_currentCommand); + m_currentCommand = Command(); + + // and reset the connection + if (m_bluetoothDevice->connected()) { + m_bluetoothDevice->disconnectDevice(); + } + }); } EqivaBluetooth::~EqivaBluetooth() @@ -175,65 +226,118 @@ quint8 EqivaBluetooth::valveOpen() const return m_valveOpen; } +bool EqivaBluetooth::batteryCritical() const +{ + return m_batteryCritical; +} + void EqivaBluetooth::controllerStateChanged(const QLowEnergyController::ControllerState &state) { - qCDebug(dcEQ3()) << m_name << "Bluetooth device state changed:" << state; + if (state == QLowEnergyController::ConnectingState) { + // Make sure the reconnect timer is stopped when we're starting a new attempt + m_reconnectTimer.stop(); + return; + } + if (state == QLowEnergyController::UnconnectedState) { int delay = qMin(m_reconnectAttempt, 30); qWarning(dcEQ3()) << m_name << "Eqiva device disconnected. Reconnecting in" << delay << "sec"; m_available = false; emit availableChanged(); - if (m_currentCommand.id != -1) { - qCDebug(dcEQ3()) << m_name << "Putting command" << m_currentCommand.id << m_currentCommand.name << "back to queue"; - m_commandQueue.prepend(m_currentCommand); - m_currentCommand = Command(); - } - - QTimer::singleShot(delay * 1000, this, [this](){ - qCDebug(dcEQ3()) << m_name << "Trying to reconnect"; - m_reconnectAttempt++; - m_bluetoothDevice->connectDevice(); - }); + m_reconnectTimer.start(delay * 1000); } if (state != QLowEnergyController::DiscoveredState) { return; } + + // DEBUG: Enabling this will read all the services and their characteristics and print them out. + // qCDebug(dcEQ3()) << m_name << "Discovered: Service UUIDS:" << m_bluetoothDevice->serviceUuids(); - m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(eqivaServiceUuid, this); -// m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(QBluetoothUuid(QString("00001800-0000-1000-8000-00805f9b34fb")), this); -// m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(QBluetoothUuid(QString("00001801-0000-1000-8000-00805f9b34fb")), this); -// m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(QBluetoothUuid(QString("0000180a-0000-1000-8000-00805f9b34fb")), this); -// m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(QBluetoothUuid(QString("9e5d1e47-5c13-43a0-8635-82ad38a1386f")), this); - connect(m_eqivaService, &QLowEnergyService::stateChanged, this, &EqivaBluetooth::serviceStateChanged); -// connect(m_eqivaService, &QLowEnergyService::characteristicRead, this, [](const QLowEnergyCharacteristic &info, const QByteArray &value){ -// qCDebug(dcEQ3()) << m_name << "Characteristic read:" << info.name() << info.uuid() << value.toHex(); +// QBluetoothUuid uuid = QBluetoothUuid(QString("{3e135142-654f-9090-134a-a6ff5bb77046}")); +//// QBluetoothUuid uuid = QBluetoothUuid(QString("00001800-0000-1000-8000-00805f9b34fb")); +//// QBluetoothUuid uuid = QBluetoothUuid(QString("00001801-0000-1000-8000-00805f9b34fb")); +//// QBluetoothUuid uuid = QBluetoothUuid(QString("0000180a-0000-1000-8000-00805f9b34fb")); // Manufacturer name and model name +//// QBluetoothUuid uuid = QBluetoothUuid(QString("9e5d1e47-5c13-43a0-8635-82ad38a1386f")); + + +// QLowEnergyService *service = m_bluetoothDevice->controller()->createServiceObject(uuid); +// service->discoverDetails(); +// connect(service, &QLowEnergyService::stateChanged, this, [service](QLowEnergyService::ServiceState newState){ +// if (newState != QLowEnergyService::ServiceDiscovered) { +// return; +// } +// qCDebug(dcEQ3()) << "Service discovered:" << service->serviceName() << service->serviceUuid(); +// foreach (const QLowEnergyCharacteristic &characteristic, service->characteristics()) { +// qCDebug(dcEQ3()).nospace().noquote() << "C: --> " << characteristic.uuid().toString() << " (Handle 0x" << QString("%1").arg(characteristic.handle(), 0, 16) << " Name: " << characteristic.name() << "): 0x" << characteristic.value().toHex() << " " << qUtf8Printable(characteristic.value()); +// foreach (const QLowEnergyDescriptor &descriptor, characteristic.descriptors()) { +// qCDebug(dcEQ3()).nospace().noquote() << "D: --> " << descriptor.uuid().toString() << " (Handle 0x" << QString("%2").arg(descriptor.handle(), 0, 16) << " Name: " << descriptor.name() << "): 0x" << descriptor.value().toHex() << " " << qUtf8Printable(characteristic.value()); +// } +//// service->readCharacteristic(characteristic); +// } + // }); + +// return; + // DEBUG END + + m_eqivaService = m_bluetoothDevice->controller()->createServiceObject(eqivaCommandServiceUuid, this); + if (!m_eqivaService) { + qCWarning(dcEQ3()) << "Failed to create Service Object for service" << eqivaCommandServiceUuid; + return; + } + + connect(m_eqivaService, &QLowEnergyService::stateChanged, this, &EqivaBluetooth::serviceStateChanged); + connect(m_eqivaService, &QLowEnergyService::characteristicRead, this, [this](const QLowEnergyCharacteristic &info, const QByteArray &value){ + qCDebug(dcEQ3()) << m_name << "Characteristic read:" << info.name() << info.uuid() << value.toHex(); + + QByteArray data(value); + QDataStream stream(&data, QIODevice::ReadOnly); + quint8 header; + stream >> header; + quint8 notificationType; + stream >> notificationType; + quint8 lockAndMode; + stream >> lockAndMode; + stream >> m_valveOpen; + quint8 undefined; + stream >> undefined; + quint8 rawTemp; + stream >> rawTemp; + + qCDebug(dcEQ3()) << "**** header" << header << "type" << notificationType << "lock/mode" << lockAndMode << "valve:" << m_valveOpen << "temp" << rawTemp; + + }); connect(m_eqivaService, &QLowEnergyService::characteristicWritten, this, [this](const QLowEnergyCharacteristic &info, const QByteArray &value){ - qCDebug(dcEQ3()) << m_name << "Characteristic written:" << info.name() << info.uuid() << value.toHex(); + Q_UNUSED(info) // We're only writing one... + Q_UNUSED(value) + qCDebug(dcEQ3()) << m_name << "Command sent:" << m_currentCommand.id << m_currentCommand.name; + m_commandTimeout.stop(); emit commandResult(m_currentCommand.id, true); m_currentCommand.id = -1; processCommandQueue(); +// m_eqivaService->readCharacteristic(notificationCharacteristicUuid); + }); + connect(m_eqivaService, &QLowEnergyService::descriptorWritten, this, [this](const QLowEnergyDescriptor &info, const QByteArray &value){ + qCDebug(dcEQ3()) << m_name << "Descriptor written" << info.uuid() << value; }); connect(m_eqivaService, &QLowEnergyService::characteristicChanged, this, &EqivaBluetooth::characteristicChanged); + + qCDebug(dcEQ3()) << "Discovering service details"; m_eqivaService->discoverDetails(); } void EqivaBluetooth::serviceStateChanged(QLowEnergyService::ServiceState newState) { - qCDebug(dcEQ3()) << m_name << "Service state changed:" << newState; if (newState != QLowEnergyService::ServiceDiscovered) { return; } + qCDebug(dcEQ3()) << m_name << "Service details discovered"; - m_available = true; - m_reconnectAttempt = 0; - emit availableChanged(); - -// // Debug... + // DEBUG // foreach (const QLowEnergyCharacteristic &characteristic, m_eqivaService->characteristics()) { // qCDebug(dcEQ3()).nospace().noquote() << "C: --> " << characteristic.uuid().toString() << " (Handle 0x" << QString("%1").arg(characteristic.handle(), 0, 16) << " Name: " << characteristic.name() << "): " << characteristic.value().toHex() << characteristic.value(); // foreach (const QLowEnergyDescriptor &descriptor, characteristic.descriptors()) { @@ -241,12 +345,26 @@ void EqivaBluetooth::serviceStateChanged(QLowEnergyService::ServiceState newStat // } // } + m_available = true; + m_reconnectAttempt = 0; + emit availableChanged(); + sendDate(); + + // Enable notifications + QLowEnergyCharacteristic characteristic = m_eqivaService->characteristic(notificationCharacteristicUuid); + QLowEnergyDescriptor notificationDescriptor = characteristic.descriptor(QBluetoothUuid::ClientCharacteristicConfiguration); + m_eqivaService->writeDescriptor(notificationDescriptor, QByteArray::fromHex("0100")); } void EqivaBluetooth::characteristicChanged(const QLowEnergyCharacteristic &info, const QByteArray &value) { - qCDebug(dcEQ3()) << m_name << "Notification received" << info.uuid() << value.toHex(); + if (info.uuid() != notificationCharacteristicUuid) { + qCWarning(dcEQ3()) << m_name << "Received a notification from a characteristic we did't expect:" << info.uuid() << value.toHex(); + return; + } + m_refreshTimer.start(); + QByteArray data(value); QDataStream stream(&data, QIODevice::ReadOnly); quint8 header; @@ -254,7 +372,6 @@ void EqivaBluetooth::characteristicChanged(const QLowEnergyCharacteristic &info, if (header == notifyHeader) { quint8 notificationType; stream >> notificationType; - if (notificationType == notifyStatus) { quint8 lockAndMode; stream >> lockAndMode; @@ -265,15 +382,17 @@ void EqivaBluetooth::characteristicChanged(const QLowEnergyCharacteristic &info, stream >> rawTemp; quint8 lock = (lockAndMode & 0xF0); - m_locked = (lock == keyLockOn) || (lock == windowAndKeyOn); - m_windowOpen = (lock == windowLockOn) || (lock == windowAndKeyOn); + m_locked = (lock & keyLockOn); + m_windowOpen = (lock & windowLockOn); + m_batteryCritical = (lock & batteryCriticalOn); + quint8 mode = (lockAndMode & 0x0F); m_targetTemp = 1.0 * rawTemp / 2; m_enabled = m_targetTemp >= 5; if (m_targetTemp < 5) { m_targetTemp = 5; } - qCDebug(dcEQ3()) << m_name << "Status notification received: Enabled:" << m_enabled << "Temp:" << m_targetTemp << "Keylock:" << m_locked << "Window open:" << m_windowOpen << "Mode:" << mode << "Valve open:" << m_valveOpen << "Boost:" << m_boostEnabled; + qCDebug(dcEQ3()) << m_name << "Status notification received: Enabled:" << m_enabled << "Temp:" << m_targetTemp << "Keylock:" << m_locked << "Window open:" << m_windowOpen << "Mode:" << mode << "Valve open:" << m_valveOpen << "Boost:" << m_boostEnabled << "Battery critical" << m_batteryCritical; m_boostEnabled = false; switch (mode) { @@ -307,6 +426,7 @@ void EqivaBluetooth::characteristicChanged(const QLowEnergyCharacteristic &info, emit windowOpenChanged(); emit targetTemperatureChanged(); emit valveOpenChanged(); + emit batteryCriticalChanged(); m_refreshTimer.start(); } else if (notificationType == notifyProfile) { @@ -349,11 +469,9 @@ void EqivaBluetooth::sendDate() int EqivaBluetooth::enqueue(const QString &name, const QByteArray &data) { - static int nextId = 0; - Command cmd; cmd.name = name; - cmd.id = nextId++; + cmd.id = m_nextCommandId++; cmd.data = data; m_commandQueue.append(cmd); processCommandQueue(); @@ -368,7 +486,6 @@ void EqivaBluetooth::processCommandQueue() } if (m_commandQueue.isEmpty()) { - qCDebug(dcEQ3()) << m_name << "Command queue is empty. Nothing to do..."; return; } @@ -379,6 +496,7 @@ void EqivaBluetooth::processCommandQueue() } m_currentCommand = m_commandQueue.takeFirst(); + m_commandTimeout.start(); qCDebug(dcEQ3()) << m_name << "Sending command" << m_currentCommand.id << m_currentCommand.name << m_currentCommand.data.toHex(); writeCharacteristic(commandCharacteristicUuid, m_currentCommand.data); } @@ -422,9 +540,8 @@ void EqivaBluetoothDiscovery::deviceDiscoveryDone() QStringList results; - qCDebug(dcEQ3()) << "Discovery finished"; foreach (const QBluetoothDeviceInfo &deviceInfo, reply->discoveredDevices()) { - qCDebug(dcEQ3()) << "Discovered device" << deviceInfo.name(); + qCDebug(dcEQ3()) << "Discovered Bluetooth device" << deviceInfo.name() << deviceInfo.address().toString(); if (deviceInfo.name().contains("CC-RT-BLE")) { results.append(deviceInfo.address().toString()); } diff --git a/eq-3/eqivabluetooth.h b/eq-3/eqivabluetooth.h index bc5f5dd8..402da54b 100644 --- a/eq-3/eqivabluetooth.h +++ b/eq-3/eqivabluetooth.h @@ -40,6 +40,8 @@ public: quint8 valveOpen() const; + bool batteryCritical() const; + signals: void availableChanged(); void enabledChanged(); @@ -49,6 +51,7 @@ signals: void windowOpenChanged(); void targetTemperatureChanged(); void valveOpenChanged(); + void batteryCriticalChanged(); void commandResult(int id, bool result); @@ -82,18 +85,21 @@ private: Mode m_mode = ModeAuto; bool m_windowOpen = false; quint8 m_valveOpen = 0; + bool m_batteryCritical = false; + QTimer m_reconnectTimer; int m_reconnectAttempt = 0; struct Command { QString name; // For debug prints QByteArray data; - int id = -1; + qint32 id = -1; }; QList m_commandQueue; Command m_currentCommand; + QTimer m_commandTimeout; - int m_nextCommandId = 0; + quint16 m_nextCommandId = 0; }; class EqivaBluetoothDiscovery: public QObject diff --git a/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-de_DE.ts b/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-de_DE.ts index 7355571b..e262276f 100644 --- a/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-de_DE.ts +++ b/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-de_DE.ts @@ -4,7 +4,7 @@ DevicePluginEQ3 - + Bluetooth discovery failed. Is Bluetooth available and enabled? @@ -12,8 +12,8 @@ EQ3 - - + + eQ-3 The name of the vendor ({2cac0645-855e-44fa-837e-1cab0ae4304c}) ---------- @@ -21,20 +21,20 @@ The name of the plugin EQ3 ({f324c43c-9680-48d8-852a-93b2227139b9}) - + Max! Cube LAN Gateway The name of the DeviceClass ({1e892268-8bd7-442c-a001-bd4e2e6b2949}) Max! Cube LAN Gateway - + Max! Wall Thermostat The name of the DeviceClass ({ffbfec5d-06e8-4082-b62b-92cc5c3e8c4e}) Max! Wandthermostat - - + + set auto mode The name of the ActionType ({8f93e550-df94-46f4-81fc-aea595fc5cad}) of DeviceClass radiatorThermostate ---------- @@ -42,8 +42,8 @@ The name of the ActionType ({162b4b3d-9923-4f2c-a755-b50c8a06a6f0}) of DeviceCla Setze auto-Modus - - + + set manual mode The name of the ActionType ({739bab00-69ed-49a2-876c-940cd917b6fe}) of DeviceClass radiatorThermostate ---------- @@ -51,8 +51,8 @@ The name of the ActionType ({8e604437-9f5b-4c17-b5b0-e2db6007af5b}) of DeviceCla Setze manuellen-Modus - - + + set eco mode The name of the ActionType ({9d9e8936-ff08-4e7c-85a4-ecadbf324146}) of DeviceClass radiatorThermostate ---------- @@ -60,27 +60,27 @@ The name of the ActionType ({27a981e8-ec23-4ba8-921e-33b911a7dd89}) of DeviceCla Setze eco-Modus - + display current temperature The name of the ActionType ({184fb112-7a03-4560-8634-0257c969c26e}) of DeviceClass wallThermostate Zeige aktuelle Temperatur - + host address The name of the ParamType (DeviceClass: cube, Type: device, ID: {b30c14db-5b2a-4366-87e3-13d0d38b1905}) - + port The name of the ParamType (DeviceClass: cube, Type: device, ID: {a4c92442-dc47-463f-8e24-15b5b593adec}) - - - + + + serial number The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {846b06c2-44b9-4507-93db-1a34c9343078}) ---------- @@ -90,20 +90,20 @@ The name of the ParamType (DeviceClass: cube, Type: device, ID: {67dc1a45-7369-4 - + firmware version The name of the ParamType (DeviceClass: cube, Type: device, ID: {8d629061-8d4b-49f1-ab47-b82fdde3036c}) - + connected changed The name of the EventType ({d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) of DeviceClass cube - - + + connected The name of the ParamType (DeviceClass: cube, EventType: connected, ID: {d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) ---------- @@ -111,14 +111,14 @@ The name of the StateType ({d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) of DeviceClas - + portal enabled changed The name of the EventType ({2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) of DeviceClass cube - - + + portal enabled The name of the ParamType (DeviceClass: cube, EventType: portalEnabled, ID: {2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) ---------- @@ -126,8 +126,23 @@ The name of the StateType ({2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) of DeviceClas - - + + + Battery critical + The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: batteryCritical, ID: {174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) +---------- +The name of the StateType ({174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) of DeviceClass eqivaBluetooth + + + + + Battery critical changed + The name of the EventType ({174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) of DeviceClass eqivaBluetooth + + + + + name The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {e098f95d-cbf8-4d41-bb03-0691a932f8c2}) ---------- @@ -135,8 +150,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {8d32 - - + + parent cube The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {809730b8-06fe-42f0-9775-7d8ae1a1620b}) ---------- @@ -144,8 +159,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {801b - - + + rf address The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {d74e8fb8-71cc-4bb5-ac0a-04a100458bdb}) ---------- @@ -153,8 +168,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {6ba3 - - + + room id The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {c503088e-0ec4-45d2-974e-136a70ff7e97}) ---------- @@ -162,8 +177,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {e3bb - - + + room name The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {1a96b197-347b-48be-b997-4a9c8b731a51}) ---------- @@ -171,16 +186,16 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {14ea - + confort temperature changed The name of the EventType ({850380ee-a787-43e7-adb8-768a21a6e64d}) of DeviceClass wallThermostate - - - - + + + + comfort temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: comfortTemp, ID: {7144cc38-bee5-443e-b56c-cb3c7742adf2}) ---------- @@ -192,8 +207,8 @@ The name of the StateType ({850380ee-a787-43e7-adb8-768a21a6e64d}) of DeviceClas - - + + eco temperature changed The name of the EventType ({9e0cf843-39e8-4657-a803-794a6c01a357}) of DeviceClass radiatorThermostate ---------- @@ -201,10 +216,10 @@ The name of the EventType ({24dfd20d-bc8d-48e4-8162-b20ae0465c41}) of DeviceClas - - - - + + + + eco temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: ecoTemp, ID: {9e0cf843-39e8-4657-a803-794a6c01a357}) ---------- @@ -216,8 +231,8 @@ The name of the StateType ({24dfd20d-bc8d-48e4-8162-b20ae0465c41}) of DeviceClas - - + + max setpoint changed The name of the EventType ({b427a875-aa4b-4aa8-9beb-4fe6af73788b}) of DeviceClass radiatorThermostate ---------- @@ -225,10 +240,10 @@ The name of the EventType ({a8536ddf-a6e4-41c2-89c1-e7102608f5f6}) of DeviceClas - - - - + + + + max setpoint The name of the ParamType (DeviceClass: radiatorThermostate, EventType: maxSetpointTemp, ID: {b427a875-aa4b-4aa8-9beb-4fe6af73788b}) ---------- @@ -240,8 +255,8 @@ The name of the StateType ({a8536ddf-a6e4-41c2-89c1-e7102608f5f6}) of DeviceClas - - + + min setpoint changed The name of the EventType ({d935ff02-09a7-47b0-adf0-ae1ba11fbd1d}) of DeviceClass radiatorThermostate ---------- @@ -249,10 +264,10 @@ The name of the EventType ({ceb0ad05-37ad-4b79-a4d9-540c34a7e3e4}) of DeviceClas - - - - + + + + min setpoint The name of the ParamType (DeviceClass: radiatorThermostate, EventType: minSetpointTemp, ID: {d935ff02-09a7-47b0-adf0-ae1ba11fbd1d}) ---------- @@ -264,9 +279,9 @@ The name of the StateType ({ceb0ad05-37ad-4b79-a4d9-540c34a7e3e4}) of DeviceClas - - - + + + error occured The name of the ParamType (DeviceClass: radiatorThermostate, EventType: errorOccurred, ID: {ea83c3a4-d874-4c15-8749-fd210773e3c8}) ---------- @@ -276,8 +291,8 @@ The name of the EventType ({9880247b-cf9a-453c-b0c3-d910eba8a253}) of DeviceClas - - + + error occurred The name of the ParamType (DeviceClass: wallThermostate, EventType: errorOccurred, ID: {9880247b-cf9a-453c-b0c3-d910eba8a253}) ---------- @@ -285,8 +300,8 @@ The name of the StateType ({9880247b-cf9a-453c-b0c3-d910eba8a253}) of DeviceClas - - + + initialized changed The name of the EventType ({48ab1d1e-f5c9-4c32-8898-0e4f1bee6a13}) of DeviceClass radiatorThermostate ---------- @@ -294,10 +309,10 @@ The name of the EventType ({a9e29f03-063e-4686-8aac-2f6d8f8a4937}) of DeviceClas - - - - + + + + initialized The name of the ParamType (DeviceClass: radiatorThermostate, EventType: initialized, ID: {48ab1d1e-f5c9-4c32-8898-0e4f1bee6a13}) ---------- @@ -309,14 +324,14 @@ The name of the StateType ({a9e29f03-063e-4686-8aac-2f6d8f8a4937}) of DeviceClas - + battery low changed The name of the EventType ({2b1beca3-5053-41f5-a826-2a7c1d59da20}) of DeviceClass radiatorThermostate - - + + battery low The name of the ParamType (DeviceClass: radiatorThermostate, EventType: batteryLow, ID: {2b1beca3-5053-41f5-a826-2a7c1d59da20}) ---------- @@ -324,8 +339,8 @@ The name of the StateType ({2b1beca3-5053-41f5-a826-2a7c1d59da20}) of DeviceClas - - + + link status changed The name of the EventType ({bbc03a0b-f4dc-48dc-8924-79028f0357a2}) of DeviceClass radiatorThermostate ---------- @@ -333,14 +348,14 @@ The name of the EventType ({aff38be8-7ea6-4fd8-b0fa-e987ab05c719}) of DeviceClas - + Battery low changed The name of the EventType ({53b89f32-8894-4290-92a0-6a470c6b69ab}) of DeviceClass wallThermostate - - + + Battery low The name of the ParamType (DeviceClass: wallThermostate, EventType: batteryCritical, ID: {53b89f32-8894-4290-92a0-6a470c6b69ab}) ---------- @@ -348,10 +363,10 @@ The name of the StateType ({53b89f32-8894-4290-92a0-6a470c6b69ab}) of DeviceClas - - - - + + + + link status ok The name of the ParamType (DeviceClass: radiatorThermostate, EventType: linkStatusOk, ID: {bbc03a0b-f4dc-48dc-8924-79028f0357a2}) ---------- @@ -363,16 +378,16 @@ The name of the StateType ({aff38be8-7ea6-4fd8-b0fa-e987ab05c719}) of DeviceClas - + panel locked changed The name of the EventType ({979df197-09a1-46f9-9217-9d323b1062bd}) of DeviceClass wallThermostate - - - - + + + + panel locked The name of the ParamType (DeviceClass: radiatorThermostate, EventType: panelLocked, ID: {a4a94f4e-28b5-4b60-90d2-1476f0084326}) ---------- @@ -384,8 +399,8 @@ The name of the StateType ({979df197-09a1-46f9-9217-9d323b1062bd}) of DeviceClas - - + + gateway known changed The name of the EventType ({85c34911-e16c-488d-b6cc-08b80b12b5d2}) of DeviceClass radiatorThermostate ---------- @@ -393,10 +408,10 @@ The name of the EventType ({1d6bd962-5c31-47ad-80a4-dda87bff98f5}) of DeviceClas - - - - + + + + gateway known The name of the ParamType (DeviceClass: radiatorThermostate, EventType: gatewayKnown, ID: {85c34911-e16c-488d-b6cc-08b80b12b5d2}) ---------- @@ -408,8 +423,8 @@ The name of the StateType ({1d6bd962-5c31-47ad-80a4-dda87bff98f5}) of DeviceClas - - + + dts active changed The name of the EventType ({342a95f0-3fde-4987-8d0b-1c6859d39d24}) of DeviceClass radiatorThermostate ---------- @@ -417,10 +432,10 @@ The name of the EventType ({1b402ba6-a8ae-45b1-8acf-2b0a89f71889}) of DeviceClas - - - - + + + + dts active The name of the ParamType (DeviceClass: radiatorThermostate, EventType: dtsActive, ID: {342a95f0-3fde-4987-8d0b-1c6859d39d24}) ---------- @@ -432,8 +447,8 @@ The name of the StateType ({1b402ba6-a8ae-45b1-8acf-2b0a89f71889}) of DeviceClas - - + + device mode changed The name of the EventType ({fa0f73f8-52ce-4bb5-9a48-1fb38b2a72f0}) of DeviceClass radiatorThermostate ---------- @@ -441,10 +456,10 @@ The name of the EventType ({639360f0-bb65-43e6-b227-50ae0ac39d6c}) of DeviceClas - - - - + + + + device mode The name of the ParamType (DeviceClass: radiatorThermostate, EventType: deviceMode, ID: {fa0f73f8-52ce-4bb5-9a48-1fb38b2a72f0}) ---------- @@ -456,8 +471,8 @@ The name of the StateType ({639360f0-bb65-43e6-b227-50ae0ac39d6c}) of DeviceClas - - + + device mode string changed The name of the EventType ({37494abf-6fac-4294-b70a-86a48c3bd092}) of DeviceClass radiatorThermostate ---------- @@ -465,10 +480,10 @@ The name of the EventType ({ff5194e3-5641-4ac2-92c7-48c431b4a2eb}) of DeviceClas - - - - + + + + device mode string The name of the ParamType (DeviceClass: radiatorThermostate, EventType: deviceModeString, ID: {37494abf-6fac-4294-b70a-86a48c3bd092}) ---------- @@ -480,8 +495,8 @@ The name of the StateType ({ff5194e3-5641-4ac2-92c7-48c431b4a2eb}) of DeviceClas - - + + desired temperature changed The name of the EventType ({19d3ce6e-a1bc-4727-8827-62545c82fe13}) of DeviceClass radiatorThermostate ---------- @@ -489,12 +504,12 @@ The name of the EventType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceClas - - - - + + + + desired temperature The name of the ParamType (DeviceClass: radiatorThermostate, ActionType: desiredTemperature, ID: {19d3ce6e-a1bc-4727-8827-62545c82fe13}) ---------- @@ -510,8 +525,8 @@ The name of the StateType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceClas - - + + Set desired temperature The name of the ActionType ({19d3ce6e-a1bc-4727-8827-62545c82fe13}) of DeviceClass radiatorThermostate ---------- @@ -519,14 +534,14 @@ The name of the ActionType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceCla - + current temperature changed The name of the EventType ({852e7708-db1d-42d1-96e4-19c13598262c}) of DeviceClass wallThermostate - - + + current temperature The name of the ParamType (DeviceClass: wallThermostate, EventType: temperature, ID: {852e7708-db1d-42d1-96e4-19c13598262c}) ---------- @@ -534,32 +549,32 @@ The name of the StateType ({852e7708-db1d-42d1-96e4-19c13598262c}) of DeviceClas - + display The name of the ParamType (DeviceClass: wallThermostate, ActionType: displayCurrentTemp, ID: {894dbb8e-73b5-4e89-8b93-d7afda239dcb}) - + Max! Radiator Thermostat The name of the DeviceClass ({f80d9481-4827-45ee-a013-b97b22412d92}) Max! Heizungsthermostat - + comfort temperature changed The name of the EventType ({7144cc38-bee5-443e-b56c-cb3c7742adf2}) of DeviceClass radiatorThermostate - + error occured changed The name of the EventType ({ea83c3a4-d874-4c15-8749-fd210773e3c8}) of DeviceClass radiatorThermostate - - + + valve position The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valvePosition, ID: {72956000-0203-4c32-a6b6-3bb7e46c03ca}) ---------- @@ -567,26 +582,26 @@ The name of the StateType ({72956000-0203-4c32-a6b6-3bb7e46c03ca}) of DeviceClas - + Eqiva Bluetooth Smart Radiator Thermostat The name of the DeviceClass ({3c51327b-a823-4479-bd4b-f4ba64267ed8}) - + MAC Address The name of the ParamType (DeviceClass: eqivaBluetooth, Type: device, ID: {56a77560-e1a3-44fa-8136-57fe5a8d1cbe}) - + Connected changed The name of the EventType ({e223666b-596f-42c0-90b9-1135a6f1c98e}) of DeviceClass eqivaBluetooth - - + + Connected The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: connected, ID: {e223666b-596f-42c0-90b9-1135a6f1c98e}) ---------- @@ -594,15 +609,15 @@ The name of the StateType ({e223666b-596f-42c0-90b9-1135a6f1c98e}) of DeviceClas - + On changed The name of the EventType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClass eqivaBluetooth - - - + + + On The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: power, ID: {cc5700f3-28b0-4653-b46d-770a99e6cea7}) ---------- @@ -612,21 +627,21 @@ The name of the StateType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClas - + Turn on/off The name of the ActionType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClass eqivaBluetooth - + Target temperature changed The name of the EventType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClass eqivaBluetooth - - - + + + Target temperature The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: targetTemperature, ID: {5e9035ed-317d-42ee-b7f4-2996c75ba939}) ---------- @@ -636,21 +651,21 @@ The name of the StateType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClas - + Set target temperature The name of the ActionType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClass eqivaBluetooth - + Lock changed The name of the EventType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClass eqivaBluetooth - - - + + + Lock The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: lock, ID: {2d285ccf-6d94-4441-9a28-47373caadc5b}) ---------- @@ -660,21 +675,21 @@ The name of the StateType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClas - + Set lock The name of the ActionType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClass eqivaBluetooth - + Mode changed The name of the EventType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClass eqivaBluetooth - - - + + + Mode The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: mode, ID: {36070993-6332-4f6f-9907-36756981cc25}) ---------- @@ -684,21 +699,21 @@ The name of the StateType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClas - + Set mode The name of the ActionType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClass eqivaBluetooth - + Boost enabled changed The name of the EventType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClass eqivaBluetooth - - - + + + Boost The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: boost, ID: {ccca3ccd-33d4-4187-b823-efa0f51a1859}) ---------- @@ -708,20 +723,20 @@ The name of the StateType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClas - + Enable/disable boost The name of the ActionType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClass eqivaBluetooth - + Window open changed The name of the EventType ({dcacdacc-ee47-43b0-9fef-1fe423e4f355}) of DeviceClass eqivaBluetooth - - + + Window open detected The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: windowOpen, ID: {dcacdacc-ee47-43b0-9fef-1fe423e4f355}) ---------- @@ -729,14 +744,14 @@ The name of the StateType ({dcacdacc-ee47-43b0-9fef-1fe423e4f355}) of DeviceClas - + Valve open changed The name of the EventType ({757f154f-30ce-4b9b-a009-b22777f96593}) of DeviceClass eqivaBluetooth - - + + Valve open The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: valveOpen, ID: {757f154f-30ce-4b9b-a009-b22777f96593}) ---------- @@ -744,20 +759,20 @@ The name of the StateType ({757f154f-30ce-4b9b-a009-b22777f96593}) of DeviceClas - + pannel locked changed The name of the EventType ({a4a94f4e-28b5-4b60-90d2-1476f0084326}) of DeviceClass radiatorThermostate - + offset temperature changed The name of the EventType ({576da571-9a65-478f-96bf-19256c8b9ece}) of DeviceClass radiatorThermostate - - + + offset temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: offsetTemp, ID: {576da571-9a65-478f-96bf-19256c8b9ece}) ---------- @@ -765,14 +780,14 @@ The name of the StateType ({576da571-9a65-478f-96bf-19256c8b9ece}) of DeviceClas - + window open duration changed The name of the EventType ({81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) of DeviceClass radiatorThermostate - - + + window open duration The name of the ParamType (DeviceClass: radiatorThermostate, EventType: windowOpenDuration, ID: {81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) ---------- @@ -780,14 +795,14 @@ The name of the StateType ({81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) of DeviceClas - + boost value changed The name of the EventType ({7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) of DeviceClass radiatorThermostate - - + + boost valve The name of the ParamType (DeviceClass: radiatorThermostate, EventType: boostValveValue, ID: {7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) ---------- @@ -795,14 +810,14 @@ The name of the StateType ({7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) of DeviceClas - + boost duration changed The name of the EventType ({e75c1398-9ad7-466c-b3b9-b03bbb686a30}) of DeviceClass radiatorThermostate - - + + boost duration The name of the ParamType (DeviceClass: radiatorThermostate, EventType: boostDuration, ID: {e75c1398-9ad7-466c-b3b9-b03bbb686a30}) ---------- @@ -810,14 +825,14 @@ The name of the StateType ({e75c1398-9ad7-466c-b3b9-b03bbb686a30}) of DeviceClas - + discalc weekday changed The name of the EventType ({bd6f5947-d4b4-444b-81c8-77eec46957e4}) of DeviceClass radiatorThermostate - - + + discalc weekday The name of the ParamType (DeviceClass: radiatorThermostate, EventType: discalcWeekDay, ID: {bd6f5947-d4b4-444b-81c8-77eec46957e4}) ---------- @@ -825,14 +840,14 @@ The name of the StateType ({bd6f5947-d4b4-444b-81c8-77eec46957e4}) of DeviceClas - + discalc time changed The name of the EventType ({e78235ee-affc-41e3-a463-9f0512b4a6c3}) of DeviceClass radiatorThermostate - - + + discalc time The name of the ParamType (DeviceClass: radiatorThermostate, EventType: discalcTime, ID: {e78235ee-affc-41e3-a463-9f0512b4a6c3}) ---------- @@ -840,14 +855,14 @@ The name of the StateType ({e78235ee-affc-41e3-a463-9f0512b4a6c3}) of DeviceClas - + valve maximum setting changed The name of the EventType ({e367fa3a-b30f-49bd-af3f-cff92360ad32}) of DeviceClass radiatorThermostate - - + + valve maximum setting The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valveMaximumSettings, ID: {e367fa3a-b30f-49bd-af3f-cff92360ad32}) ---------- @@ -855,14 +870,14 @@ The name of the StateType ({e367fa3a-b30f-49bd-af3f-cff92360ad32}) of DeviceClas - + valve offset changed The name of the EventType ({ffaff87b-b741-4db8-9875-3380af4f1885}) of DeviceClass radiatorThermostate - - + + valve offset The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valveOffset, ID: {ffaff87b-b741-4db8-9875-3380af4f1885}) ---------- @@ -870,7 +885,7 @@ The name of the StateType ({ffaff87b-b741-4db8-9875-3380af4f1885}) of DeviceClas - + valve position changed The name of the EventType ({72956000-0203-4c32-a6b6-3bb7e46c03ca}) of DeviceClass radiatorThermostate diff --git a/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-en_US.ts b/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-en_US.ts index e9611412..aa3511b8 100644 --- a/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-en_US.ts +++ b/eq-3/translations/f324c43c-9680-48d8-852a-93b2227139b9-en_US.ts @@ -4,7 +4,7 @@ DevicePluginEQ3 - + Bluetooth discovery failed. Is Bluetooth available and enabled? @@ -12,8 +12,8 @@ EQ3 - - + + eQ-3 The name of the vendor ({2cac0645-855e-44fa-837e-1cab0ae4304c}) ---------- @@ -21,27 +21,27 @@ The name of the plugin EQ3 ({f324c43c-9680-48d8-852a-93b2227139b9}) - + Max! Cube LAN Gateway The name of the DeviceClass ({1e892268-8bd7-442c-a001-bd4e2e6b2949}) - + host address The name of the ParamType (DeviceClass: cube, Type: device, ID: {b30c14db-5b2a-4366-87e3-13d0d38b1905}) - + port The name of the ParamType (DeviceClass: cube, Type: device, ID: {a4c92442-dc47-463f-8e24-15b5b593adec}) - - - + + + serial number The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {846b06c2-44b9-4507-93db-1a34c9343078}) ---------- @@ -51,20 +51,20 @@ The name of the ParamType (DeviceClass: cube, Type: device, ID: {67dc1a45-7369-4 - + firmware version The name of the ParamType (DeviceClass: cube, Type: device, ID: {8d629061-8d4b-49f1-ab47-b82fdde3036c}) - + connected changed The name of the EventType ({d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) of DeviceClass cube - - + + connected The name of the ParamType (DeviceClass: cube, EventType: connected, ID: {d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) ---------- @@ -72,14 +72,14 @@ The name of the StateType ({d0a9a369-cf8c-47c4-a12e-f2d076bf12fd}) of DeviceClas - + portal enabled changed The name of the EventType ({2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) of DeviceClass cube - - + + portal enabled The name of the ParamType (DeviceClass: cube, EventType: portalEnabled, ID: {2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) ---------- @@ -87,14 +87,29 @@ The name of the StateType ({2c2367da-c229-40ed-9d47-a6e73cd6dc3b}) of DeviceClas - + + + Battery critical + The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: batteryCritical, ID: {174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) +---------- +The name of the StateType ({174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) of DeviceClass eqivaBluetooth + + + + + Battery critical changed + The name of the EventType ({174f6388-0fbe-4d04-82ea-99c63bcf6f5a}) of DeviceClass eqivaBluetooth + + + + Max! Wall Thermostat The name of the DeviceClass ({ffbfec5d-06e8-4082-b62b-92cc5c3e8c4e}) - - + + name The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {e098f95d-cbf8-4d41-bb03-0691a932f8c2}) ---------- @@ -102,8 +117,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {8d32 - - + + parent cube The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {809730b8-06fe-42f0-9775-7d8ae1a1620b}) ---------- @@ -111,8 +126,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {801b - - + + rf address The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {d74e8fb8-71cc-4bb5-ac0a-04a100458bdb}) ---------- @@ -120,8 +135,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {6ba3 - - + + room id The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {c503088e-0ec4-45d2-974e-136a70ff7e97}) ---------- @@ -129,8 +144,8 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {e3bb - - + + room name The name of the ParamType (DeviceClass: radiatorThermostate, Type: device, ID: {1a96b197-347b-48be-b997-4a9c8b731a51}) ---------- @@ -138,16 +153,16 @@ The name of the ParamType (DeviceClass: wallThermostate, Type: device, ID: {14ea - + confort temperature changed The name of the EventType ({850380ee-a787-43e7-adb8-768a21a6e64d}) of DeviceClass wallThermostate - - - - + + + + comfort temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: comfortTemp, ID: {7144cc38-bee5-443e-b56c-cb3c7742adf2}) ---------- @@ -159,8 +174,8 @@ The name of the StateType ({850380ee-a787-43e7-adb8-768a21a6e64d}) of DeviceClas - - + + eco temperature changed The name of the EventType ({9e0cf843-39e8-4657-a803-794a6c01a357}) of DeviceClass radiatorThermostate ---------- @@ -168,10 +183,10 @@ The name of the EventType ({24dfd20d-bc8d-48e4-8162-b20ae0465c41}) of DeviceClas - - - - + + + + eco temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: ecoTemp, ID: {9e0cf843-39e8-4657-a803-794a6c01a357}) ---------- @@ -183,8 +198,8 @@ The name of the StateType ({24dfd20d-bc8d-48e4-8162-b20ae0465c41}) of DeviceClas - - + + max setpoint changed The name of the EventType ({b427a875-aa4b-4aa8-9beb-4fe6af73788b}) of DeviceClass radiatorThermostate ---------- @@ -192,10 +207,10 @@ The name of the EventType ({a8536ddf-a6e4-41c2-89c1-e7102608f5f6}) of DeviceClas - - - - + + + + max setpoint The name of the ParamType (DeviceClass: radiatorThermostate, EventType: maxSetpointTemp, ID: {b427a875-aa4b-4aa8-9beb-4fe6af73788b}) ---------- @@ -207,8 +222,8 @@ The name of the StateType ({a8536ddf-a6e4-41c2-89c1-e7102608f5f6}) of DeviceClas - - + + min setpoint changed The name of the EventType ({d935ff02-09a7-47b0-adf0-ae1ba11fbd1d}) of DeviceClass radiatorThermostate ---------- @@ -216,10 +231,10 @@ The name of the EventType ({ceb0ad05-37ad-4b79-a4d9-540c34a7e3e4}) of DeviceClas - - - - + + + + min setpoint The name of the ParamType (DeviceClass: radiatorThermostate, EventType: minSetpointTemp, ID: {d935ff02-09a7-47b0-adf0-ae1ba11fbd1d}) ---------- @@ -231,9 +246,9 @@ The name of the StateType ({ceb0ad05-37ad-4b79-a4d9-540c34a7e3e4}) of DeviceClas - - - + + + error occured The name of the ParamType (DeviceClass: radiatorThermostate, EventType: errorOccurred, ID: {ea83c3a4-d874-4c15-8749-fd210773e3c8}) ---------- @@ -243,8 +258,8 @@ The name of the EventType ({9880247b-cf9a-453c-b0c3-d910eba8a253}) of DeviceClas - - + + error occurred The name of the ParamType (DeviceClass: wallThermostate, EventType: errorOccurred, ID: {9880247b-cf9a-453c-b0c3-d910eba8a253}) ---------- @@ -252,8 +267,8 @@ The name of the StateType ({9880247b-cf9a-453c-b0c3-d910eba8a253}) of DeviceClas - - + + initialized changed The name of the EventType ({48ab1d1e-f5c9-4c32-8898-0e4f1bee6a13}) of DeviceClass radiatorThermostate ---------- @@ -261,10 +276,10 @@ The name of the EventType ({a9e29f03-063e-4686-8aac-2f6d8f8a4937}) of DeviceClas - - - - + + + + initialized The name of the ParamType (DeviceClass: radiatorThermostate, EventType: initialized, ID: {48ab1d1e-f5c9-4c32-8898-0e4f1bee6a13}) ---------- @@ -276,14 +291,14 @@ The name of the StateType ({a9e29f03-063e-4686-8aac-2f6d8f8a4937}) of DeviceClas - + battery low changed The name of the EventType ({2b1beca3-5053-41f5-a826-2a7c1d59da20}) of DeviceClass radiatorThermostate - - + + battery low The name of the ParamType (DeviceClass: radiatorThermostate, EventType: batteryLow, ID: {2b1beca3-5053-41f5-a826-2a7c1d59da20}) ---------- @@ -291,8 +306,8 @@ The name of the StateType ({2b1beca3-5053-41f5-a826-2a7c1d59da20}) of DeviceClas - - + + link status changed The name of the EventType ({bbc03a0b-f4dc-48dc-8924-79028f0357a2}) of DeviceClass radiatorThermostate ---------- @@ -300,14 +315,14 @@ The name of the EventType ({aff38be8-7ea6-4fd8-b0fa-e987ab05c719}) of DeviceClas - + Battery low changed The name of the EventType ({53b89f32-8894-4290-92a0-6a470c6b69ab}) of DeviceClass wallThermostate - - + + Battery low The name of the ParamType (DeviceClass: wallThermostate, EventType: batteryCritical, ID: {53b89f32-8894-4290-92a0-6a470c6b69ab}) ---------- @@ -315,10 +330,10 @@ The name of the StateType ({53b89f32-8894-4290-92a0-6a470c6b69ab}) of DeviceClas - - - - + + + + link status ok The name of the ParamType (DeviceClass: radiatorThermostate, EventType: linkStatusOk, ID: {bbc03a0b-f4dc-48dc-8924-79028f0357a2}) ---------- @@ -330,16 +345,16 @@ The name of the StateType ({aff38be8-7ea6-4fd8-b0fa-e987ab05c719}) of DeviceClas - + panel locked changed The name of the EventType ({979df197-09a1-46f9-9217-9d323b1062bd}) of DeviceClass wallThermostate - - - - + + + + panel locked The name of the ParamType (DeviceClass: radiatorThermostate, EventType: panelLocked, ID: {a4a94f4e-28b5-4b60-90d2-1476f0084326}) ---------- @@ -351,8 +366,8 @@ The name of the StateType ({979df197-09a1-46f9-9217-9d323b1062bd}) of DeviceClas - - + + gateway known changed The name of the EventType ({85c34911-e16c-488d-b6cc-08b80b12b5d2}) of DeviceClass radiatorThermostate ---------- @@ -360,10 +375,10 @@ The name of the EventType ({1d6bd962-5c31-47ad-80a4-dda87bff98f5}) of DeviceClas - - - - + + + + gateway known The name of the ParamType (DeviceClass: radiatorThermostate, EventType: gatewayKnown, ID: {85c34911-e16c-488d-b6cc-08b80b12b5d2}) ---------- @@ -375,8 +390,8 @@ The name of the StateType ({1d6bd962-5c31-47ad-80a4-dda87bff98f5}) of DeviceClas - - + + dts active changed The name of the EventType ({342a95f0-3fde-4987-8d0b-1c6859d39d24}) of DeviceClass radiatorThermostate ---------- @@ -384,10 +399,10 @@ The name of the EventType ({1b402ba6-a8ae-45b1-8acf-2b0a89f71889}) of DeviceClas - - - - + + + + dts active The name of the ParamType (DeviceClass: radiatorThermostate, EventType: dtsActive, ID: {342a95f0-3fde-4987-8d0b-1c6859d39d24}) ---------- @@ -399,8 +414,8 @@ The name of the StateType ({1b402ba6-a8ae-45b1-8acf-2b0a89f71889}) of DeviceClas - - + + device mode changed The name of the EventType ({fa0f73f8-52ce-4bb5-9a48-1fb38b2a72f0}) of DeviceClass radiatorThermostate ---------- @@ -408,10 +423,10 @@ The name of the EventType ({639360f0-bb65-43e6-b227-50ae0ac39d6c}) of DeviceClas - - - - + + + + device mode The name of the ParamType (DeviceClass: radiatorThermostate, EventType: deviceMode, ID: {fa0f73f8-52ce-4bb5-9a48-1fb38b2a72f0}) ---------- @@ -423,8 +438,8 @@ The name of the StateType ({639360f0-bb65-43e6-b227-50ae0ac39d6c}) of DeviceClas - - + + device mode string changed The name of the EventType ({37494abf-6fac-4294-b70a-86a48c3bd092}) of DeviceClass radiatorThermostate ---------- @@ -432,10 +447,10 @@ The name of the EventType ({ff5194e3-5641-4ac2-92c7-48c431b4a2eb}) of DeviceClas - - - - + + + + device mode string The name of the ParamType (DeviceClass: radiatorThermostate, EventType: deviceModeString, ID: {37494abf-6fac-4294-b70a-86a48c3bd092}) ---------- @@ -447,8 +462,8 @@ The name of the StateType ({ff5194e3-5641-4ac2-92c7-48c431b4a2eb}) of DeviceClas - - + + desired temperature changed The name of the EventType ({19d3ce6e-a1bc-4727-8827-62545c82fe13}) of DeviceClass radiatorThermostate ---------- @@ -456,12 +471,12 @@ The name of the EventType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceClas - - - - + + + + desired temperature The name of the ParamType (DeviceClass: radiatorThermostate, ActionType: desiredTemperature, ID: {19d3ce6e-a1bc-4727-8827-62545c82fe13}) ---------- @@ -477,8 +492,8 @@ The name of the StateType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceClas - - + + Set desired temperature The name of the ActionType ({19d3ce6e-a1bc-4727-8827-62545c82fe13}) of DeviceClass radiatorThermostate ---------- @@ -486,14 +501,14 @@ The name of the ActionType ({579aa8c6-8814-491b-9e7c-b98108c323d1}) of DeviceCla - + current temperature changed The name of the EventType ({852e7708-db1d-42d1-96e4-19c13598262c}) of DeviceClass wallThermostate - - + + current temperature The name of the ParamType (DeviceClass: wallThermostate, EventType: temperature, ID: {852e7708-db1d-42d1-96e4-19c13598262c}) ---------- @@ -501,8 +516,8 @@ The name of the StateType ({852e7708-db1d-42d1-96e4-19c13598262c}) of DeviceClas - - + + set auto mode The name of the ActionType ({8f93e550-df94-46f4-81fc-aea595fc5cad}) of DeviceClass radiatorThermostate ---------- @@ -510,8 +525,8 @@ The name of the ActionType ({162b4b3d-9923-4f2c-a755-b50c8a06a6f0}) of DeviceCla - - + + set manual mode The name of the ActionType ({739bab00-69ed-49a2-876c-940cd917b6fe}) of DeviceClass radiatorThermostate ---------- @@ -519,8 +534,8 @@ The name of the ActionType ({8e604437-9f5b-4c17-b5b0-e2db6007af5b}) of DeviceCla - - + + set eco mode The name of the ActionType ({9d9e8936-ff08-4e7c-85a4-ecadbf324146}) of DeviceClass radiatorThermostate ---------- @@ -528,38 +543,38 @@ The name of the ActionType ({27a981e8-ec23-4ba8-921e-33b911a7dd89}) of DeviceCla - + display current temperature The name of the ActionType ({184fb112-7a03-4560-8634-0257c969c26e}) of DeviceClass wallThermostate - + display The name of the ParamType (DeviceClass: wallThermostate, ActionType: displayCurrentTemp, ID: {894dbb8e-73b5-4e89-8b93-d7afda239dcb}) - + Max! Radiator Thermostat The name of the DeviceClass ({f80d9481-4827-45ee-a013-b97b22412d92}) - + comfort temperature changed The name of the EventType ({7144cc38-bee5-443e-b56c-cb3c7742adf2}) of DeviceClass radiatorThermostate - + error occured changed The name of the EventType ({ea83c3a4-d874-4c15-8749-fd210773e3c8}) of DeviceClass radiatorThermostate - - + + valve position The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valvePosition, ID: {72956000-0203-4c32-a6b6-3bb7e46c03ca}) ---------- @@ -567,26 +582,26 @@ The name of the StateType ({72956000-0203-4c32-a6b6-3bb7e46c03ca}) of DeviceClas - + Eqiva Bluetooth Smart Radiator Thermostat The name of the DeviceClass ({3c51327b-a823-4479-bd4b-f4ba64267ed8}) - + MAC Address The name of the ParamType (DeviceClass: eqivaBluetooth, Type: device, ID: {56a77560-e1a3-44fa-8136-57fe5a8d1cbe}) - + Connected changed The name of the EventType ({e223666b-596f-42c0-90b9-1135a6f1c98e}) of DeviceClass eqivaBluetooth - - + + Connected The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: connected, ID: {e223666b-596f-42c0-90b9-1135a6f1c98e}) ---------- @@ -594,15 +609,15 @@ The name of the StateType ({e223666b-596f-42c0-90b9-1135a6f1c98e}) of DeviceClas - + On changed The name of the EventType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClass eqivaBluetooth - - - + + + On The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: power, ID: {cc5700f3-28b0-4653-b46d-770a99e6cea7}) ---------- @@ -612,21 +627,21 @@ The name of the StateType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClas - + Turn on/off The name of the ActionType ({cc5700f3-28b0-4653-b46d-770a99e6cea7}) of DeviceClass eqivaBluetooth - + Target temperature changed The name of the EventType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClass eqivaBluetooth - - - + + + Target temperature The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: targetTemperature, ID: {5e9035ed-317d-42ee-b7f4-2996c75ba939}) ---------- @@ -636,21 +651,21 @@ The name of the StateType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClas - + Set target temperature The name of the ActionType ({5e9035ed-317d-42ee-b7f4-2996c75ba939}) of DeviceClass eqivaBluetooth - + Lock changed The name of the EventType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClass eqivaBluetooth - - - + + + Lock The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: lock, ID: {2d285ccf-6d94-4441-9a28-47373caadc5b}) ---------- @@ -660,21 +675,21 @@ The name of the StateType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClas - + Set lock The name of the ActionType ({2d285ccf-6d94-4441-9a28-47373caadc5b}) of DeviceClass eqivaBluetooth - + Mode changed The name of the EventType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClass eqivaBluetooth - - - + + + Mode The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: mode, ID: {36070993-6332-4f6f-9907-36756981cc25}) ---------- @@ -684,21 +699,21 @@ The name of the StateType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClas - + Set mode The name of the ActionType ({36070993-6332-4f6f-9907-36756981cc25}) of DeviceClass eqivaBluetooth - + Boost enabled changed The name of the EventType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClass eqivaBluetooth - - - + + + Boost The name of the ParamType (DeviceClass: eqivaBluetooth, ActionType: boost, ID: {ccca3ccd-33d4-4187-b823-efa0f51a1859}) ---------- @@ -708,20 +723,20 @@ The name of the StateType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClas - + Enable/disable boost The name of the ActionType ({ccca3ccd-33d4-4187-b823-efa0f51a1859}) of DeviceClass eqivaBluetooth - + Window open changed The name of the EventType ({dcacdacc-ee47-43b0-9fef-1fe423e4f355}) of DeviceClass eqivaBluetooth - - + + Window open detected The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: windowOpen, ID: {dcacdacc-ee47-43b0-9fef-1fe423e4f355}) ---------- @@ -729,14 +744,14 @@ The name of the StateType ({dcacdacc-ee47-43b0-9fef-1fe423e4f355}) of DeviceClas - + Valve open changed The name of the EventType ({757f154f-30ce-4b9b-a009-b22777f96593}) of DeviceClass eqivaBluetooth - - + + Valve open The name of the ParamType (DeviceClass: eqivaBluetooth, EventType: valveOpen, ID: {757f154f-30ce-4b9b-a009-b22777f96593}) ---------- @@ -744,20 +759,20 @@ The name of the StateType ({757f154f-30ce-4b9b-a009-b22777f96593}) of DeviceClas - + pannel locked changed The name of the EventType ({a4a94f4e-28b5-4b60-90d2-1476f0084326}) of DeviceClass radiatorThermostate - + offset temperature changed The name of the EventType ({576da571-9a65-478f-96bf-19256c8b9ece}) of DeviceClass radiatorThermostate - - + + offset temperature The name of the ParamType (DeviceClass: radiatorThermostate, EventType: offsetTemp, ID: {576da571-9a65-478f-96bf-19256c8b9ece}) ---------- @@ -765,14 +780,14 @@ The name of the StateType ({576da571-9a65-478f-96bf-19256c8b9ece}) of DeviceClas - + window open duration changed The name of the EventType ({81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) of DeviceClass radiatorThermostate - - + + window open duration The name of the ParamType (DeviceClass: radiatorThermostate, EventType: windowOpenDuration, ID: {81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) ---------- @@ -780,14 +795,14 @@ The name of the StateType ({81c6c74a-b0cd-4daa-9eb9-f1cd68f328af}) of DeviceClas - + boost value changed The name of the EventType ({7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) of DeviceClass radiatorThermostate - - + + boost valve The name of the ParamType (DeviceClass: radiatorThermostate, EventType: boostValveValue, ID: {7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) ---------- @@ -795,14 +810,14 @@ The name of the StateType ({7c41fa64-b1a1-48d2-9d03-67aa16cd83ad}) of DeviceClas - + boost duration changed The name of the EventType ({e75c1398-9ad7-466c-b3b9-b03bbb686a30}) of DeviceClass radiatorThermostate - - + + boost duration The name of the ParamType (DeviceClass: radiatorThermostate, EventType: boostDuration, ID: {e75c1398-9ad7-466c-b3b9-b03bbb686a30}) ---------- @@ -810,14 +825,14 @@ The name of the StateType ({e75c1398-9ad7-466c-b3b9-b03bbb686a30}) of DeviceClas - + discalc weekday changed The name of the EventType ({bd6f5947-d4b4-444b-81c8-77eec46957e4}) of DeviceClass radiatorThermostate - - + + discalc weekday The name of the ParamType (DeviceClass: radiatorThermostate, EventType: discalcWeekDay, ID: {bd6f5947-d4b4-444b-81c8-77eec46957e4}) ---------- @@ -825,14 +840,14 @@ The name of the StateType ({bd6f5947-d4b4-444b-81c8-77eec46957e4}) of DeviceClas - + discalc time changed The name of the EventType ({e78235ee-affc-41e3-a463-9f0512b4a6c3}) of DeviceClass radiatorThermostate - - + + discalc time The name of the ParamType (DeviceClass: radiatorThermostate, EventType: discalcTime, ID: {e78235ee-affc-41e3-a463-9f0512b4a6c3}) ---------- @@ -840,14 +855,14 @@ The name of the StateType ({e78235ee-affc-41e3-a463-9f0512b4a6c3}) of DeviceClas - + valve maximum setting changed The name of the EventType ({e367fa3a-b30f-49bd-af3f-cff92360ad32}) of DeviceClass radiatorThermostate - - + + valve maximum setting The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valveMaximumSettings, ID: {e367fa3a-b30f-49bd-af3f-cff92360ad32}) ---------- @@ -855,14 +870,14 @@ The name of the StateType ({e367fa3a-b30f-49bd-af3f-cff92360ad32}) of DeviceClas - + valve offset changed The name of the EventType ({ffaff87b-b741-4db8-9875-3380af4f1885}) of DeviceClass radiatorThermostate - - + + valve offset The name of the ParamType (DeviceClass: radiatorThermostate, EventType: valveOffset, ID: {ffaff87b-b741-4db8-9875-3380af4f1885}) ---------- @@ -870,7 +885,7 @@ The name of the StateType ({ffaff87b-b741-4db8-9875-3380af4f1885}) of DeviceClas - + valve position changed The name of the EventType ({72956000-0203-4c32-a6b6-3bb7e46c03ca}) of DeviceClass radiatorThermostate