Added min/max Range defaults for all Characteristics
Also added new flag "staticRange" for all Characteristics that indicates whether the min/max range can be changed. An ERROR will be thrown if setRange is attempted for a Characteristic having staticRange=true.
This commit is contained in:
parent
26a38b68cc
commit
7e3d982ee5
|
|
@ -58,113 +58,114 @@ struct HapChar {
|
||||||
const char *hapName;
|
const char *hapName;
|
||||||
PERMS perms;
|
PERMS perms;
|
||||||
FORMAT format;
|
FORMAT format;
|
||||||
|
boolean staticRange;
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
#define HAPCHAR(hapName,type,perms,format) HapChar hapName {#type,#hapName,(PERMS)(perms),format}
|
#define HAPCHAR(hapName,type,perms,format,staticRange) HapChar hapName {#type,#hapName,(PERMS)(perms),format,staticRange}
|
||||||
|
|
||||||
struct HapCharacteristics {
|
struct HapCharacteristics {
|
||||||
|
|
||||||
HAPCHAR( Active, B0, PW+PR+EV, UINT8 );
|
HAPCHAR( Active, B0, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( AirQuality, 95, PR+EV, UINT8 );
|
HAPCHAR( AirQuality, 95, PR+EV, UINT8, true );
|
||||||
HAPCHAR( BatteryLevel, 68, PR+EV, UINT8 );
|
HAPCHAR( BatteryLevel, 68, PR+EV, UINT8, false );
|
||||||
HAPCHAR( Brightness, 8, PR+PW+EV, INT );
|
HAPCHAR( Brightness, 8, PR+PW+EV, INT, false );
|
||||||
HAPCHAR( CarbonMonoxideLevel, 90, PR+EV, FLOAT );
|
HAPCHAR( CarbonMonoxideLevel, 90, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CarbonMonoxidePeakLevel, 91, PR+EV, FLOAT );
|
HAPCHAR( CarbonMonoxidePeakLevel, 91, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CarbonDioxideDetected, 92, PR+EV, UINT8 );
|
HAPCHAR( CarbonDioxideDetected, 92, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CarbonDioxideLevel, 93, PR+EV, FLOAT );
|
HAPCHAR( CarbonDioxideLevel, 93, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CarbonDioxidePeakLevel, 94, PR+EV, FLOAT );
|
HAPCHAR( CarbonDioxidePeakLevel, 94, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CarbonMonoxideDetected, 69, PR+EV, UINT8 );
|
HAPCHAR( CarbonMonoxideDetected, 69, PR+EV, UINT8, true );
|
||||||
HAPCHAR( ChargingState, 8F, PR+EV, UINT8 );
|
HAPCHAR( ChargingState, 8F, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CoolingThresholdTemperature, D, PR+PW+EV, FLOAT );
|
HAPCHAR( CoolingThresholdTemperature, D, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( ColorTemperature, CE, PR+PW+EV, UINT32 );
|
HAPCHAR( ColorTemperature, CE, PR+PW+EV, UINT32, false );
|
||||||
HAPCHAR( ContactSensorState, 6A, PR+EV, UINT8 );
|
HAPCHAR( ContactSensorState, 6A, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentAmbientLightLevel, 6B, PR+EV, FLOAT );
|
HAPCHAR( CurrentAmbientLightLevel, 6B, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CurrentHorizontalTiltAngle, 6C, PR+EV, INT );
|
HAPCHAR( CurrentHorizontalTiltAngle, 6C, PR+EV, INT, false );
|
||||||
HAPCHAR( CurrentAirPurifierState, A9, PR+EV, UINT8 );
|
HAPCHAR( CurrentAirPurifierState, A9, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentSlatState, AA, PR+EV, UINT8 );
|
HAPCHAR( CurrentSlatState, AA, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentPosition, 6D, PR+EV, UINT8 );
|
HAPCHAR( CurrentPosition, 6D, PR+EV, UINT8, false );
|
||||||
HAPCHAR( CurrentVerticalTiltAngle, 6E, PR+EV, INT );
|
HAPCHAR( CurrentVerticalTiltAngle, 6E, PR+EV, INT, false );
|
||||||
HAPCHAR( CurrentHumidifierDehumidifierState, B3, PR+EV, UINT8 );
|
HAPCHAR( CurrentHumidifierDehumidifierState, B3, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentDoorState, E, PR+EV, UINT8 );
|
HAPCHAR( CurrentDoorState, E, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentFanState, AF, PR+EV, UINT8 );
|
HAPCHAR( CurrentFanState, AF, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentHeatingCoolingState, F, PR+EV, UINT8 );
|
HAPCHAR( CurrentHeatingCoolingState, F, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentHeaterCoolerState, B1, PR+EV, UINT8 );
|
HAPCHAR( CurrentHeaterCoolerState, B1, PR+EV, UINT8, true );
|
||||||
HAPCHAR( CurrentRelativeHumidity, 10, PR+EV, FLOAT );
|
HAPCHAR( CurrentRelativeHumidity, 10, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CurrentTemperature, 11, PR+EV, FLOAT );
|
HAPCHAR( CurrentTemperature, 11, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( CurrentTiltAngle, C1, PR+EV, INT );
|
HAPCHAR( CurrentTiltAngle, C1, PR+EV, INT, false );
|
||||||
HAPCHAR( FilterLifeLevel, AB, PR+EV, FLOAT );
|
HAPCHAR( FilterLifeLevel, AB, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( FilterChangeIndication, AC, PR+EV, UINT8 );
|
HAPCHAR( FilterChangeIndication, AC, PR+EV, UINT8, true );
|
||||||
HAPCHAR( FirmwareRevision, 52, PR, STRING );
|
HAPCHAR( FirmwareRevision, 52, PR, STRING, true );
|
||||||
HAPCHAR( HardwareRevision, 53, PR, STRING );
|
HAPCHAR( HardwareRevision, 53, PR, STRING, true );
|
||||||
HAPCHAR( HeatingThresholdTemperature, 12, PR+PW+EV, FLOAT );
|
HAPCHAR( HeatingThresholdTemperature, 12, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( HoldPosition, 6F, PW, BOOL );
|
HAPCHAR( HoldPosition, 6F, PW, BOOL, true );
|
||||||
HAPCHAR( Hue, 13, PR+PW+EV, FLOAT );
|
HAPCHAR( Hue, 13, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( Identify, 14, PW, BOOL );
|
HAPCHAR( Identify, 14, PW, BOOL, true );
|
||||||
HAPCHAR( InUse, D2, PR+EV, UINT8 );
|
HAPCHAR( InUse, D2, PR+EV, UINT8, true );
|
||||||
HAPCHAR( IsConfigured, D6, PR+EV, UINT8 );
|
HAPCHAR( IsConfigured, D6, PR+EV, UINT8, true );
|
||||||
HAPCHAR( LeakDetected, 70, PR+EV, UINT8 );
|
HAPCHAR( LeakDetected, 70, PR+EV, UINT8, true );
|
||||||
HAPCHAR( LockCurrentState, 1D, PR+EV, UINT8 );
|
HAPCHAR( LockCurrentState, 1D, PR+EV, UINT8, true );
|
||||||
HAPCHAR( LockPhysicalControls, A7, PW+PR+EV, UINT8 );
|
HAPCHAR( LockPhysicalControls, A7, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( LockTargetState, 1E, PW+PR+EV, UINT8 );
|
HAPCHAR( LockTargetState, 1E, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( Manufacturer, 20, PR, STRING );
|
HAPCHAR( Manufacturer, 20, PR, STRING, true );
|
||||||
HAPCHAR( Model, 21, PR, STRING );
|
HAPCHAR( Model, 21, PR, STRING, true );
|
||||||
HAPCHAR( MotionDetected, 22, PR+EV, BOOL );
|
HAPCHAR( MotionDetected, 22, PR+EV, BOOL, true );
|
||||||
HAPCHAR( Mute, 11A, PW+PR+EV, BOOL );
|
HAPCHAR( Mute, 11A, PW+PR+EV, BOOL, true );
|
||||||
HAPCHAR( Name, 23, PR, STRING );
|
HAPCHAR( Name, 23, PR, STRING, true );
|
||||||
HAPCHAR( NitrogenDioxideDensity, C4, PR+EV, FLOAT );
|
HAPCHAR( NitrogenDioxideDensity, C4, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( ObstructionDetected, 24, PR+EV, BOOL );
|
HAPCHAR( ObstructionDetected, 24, PR+EV, BOOL, true );
|
||||||
HAPCHAR( PM25Density, C6, PR+EV, FLOAT );
|
HAPCHAR( PM25Density, C6, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( OccupancyDetected, 71, PR+EV, UINT8 );
|
HAPCHAR( OccupancyDetected, 71, PR+EV, UINT8, true );
|
||||||
HAPCHAR( OutletInUse, 26, PR+EV, BOOL );
|
HAPCHAR( OutletInUse, 26, PR+EV, BOOL, true );
|
||||||
HAPCHAR( On, 25, PR+PW+EV, BOOL );
|
HAPCHAR( On, 25, PR+PW+EV, BOOL, true );
|
||||||
HAPCHAR( OzoneDensity, C3, PR+EV, FLOAT );
|
HAPCHAR( OzoneDensity, C3, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( PM10Density, C7, PR+EV, FLOAT );
|
HAPCHAR( PM10Density, C7, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( PositionState, 72, PR+EV, UINT8 );
|
HAPCHAR( PositionState, 72, PR+EV, UINT8, true );
|
||||||
HAPCHAR( ProgramMode, D1, PR+EV, UINT8 );
|
HAPCHAR( ProgramMode, D1, PR+EV, UINT8, true );
|
||||||
HAPCHAR( ProgrammableSwitchEvent, 73, PR+EV+NV, UINT8 );
|
HAPCHAR( ProgrammableSwitchEvent, 73, PR+EV+NV, UINT8, true );
|
||||||
HAPCHAR( RelativeHumidityDehumidifierThreshold, C9, PR+PW+EV, FLOAT );
|
HAPCHAR( RelativeHumidityDehumidifierThreshold, C9, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( RelativeHumidityHumidifierThreshold, CA, PR+PW+EV, FLOAT );
|
HAPCHAR( RelativeHumidityHumidifierThreshold, CA, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( RemainingDuration, D4, PR+EV, UINT32 );
|
HAPCHAR( RemainingDuration, D4, PR+EV, UINT32, false );
|
||||||
HAPCHAR( ResetFilterIndication, AD, PW, UINT8 );
|
HAPCHAR( ResetFilterIndication, AD, PW, UINT8, true );
|
||||||
HAPCHAR( RotationDirection, 28, PR+PW+EV, INT );
|
HAPCHAR( RotationDirection, 28, PR+PW+EV, INT, true );
|
||||||
HAPCHAR( RotationSpeed, 29, PR+PW+EV, FLOAT );
|
HAPCHAR( RotationSpeed, 29, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( Saturation, 2F, PR+PW+EV, FLOAT );
|
HAPCHAR( Saturation, 2F, PR+PW+EV, FLOAT, false );
|
||||||
HAPCHAR( SecuritySystemAlarmType, 8E, PR+EV, UINT8 );
|
HAPCHAR( SecuritySystemAlarmType, 8E, PR+EV, UINT8, true );
|
||||||
HAPCHAR( SecuritySystemCurrentState, 66, PR+EV, UINT8 );
|
HAPCHAR( SecuritySystemCurrentState, 66, PR+EV, UINT8, true );
|
||||||
HAPCHAR( SecuritySystemTargetState, 67, PW+PR+EV, UINT8 );
|
HAPCHAR( SecuritySystemTargetState, 67, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( SerialNumber, 30, PR, STRING );
|
HAPCHAR( SerialNumber, 30, PR, STRING, true );
|
||||||
HAPCHAR( ServiceLabelIndex, CB, PR, UINT8 );
|
HAPCHAR( ServiceLabelIndex, CB, PR, UINT8, true );
|
||||||
HAPCHAR( ServiceLabelNamespace, CD, PR, UINT8 );
|
HAPCHAR( ServiceLabelNamespace, CD, PR, UINT8, true );
|
||||||
HAPCHAR( SlatType, C0, PR, UINT8 );
|
HAPCHAR( SlatType, C0, PR, UINT8, true );
|
||||||
HAPCHAR( SmokeDetected, 76, PR+EV, UINT8 );
|
HAPCHAR( SmokeDetected, 76, PR+EV, UINT8, true );
|
||||||
HAPCHAR( StatusActive, 75, PR+EV, BOOL );
|
HAPCHAR( StatusActive, 75, PR+EV, BOOL, true );
|
||||||
HAPCHAR( StatusFault, 77, PR+EV, UINT8 );
|
HAPCHAR( StatusFault, 77, PR+EV, UINT8, true );
|
||||||
HAPCHAR( StatusJammed, 78, PR+EV, UINT8 );
|
HAPCHAR( StatusJammed, 78, PR+EV, UINT8, true );
|
||||||
HAPCHAR( StatusLowBattery, 79, PR+EV, UINT8 );
|
HAPCHAR( StatusLowBattery, 79, PR+EV, UINT8, true );
|
||||||
HAPCHAR( StatusTampered, 7A, PR+EV, UINT8 );
|
HAPCHAR( StatusTampered, 7A, PR+EV, UINT8, true );
|
||||||
HAPCHAR( SulphurDioxideDensity, C5, PR+EV, FLOAT );
|
HAPCHAR( SulphurDioxideDensity, C5, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( SwingMode, B6, PR+EV+PW, UINT8 );
|
HAPCHAR( SwingMode, B6, PR+EV+PW, UINT8, true );
|
||||||
HAPCHAR( TargetAirPurifierState, A8, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetAirPurifierState, A8, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetFanState, BF, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetFanState, BF, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetTiltAngle, C2, PW+PR+EV, INT );
|
HAPCHAR( TargetTiltAngle, C2, PW+PR+EV, INT, false );
|
||||||
HAPCHAR( TargetHeaterCoolerState, B2, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetHeaterCoolerState, B2, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( SetDuration, D3, PW+PR+EV, UINT32 );
|
HAPCHAR( SetDuration, D3, PW+PR+EV, UINT32, false );
|
||||||
HAPCHAR( TargetHorizontalTiltAngle, 7B, PW+PR+EV, INT );
|
HAPCHAR( TargetHorizontalTiltAngle, 7B, PW+PR+EV, INT, false );
|
||||||
HAPCHAR( TargetHumidifierDehumidifierState, B4, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetHumidifierDehumidifierState, B4, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetPosition, 7C, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetPosition, 7C, PW+PR+EV, UINT8, false );
|
||||||
HAPCHAR( TargetDoorState, 32, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetDoorState, 32, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetHeatingCoolingState, 33, PW+PR+EV, UINT8 );
|
HAPCHAR( TargetHeatingCoolingState, 33, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetRelativeHumidity, 34, PW+PR+EV, FLOAT );
|
HAPCHAR( TargetRelativeHumidity, 34, PW+PR+EV, FLOAT, false );
|
||||||
HAPCHAR( TargetTemperature, 35, PW+PR+EV, FLOAT );
|
HAPCHAR( TargetTemperature, 35, PW+PR+EV, FLOAT, false );
|
||||||
HAPCHAR( TemperatureDisplayUnits, 36, PW+PR+EV, UINT8 );
|
HAPCHAR( TemperatureDisplayUnits, 36, PW+PR+EV, UINT8, true );
|
||||||
HAPCHAR( TargetVerticalTiltAngle, 7D, PW+PR+EV, INT );
|
HAPCHAR( TargetVerticalTiltAngle, 7D, PW+PR+EV, INT, false );
|
||||||
HAPCHAR( ValveType, D5, PR+EV, UINT8 );
|
HAPCHAR( ValveType, D5, PR+EV, UINT8, true );
|
||||||
HAPCHAR( Version, 37, PR, STRING );
|
HAPCHAR( Version, 37, PR, STRING, true );
|
||||||
HAPCHAR( VOCDensity, C8, PR+EV, FLOAT );
|
HAPCHAR( VOCDensity, C8, PR+EV, FLOAT, false );
|
||||||
HAPCHAR( Volume, 119, PW+PR+EV, UINT8 );
|
HAPCHAR( Volume, 119, PW+PR+EV, UINT8, false );
|
||||||
HAPCHAR( WaterLevel, B5, PR+EV, FLOAT );
|
HAPCHAR( WaterLevel, B5, PR+EV, FLOAT, false );
|
||||||
};
|
};
|
||||||
|
|
||||||
extern HapCharacteristics hapChars;
|
extern HapCharacteristics hapChars;
|
||||||
|
|
|
||||||
|
|
@ -1460,6 +1460,7 @@ SpanCharacteristic::SpanCharacteristic(HapChar *hapChar){
|
||||||
perms=hapChar->perms;
|
perms=hapChar->perms;
|
||||||
hapName=hapChar->hapName;
|
hapName=hapChar->hapName;
|
||||||
format=hapChar->format;
|
format=hapChar->format;
|
||||||
|
staticRange=hapChar->staticRange;
|
||||||
|
|
||||||
homeSpan.configLog+="---->Characteristic " + String(hapName);
|
homeSpan.configLog+="---->Characteristic " + String(hapName);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,7 @@ struct SpanCharacteristic{
|
||||||
UVal minValue; // Characteristic minimum (not applicable for STRING)
|
UVal minValue; // Characteristic minimum (not applicable for STRING)
|
||||||
UVal maxValue; // Characteristic maximum (not applicable for STRING)
|
UVal maxValue; // Characteristic maximum (not applicable for STRING)
|
||||||
UVal stepValue; // Characteristic step size (not applicable for STRING)
|
UVal stepValue; // Characteristic step size (not applicable for STRING)
|
||||||
|
boolean staticRange; // Flag that indiates whether Range is static and cannot be changed with setRange()
|
||||||
boolean customRange=false; // Flag for custom ranges
|
boolean customRange=false; // Flag for custom ranges
|
||||||
boolean *ev; // Characteristic Event Notify Enable (per-connection)
|
boolean *ev; // Characteristic Event Notify Enable (per-connection)
|
||||||
|
|
||||||
|
|
@ -341,10 +342,10 @@ struct SpanCharacteristic{
|
||||||
template <typename A, typename B, typename S=int> SpanCharacteristic *setRange(A min, B max, S step=0){
|
template <typename A, typename B, typename S=int> SpanCharacteristic *setRange(A min, B max, S step=0){
|
||||||
|
|
||||||
char c[256];
|
char c[256];
|
||||||
homeSpan.configLog+="------>Range: ";
|
homeSpan.configLog+=String("------>Set Range for ") + String(hapName) + "-" + String(iid);
|
||||||
|
|
||||||
if(format==BOOL || format==STRING){
|
if(staticRange){
|
||||||
sprintf(c,"*** ERROR! Can't change range for STRING or BOOL Characteristics! ***\n",hapName);
|
sprintf(c," *** ERROR! Can't change range for this Characteristic! ***\n");
|
||||||
homeSpan.nFatalErrors++;
|
homeSpan.nFatalErrors++;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
@ -354,9 +355,9 @@ struct SpanCharacteristic{
|
||||||
customRange=true;
|
customRange=true;
|
||||||
|
|
||||||
if(step>0)
|
if(step>0)
|
||||||
sprintf(c,"%s/%s/%s\n",uvPrint(minValue),uvPrint(maxValue),uvPrint(stepValue));
|
sprintf(c,": %s/%s/%s\n",uvPrint(minValue),uvPrint(maxValue),uvPrint(stepValue));
|
||||||
else
|
else
|
||||||
sprintf(c,"%s/%s\n",uvPrint(minValue),uvPrint(maxValue));
|
sprintf(c,": %s/%s\n",uvPrint(minValue),uvPrint(maxValue));
|
||||||
}
|
}
|
||||||
homeSpan.configLog+=c;
|
homeSpan.configLog+=c;
|
||||||
return(this);
|
return(this);
|
||||||
|
|
@ -364,6 +365,7 @@ struct SpanCharacteristic{
|
||||||
} // setRange()
|
} // setRange()
|
||||||
|
|
||||||
template <typename T, typename A=boolean, typename B=boolean> void init(T val, A min=0, B max=1){
|
template <typename T, typename A=boolean, typename B=boolean> void init(T val, A min=0, B max=1){
|
||||||
|
|
||||||
uvSet(value,val);
|
uvSet(value,val);
|
||||||
uvSet(newValue,val);
|
uvSet(newValue,val);
|
||||||
uvSet(minValue,min);
|
uvSet(minValue,min);
|
||||||
|
|
|
||||||
209
src/Span.h
209
src/Span.h
|
|
@ -381,116 +381,111 @@ namespace Service {
|
||||||
// SPAN CHARACTERISTICS (HAP Chapter 9) //
|
// SPAN CHARACTERISTICS (HAP Chapter 9) //
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
|
|
||||||
// Macro to define Span Characteristic structures based on name of HAP Characteristic, default value, and mix/max value (not applicable for STRING)
|
// Macro to define Span Characteristic structures based on name of HAP Characteristic, default value, and mix/max value (not applicable for STRING or BOOL which default to min=0, max=1)
|
||||||
|
|
||||||
#define CREATE_CHAR_FLOAT(HAPCHAR,DEFVAL,MINVAL,MAXVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(double val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val,(double)MINVAL,(double)MAXVAL); } };
|
#define CREATE_CHAR(TYPE,HAPCHAR,DEFVAL,MINVAL,MAXVAL) \
|
||||||
#define CREATE_CHAR_INT(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(int val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
struct HAPCHAR : SpanCharacteristic { HAPCHAR(TYPE val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val,(TYPE)MINVAL,(TYPE)MAXVAL); } };
|
||||||
#define CREATE_CHAR_UINT8(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(uint8_t val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
#define CREATE_CHAR_UINT16(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(uint16_t val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
#define CREATE_CHAR_UINT32(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(uint32_t val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
#define CREATE_CHAR_UINT64(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(uint64_t val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
#define CREATE_CHAR_BOOL(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(boolean val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
#define CREATE_CHAR_STRING(HAPCHAR,DEFVAL) struct HAPCHAR : SpanCharacteristic { HAPCHAR(const char *val=DEFVAL) : SpanCharacteristic {&hapChars.HAPCHAR} { init(val); } };
|
|
||||||
|
|
||||||
namespace Characteristic {
|
namespace Characteristic {
|
||||||
|
|
||||||
CREATE_CHAR_UINT8(Active,0);
|
CREATE_CHAR(uint8_t,Active,0,0,1);
|
||||||
CREATE_CHAR_UINT8(AirQuality,0);
|
CREATE_CHAR(uint8_t,AirQuality,0,0,5);
|
||||||
CREATE_CHAR_UINT8(BatteryLevel,0);
|
CREATE_CHAR(uint8_t,BatteryLevel,0,0,100);
|
||||||
CREATE_CHAR_INT(Brightness,0);
|
CREATE_CHAR(int,Brightness,0,0,100);
|
||||||
CREATE_CHAR_FLOAT(CarbonMonoxideLevel,0,0,100);
|
CREATE_CHAR(double,CarbonMonoxideLevel,0,0,100);
|
||||||
CREATE_CHAR_FLOAT(CarbonMonoxidePeakLevel,0,0,100);
|
CREATE_CHAR(double,CarbonMonoxidePeakLevel,0,0,100);
|
||||||
CREATE_CHAR_UINT8(CarbonMonoxideDetected,0);
|
CREATE_CHAR(uint8_t,CarbonMonoxideDetected,0,0,1);
|
||||||
CREATE_CHAR_FLOAT(CarbonDioxideLevel,0,0,100000);
|
CREATE_CHAR(double,CarbonDioxideLevel,0,0,100000);
|
||||||
CREATE_CHAR_FLOAT(CarbonDioxidePeakLevel,0,0,100000);
|
CREATE_CHAR(double,CarbonDioxidePeakLevel,0,0,100000);
|
||||||
CREATE_CHAR_UINT8(CarbonDioxideDetected,0);
|
CREATE_CHAR(uint8_t,CarbonDioxideDetected,0,0,1);
|
||||||
CREATE_CHAR_UINT8(ChargingState,0);
|
CREATE_CHAR(uint8_t,ChargingState,0,0,2);
|
||||||
CREATE_CHAR_FLOAT(CoolingThresholdTemperature,10,10,35);
|
CREATE_CHAR(double,CoolingThresholdTemperature,10,10,35);
|
||||||
CREATE_CHAR_UINT32(ColorTemperature,200);
|
CREATE_CHAR(uint32_t,ColorTemperature,200,140,500);
|
||||||
CREATE_CHAR_UINT8(ContactSensorState,1);
|
CREATE_CHAR(uint8_t,ContactSensorState,1,0,1);
|
||||||
CREATE_CHAR_FLOAT(CurrentAmbientLightLevel,1,0.0001,100000);
|
CREATE_CHAR(double,CurrentAmbientLightLevel,1,0.0001,100000);
|
||||||
CREATE_CHAR_INT(CurrentHorizontalTiltAngle,0);
|
CREATE_CHAR(int,CurrentHorizontalTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_UINT8(CurrentAirPurifierState,1);
|
CREATE_CHAR(uint8_t,CurrentAirPurifierState,1,0,2);
|
||||||
CREATE_CHAR_UINT8(CurrentSlatState,0);
|
CREATE_CHAR(uint8_t,CurrentSlatState,0,0,2);
|
||||||
CREATE_CHAR_UINT8(CurrentPosition,0);
|
CREATE_CHAR(uint8_t,CurrentPosition,0,0,100);
|
||||||
CREATE_CHAR_INT(CurrentVerticalTiltAngle,0);
|
CREATE_CHAR(int,CurrentVerticalTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_UINT8(CurrentHumidifierDehumidifierState,1);
|
CREATE_CHAR(uint8_t,CurrentHumidifierDehumidifierState,1,0,3);
|
||||||
CREATE_CHAR_UINT8(CurrentDoorState,1);
|
CREATE_CHAR(uint8_t,CurrentDoorState,1,0,4);
|
||||||
CREATE_CHAR_UINT8(CurrentFanState,1);
|
CREATE_CHAR(uint8_t,CurrentFanState,1,0,2);
|
||||||
CREATE_CHAR_UINT8(CurrentHeatingCoolingState,0);
|
CREATE_CHAR(uint8_t,CurrentHeatingCoolingState,0,0,2);
|
||||||
CREATE_CHAR_UINT8(CurrentHeaterCoolerState,1);
|
CREATE_CHAR(uint8_t,CurrentHeaterCoolerState,1,0,3);
|
||||||
CREATE_CHAR_FLOAT(CurrentRelativeHumidity,0,0,100);
|
CREATE_CHAR(double,CurrentRelativeHumidity,0,0,100);
|
||||||
CREATE_CHAR_FLOAT(CurrentTemperature,0,0,100);
|
CREATE_CHAR(double,CurrentTemperature,0,0,100);
|
||||||
CREATE_CHAR_INT(CurrentTiltAngle,0);
|
CREATE_CHAR(int,CurrentTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_FLOAT(FilterLifeLevel,0,0,100);
|
CREATE_CHAR(double,FilterLifeLevel,0,0,100);
|
||||||
CREATE_CHAR_UINT8(FilterChangeIndication,0);
|
CREATE_CHAR(uint8_t,FilterChangeIndication,0,0,1);
|
||||||
CREATE_CHAR_STRING(FirmwareRevision,"1.0.0");
|
CREATE_CHAR(const char *,FirmwareRevision,"1.0.0",0,1);
|
||||||
CREATE_CHAR_STRING(HardwareRevision,"1.0.0");
|
CREATE_CHAR(const char *,HardwareRevision,"1.0.0",0,1);
|
||||||
CREATE_CHAR_FLOAT(HeatingThresholdTemperature,16,0,25);
|
CREATE_CHAR(double,HeatingThresholdTemperature,16,0,25);
|
||||||
CREATE_CHAR_BOOL(HoldPosition,false);
|
CREATE_CHAR(boolean,HoldPosition,false,0,1);
|
||||||
CREATE_CHAR_FLOAT(Hue,0,0,360);
|
CREATE_CHAR(double,Hue,0,0,360);
|
||||||
CREATE_CHAR_BOOL(Identify,false);
|
CREATE_CHAR(boolean,Identify,false,0,1);
|
||||||
CREATE_CHAR_UINT8(InUse,0);
|
CREATE_CHAR(uint8_t,InUse,0,0,1);
|
||||||
CREATE_CHAR_UINT8(IsConfigured,0);
|
CREATE_CHAR(uint8_t,IsConfigured,0,0,1);
|
||||||
CREATE_CHAR_UINT8(LeakDetected,0);
|
CREATE_CHAR(uint8_t,LeakDetected,0,0,1);
|
||||||
CREATE_CHAR_UINT8(LockCurrentState,0);
|
CREATE_CHAR(uint8_t,LockCurrentState,0,0,3);
|
||||||
CREATE_CHAR_UINT8(LockPhysicalControls,0);
|
CREATE_CHAR(uint8_t,LockPhysicalControls,0,0,1);
|
||||||
CREATE_CHAR_UINT8(LockTargetState,0);
|
CREATE_CHAR(uint8_t,LockTargetState,0,0,1);
|
||||||
CREATE_CHAR_STRING(Manufacturer,"HomeSpan");
|
CREATE_CHAR(const char *,Manufacturer,"HomeSpan",0,1);
|
||||||
CREATE_CHAR_STRING(Model,"HomeSpan-ESP32");
|
CREATE_CHAR(const char *,Model,"HomeSpan-ESP32",0,1);
|
||||||
CREATE_CHAR_BOOL(MotionDetected,false);
|
CREATE_CHAR(boolean,MotionDetected,false,0,1);
|
||||||
CREATE_CHAR_BOOL(Mute,false);
|
CREATE_CHAR(boolean,Mute,false,0,1);
|
||||||
CREATE_CHAR_STRING(Name,"unnamed");
|
CREATE_CHAR(const char *,Name,"unnamed",0,1);
|
||||||
CREATE_CHAR_FLOAT(NitrogenDioxideDensity,0,0,1000);
|
CREATE_CHAR(double,NitrogenDioxideDensity,0,0,1000);
|
||||||
CREATE_CHAR_BOOL(ObstructionDetected,false);
|
CREATE_CHAR(boolean,ObstructionDetected,false,0,1);
|
||||||
CREATE_CHAR_FLOAT(PM25Density,0,0,1000);
|
CREATE_CHAR(double,PM25Density,0,0,1000);
|
||||||
CREATE_CHAR_UINT8(OccupancyDetected,0);
|
CREATE_CHAR(uint8_t,OccupancyDetected,0,0,1);
|
||||||
CREATE_CHAR_BOOL(OutletInUse,false);
|
CREATE_CHAR(boolean,OutletInUse,false,0,1);
|
||||||
CREATE_CHAR_BOOL(On,false);
|
CREATE_CHAR(boolean,On,false,0,1);
|
||||||
CREATE_CHAR_FLOAT(OzoneDensity,0,0,1000);
|
CREATE_CHAR(double,OzoneDensity,0,0,1000);
|
||||||
CREATE_CHAR_FLOAT(PM10Density,0,0,1000);
|
CREATE_CHAR(double,PM10Density,0,0,1000);
|
||||||
CREATE_CHAR_UINT8(PositionState,2);
|
CREATE_CHAR(uint8_t,PositionState,2,0,2);
|
||||||
CREATE_CHAR_UINT8(ProgramMode,0);
|
CREATE_CHAR(uint8_t,ProgramMode,0,0,2);
|
||||||
CREATE_CHAR_UINT8(ProgrammableSwitchEvent,0);
|
CREATE_CHAR(uint8_t,ProgrammableSwitchEvent,0,0,2);
|
||||||
CREATE_CHAR_FLOAT(RelativeHumidityDehumidifierThreshold,50,0,100);
|
CREATE_CHAR(double,RelativeHumidityDehumidifierThreshold,50,0,100);
|
||||||
CREATE_CHAR_FLOAT(RelativeHumidityHumidifierThreshold,50,0,100);
|
CREATE_CHAR(double,RelativeHumidityHumidifierThreshold,50,0,100);
|
||||||
CREATE_CHAR_UINT32(RemainingDuration,60);
|
CREATE_CHAR(uint32_t,RemainingDuration,60,0,3600);
|
||||||
CREATE_CHAR_UINT8(ResetFilterIndication,0);
|
CREATE_CHAR(uint8_t,ResetFilterIndication,0,1,1);
|
||||||
CREATE_CHAR_INT(RotationDirection,0);
|
CREATE_CHAR(int,RotationDirection,0,0,1);
|
||||||
CREATE_CHAR_FLOAT(RotationSpeed,0,0,100);
|
CREATE_CHAR(double,RotationSpeed,0,0,100);
|
||||||
CREATE_CHAR_FLOAT(Saturation,0,0,100);
|
CREATE_CHAR(double,Saturation,0,0,100);
|
||||||
CREATE_CHAR_UINT8(SecuritySystemAlarmType,0);
|
CREATE_CHAR(uint8_t,SecuritySystemAlarmType,0,0,1);
|
||||||
CREATE_CHAR_UINT8(SecuritySystemCurrentState,3);
|
CREATE_CHAR(uint8_t,SecuritySystemCurrentState,3,0,4);
|
||||||
CREATE_CHAR_UINT8(SecuritySystemTargetState,3);
|
CREATE_CHAR(uint8_t,SecuritySystemTargetState,3,0,3);
|
||||||
CREATE_CHAR_STRING(SerialNumber,"HS-12345");
|
CREATE_CHAR(const char *,SerialNumber,"HS-12345",0,1);
|
||||||
CREATE_CHAR_UINT8(ServiceLabelIndex,1);
|
CREATE_CHAR(uint8_t,ServiceLabelIndex,1,1,255);
|
||||||
CREATE_CHAR_UINT8(ServiceLabelNamespace,1);
|
CREATE_CHAR(uint8_t,ServiceLabelNamespace,1,0,1);
|
||||||
CREATE_CHAR_UINT8(SlatType,0);
|
CREATE_CHAR(uint8_t,SlatType,0,0,1);
|
||||||
CREATE_CHAR_UINT8(SmokeDetected,0);
|
CREATE_CHAR(uint8_t,SmokeDetected,0,0,1);
|
||||||
CREATE_CHAR_BOOL(StatusActive,true);
|
CREATE_CHAR(boolean,StatusActive,true,0,1);
|
||||||
CREATE_CHAR_UINT8(StatusFault,0);
|
CREATE_CHAR(uint8_t,StatusFault,0,0,1);
|
||||||
CREATE_CHAR_UINT8(StatusJammed,0);
|
CREATE_CHAR(uint8_t,StatusJammed,0,0,1);
|
||||||
CREATE_CHAR_UINT8(StatusLowBattery,0);
|
CREATE_CHAR(uint8_t,StatusLowBattery,0,0,1);
|
||||||
CREATE_CHAR_UINT8(StatusTampered,0);
|
CREATE_CHAR(uint8_t,StatusTampered,0,0,1);
|
||||||
CREATE_CHAR_FLOAT(SulphurDioxideDensity,0,0,1000);
|
CREATE_CHAR(double,SulphurDioxideDensity,0,0,1000);
|
||||||
CREATE_CHAR_UINT8(SwingMode,0);
|
CREATE_CHAR(uint8_t,SwingMode,0,0,1);
|
||||||
CREATE_CHAR_UINT8(TargetAirPurifierState,1);
|
CREATE_CHAR(uint8_t,TargetAirPurifierState,1,0,1);
|
||||||
CREATE_CHAR_UINT8(TargetFanState,1);
|
CREATE_CHAR(uint8_t,TargetFanState,1,0,1);
|
||||||
CREATE_CHAR_INT(TargetTiltAngle,0);
|
CREATE_CHAR(int,TargetTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_UINT32(SetDuration,60);
|
CREATE_CHAR(uint8_t,TargetHeaterCoolerState,0,0,2);
|
||||||
CREATE_CHAR_INT(TargetHorizontalTiltAngle,0);
|
CREATE_CHAR(uint32_t,SetDuration,60,0,3600);
|
||||||
CREATE_CHAR_UINT8(TargetHumidifierDehumidifierState,0);
|
CREATE_CHAR(int,TargetHorizontalTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_UINT8(TargetPosition,0);
|
CREATE_CHAR(uint8_t,TargetHumidifierDehumidifierState,0,0,2);
|
||||||
CREATE_CHAR_UINT8(TargetDoorState,1);
|
CREATE_CHAR(uint8_t,TargetPosition,0,0,100);
|
||||||
CREATE_CHAR_UINT8(TargetHeatingCoolingState,0);
|
CREATE_CHAR(uint8_t,TargetDoorState,1,0,1);
|
||||||
CREATE_CHAR_FLOAT(TargetRelativeHumidity,0,0,100);
|
CREATE_CHAR(uint8_t,TargetHeatingCoolingState,0,0,3);
|
||||||
CREATE_CHAR_FLOAT(TargetTemperature,16,10,38);
|
CREATE_CHAR(double,TargetRelativeHumidity,0,0,100);
|
||||||
CREATE_CHAR_UINT8(TemperatureDisplayUnits,0);
|
CREATE_CHAR(double,TargetTemperature,16,10,38);
|
||||||
CREATE_CHAR_INT(TargetVerticalTiltAngle,0);
|
CREATE_CHAR(uint8_t,TemperatureDisplayUnits,0,0,1);
|
||||||
CREATE_CHAR_UINT8(ValveType,0);
|
CREATE_CHAR(int,TargetVerticalTiltAngle,0,-90,90);
|
||||||
CREATE_CHAR_STRING(Version,"1.0.0");
|
CREATE_CHAR(uint8_t,ValveType,0,0,3);
|
||||||
CREATE_CHAR_FLOAT(VOCDensity,0,0,1000);
|
CREATE_CHAR(const char *,Version,"1.0.0",0,1);
|
||||||
CREATE_CHAR_UINT8(Volume,0);
|
CREATE_CHAR(double,VOCDensity,0,0,1000);
|
||||||
CREATE_CHAR_FLOAT(WaterLevel,0,0,100);
|
CREATE_CHAR(uint8_t,Volume,0,0,100);
|
||||||
|
CREATE_CHAR(double,WaterLevel,0,0,100);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue