Add support to expose names - fix some issues with feedbacks from occ sensors

This commit is contained in:
Trevor Payne
2020-03-03 12:37:19 -06:00
parent cd15b4e93b
commit 6c32c6154e
4 changed files with 155 additions and 134 deletions

View File

@@ -31,6 +31,7 @@ namespace PepperDash.Essentials.Bridges
#region Single and Dual Sensor Stuff #region Single and Dual Sensor Stuff
occController.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]); occController.IsOnline.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline]);
trilist.StringInput[joinMap.Name].StringValue = occController.Name;
// Occupied status // Occupied status
trilist.SetSigTrueAction(joinMap.ForceOccupied, new Action(() => occController.ForceOccupied())); trilist.SetSigTrueAction(joinMap.ForceOccupied, new Action(() => occController.ForceOccupied()));
@@ -38,6 +39,7 @@ namespace PepperDash.Essentials.Bridges
occController.RoomIsOccupiedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RoomOccupiedFeedback]); occController.RoomIsOccupiedFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RoomOccupiedFeedback]);
occController.RoomIsOccupiedFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.RoomVacantFeedback]); occController.RoomIsOccupiedFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.RoomVacantFeedback]);
occController.RawOccupancyFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RawOccupancyFeedback]); occController.RawOccupancyFeedback.LinkInputSig(trilist.BooleanInput[joinMap.RawOccupancyFeedback]);
trilist.SetBoolSigAction(joinMap.EnableRawStates, new Action<bool>((b) => occController.EnableRawStates(b)));
// Timouts // Timouts
trilist.SetUShortSigAction(joinMap.Timeout, new Action<ushort>((u) => occController.SetRemoteTimeout(u))); trilist.SetUShortSigAction(joinMap.Timeout, new Action<ushort>((u) => occController.SetRemoteTimeout(u)));

View File

@@ -137,6 +137,10 @@ namespace PepperDash.Essentials.Bridges
public uint PirSensitivityInVacantState { get; set; } public uint PirSensitivityInVacantState { get; set; }
#endregion #endregion
#region Serial
public uint Name { get; set; }
#endregion
public GlsOccupancySensorBaseJoinMap() public GlsOccupancySensorBaseJoinMap()
{ {
IsOnline = 1; IsOnline = 1;
@@ -177,7 +181,10 @@ namespace PepperDash.Essentials.Bridges
UsSensitivityInOccupiedState = 5; UsSensitivityInOccupiedState = 5;
UsSensitivityInVacantState = 6; UsSensitivityInVacantState = 6;
PirSensitivityInOccupiedState = 7; PirSensitivityInOccupiedState = 7;
PirSensitivityInVacantState = 8; PirSensitivityInVacantState = 8;
Name = 1;
} }
public override void OffsetJoinNumbers(uint joinStart) public override void OffsetJoinNumbers(uint joinStart)
@@ -224,6 +231,8 @@ namespace PepperDash.Essentials.Bridges
UsSensitivityInVacantState = UsSensitivityInVacantState + joinOffset; UsSensitivityInVacantState = UsSensitivityInVacantState + joinOffset;
PirSensitivityInOccupiedState = PirSensitivityInOccupiedState + joinOffset; PirSensitivityInOccupiedState = PirSensitivityInOccupiedState + joinOffset;
PirSensitivityInVacantState = PirSensitivityInVacantState + joinOffset; PirSensitivityInVacantState = PirSensitivityInVacantState + joinOffset;
Name = Name + joinOffset;
} }
} }

View File

@@ -1,65 +1,65 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharpPro.GeneralIO; using Crestron.SimplSharpPro.GeneralIO;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.Occupancy namespace PepperDash.Essentials.Devices.Common.Occupancy
{ {
public class GlsOdtOccupancySensorController : GlsOccupancySensorBaseController public class GlsOdtOccupancySensorController : GlsOccupancySensorBaseController
{ {
public new GlsOdtCCn OccSensor { get; private set; } public new GlsOdtCCn OccSensor { get; private set; }
public BoolFeedback OrWhenVacatedFeedback { get; private set; } public BoolFeedback OrWhenVacatedFeedback { get; private set; }
public BoolFeedback AndWhenVacatedFeedback { get; private set; } public BoolFeedback AndWhenVacatedFeedback { get; private set; }
public BoolFeedback UltrasonicAEnabledFeedback { get; private set; } public BoolFeedback UltrasonicAEnabledFeedback { get; private set; }
public BoolFeedback UltrasonicBEnabledFeedback { get; private set; } public BoolFeedback UltrasonicBEnabledFeedback { get; private set; }
public IntFeedback UltrasonicSensitivityInVacantStateFeedback { get; private set; } public IntFeedback UltrasonicSensitivityInVacantStateFeedback { get; private set; }
public IntFeedback UltrasonicSensitivityInOccupiedStateFeedback { get; private set; } public IntFeedback UltrasonicSensitivityInOccupiedStateFeedback { get; private set; }
public BoolFeedback RawOccupancyPirFeedback { get; private set; } public BoolFeedback RawOccupancyPirFeedback { get; private set; }
public BoolFeedback RawOccupancyUsFeedback { get; private set; } public BoolFeedback RawOccupancyUsFeedback { get; private set; }
public GlsOdtOccupancySensorController(string key, string name, GlsOdtCCn sensor) public GlsOdtOccupancySensorController(string key, string name, GlsOdtCCn sensor)
: base(key, name, sensor) : base(key, name, sensor)
{ {
OccSensor = sensor; OccSensor = sensor;
AndWhenVacatedFeedback = new BoolFeedback(() => OccSensor.AndWhenVacatedFeedback.BoolValue); AndWhenVacatedFeedback = new BoolFeedback(() => OccSensor.AndWhenVacatedFeedback.BoolValue);
OrWhenVacatedFeedback = new BoolFeedback(() => OccSensor.OrWhenVacatedFeedback.BoolValue); OrWhenVacatedFeedback = new BoolFeedback(() => OccSensor.OrWhenVacatedFeedback.BoolValue);
UltrasonicAEnabledFeedback = new BoolFeedback(() => OccSensor.UsAEnabledFeedback.BoolValue); UltrasonicAEnabledFeedback = new BoolFeedback(() => OccSensor.UsAEnabledFeedback.BoolValue);
UltrasonicBEnabledFeedback = new BoolFeedback(() => OccSensor.UsBEnabledFeedback.BoolValue); UltrasonicBEnabledFeedback = new BoolFeedback(() => OccSensor.UsBEnabledFeedback.BoolValue);
RawOccupancyPirFeedback = new BoolFeedback(() => OccSensor.RawOccupancyPirFeedback.BoolValue); RawOccupancyPirFeedback = new BoolFeedback(() => OccSensor.RawOccupancyPirFeedback.BoolValue);
RawOccupancyUsFeedback = new BoolFeedback(() => OccSensor.RawOccupancyUsFeedback.BoolValue); RawOccupancyUsFeedback = new BoolFeedback(() => OccSensor.RawOccupancyUsFeedback.BoolValue);
UltrasonicSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInVacantStateFeedback.UShortValue); UltrasonicSensitivityInVacantStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInVacantStateFeedback.UShortValue);
UltrasonicSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInOccupiedStateFeedback.UShortValue); UltrasonicSensitivityInOccupiedStateFeedback = new IntFeedback(() => OccSensor.UsSensitivityInOccupiedStateFeedback.UShortValue);
} }
/// <summary> /// <summary>
/// Overrides the base class event delegate to fire feedbacks for event IDs that pertain to this extended class. /// Overrides the base class event delegate to fire feedbacks for event IDs that pertain to this extended class.
/// Then calls the base delegate method to ensure any common event IDs are captured. /// Then calls the base delegate method to ensure any common event IDs are captured.
/// </summary> /// </summary>
/// <param name="device"></param> /// <param name="device"></param>
/// <param name="args"></param> /// <param name="args"></param>
protected override void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args) protected override void OccSensor_GlsOccupancySensorChange(GlsOccupancySensorBase device, GlsOccupancySensorChangeEventArgs args)
{ {
if (args.EventId == GlsOccupancySensorBase.AndWhenVacatedFeedbackEventId) if (args.EventId == GlsOccupancySensorBase.AndWhenVacatedFeedbackEventId)
AndWhenVacatedFeedback.FireUpdate(); AndWhenVacatedFeedback.FireUpdate();
@@ -77,83 +77,93 @@ namespace PepperDash.Essentials.Devices.Common.Occupancy
UltrasonicSensitivityInOccupiedStateFeedback.FireUpdate(); UltrasonicSensitivityInOccupiedStateFeedback.FireUpdate();
else if (args.EventId == GlsOccupancySensorBase.UsSensitivityInVacantStateFeedbackEventId) else if (args.EventId == GlsOccupancySensorBase.UsSensitivityInVacantStateFeedbackEventId)
UltrasonicSensitivityInVacantStateFeedback.FireUpdate(); UltrasonicSensitivityInVacantStateFeedback.FireUpdate();
else if (args.EventId == GlsOccupancySensorBase.RawOccupancyPirFeedbackEventId)
base.OccSensor_GlsOccupancySensorChange(device, args); {
} Debug.Console(2, this, "Occsensor has had Raw PIR");
RawOccupancyPirFeedback.FireUpdate();
/// <summary> }
/// Sets the OrWhenVacated state else if (args.EventId == GlsOccupancySensorBase.RawOccupancyUsFeedbackEventId)
/// </summary> {
/// <param name="state"></param> Debug.Console(2, this, "Occsensor has had Raw US");
public void SetOrWhenVacatedState(bool state) RawOccupancyUsFeedback.FireUpdate();
{ }
OccSensor.OrWhenVacated.BoolValue = state;
} base.OccSensor_GlsOccupancySensorChange(device, args);
}
/// <summary>
/// Sets the AndWhenVacated state /// <summary>
/// </summary> /// Sets the OrWhenVacated state
/// <param name="state"></param> /// </summary>
public void SetAndWhenVacatedState(bool state) /// <param name="state"></param>
{ public void SetOrWhenVacatedState(bool state)
OccSensor.AndWhenVacated.BoolValue = state; {
} OccSensor.OrWhenVacated.BoolValue = state;
}
/// <summary>
/// Enables or disables the Ultrasonic A sensor /// <summary>
/// </summary> /// Sets the AndWhenVacated state
/// <param name="state"></param> /// </summary>
public void SetUsAEnable(bool state) /// <param name="state"></param>
{ public void SetAndWhenVacatedState(bool state)
if (state) {
{ OccSensor.AndWhenVacated.BoolValue = state;
OccSensor.EnableUsA.BoolValue = state; }
OccSensor.DisableUsA.BoolValue = !state;
} /// <summary>
else /// Enables or disables the Ultrasonic A sensor
{ /// </summary>
OccSensor.EnableUsA.BoolValue = state; /// <param name="state"></param>
OccSensor.DisableUsA.BoolValue = !state; public void SetUsAEnable(bool state)
} {
} if (state)
{
OccSensor.EnableUsA.BoolValue = state;
/// <summary> OccSensor.DisableUsA.BoolValue = !state;
/// Enables or disables the Ultrasonic B sensor }
/// </summary> else
/// <param name="state"></param> {
public void SetUsBEnable(bool state) OccSensor.EnableUsA.BoolValue = state;
{ OccSensor.DisableUsA.BoolValue = !state;
if (state) }
{ }
OccSensor.EnableUsB.BoolValue = state;
OccSensor.DisableUsB.BoolValue = !state;
} /// <summary>
else /// Enables or disables the Ultrasonic B sensor
{ /// </summary>
OccSensor.EnableUsB.BoolValue = state; /// <param name="state"></param>
OccSensor.DisableUsB.BoolValue = !state; public void SetUsBEnable(bool state)
} {
} if (state)
{
public void IncrementUsSensitivityInOccupiedState(bool pressRelease) OccSensor.EnableUsB.BoolValue = state;
{ OccSensor.DisableUsB.BoolValue = !state;
OccSensor.IncrementUsSensitivityInOccupiedState.BoolValue = pressRelease; }
} else
{
public void DecrementUsSensitivityInOccupiedState(bool pressRelease) OccSensor.EnableUsB.BoolValue = state;
{ OccSensor.DisableUsB.BoolValue = !state;
OccSensor.DecrementUsSensitivityInOccupiedState.BoolValue = pressRelease; }
} }
public void IncrementUsSensitivityInVacantState(bool pressRelease) public void IncrementUsSensitivityInOccupiedState(bool pressRelease)
{ {
OccSensor.IncrementUsSensitivityInVacantState.BoolValue = pressRelease; OccSensor.IncrementUsSensitivityInOccupiedState.BoolValue = pressRelease;
} }
public void DecrementUsSensitivityInVacantState(bool pressRelease) public void DecrementUsSensitivityInOccupiedState(bool pressRelease)
{ {
OccSensor.DecrementUsSensitivityInVacantState.BoolValue = pressRelease; OccSensor.DecrementUsSensitivityInOccupiedState.BoolValue = pressRelease;
} }
}
public void IncrementUsSensitivityInVacantState(bool pressRelease)
{
OccSensor.IncrementUsSensitivityInVacantState.BoolValue = pressRelease;
}
public void DecrementUsSensitivityInVacantState(bool pressRelease)
{
OccSensor.DecrementUsSensitivityInVacantState.BoolValue = pressRelease;
}
}
} }