diff --git a/simulation/integrationpluginsimulation.cpp b/simulation/integrationpluginsimulation.cpp index b1402059..0aa1cc46 100644 --- a/simulation/integrationpluginsimulation.cpp +++ b/simulation/integrationpluginsimulation.cpp @@ -71,7 +71,8 @@ void IntegrationPluginSimulation::setupThing(ThingSetupInfo *info) thing->thingClassId() == rollerShutterThingClassId || thing->thingClassId() == fingerPrintSensorThingClassId || thing->thingClassId() == thermostatThingClassId || - thing->thingClassId() == barcodeScannerThingClassId) { + thing->thingClassId() == barcodeScannerThingClassId || + thing->thingClassId() == contactSensorThingClassId) { m_simulationTimers.insert(thing, new QTimer(thing)); connect(m_simulationTimers[thing], &QTimer::timeout, this, &IntegrationPluginSimulation::simulationTimerTimeout); } @@ -81,6 +82,10 @@ void IntegrationPluginSimulation::setupThing(ThingSetupInfo *info) if (thing->thingClassId() == barcodeScannerThingClassId) { m_simulationTimers.value(thing)->start(10000); } + + if (thing->thingClassId() == contactSensorThingClassId) { + m_simulationTimers.value(thing)->start(10000); + } info->finish(Thing::ThingErrorNoError); } @@ -738,5 +743,17 @@ void IntegrationPluginSimulation::simulationTimerTimeout() ParamList params = ParamList() << Param(barcodeScannerCodeScannedEventContentParamTypeId, code); Event event(barcodeScannerCodeScannedEventTypeId, thing->id(), params); emit emitEvent(event); + } else if (thing->thingClassId() == contactSensorThingClassId) { + thing->setStateValue(contactSensorClosedStateTypeId, !thing->stateValue(contactSensorClosedStateTypeId).toBool()); + thing->setStateValue(contactSensorBatteryLevelStateTypeId, thing->stateValue(contactSensorBatteryLevelStateTypeId).toInt()-1); + + if (thing->stateValue(contactSensorBatteryLevelStateTypeId).toInt() == 0) { + thing->setStateValue(contactSensorBatteryLevelStateTypeId, 100); + thing->setStateValue(contactSensorBatteryCriticalStateTypeId, false); + } else if (thing->stateValue(contactSensorBatteryLevelStateTypeId).toInt() <= 20) { + thing->setStateValue(contactSensorBatteryCriticalStateTypeId, true); + } else { + thing->setStateValue(contactSensorBatteryCriticalStateTypeId, false); + } } } diff --git a/simulation/integrationpluginsimulation.json b/simulation/integrationpluginsimulation.json index fb14c513..76d78c17 100644 --- a/simulation/integrationpluginsimulation.json +++ b/simulation/integrationpluginsimulation.json @@ -1040,6 +1040,52 @@ ] } ] + }, + { + "name": "contactSensor", + "displayName": "Door/window sensor", + "id": "14f6c41c-b1ba-4d83-b1b2-d764a62c8eed", + "setupMethod": "JustAdd", + "createMethods": [ "user" ], + "interfaces": [ "closablesensor", "connectable", "battery"], + "stateTypes": [ + { + "id": "47789719-e300-4d0d-b861-42f24af38103", + "name": "connected", + "displayName": "Available", + "displayNameEvent": "Available changed", + "type": "bool", + "cached": false, + "defaultValue": true + }, + { + "id": "bb02bb10-a933-4833-8a1d-40dda41691b2", + "name": "closed", + "displayName": "Closed", + "displayNameEvent": "Closed changed", + "type": "bool", + "defaultValue": false + }, + { + "id": "4979b1a8-7f1e-4b65-9c35-187045c42a8f", + "name": "batteryLevel", + "displayName": "Battery", + "displayNameEvent": "Battery level changed", + "type": "int", + "minValue": 0, + "maxValue": 100, + "unit": "Percentage", + "defaultValue": 80 + }, + { + "id": "8d87413f-b625-4b77-aa95-2029b4bfb741", + "name": "batteryCritical", + "displayName": "Battery critical", + "displayNameEvent": "Battery critical changed", + "type": "bool", + "defaultValue": false + } + ] } ] } diff --git a/simulation/translations/b7368429-e312-4c82-9eab-e1cd996e43d6-en_US.ts b/simulation/translations/b7368429-e312-4c82-9eab-e1cd996e43d6-en_US.ts index e504e457..33b52b2a 100644 --- a/simulation/translations/b7368429-e312-4c82-9eab-e1cd996e43d6-en_US.ts +++ b/simulation/translations/b7368429-e312-4c82-9eab-e1cd996e43d6-en_US.ts @@ -96,7 +96,9 @@ The name of the EventType ({10c735fd-7b81-484a-a148-76ea0da840f0}) of ThingClass Battery level changed - The name of the EventType ({6a7ecb09-135c-4be2-8c36-f2a71711ea05}) of ThingClass gardenSensor + The name of the EventType ({4979b1a8-7f1e-4b65-9c35-187045c42a8f}) of ThingClass contactSensor +---------- +The name of the EventType ({6a7ecb09-135c-4be2-8c36-f2a71711ea05}) of ThingClass gardenSensor ---------- The name of the EventType ({30fd9fd9-1a6b-4698-93ac-6b2a1ba18500}) of ThingClass battery ---------- @@ -107,7 +109,9 @@ The name of the EventType ({45c0de32-b519-47d7-9f82-e5f09d1542d4}) of ThingClass Battery critical changed - The name of the EventType ({68d818fd-ad8a-411d-95b1-811991535fe2}) of ThingClass gardenSensor + The name of the EventType ({8d87413f-b625-4b77-aa95-2029b4bfb741}) of ThingClass contactSensor +---------- +The name of the EventType ({68d818fd-ad8a-411d-95b1-811991535fe2}) of ThingClass gardenSensor ---------- The name of the EventType ({4857f2b4-0840-4c7e-82ff-bd881ae32cf9}) of ThingClass battery ---------- @@ -273,7 +277,11 @@ The name of the EventType ({be0291ff-6041-433b-9121-a30ca4426b22}) of ThingClass Battery - The name of the ParamType (ThingClass: gardenSensor, EventType: batteryLevel, ID: {6a7ecb09-135c-4be2-8c36-f2a71711ea05}) + The name of the ParamType (ThingClass: contactSensor, EventType: batteryLevel, ID: {4979b1a8-7f1e-4b65-9c35-187045c42a8f}) +---------- +The name of the StateType ({4979b1a8-7f1e-4b65-9c35-187045c42a8f}) of ThingClass contactSensor +---------- +The name of the ParamType (ThingClass: gardenSensor, EventType: batteryLevel, ID: {6a7ecb09-135c-4be2-8c36-f2a71711ea05}) ---------- The name of the StateType ({6a7ecb09-135c-4be2-8c36-f2a71711ea05}) of ThingClass gardenSensor ---------- @@ -439,7 +447,11 @@ The name of the StateType ({10c735fd-7b81-484a-a148-76ea0da840f0}) of ThingClass Battery critical - The name of the ParamType (ThingClass: gardenSensor, EventType: batteryCritical, ID: {68d818fd-ad8a-411d-95b1-811991535fe2}) + The name of the ParamType (ThingClass: contactSensor, EventType: batteryCritical, ID: {8d87413f-b625-4b77-aa95-2029b4bfb741}) +---------- +The name of the StateType ({8d87413f-b625-4b77-aa95-2029b4bfb741}) of ThingClass contactSensor +---------- +The name of the ParamType (ThingClass: gardenSensor, EventType: batteryCritical, ID: {68d818fd-ad8a-411d-95b1-811991535fe2}) ---------- The name of the StateType ({68d818fd-ad8a-411d-95b1-811991535fe2}) of ThingClass gardenSensor ---------- @@ -956,5 +968,34 @@ The name of the StateType ({f892f660-87ff-458a-bfa0-5af08591233e}) of ThingClass The name of the ParamType (ThingClass: barcodeScanner, EventType: codeScanned, ID: {d76c1a34-ee9a-4363-80bb-2042639311c7}) + + Available + The name of the ParamType (ThingClass: contactSensor, EventType: connected, ID: {47789719-e300-4d0d-b861-42f24af38103}) +---------- +The name of the StateType ({47789719-e300-4d0d-b861-42f24af38103}) of ThingClass contactSensor + + + + Available changed + The name of the EventType ({47789719-e300-4d0d-b861-42f24af38103}) of ThingClass contactSensor + + + + Closed + The name of the ParamType (ThingClass: contactSensor, EventType: closed, ID: {bb02bb10-a933-4833-8a1d-40dda41691b2}) +---------- +The name of the StateType ({bb02bb10-a933-4833-8a1d-40dda41691b2}) of ThingClass contactSensor + + + + Closed changed + The name of the EventType ({bb02bb10-a933-4833-8a1d-40dda41691b2}) of ThingClass contactSensor + + + + Door/window sensor + The name of the ThingClass ({14f6c41c-b1ba-4d83-b1b2-d764a62c8eed}) + +