mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
@@ -55,38 +55,57 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GlsOccupancySensorBaseController(string key, string name, GlsOccupancySensorBase sensor)
|
public GlsOccupancySensorBaseController(string key, Func<DeviceConfig, GlsOccupancySensorBase> preActivationFunc,
|
||||||
: base(key, name, sensor)
|
DeviceConfig config)
|
||||||
|
: base(key, config.Name)
|
||||||
{
|
{
|
||||||
OccSensor = sensor;
|
|
||||||
|
|
||||||
|
|
||||||
|
AddPreActivationAction(() =>
|
||||||
|
{
|
||||||
|
OccSensor = preActivationFunc(config);
|
||||||
|
|
||||||
|
RegisterCrestronGenericBase(OccSensor);
|
||||||
|
|
||||||
|
RegisterGlsOdtSensorBaseController();
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public GlsOccupancySensorBaseController(string key, string name) : base(key, name) {}
|
||||||
|
|
||||||
|
protected void RegisterGlsOdtSensorBaseController()
|
||||||
|
{
|
||||||
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
RoomIsOccupiedFeedback = new BoolFeedback(RoomIsOccupiedFeedbackFunc);
|
||||||
|
|
||||||
PirSensorEnabledFeedback = new BoolFeedback(() => OccSensor.PirEnabledFeedback.BoolValue);
|
PirSensorEnabledFeedback = new BoolFeedback(() => OccSensor.PirEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
LedFlashEnabledFeedback = new BoolFeedback(() => OccSensor.LedFlashEnabledFeedback.BoolValue);
|
LedFlashEnabledFeedback = new BoolFeedback(() => OccSensor.LedFlashEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
ShortTimeoutEnabledFeedback = new BoolFeedback(() => OccSensor.ShortTimeoutEnabledFeedback.BoolValue);
|
ShortTimeoutEnabledFeedback = new BoolFeedback(() => OccSensor.ShortTimeoutEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
PirSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.PirSensitivityInVacantStateFeedback.UShortValue);
|
PirSensitivityInVacantStateFeedback =
|
||||||
|
new IntFeedback(() => OccSensor.PirSensitivityInVacantStateFeedback.UShortValue);
|
||||||
|
|
||||||
PirSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.PirSensitivityInOccupiedStateFeedback.UShortValue);
|
PirSensitivityInOccupiedStateFeedback =
|
||||||
|
new IntFeedback(() => OccSensor.PirSensitivityInOccupiedStateFeedback.UShortValue);
|
||||||
|
|
||||||
CurrentTimeoutFeedback = new IntFeedback(() => OccSensor.CurrentTimeoutFeedback.UShortValue);
|
CurrentTimeoutFeedback = new IntFeedback(() => OccSensor.CurrentTimeoutFeedback.UShortValue);
|
||||||
|
|
||||||
LocalTimoutFeedback = new IntFeedback(() => OccSensor.LocalTimeoutFeedback.UShortValue);
|
LocalTimoutFeedback = new IntFeedback(() => OccSensor.LocalTimeoutFeedback.UShortValue);
|
||||||
|
|
||||||
GraceOccupancyDetectedFeedback = new BoolFeedback(() => OccSensor.GraceOccupancyDetectedFeedback.BoolValue);
|
GraceOccupancyDetectedFeedback =
|
||||||
|
new BoolFeedback(() => OccSensor.GraceOccupancyDetectedFeedback.BoolValue);
|
||||||
|
|
||||||
RawOccupancyFeedback = new BoolFeedback(() => OccSensor.RawOccupancyFeedback.BoolValue);
|
RawOccupancyFeedback = new BoolFeedback(() => OccSensor.RawOccupancyFeedback.BoolValue);
|
||||||
|
|
||||||
InternalPhotoSensorValue = new IntFeedback(() => OccSensor.InternalPhotoSensorValueFeedback.UShortValue);
|
InternalPhotoSensorValue = new IntFeedback(() => OccSensor.InternalPhotoSensorValueFeedback.UShortValue);
|
||||||
|
|
||||||
ExternalPhotoSensorValue = new IntFeedback(() => OccSensor.ExternalPhotoSensorValueFeedback.UShortValue);
|
ExternalPhotoSensorValue = new IntFeedback(() => OccSensor.ExternalPhotoSensorValueFeedback.UShortValue);
|
||||||
|
|
||||||
OccSensor.BaseEvent += new Crestron.SimplSharpPro.BaseEventHandler(OccSensor_BaseEvent);
|
OccSensor.BaseEvent += new Crestron.SimplSharpPro.BaseEventHandler(OccSensor_BaseEvent);
|
||||||
|
|
||||||
OccSensor.GlsOccupancySensorChange += new GlsOccupancySensorChangeEventHandler(OccSensor_GlsOccupancySensorChange);
|
OccSensor.GlsOccupancySensorChange += OccSensor_GlsOccupancySensorChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -97,40 +116,56 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
/// <param name="args"></param>
|
/// <param name="args"></param>
|
||||||
protected virtual void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args)
|
protected virtual void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.EventId == GlsOccupancySensorBase.PirEnabledFeedbackEventId)
|
switch (args.EventId)
|
||||||
PirSensorEnabledFeedback.FireUpdate();
|
{
|
||||||
else if (args.EventId == GlsOccupancySensorBase.LedFlashEnabledFeedbackEventId)
|
case GlsOccupancySensorBase.PirEnabledFeedbackEventId:
|
||||||
LedFlashEnabledFeedback.FireUpdate();
|
PirSensorEnabledFeedback.FireUpdate();
|
||||||
else if (args.EventId == GlsOccupancySensorBase.ShortTimeoutEnabledFeedbackEventId)
|
break;
|
||||||
ShortTimeoutEnabledFeedback.FireUpdate();
|
case GlsOccupancySensorBase.LedFlashEnabledFeedbackEventId:
|
||||||
else if (args.EventId == GlsOccupancySensorBase.PirSensitivityInOccupiedStateFeedbackEventId)
|
LedFlashEnabledFeedback.FireUpdate();
|
||||||
PirSensitivityInOccupiedStateFeedback.FireUpdate();
|
break;
|
||||||
else if (args.EventId == GlsOccupancySensorBase.PirSensitivityInVacantStateFeedbackEventId)
|
case GlsOccupancySensorBase.ShortTimeoutEnabledFeedbackEventId:
|
||||||
PirSensitivityInVacantStateFeedback.FireUpdate();
|
ShortTimeoutEnabledFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.PirSensitivityInOccupiedStateFeedbackEventId:
|
||||||
|
PirSensitivityInOccupiedStateFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.PirSensitivityInVacantStateFeedbackEventId:
|
||||||
|
PirSensitivityInVacantStateFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OccSensor_BaseEvent(Crestron.SimplSharpPro.GenericBase device, Crestron.SimplSharpPro.BaseEventArgs args)
|
protected virtual void OccSensor_BaseEvent(Crestron.SimplSharpPro.GenericBase device, Crestron.SimplSharpPro.BaseEventArgs args)
|
||||||
{
|
{
|
||||||
Debug.Console(2, this, "GlsOccupancySensorChange EventId: {0}", args.EventId);
|
Debug.Console(2, this, "GlsOccupancySensorChange EventId: {0}", args.EventId);
|
||||||
|
|
||||||
if (args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomOccupiedFeedbackEventId
|
switch (args.EventId)
|
||||||
|| args.EventId == Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomVacantFeedbackEventId)
|
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Occupancy State: {0}", OccSensor.OccupancyDetectedFeedback.BoolValue);
|
case Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomVacantFeedbackEventId:
|
||||||
RoomIsOccupiedFeedback.FireUpdate();
|
case Crestron.SimplSharpPro.GeneralIO.GlsOccupancySensorBase.RoomOccupiedFeedbackEventId:
|
||||||
|
Debug.Console(1, this, "Occupancy State: {0}", OccSensor.OccupancyDetectedFeedback.BoolValue);
|
||||||
|
RoomIsOccupiedFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.TimeoutFeedbackEventId:
|
||||||
|
CurrentTimeoutFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.TimeoutLocalFeedbackEventId:
|
||||||
|
LocalTimoutFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.GraceOccupancyDetectedFeedbackEventId:
|
||||||
|
GraceOccupancyDetectedFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.RawOccupancyFeedbackEventId:
|
||||||
|
RawOccupancyFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.InternalPhotoSensorValueFeedbackEventId:
|
||||||
|
InternalPhotoSensorValue.FireUpdate();
|
||||||
|
break;
|
||||||
|
case GlsOccupancySensorBase.ExternalPhotoSensorValueFeedbackEventId:
|
||||||
|
ExternalPhotoSensorValue.FireUpdate();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if (args.EventId == GlsOccupancySensorBase.TimeoutFeedbackEventId)
|
|
||||||
CurrentTimeoutFeedback.FireUpdate();
|
|
||||||
else if (args.EventId == GlsOccupancySensorBase.TimeoutLocalFeedbackEventId)
|
|
||||||
LocalTimoutFeedback.FireUpdate();
|
|
||||||
else if (args.EventId == GlsOccupancySensorBase.GraceOccupancyDetectedFeedbackEventId)
|
|
||||||
GraceOccupancyDetectedFeedback.FireUpdate();
|
|
||||||
else if (args.EventId == GlsOccupancySensorBase.RawOccupancyFeedbackEventId)
|
|
||||||
RawOccupancyFeedback.FireUpdate();
|
|
||||||
else if (args.EventId == GlsOccupancySensorBase.InternalPhotoSensorValueFeedbackEventId)
|
|
||||||
InternalPhotoSensorValue.FireUpdate();
|
|
||||||
else if (args.EventId == GlsOccupancySensorBase.ExternalPhotoSensorValueFeedbackEventId)
|
|
||||||
ExternalPhotoSensorValue.FireUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetTestMode(bool mode)
|
public void SetTestMode(bool mode)
|
||||||
@@ -373,27 +408,51 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
{
|
{
|
||||||
LinkOccSensorToApi(this, trilist, joinStart, joinMapKey, bridge);
|
LinkOccSensorToApi(this, trilist, joinStart, joinMapKey, bridge);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public class GlsOccupancySensorBaseControllerFactory : EssentialsDeviceFactory<GlsOccupancySensorBaseController>
|
#region PreActivation
|
||||||
{
|
|
||||||
public GlsOccupancySensorBaseControllerFactory()
|
private static GlsOirCCn GetGlsOirCCn(DeviceConfig dc)
|
||||||
{
|
{
|
||||||
TypeNames = new List<string>() { "glsoirccn" };
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
var branchId = control.ControlPortNumber;
|
||||||
|
var parentKey = string.IsNullOrEmpty(control.ControlPortDevKey) ? "processor" : control.ControlPortDevKey;
|
||||||
|
|
||||||
|
if (parentKey.Equals("processor", StringComparison.CurrentCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new GlsOirCCn");
|
||||||
|
return new GlsOirCCn(cresnetId, Global.ControlSystem);
|
||||||
|
}
|
||||||
|
var cresnetBridge = DeviceManager.GetDeviceForKey(parentKey) as ICresnetBridge;
|
||||||
|
|
||||||
|
if (cresnetBridge != null)
|
||||||
|
{
|
||||||
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new GlsOirCCn");
|
||||||
|
return new GlsOirCCn(cresnetId, cresnetBridge.Branches[branchId]);
|
||||||
|
}
|
||||||
|
Debug.Console(0, "Device {0} is not a valid cresnet master", branchId);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
public class GlsOccupancySensorBaseControllerFactory : EssentialsDeviceFactory<GlsOccupancySensorBaseController>
|
||||||
{
|
{
|
||||||
Debug.Console(1, "Factory Attempting to create new GlsOccupancySensorBaseController Device");
|
public GlsOccupancySensorBaseControllerFactory()
|
||||||
|
{
|
||||||
|
TypeNames = new List<string>() { "glsoirccn" };
|
||||||
|
}
|
||||||
|
|
||||||
var key = dc.Key;
|
|
||||||
var name = dc.Name;
|
|
||||||
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
|
||||||
|
|
||||||
GlsOccupancySensorBase occSensor = new GlsOirCCn(comm.CresnetIdInt, Global.ControlSystem);
|
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Factory Attempting to create new GlsOccupancySensorBaseController Device");
|
||||||
|
|
||||||
|
return new GlsOccupancySensorBaseController(dc.Key, GetGlsOirCCn, dc);
|
||||||
|
}
|
||||||
|
|
||||||
return new GlsOccupancySensorBaseController(key, name, occSensor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -35,26 +35,35 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
public BoolFeedback RawOccupancyUsFeedback { get; private set; }
|
public BoolFeedback RawOccupancyUsFeedback { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
public GlsOdtOccupancySensorController(string key, string name, GlsOdtCCn sensor)
|
public GlsOdtOccupancySensorController(string key, Func<DeviceConfig, GlsOdtCCn> preActivationFunc,
|
||||||
: base(key, name, sensor)
|
DeviceConfig config)
|
||||||
|
: base(key, config.Name)
|
||||||
{
|
{
|
||||||
OccSensor = sensor;
|
AddPreActivationAction(() =>
|
||||||
|
{
|
||||||
|
OccSensor = preActivationFunc(config);
|
||||||
|
|
||||||
AndWhenVacatedFeedback = new BoolFeedback(() => OccSensor.AndWhenVacatedFeedback.BoolValue);
|
RegisterCrestronGenericBase(OccSensor);
|
||||||
|
|
||||||
OrWhenVacatedFeedback = new BoolFeedback(() => OccSensor.OrWhenVacatedFeedback.BoolValue);
|
RegisterGlsOdtSensorBaseController();
|
||||||
|
|
||||||
UltrasonicAEnabledFeedback = new BoolFeedback(() => OccSensor.UsAEnabledFeedback.BoolValue);
|
AndWhenVacatedFeedback = new BoolFeedback(() => OccSensor.AndWhenVacatedFeedback.BoolValue);
|
||||||
|
|
||||||
UltrasonicBEnabledFeedback = new BoolFeedback(() => OccSensor.UsBEnabledFeedback.BoolValue);
|
OrWhenVacatedFeedback = new BoolFeedback(() => OccSensor.OrWhenVacatedFeedback.BoolValue);
|
||||||
|
|
||||||
RawOccupancyPirFeedback = new BoolFeedback(() => OccSensor.RawOccupancyPirFeedback.BoolValue);
|
UltrasonicAEnabledFeedback = new BoolFeedback(() => OccSensor.UsAEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
RawOccupancyUsFeedback = new BoolFeedback(() => OccSensor.RawOccupancyUsFeedback.BoolValue);
|
UltrasonicBEnabledFeedback = new BoolFeedback(() => OccSensor.UsBEnabledFeedback.BoolValue);
|
||||||
|
|
||||||
UltrasonicSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInVacantStateFeedback.UShortValue);
|
RawOccupancyPirFeedback = new BoolFeedback(() => OccSensor.RawOccupancyPirFeedback.BoolValue);
|
||||||
|
|
||||||
UltrasonicSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInOccupiedStateFeedback.UShortValue);
|
RawOccupancyUsFeedback = new BoolFeedback(() => OccSensor.RawOccupancyUsFeedback.BoolValue);
|
||||||
|
|
||||||
|
UltrasonicSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInVacantStateFeedback.UShortValue);
|
||||||
|
|
||||||
|
UltrasonicSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInOccupiedStateFeedback.UShortValue);
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -160,38 +169,51 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
|
|||||||
{
|
{
|
||||||
LinkOccSensorToApi(this, trilist, joinStart, joinMapKey, bridge);
|
LinkOccSensorToApi(this, trilist, joinStart, joinMapKey, bridge);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public class GlsOdtOccupancySensorControllerFactory : EssentialsDeviceFactory<GlsOdtOccupancySensorController>
|
#region PreActivation
|
||||||
{
|
|
||||||
public GlsOdtOccupancySensorControllerFactory()
|
private static GlsOdtCCn GetGlsOdtCCn(DeviceConfig dc)
|
||||||
{
|
{
|
||||||
TypeNames = new List<string>() { "glsodtccn" };
|
var control = CommFactory.GetControlPropertiesConfig(dc);
|
||||||
}
|
var cresnetId = control.CresnetIdInt;
|
||||||
|
var branchId = control.ControlPortNumber;
|
||||||
|
var parentKey = string.IsNullOrEmpty(control.ControlPortDevKey) ? "processor" : control.ControlPortDevKey;
|
||||||
|
|
||||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
if (parentKey.Equals("processor", StringComparison.CurrentCultureIgnoreCase))
|
||||||
{
|
|
||||||
Debug.Console(1, "Factory Attempting to create new GlsOccupancySensorBaseController Device");
|
|
||||||
|
|
||||||
var typeName = dc.Type.ToLower();
|
|
||||||
var key = dc.Key;
|
|
||||||
var name = dc.Name;
|
|
||||||
var comm = CommFactory.GetControlPropertiesConfig(dc);
|
|
||||||
|
|
||||||
var occSensor = new GlsOdtCCn(comm.CresnetIdInt, Global.ControlSystem);
|
|
||||||
|
|
||||||
if (occSensor != null)
|
|
||||||
{
|
{
|
||||||
return new GlsOdtOccupancySensorController(key, name, occSensor);
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new GlsOdtCCn");
|
||||||
|
return new GlsOdtCCn(cresnetId, Global.ControlSystem);
|
||||||
}
|
}
|
||||||
else
|
var cresnetBridge = DeviceManager.GetDeviceForKey(parentKey) as ICresnetBridge;
|
||||||
|
|
||||||
|
if (cresnetBridge != null)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "ERROR: Unable to create Occupancy Sensor Device. Key: '{0}'", key);
|
Debug.Console(0, "Device {0} is a valid cresnet master - creating new GlsOdtCCn");
|
||||||
return null;
|
return new GlsOdtCCn(cresnetId, cresnetBridge.Branches[branchId]);
|
||||||
|
}
|
||||||
|
Debug.Console(0, "Device {0} is not a valid cresnet master", branchId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public class GlsOdtOccupancySensorControllerFactory : EssentialsDeviceFactory<GlsOdtOccupancySensorController>
|
||||||
|
{
|
||||||
|
public GlsOdtOccupancySensorControllerFactory()
|
||||||
|
{
|
||||||
|
TypeNames = new List<string>() { "glsodtccn" };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||||
|
{
|
||||||
|
Debug.Console(1, "Factory Attempting to create new GlsOccupancySensorBaseController Device");
|
||||||
|
|
||||||
|
return new GlsOdtOccupancySensorController(dc.Key, GetGlsOdtCCn, dc);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user