I am running into several problems with the CreateGenericBinarySensor, I am able to create devices. however,
1) It seems it creates 2 identical devices, both with different device refs. This my loop for door sensor create,
public void InitializeDevices()
{
foreach (sDoor door in doors)
{
var df = DeviceFactory.CreateDevice(Id);
df = df.WithName(Name).WithLocation(door.Name).WithLocation2(door .Type);
var ff = FeatureFactory.CreateGenericBinarySensor(Id, $"Status", "Open", "Closed", 1, 0)
.WithLocation(door.Name).WithLocation2(door.Type);
df.WithFeature(ff);
var ddf = df.PrepareForHs();
door.DeviceRef = HomeSeerSystem.CreateDevice(ddf);
}
}
2) I can't seem to figure out how to update the Status. This my loop to update the sensor status.
UInt64 doorChanged = newPortStatus ^ portStatus;
foreach (sDoor door in doors)
{
string temp = door.Name;
var device = plugin.HomeSeerSystem.GetDeviceByRef(door.DeviceRef);
if ((door.BitMask & doorChanged) != 0)
{
if ((newPortStatus & door.BitMask) != 0)
{// door open
door.State = STATE.OPEN;
temp += " Open";
speechSynthesizer.SpeakTextAsync(temp);
device.Changes[EProperty.Value] = 1;
device.Changes[EProperty.Status] = "Open";
}
else
{// door close.
door.State = STATE.CLOSED;
temp += " Closed";
door.OpenTimeSeconds = 0;
device.Changes[EProperty.Value] = 0;
device.Changes[EProperty.Status] = "Closed";
}
}
plugin.HomeSeerSystem.UpdateDeviceByRef(door.DeviceRef, device.Changes);
}
3) Everytime i update the device status, it creates a new bunch. of devices.
1) It seems it creates 2 identical devices, both with different device refs. This my loop for door sensor create,
public void InitializeDevices()
{
foreach (sDoor door in doors)
{
var df = DeviceFactory.CreateDevice(Id);
df = df.WithName(Name).WithLocation(door.Name).WithLocation2(door .Type);
var ff = FeatureFactory.CreateGenericBinarySensor(Id, $"Status", "Open", "Closed", 1, 0)
.WithLocation(door.Name).WithLocation2(door.Type);
df.WithFeature(ff);
var ddf = df.PrepareForHs();
door.DeviceRef = HomeSeerSystem.CreateDevice(ddf);
}
}
2) I can't seem to figure out how to update the Status. This my loop to update the sensor status.
UInt64 doorChanged = newPortStatus ^ portStatus;
foreach (sDoor door in doors)
{
string temp = door.Name;
var device = plugin.HomeSeerSystem.GetDeviceByRef(door.DeviceRef);
if ((door.BitMask & doorChanged) != 0)
{
if ((newPortStatus & door.BitMask) != 0)
{// door open
door.State = STATE.OPEN;
temp += " Open";
speechSynthesizer.SpeakTextAsync(temp);
device.Changes[EProperty.Value] = 1;
device.Changes[EProperty.Status] = "Open";
}
else
{// door close.
door.State = STATE.CLOSED;
temp += " Closed";
door.OpenTimeSeconds = 0;
device.Changes[EProperty.Value] = 0;
device.Changes[EProperty.Status] = "Closed";
}
}
plugin.HomeSeerSystem.UpdateDeviceByRef(door.DeviceRef, device.Changes);
}
3) Everytime i update the device status, it creates a new bunch. of devices.
Comment