diff --git a/examples/Expert/13-EventNotifications/13-EventNotifications.ino b/examples/Expert/13-EventNotifications/13-EventNotifications.ino index e7af742..089b949 100644 --- a/examples/Expert/13-EventNotifications/13-EventNotifications.ino +++ b/examples/Expert/13-EventNotifications/13-EventNotifications.ino @@ -12,7 +12,7 @@ #include "HomeSpan.h" #include "DEV_LED.h" #include "DEV_Identify.h" -#include "DEV_Temperature.h" +#include "DEV_Sensors.h" void setup() { @@ -49,6 +49,11 @@ void setup() { new DEV_TempSensor(); // Create a Temperature Sensor new SpanEvent(5000); + new SpanAccessory(); + new DEV_Identify("Air Quality","HomeSpan","123-ABC","Sensor","0.9",0); + new DEV_AirQualitySensor(); // Create an Air Quality Sensor + new SpanEvent(10000); + } // end of setup() ////////////////////////////////////// diff --git a/examples/Expert/13-EventNotifications/DEV_Sensors.h b/examples/Expert/13-EventNotifications/DEV_Sensors.h new file mode 100644 index 0000000..3816868 --- /dev/null +++ b/examples/Expert/13-EventNotifications/DEV_Sensors.h @@ -0,0 +1,61 @@ + +//////////////////////////////////// +// DEVICE-SPECIFIC LED SERVICES // +//////////////////////////////////// + +struct DEV_TempSensor : Service::TemperatureSensor { // A standalone Temperature sensor + + SpanCharacteristic *temp; // reference to the Current Temperature Characteristic + + DEV_TempSensor(ServiceType sType=ServiceType::Regular) : Service::TemperatureSensor(sType){ // constructor() method + + temp=new Characteristic::CurrentTemperature(); + + Serial.print("Configuring Temperature Sensor"); // initialization message + Serial.print("\n"); + + } // end constructor + + void event(){ + + temp->setVal(22.0); + + } // event +}; + +////////////////////////////////// + +struct DEV_AirQualitySensor : Service::AirQualitySensor { // A standalone Air Quality sensor + + SpanCharacteristic *airQuality; + SpanCharacteristic *o3Density; + SpanCharacteristic *no2Density; + SpanCharacteristic *so2Density; + SpanCharacteristic *pm25Density; + SpanCharacteristic *pm10Density; + SpanCharacteristic *vocDensity; + + DEV_AirQualitySensor(ServiceType sType=ServiceType::Regular) : Service::AirQualitySensor(sType){ // constructor() method + + airQuality=new Characteristic::AirQuality(1); + o3Density=new Characteristic::OzoneDensity(40.7); + no2Density=new Characteristic::NitrogenDioxideDensity(13.2); + + Serial.print("Configuring Air Quality Sensor"); // initialization message + Serial.print("\n"); + + } // end constructor + + void event(){ + + airQuality->setVal(1); + o3Density->setVal(10.8); + if(!random(2)){ + Serial.println("HERE\n"); + no2Density->setVal(50.3); + } + + } // event +}; + +////////////////////////////////// diff --git a/examples/Expert/13-EventNotifications/DEV_Temperature.h b/examples/Expert/13-EventNotifications/DEV_Temperature.h deleted file mode 100644 index 4095f94..0000000 --- a/examples/Expert/13-EventNotifications/DEV_Temperature.h +++ /dev/null @@ -1,26 +0,0 @@ - -//////////////////////////////////// -// DEVICE-SPECIFIC LED SERVICES // -//////////////////////////////////// - -struct DEV_TempSensor : Service::TemperatureSensor { // A standalone temperature sensor - - SpanCharacteristic *temp; // reference to the Current Temperature Characteristic - - DEV_TempSensor(ServiceType sType=ServiceType::Regular) : Service::TemperatureSensor(sType){ // constructor() method - - temp=new Characteristic::CurrentTemperature(); - - Serial.print("Configuring Temperature Sensor"); // initialization message - Serial.print("\n"); - - } // end constructor - - void event(){ - - temp->setVal(22.0); - - } // event -}; - -////////////////////////////////// diff --git a/src/HAP.cpp b/src/HAP.cpp index 0d0ba6c..a072177 100644 --- a/src/HAP.cpp +++ b/src/HAP.cpp @@ -1111,7 +1111,7 @@ void HAPClient::checkEvents(){ Serial.print(homeSpan.Events[i]->service->Characteristics[j]->iid); Serial.print("\n"); - homeSpan.Events[i]->service->Characteristics[j]->isUpdated=false; // reset isUpdated flag + homeSpan.Events[i]->service->Characteristics[j]->isUpdated=false; // reset isUpdated flag } } } diff --git a/src/Services.h b/src/Services.h index 1a5d7fc..1ffd9d4 100644 --- a/src/Services.h +++ b/src/Services.h @@ -83,6 +83,8 @@ namespace Characteristic { struct Active : SpanCharacteristic { Active(uint8_t value=0) : SpanCharacteristic{"B0",PR+PW+EV,(uint8_t)value}{} }; + struct AirQuality : SpanCharacteristic { AirQuality(uint8_t value=0) : SpanCharacteristic{"95",PR+EV,(uint8_t)value}{} }; + struct Brightness : SpanCharacteristic { Brightness(int value=0) : SpanCharacteristic{"8",PR+PW+EV,(int)value}{} }; struct ColorTemperature : SpanCharacteristic { ColorTemperature(uint32_t value=50) : SpanCharacteristic{"CE",PR+PW+EV,(uint32_t)value}{} }; @@ -99,10 +101,18 @@ namespace Characteristic { struct Name : SpanCharacteristic { Name(char *value) : SpanCharacteristic{"23",PR,(char *)value}{} }; + struct NitrogenDioxideDensity : SpanCharacteristic { NitrogenDioxideDensity(double value=0) : SpanCharacteristic{"C4",PR+EV,(double)value}{} }; + struct On : SpanCharacteristic { On(boolean value=false) : SpanCharacteristic{"25",PR+PW+EV,(boolean)value}{} }; struct OutletInUse : SpanCharacteristic { OutletInUse(boolean value=false) : SpanCharacteristic{"26",PR+EV,(boolean)value}{} }; + struct OzoneDensity : SpanCharacteristic { OzoneDensity(double value=0) : SpanCharacteristic{"C3",PR+EV,(double)value}{} }; + + struct PM10Density : SpanCharacteristic { PM10Density(double value=0) : SpanCharacteristic{"C7",PR+EV,(double)value}{} }; + + struct PM25Density : SpanCharacteristic { PM25Density(double value=0) : SpanCharacteristic{"C6",PR+EV,(double)value}{} }; + struct RotationDirection : SpanCharacteristic { RotationDirection(int value=0) : SpanCharacteristic{"28",PR+PW+EV,(int)value}{} }; struct RotationSpeed : SpanCharacteristic { RotationSpeed(double value=0) : SpanCharacteristic{"29",PR+PW+EV,(double)value}{} }; @@ -111,10 +121,28 @@ namespace Characteristic { struct SerialNumber : SpanCharacteristic { SerialNumber(char *value) : SpanCharacteristic{"30",PR,(char *)value}{} }; + struct SlatType : SpanCharacteristic { SlatType(uint8_t value=0) : SpanCharacteristic{"C0",PR,(uint8_t)value}{} }; + + struct SmokeDetected : SpanCharacteristic { SmokeDetected(uint8_t value=0) : SpanCharacteristic{"76",PR+EV,(uint8_t)value}{} }; + + struct StatusActive : SpanCharacteristic { StatusActive(boolean value=true) : SpanCharacteristic{"75",PR+EV,(boolean)value}{} }; + + struct StatusFault : SpanCharacteristic { StatusFault(uint8_t value=0) : SpanCharacteristic{"77",PR+EV,(uint8_t)value}{} }; + + struct StatusJammed : SpanCharacteristic { StatusJammed(uint8_t value=0) : SpanCharacteristic{"78",PR+EV,(uint8_t)value}{} }; + + struct StatusLowBattery : SpanCharacteristic { StatusLowBattery(uint8_t value=0) : SpanCharacteristic{"79",PR+EV,(uint8_t)value}{} }; + + struct StatusTampered : SpanCharacteristic { StatusTampered(uint8_t value=0) : SpanCharacteristic{"7A",PR+EV,(uint8_t)value}{} }; + + struct SulphurDioxideDensity : SpanCharacteristic { SulphurDioxideDensity(double value=0) : SpanCharacteristic{"C5",PR+EV,(double)value}{} }; + struct SwingMode : SpanCharacteristic { SwingMode(uint8_t value=0) : SpanCharacteristic{"B6",PR+PW+EV,(uint8_t)value}{} }; struct CurrentTemperature : SpanCharacteristic { CurrentTemperature(double value=0) : SpanCharacteristic{"11",PR+EV,(double)value}{} }; struct Version : SpanCharacteristic { Version(char *value) : SpanCharacteristic{"37",PR,(char *)value}{} }; - + + struct VOCDensity : SpanCharacteristic { VOCDensity(double value=0) : SpanCharacteristic{"C8",PR+EV,(double)value}{} }; + } diff --git a/src/src.ino b/src/src.ino index 8d8b76d..0ee2e57 100644 --- a/src/src.ino +++ b/src/src.ino @@ -1,5 +1,5 @@ #error THIS IS NOT COMPILABLE CODE -This is a dummy .ino file that allows you to easily edit the contents of this library using the Arduino IDE. -The code is NOT designed to be compiled from this point. Compile and test the library using one of the examples. +// This is a dummy .ino file that allows you to easily edit the contents of this library using the Arduino IDE. +// The code is NOT designed to be compiled from this point. Compile and test the library using one of the examples.