update datetime plugin
This commit is contained in:
parent
da9927f61f
commit
074f1a7cd2
@ -107,7 +107,7 @@
|
|||||||
DevicePluginDateTime::DevicePluginDateTime() :
|
DevicePluginDateTime::DevicePluginDateTime() :
|
||||||
m_timer(0),
|
m_timer(0),
|
||||||
m_todayDevice(0),
|
m_todayDevice(0),
|
||||||
m_timeZone(QTimeZone("Europe/Vienna")),
|
m_timeZone(QTimeZone(QTimeZone::systemTimeZoneId())),
|
||||||
m_dusk(QDateTime()),
|
m_dusk(QDateTime()),
|
||||||
m_sunrise(QDateTime()),
|
m_sunrise(QDateTime()),
|
||||||
m_noon(QDateTime()),
|
m_noon(QDateTime()),
|
||||||
@ -117,11 +117,9 @@ DevicePluginDateTime::DevicePluginDateTime() :
|
|||||||
m_timer = new QTimer(this);
|
m_timer = new QTimer(this);
|
||||||
m_timer->setInterval(1000);
|
m_timer->setInterval(1000);
|
||||||
|
|
||||||
m_timeZone = QTimeZone(QTimeZone::systemTimeZoneId());
|
|
||||||
m_currentDateTime = QDateTime(QDate::currentDate(), QTime::currentTime(), m_timeZone);
|
m_currentDateTime = QDateTime(QDate::currentDate(), QTime::currentTime(), m_timeZone);
|
||||||
|
|
||||||
connect(m_timer, &QTimer::timeout, this, &DevicePluginDateTime::onSecondChanged);
|
connect(m_timer, &QTimer::timeout, this, &DevicePluginDateTime::onSecondChanged);
|
||||||
connect(this, &DevicePluginDateTime::configValueChanged, this, &DevicePluginDateTime::onConfigValueChanged);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceManager::HardwareResources DevicePluginDateTime::requiredHardware() const
|
DeviceManager::HardwareResources DevicePluginDateTime::requiredHardware() const
|
||||||
@ -129,21 +127,6 @@ DeviceManager::HardwareResources DevicePluginDateTime::requiredHardware() const
|
|||||||
return DeviceManager::HardwareResourceNetworkManager;
|
return DeviceManager::HardwareResourceNetworkManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
//QList<ParamType> DevicePluginDateTime::configurationDescription() const
|
|
||||||
//{
|
|
||||||
// QList<ParamType> params;
|
|
||||||
// ParamType timezoneParamType("timezone", QVariant::String, "Europe/Vienna");
|
|
||||||
|
|
||||||
// QList<QVariant> allowedValues;
|
|
||||||
// foreach (QByteArray timeZone, QTimeZone::availableTimeZoneIds()) {
|
|
||||||
// allowedValues.append(timeZone);
|
|
||||||
// }
|
|
||||||
// timezoneParamType.setAllowedValues(allowedValues);
|
|
||||||
|
|
||||||
// params.append(timezoneParamType);
|
|
||||||
// return params;
|
|
||||||
//}
|
|
||||||
|
|
||||||
DeviceManager::DeviceSetupStatus DevicePluginDateTime::setupDevice(Device *device)
|
DeviceManager::DeviceSetupStatus DevicePluginDateTime::setupDevice(Device *device)
|
||||||
{
|
{
|
||||||
// check timezone
|
// check timezone
|
||||||
@ -271,14 +254,14 @@ void DevicePluginDateTime::networkManagerReplyReady(QNetworkReply *reply)
|
|||||||
if (m_locationReplies.contains(reply)) {
|
if (m_locationReplies.contains(reply)) {
|
||||||
m_locationReplies.removeAll(reply);
|
m_locationReplies.removeAll(reply);
|
||||||
if (status != 200) {
|
if (status != 200) {
|
||||||
qCWarning(dcDateTime) << "http error status for location request:" << status << reply->error();
|
qCWarning(dcDateTime) << "Http error status for location request:" << status << reply->error();
|
||||||
} else {
|
} else {
|
||||||
processGeoLocationData(reply->readAll());
|
processGeoLocationData(reply->readAll());
|
||||||
}
|
}
|
||||||
} else if (m_timeReplies.contains(reply)) {
|
} else if (m_timeReplies.contains(reply)) {
|
||||||
m_timeReplies.removeAll(reply);
|
m_timeReplies.removeAll(reply);
|
||||||
if (status != 200) {
|
if (status != 200) {
|
||||||
qCWarning(dcDateTime) << "http error status for time request:" << status << reply->error();
|
qCWarning(dcDateTime) << "Http error status for time request:" << status << reply->error();
|
||||||
} else {
|
} else {
|
||||||
processTimesData(reply->readAll());
|
processTimesData(reply->readAll());
|
||||||
}
|
}
|
||||||
@ -294,9 +277,9 @@ void DevicePluginDateTime::startMonitoringAutoDevices()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DeviceDescriptor dateDescriptor(todayDeviceClassId, QString("Date"), QString(m_timeZone.id()));
|
DeviceDescriptor dateDescriptor(todayDeviceClassId, "Date", "Time");
|
||||||
ParamList params;
|
ParamList params;
|
||||||
params.append(Param("name", m_timeZone.id()));
|
params.append(Param("name", "Time"));
|
||||||
dateDescriptor.setParams(params);
|
dateDescriptor.setParams(params);
|
||||||
|
|
||||||
emit autoDevicesAppeared(todayDeviceClassId, QList<DeviceDescriptor>() << dateDescriptor);
|
emit autoDevicesAppeared(todayDeviceClassId, QList<DeviceDescriptor>() << dateDescriptor);
|
||||||
@ -334,12 +317,10 @@ void DevicePluginDateTime::processGeoLocationData(const QByteArray &data)
|
|||||||
|
|
||||||
// check timezone
|
// check timezone
|
||||||
QString timeZone = response.value("timezone").toString();
|
QString timeZone = response.value("timezone").toString();
|
||||||
if (QString(m_timeZone.id()) != timeZone) {
|
|
||||||
qCWarning(dcDateTime) << "error: configured timezone does not match the discovered timezone";
|
m_todayDevice->setStateValue(timeZoneStateTypeId, timeZone);
|
||||||
qCWarning(dcDateTime) << " configured:" << m_timeZone.id();
|
m_todayDevice->setStateValue(cityStateTypeId, response.value("city").toString());
|
||||||
qCWarning(dcDateTime) << " discovered:" << timeZone;
|
m_todayDevice->setStateValue(countryStateTypeId, response.value("country").toString());
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
qCDebug(dcDateTime) << "---------------------------------------------";
|
qCDebug(dcDateTime) << "---------------------------------------------";
|
||||||
qCDebug(dcDateTime) << "autodetected location for" << response.value("query").toString();
|
qCDebug(dcDateTime) << "autodetected location for" << response.value("query").toString();
|
||||||
@ -537,21 +518,6 @@ void DevicePluginDateTime::updateTimes()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DevicePluginDateTime::onConfigValueChanged(const QString ¶mName, const QVariant &value)
|
|
||||||
{
|
|
||||||
Q_UNUSED(paramName)
|
|
||||||
|
|
||||||
QTimeZone newZone = QTimeZone(value.toByteArray());
|
|
||||||
if (newZone.isValid()) {
|
|
||||||
m_timeZone = newZone;
|
|
||||||
QDateTime zoneTime = QDateTime(QDate::currentDate(), QTime::currentTime(), m_timeZone);
|
|
||||||
qCDebug(dcDateTime) << " time zone:" << value.toString();
|
|
||||||
qCDebug(dcDateTime) << " current time:" << zoneTime.currentDateTime().toString();
|
|
||||||
qCDebug(dcDateTime) << "-----------------------------";
|
|
||||||
} else {
|
|
||||||
qCWarning(dcDateTime) << "could not set new timezone" << value.toString() << ". keeping old time zone:" << m_timeZone;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DevicePluginDateTime::validateTimeTypes(const QDateTime &dateTime)
|
void DevicePluginDateTime::validateTimeTypes(const QDateTime &dateTime)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -92,7 +92,6 @@ private slots:
|
|||||||
|
|
||||||
void updateTimes();
|
void updateTimes();
|
||||||
|
|
||||||
void onConfigValueChanged(const QString ¶mName, const QVariant &value);
|
|
||||||
void validateTimeTypes(const QDateTime &dateTime);
|
void validateTimeTypes(const QDateTime &dateTime);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -14,7 +14,6 @@
|
|||||||
"name": "Today",
|
"name": "Today",
|
||||||
"basicTags": [
|
"basicTags": [
|
||||||
"Service",
|
"Service",
|
||||||
"Sensor",
|
|
||||||
"Time"
|
"Time"
|
||||||
],
|
],
|
||||||
"createMethods": ["auto"],
|
"createMethods": ["auto"],
|
||||||
@ -26,19 +25,44 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"stateTypes": [
|
"stateTypes": [
|
||||||
|
{
|
||||||
|
"id": "ab16997c-be29-438e-b588-2507d723d264",
|
||||||
|
"idName": "timeZone",
|
||||||
|
"name": "timezone",
|
||||||
|
"type": "QString",
|
||||||
|
"defaultValue": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "65d2a5ff-bcab-43a8-b043-f88cf01586f4",
|
||||||
|
"idName": "city",
|
||||||
|
"name": "city",
|
||||||
|
"type": "QString",
|
||||||
|
"defaultValue": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "a534bd8b-6826-4d71-b9f9-df1433964b94",
|
||||||
|
"idName": "country",
|
||||||
|
"name": "country",
|
||||||
|
"type": "QString",
|
||||||
|
"defaultValue": "-"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "eb5231ea-6a1b-4d7e-a95f-d49e7b25122e",
|
"id": "eb5231ea-6a1b-4d7e-a95f-d49e7b25122e",
|
||||||
"name": "day",
|
"name": "day",
|
||||||
"idName": "day",
|
"idName": "day",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"defaultValue": "1"
|
"defaultValue": 1,
|
||||||
|
"minValue": 1,
|
||||||
|
"maxValue": 31
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "fcd8ec96-4488-438a-8b30-58bfe2a7fae2",
|
"id": "fcd8ec96-4488-438a-8b30-58bfe2a7fae2",
|
||||||
"name": "month",
|
"name": "month",
|
||||||
"idName": "month",
|
"idName": "month",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"defaultValue": "1"
|
"defaultValue": 1,
|
||||||
|
"minValue": 1,
|
||||||
|
"maxValue": 12
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "a37acc9c-5cfb-4687-adce-e56beb32586f",
|
"id": "a37acc9c-5cfb-4687-adce-e56beb32586f",
|
||||||
@ -59,7 +83,9 @@
|
|||||||
"idName": "weekday",
|
"idName": "weekday",
|
||||||
"name": "weekday",
|
"name": "weekday",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"defaultValue": "1"
|
"defaultValue": 1,
|
||||||
|
"minValue": 1,
|
||||||
|
"maxValue": 7
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "f627d052-cee6-4727-b9c6-0e935d41e04a",
|
"id": "f627d052-cee6-4727-b9c6-0e935d41e04a",
|
||||||
|
|||||||
Reference in New Issue
Block a user