removed QR code scanner and fixed last seen state

master
Boernsman 2020-02-10 18:23:38 +05:00 committed by bernhard.trinnes
parent e94dbeea4c
commit 0bacb2efb8
10 changed files with 243 additions and 119 deletions

View File

@ -0,0 +1,8 @@
# DoorBird
This plug-in let'S you capture doorbell pressed and motion events,
you are also able to set the power of the IR and the relays.
It uses a local connection and will work without Internet.

View File

@ -1,23 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *
* Copyright (C) 2019 Bernhard Trinnes <bernhard.trinnes@nymea.io> * * Copyright 2013 - 2020, nymea GmbH
* Copyright (C) 2019 Michael Zanetti <michael.zanetti@nymea.io> * * Contact: contact@nymea.io
* * *
* This file is part of nymea. * * This file is part of nymea.
* * * This project including source code and documentation is protected by
* nymea is free software: you can redistribute it and/or modify * * copyright law, and remains the property of nymea GmbH. All rights, including
* it under the terms of the GNU General Public License as published by * * reproduction, publication, editing and translation, are reserved. The use of
* the Free Software Foundation, version 2 of the License. * * 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
* nymea is distributed in the hope that it will be useful, * * under https://nymea.io/license
* but WITHOUT ANY WARRANTY; without even the implied warranty of * *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License Usage
* GNU General Public License for more details. * * Alternatively, this project may be redistributed and/or modified under the
* * * terms of the GNU Lesser General Public License as published by the Free
* You should have received a copy of the GNU General Public License * * Software Foundation; version 3. This project is distributed in the hope that
* along with nymea. If not, see <http://www.gnu.org/licenses/>. * * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "deviceplugindoorbird.h" #include "deviceplugindoorbird.h"
#include "plugininfo.h" #include "plugininfo.h"
@ -48,7 +57,13 @@ void DevicePluginDoorbird::discoverDevices(DeviceDiscoveryInfo *info)
qCDebug(dcDoorBird) << "Found DoorBird device, name: " << serviceEntry.name() << "\n host address:" << serviceEntry.hostAddress().toString() << "\n text:" << serviceEntry.txt() << serviceEntry.protocol() << serviceEntry.serviceType(); qCDebug(dcDoorBird) << "Found DoorBird device, name: " << serviceEntry.name() << "\n host address:" << serviceEntry.hostAddress().toString() << "\n text:" << serviceEntry.txt() << serviceEntry.protocol() << serviceEntry.serviceType();
DeviceDescriptor deviceDescriptor(doorBirdDeviceClassId, serviceEntry.name(), serviceEntry.hostAddress().toString()); DeviceDescriptor deviceDescriptor(doorBirdDeviceClassId, serviceEntry.name(), serviceEntry.hostAddress().toString());
ParamList params; ParamList params;
QString macAddress = serviceEntry.txt().first(); QString macAddress;
if (serviceEntry.txt().first().split("=").length() == 2) {
macAddress = serviceEntry.txt().first().split("=").last();
} else {
qCWarning(dcDoorBird()) << "Could not parse MAC Address" << serviceEntry.txt().first();
return;
}
if (!myDevices().filterByParam(doorBirdDeviceSerialnumberParamTypeId, macAddress).isEmpty()) { if (!myDevices().filterByParam(doorBirdDeviceSerialnumberParamTypeId, macAddress).isEmpty()) {
Device *existingDevice = myDevices().filterByParam(doorBirdDeviceSerialnumberParamTypeId, serviceEntry.hostName()).first(); Device *existingDevice = myDevices().filterByParam(doorBirdDeviceSerialnumberParamTypeId, serviceEntry.hostName()).first();
deviceDescriptor.setDeviceId(existingDevice->id()); deviceDescriptor.setDeviceId(existingDevice->id());
@ -116,7 +131,6 @@ void DevicePluginDoorbird::setupDevice(DeviceSetupInfo *info)
connect(doorbird, &Doorbird::deviceConnected, this, &DevicePluginDoorbird::onDoorBirdConnected); connect(doorbird, &Doorbird::deviceConnected, this, &DevicePluginDoorbird::onDoorBirdConnected);
connect(doorbird, &Doorbird::eventReveiced, this, &DevicePluginDoorbird::onDoorBirdEvent); connect(doorbird, &Doorbird::eventReveiced, this, &DevicePluginDoorbird::onDoorBirdEvent);
connect(doorbird, &Doorbird::requestSent, this, &DevicePluginDoorbird::onDoorBirdRequestSent); connect(doorbird, &Doorbird::requestSent, this, &DevicePluginDoorbird::onDoorBirdRequestSent);
connect(doorbird, &Doorbird::liveImageReceived, this, &DevicePluginDoorbird::onImageReceived);
doorbird->connectToEventMonitor(); doorbird->connectToEventMonitor();
m_doorbirdConnections.insert(device, doorbird); m_doorbirdConnections.insert(device, doorbird);
info->finish(Device::DeviceErrorNoError); info->finish(Device::DeviceErrorNoError);
@ -201,9 +215,7 @@ void DevicePluginDoorbird::onDoorBirdEvent(Doorbird::EventType eventType, bool s
break; break;
case Doorbird::EventType::Motion: case Doorbird::EventType::Motion:
device->setStateValue(doorBirdIsPresentStateTypeId, status); device->setStateValue(doorBirdIsPresentStateTypeId, status);
if (status) { device->setStateValue(doorBirdLastSeenTimeStateTypeId, QDateTime::currentDateTime().toTime_t());
doorbird->liveImageRequest();
}
break; break;
case Doorbird::EventType::Doorbell: case Doorbird::EventType::Doorbell:
if (status) { if (status) {
@ -226,18 +238,3 @@ void DevicePluginDoorbird::onDoorBirdRequestSent(QUuid requestId, bool success)
DeviceActionInfo* actionInfo = m_asyncActions.take(requestId); DeviceActionInfo* actionInfo = m_asyncActions.take(requestId);
actionInfo->finish(success ? Device::DeviceErrorNoError : Device::DeviceErrorInvalidParameter); actionInfo->finish(success ? Device::DeviceErrorNoError : Device::DeviceErrorInvalidParameter);
} }
void DevicePluginDoorbird::onImageReceived(QImage image)
{
Q_UNUSED(image);
Doorbird *doorbird = static_cast<Doorbird *>(sender());
Device *device = m_doorbirdConnections.key(doorbird);
if (!device)
return;
//TODO add QR code detection
Event event;
event.setDeviceId(device->id());
event.setEventTypeId(doorBirdQrCodeDetectedEventTypeId);
event.setParams(ParamList() << Param(doorBirdQrCodeDetectedEventDataParamTypeId, "image received"));
emit emitEvent(event);
}

View File

@ -1,22 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *
* Copyright (C) 2019 Michael Zanetti <michael.zanetti@nymea.io> * * Copyright 2013 - 2020, nymea GmbH
* * * Contact: contact@nymea.io
* This file is part of nymea. * *
* * * This file is part of nymea.
* nymea is free software: you can redistribute it and/or modify * * This project including source code and documentation is protected by
* it under the terms of the GNU General Public License as published by * * copyright law, and remains the property of nymea GmbH. All rights, including
* the Free Software Foundation, version 2 of the License. * * reproduction, publication, editing and translation, are reserved. The use of
* * * this project is subject to the terms of a license agreement to be concluded
* nymea is distributed in the hope that it will be useful, * * with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* but WITHOUT ANY WARRANTY; without even the implied warranty of * * under https://nymea.io/license
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * *
* GNU General Public License for more details. * * GNU Lesser General Public License Usage
* * * Alternatively, this project may be redistributed and/or modified under the
* You should have received a copy of the GNU General Public License * * terms of the GNU Lesser General Public License as published by the Free
* along with nymea. If not, see <http://www.gnu.org/licenses/>. * * Software Foundation; version 3. This project is distributed in the hope that
* * * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef DEVICEPLUGINDOORBIRD_H #ifndef DEVICEPLUGINDOORBIRD_H
#define DEVICEPLUGINDOORBIRD_H #define DEVICEPLUGINDOORBIRD_H
@ -58,7 +68,6 @@ private slots:
void onDoorBirdConnected(bool status); void onDoorBirdConnected(bool status);
void onDoorBirdEvent(Doorbird::EventType eventType, bool status); void onDoorBirdEvent(Doorbird::EventType eventType, bool status);
void onDoorBirdRequestSent(QUuid requestId, bool success); void onDoorBirdRequestSent(QUuid requestId, bool success);
void onImageReceived(QImage image);
}; };
#endif // DEVICEPLUGINDOORBIRD_H #endif // DEVICEPLUGINDOORBIRD_H

View File

@ -91,19 +91,6 @@
"id": "9bc89937-a2ab-4e8e-af0e-a9ba41caa89b", "id": "9bc89937-a2ab-4e8e-af0e-a9ba41caa89b",
"name": "doorbellPressed", "name": "doorbellPressed",
"displayName": "Doorbell pressed" "displayName": "Doorbell pressed"
},
{
"id": "224f1be5-17d3-460d-9bb8-a25fcdf28936",
"name": "qrCodeDetected",
"displayName": "QR code detected",
"paramTypes": [
{
"id": "c53068b9-604e-4dfc-8d23-26e8bab0233c",
"name": "data",
"displayName": "Data",
"type": "QString"
}
]
} }
] ]
} }

View File

@ -1,23 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *
* Copyright (C) 2019 Bernhard Trinnes <bernhard.trinnes@nymea.io> * * Copyright 2013 - 2020, nymea GmbH
* Copyright (C) 2019 Michael Zanetti <michael.zanetti@nymea.io> * * Contact: contact@nymea.io
* * *
* This file is part of nymea. * * This file is part of nymea.
* * * This project including source code and documentation is protected by
* nymea is free software: you can redistribute it and/or modify * * copyright law, and remains the property of nymea GmbH. All rights, including
* it under the terms of the GNU General Public License as published by * * reproduction, publication, editing and translation, are reserved. The use of
* the Free Software Foundation, version 2 of the License. * * 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
* nymea is distributed in the hope that it will be useful, * * under https://nymea.io/license
* but WITHOUT ANY WARRANTY; without even the implied warranty of * *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License Usage
* GNU General Public License for more details. * * Alternatively, this project may be redistributed and/or modified under the
* * * terms of the GNU Lesser General Public License as published by the Free
* You should have received a copy of the GNU General Public License * * Software Foundation; version 3. This project is distributed in the hope that
* along with nymea. If not, see <http://www.gnu.org/licenses/>. * * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "doorbird.h" #include "doorbird.h"
#include "extern-plugininfo.h" #include "extern-plugininfo.h"
@ -206,7 +215,6 @@ QUuid Doorbird::liveAudioReceive()
QUuid Doorbird::liveAudioTransmit() QUuid Doorbird::liveAudioTransmit()
{ {
return QUuid::createUuid(); return QUuid::createUuid();
} }

View File

@ -1,23 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * *
* Copyright (C) 2019 Bernhard Trinnes <bernhard.trinnes@nymea.io> * * Copyright 2013 - 2020, nymea GmbH
* Copyright (C) 2019 Michael Zanetti <michael.zanetti@nymea.io> * * Contact: contact@nymea.io
* * *
* This file is part of nymea. * * This file is part of nymea.
* * * This project including source code and documentation is protected by
* nymea is free software: you can redistribute it and/or modify * * copyright law, and remains the property of nymea GmbH. All rights, including
* it under the terms of the GNU General Public License as published by * * reproduction, publication, editing and translation, are reserved. The use of
* the Free Software Foundation, version 2 of the License. * * 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
* nymea is distributed in the hope that it will be useful, * * under https://nymea.io/license
* but WITHOUT ANY WARRANTY; without even the implied warranty of * *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License Usage
* GNU General Public License for more details. * * Alternatively, this project may be redistributed and/or modified under the
* * * terms of the GNU Lesser General Public License as published by the Free
* You should have received a copy of the GNU General Public License * * Software Foundation; version 3. This project is distributed in the hope that
* along with nymea. If not, see <http://www.gnu.org/licenses/>. * * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ * Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef DOORBIRD_H #ifndef DOORBIRD_H
#define DOORBIRD_H #define DOORBIRD_H

View File

@ -1,4 +1,114 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.1"> <TS version="2.1">
<context>
<name>DevicePluginDoorbird</name>
<message>
<location filename="../deviceplugindoorbird.cpp" line="92"/>
<source>Please enter the user credentials</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>doorBird</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="39"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="42"/>
<source>Connected</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, EventType: connected, ID: {186c270b-923c-46e4-a7da-33e45427cdbb})
----------
The name of the StateType ({186c270b-923c-46e4-a7da-33e45427cdbb}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="45"/>
<source>Connected changed</source>
<extracomment>The name of the EventType ({186c270b-923c-46e4-a7da-33e45427cdbb}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="48"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="51"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="54"/>
<source>DoorBird</source>
<extracomment>The name of the DeviceClass ({0485eb61-2a22-42ba-9dd2-a5961485bf08})
----------
The name of the vendor ({2da07435-571e-4956-a387-6caa51d6e845})
----------
The name of the plugin doorBird ({6fe1614a-fc47-4eb2-a47c-13c50f1798ee})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="57"/>
<source>Doorbell pressed</source>
<extracomment>The name of the EventType ({9bc89937-a2ab-4e8e-af0e-a9ba41caa89b}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="60"/>
<source>IP address</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, Type: device, ID: {8873b17d-526e-408d-95d8-6439b501f489})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="63"/>
<source>Light on</source>
<extracomment>The name of the ActionType ({3a6cfc5d-804c-4d21-91b5-999913d4f1a5}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="66"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="69"/>
<source>Motion sensor last seen time</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, EventType: lastSeenTime, ID: {295c9700-b598-4681-898f-d63e2889cedf})
----------
The name of the StateType ({295c9700-b598-4681-898f-d63e2889cedf}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="72"/>
<source>Motion sensor last seen time changedd</source>
<extracomment>The name of the EventType ({295c9700-b598-4681-898f-d63e2889cedf}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="75"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="78"/>
<source>Motion sensor presence</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, EventType: isPresent, ID: {0f5eb200-6c0d-45c5-9156-3060fd66d332})
----------
The name of the StateType ({0f5eb200-6c0d-45c5-9156-3060fd66d332}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="81"/>
<source>Motion sensor presence detected</source>
<extracomment>The name of the EventType ({0f5eb200-6c0d-45c5-9156-3060fd66d332}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="84"/>
<source>Open door</source>
<extracomment>The name of the ActionType ({b6c3377b-91de-411a-9d48-8b509c39d67c}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="87"/>
<source>Relay number</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, ActionType: openDoor, ID: {95dd35d7-0bc3-49e1-af96-d8da8ea5244d})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="90"/>
<source>Restart</source>
<extracomment>The name of the ActionType ({e874242e-5acb-4d98-94c7-0a70db65150c}) of DeviceClass doorBird</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/doorbird/plugininfo.h" line="93"/>
<source>Serial number</source>
<extracomment>The name of the ParamType (DeviceClass: doorBird, Type: device, ID: {67ea5534-330a-4291-93b5-0237034e15fa})</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
</TS> </TS>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
</TS>