public async Task GetDeviceDetailsAsync_ShouldReturnExpectedResult(InstalledAppInstance installedApp) { var doorLock = new DoorLock() { CurrentState = LockState.Locked, Id = Guid.NewGuid().ToString(), Label = "Front door lock" }; var responseBody = $@"{{ ""deviceId"": ""{doorLock.Id}"", ""name"": ""Front.door.lock"", ""label"": ""{doorLock.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"" }}"; dynamic expectedResult = JObject.Parse(responseBody); _mockHttpMessageHandler.SetupRequest(HttpMethod.Get, $"{BaseUri}/devices/{doorLock.Id}") .ReturnsResponse(responseBody); var result = await _smartThingsAPIHelper.GetDeviceDetailsAsync(installedApp, doorLock.Id); Assert.Equal(expectedResult, result); }
void OnTriggerEnter(Collider collider) { DoorKey doorKey = collider.GetComponent <DoorKey>(); if (doorKey != null) { doorKeyHoldingList.Add(doorKey.key); doorKey.DestroySelf(); OnDoorKeyAdded?.Invoke(this, EventArgs.Empty); } DoorLock doorLock = collider.GetComponent <DoorLock>(); if (doorLock != null) { if (doorKeyHoldingList.Contains(doorLock.key)) { // Has key! Open door! doorLock.OpenDoor(); if (doorLock.removeKeyOnUse) { doorKeyHoldingList.Remove(doorLock.key); } OnDoorKeyUsed?.Invoke(this, EventArgs.Empty); } } }
public MainPage() { this.InitializeComponent(); webCam = WebCam.Create(); webCam.StartLiveStreamAsync(liveStreamElement); // display camera's live stream in UI imgurClient = new ImgurApi(); keypad = new KeyPad(); Debug.WriteLine("keypad created"); keypad.OnPress += UpdateApartmentTextBoxAsync; // UI keypad.OnRing += HandleVisitorAsync; keypad.OnReset += ResetApartmentTextBoxAsync; // UI doorLock = DoorLock.Create(); httpClient = new HttpClient(); baseUri = "https://prod-07.northeurope.logic.azure.com:443/workflows/b6551691604a461db4a0c06801cf0df3/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xcu2NJIVZXpy-AxTEP3tkk-Gei_P08uoyOP-hpr7RNc"; httpResponse = new HttpResponseMessage(); deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey(deviceId, deviceKey), TransportType.Mqtt); // wait for a visitor to enter an apartment number Task a = Task.Run(() => { while (true) { resetEvent.Reset(); keypad.GetAparmentNumber(); resetEvent.WaitOne(); } } ); }
public MainPage() { this.InitializeComponent(); webCam = WebCam.Create(); webCam.StartLiveStreamAsync(liveStreamElement); // display camera's live stream in UI keypad = new KeyPad(); keypad.OnPress += UpdateApartmentTextBoxAsync; // UI keypad.OnRing += HandleVisitorAsync; keypad.OnReset += ResetApartmentTextBoxAsync; // UI doorLock = DoorLock.Create(); httpClient = new HttpClient(); baseUri = "https://intellidoorfunctionapp.azurewebsites.net/api/open?code=pZcJ7JYaB/mUL873qU4ge8AFTPhZvr0ZJ2vTrIrXQdTI3WOD7zBQ5A=="; httpResponse = new HttpResponseMessage(); // wait for a visitor to enter an apartment number Task a = Task.Run(() => { while (true) { resetEvent.Reset(); keypad.GetAparmentNumber(); resetEvent.WaitOne(); } } ); }
public DoorLockKeypad() { InitializeComponent(); Lock = new DoorLock(); LockoutTimer.Tick += LockoutTimer_Tick; LockoutTimer.Interval = Lock.LockOutTime; }
/// <summary> /// Saves the log /// </summary> /// <param name="Lock"></param> /// <param name="codeAttempt"></param> internal virtual void LogState(DoorLock Lock, string codeAttempt) { _disabled = Lock.IsDisabled == true ? "Disabled" : "Enabled"; _lockState = Lock.AttemptNumber == 1 ? "Success" : "Failure"; _timeStamp = DateTime.Now; _codeAttempt = codeAttempt; File.AppendAllText(_logFilePath, this.ToString()); }
public void DoorLockDisabled() { //Arrange DoorLock Lock = new DoorLock(); //Act //Assert Assert.That(Lock.IsDisabled, Is.False); }
public void DoorLockCtorAttmeptsNumber() { //Arrange //Act DoorLock Lock = new DoorLock(); //Assert Assert.That(Lock.AttemptNumber, Is.EqualTo(1)); }
public void DoorLockLockOutInterval() { //Arrange //Act DoorLock Lock = new DoorLock(); //Assert Assert.That(Lock.LockOutTime, Is.EqualTo(10000)); }
public void DoorLockStartsUnlocked() { //Arrange //Act DoorLock Lock = new DoorLock(); //Assert Assert.That(Lock.IsLocked, Is.False); }
public void DoorLockCtorAttmeptsAllowed() { //Arrange //Act DoorLock Lock = new DoorLock(); //Assert Assert.That(Lock.AttemptsAllowed, Is.EqualTo(3)); }
public void DoorLockOnlyLetsValidCodes() { //Arrange DoorLock Lock = new DoorLock(); //Act //Assert Assert.That(Lock.SubmitCode(Lock.AttemptsAllowed.ToString()), Is.False); Assert.That(Lock.SubmitCode(Lock.LockOutTime.ToString()), Is.False); }
public void DoorLockSumbitCodeReturnsBool() { //Arrange DoorLock Lock = new DoorLock(); //Act //Assert Assert.That(Lock.SubmitCode("1221212121212121"), Is.False); }
public void DoorLockSubmitCodeIncrementsAttempts() { //Arrange DoorLock Lock = new DoorLock(); //Act Lock.SubmitCode("44344"); //Assert Assert.That(Lock.AttemptNumber, Is.EqualTo(2)); }
public void DoorLockSumbitCodeTogglesState() { //Arrange DoorLock Lock = new DoorLock(); //Act Assert.That(Lock.IsLocked, Is.False); Lock.SubmitCode("000000000"); //Assert Assert.That(Lock.IsLocked, Is.True); }
public void DoorLockLogToString() { //Arrange DoorLock Lock = new DoorLock(); //Act Lock.SubmitCode("000000000"); //Assert Assert.That(Lock.Log.ToString(), Does.EndWith("000000000,Success,Enabled\r\n")); Assert.That(DateTime.Parse(Lock.Log.ToString().Split(',')[0]), Is.TypeOf(DateTime.Now.GetType())); }
public void DoorLockCtorValidCodesInitialized() { //Arrange //Act DoorLock Lock = new DoorLock(); //Assert Assert.That(Lock.SubmitCode("000000000"), Is.True); Assert.That(Lock.SubmitCode("987654321"), Is.True); Assert.That(Lock.SubmitCode("123456"), Is.True); }
public void DoorLockDisabledAfterAttempts() { //Arrange DoorLock Lock = new DoorLock(); //Act Lock.SubmitCode("44344"); Assert.That(Lock.IsDisabled, Is.False); Lock.SubmitCode("44344"); Assert.That(Lock.IsDisabled, Is.False); Lock.SubmitCode("44344"); //Assert Assert.That(Lock.IsDisabled, Is.True); }
public void DoorLockDisabledResetOnValidSubmit() { //Arrange DoorLock Lock = new DoorLock(); //Act Lock.SubmitCode("44344"); Lock.SubmitCode("44344"); Lock.SubmitCode("44344"); Assert.That(Lock.IsDisabled, Is.True); Lock.SubmitCode("000000000"); //Assert Assert.That(Lock.IsDisabled, Is.False); }
public async Task SubscribeToDeviceEventAsync_ShouldReturnExpectedResult(InstalledAppInstance installedApp) { var doorLock = new DoorLock() { CurrentState = LockState.Locked, Id = Guid.NewGuid().ToString(), Label = "Front door lock" }; var deviceConfig = $@"{{ ""deviceId"": ""{doorLock.Id}"", ""name"": ""Front.door.lock"", ""label"": ""{doorLock.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"", ""componentId"": ""main"", ""capability"": ""lock"", ""attribute"": ""lock"", ""stateChangeOnly"": ""true"", ""value"": ""*"", ""subscriptionName"": ""DOORLOCKS_1"" }}"; dynamic dynDevice = JObject.Parse(deviceConfig); var responseBody = $@"{{ ""id"": ""{Guid.NewGuid()}"", ""installedAppId"": ""{installedApp.InstalledAppId}"", ""sourceType"": ""DEVICE"", ""device"": {deviceConfig} }}"; dynamic expectedResult = JObject.Parse(responseBody); _mockHttpMessageHandler.SetupRequest(HttpMethod.Post, $"{BaseUri}/installedapps/{installedApp.InstalledAppId}/subscriptions") .ReturnsResponse(responseBody); var response = await _smartThingsAPIHelper.SubscribeToDeviceEventAsync(installedApp, dynDevice); var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); dynamic result = JObject.Parse(responseText); Assert.Equal(expectedResult, result); }
public async Task DeviceCommandAsync_ShouldNotError(InstalledAppInstance installedApp) { var doorLock = new DoorLock() { CurrentState = LockState.Locked, Id = Guid.NewGuid().ToString(), Label = "Front door lock" }; _mockHttpMessageHandler.SetupRequest(HttpMethod.Post, $"{BaseUri}/devices/{doorLock.Id}/commands") .ReturnsResponse("ok"); await _smartThingsAPIHelper.DeviceCommandAsync(installedApp, doorLock.Id, DoorLock.GetDeviceCommand(false)); }
public IActionResult Command([FromBody] DoorLock doorLock) { if (doorLock == null) { return(BadRequest()); } if (!db.DoorLocks.Any(x => x.Name == doorLock.Name)) { return(NotFound()); } var resultDoorLock = db.DoorLocks.FirstOrDefault(x => x.Name == doorLock.Name); resultDoorLock.IsOpen = doorLock.IsOpen; resultDoorLock.Power = doorLock.Power; db.Update(resultDoorLock); db.SaveChanges(); return(Ok(resultDoorLock)); }
public void DoorLock_FromDynamic_ShouldReturnExpectedResult(InstalledAppInstance installedApp) { var expectedResult = new DoorLock() { Id = Guid.NewGuid().ToString(), Label = "MyDevice", CurrentState = LockState.Locked }; var deviceJson = $@"{{ ""deviceId"": ""{expectedResult.Id}"", ""name"": ""NAME"", ""label"": ""{expectedResult.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"" }}"; var statusJson = $@"{{ ""deviceId"": ""{expectedResult.Id}"", ""name"": ""NAME"", ""label"": ""{expectedResult.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"", ""components"" : {{ ""main"": {{ ""lock"": {{ ""lock"": {{ ""value"": ""locked"" }} }} }} }} }}"; dynamic device = JObject.Parse(deviceJson); dynamic status = JObject.Parse(statusJson); var result = DoorLock.LockFromDynamic(device, status); Assert.Equal(expectedResult, result); expectedResult.CurrentState = LockState.Unlocked; statusJson = $@"{{ ""deviceId"": ""{expectedResult.Id}"", ""name"": ""NAME"", ""label"": ""{expectedResult.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"", ""components"" : {{ ""main"": {{ ""lock"": {{ ""lock"": {{ ""value"": ""unlocked"" }} }} }} }} }}"; status = JObject.Parse(statusJson); result = DoorLock.LockFromDynamic(device, status); Assert.Equal(expectedResult, result); expectedResult.CurrentState = LockState.Unknown; statusJson = $@"{{ ""deviceId"": ""{expectedResult.Id}"", ""name"": ""NAME"", ""label"": ""{expectedResult.Label}"", ""locationId"": ""{installedApp.InstalledLocation.Id}"", ""components"" : {{ ""main"": {{ ""lock"": {{ ""lock"": {{ ""value"": ""unknown"" }} }} }} }} }}"; status = JObject.Parse(statusJson); result = DoorLock.LockFromDynamic(device, status); Assert.Equal(expectedResult, result); _ = expectedResult.GetHashCode(); _ = expectedResult.ToJson(); }
private void LoadSaveData(Builder_ArmsData data) { if (data == null) { Logger.DebugLog("No data to load"); return; } #pragma warning disable 612, 618 if (Comparer <Version> .Default.Compare(data.ArmsVersion, default(Version)) == 0) { Logger.DebugLog("Old version: " + data.ModVersion); data.ArmsVersion = new Version(data.ModVersion); } #pragma warning restore 612, 618 Logger.AlwaysLog("Save version: " + data.ArmsVersion, Rynchodon.Logger.severity.INFO); // relay Dictionary <Message.Builder_Message, Message> messages = MyAPIGateway.Multiplayer.IsServer ? new Dictionary <Message.Builder_Message, Message>() : null; SerializableGameTime.Adjust = new TimeSpan(data.SaveTime); foreach (RelayStorage.Builder_NetworkStorage bns in data.AntennaStorage) { RelayNode node; if (!Registrar.TryGetValue(bns.PrimaryNode, out node)) { Logger.AlwaysLog("Failed to get node for: " + bns.PrimaryNode, Rynchodon.Logger.severity.WARNING); continue; } RelayStorage store = node.Storage; if (store == null) // probably always true { node.ForceCreateStorage(); store = node.Storage; if (store == null) { Logger.AlwaysLog("failed to create storage for " + node.DebugName, Rynchodon.Logger.severity.ERROR); continue; } } foreach (LastSeen.Builder_LastSeen bls in bns.LastSeenList) { LastSeen ls = new LastSeen(bls); if (ls.IsValid) { store.Receive(ls); } else { Logger.AlwaysLog("failed to create a valid last seen from builder for " + bls.EntityId, Rynchodon.Logger.severity.WARNING); if (m_failedLastSeen == null) { m_failedLastSeen = new CachingDictionary <long, CachingList <LastSeen.Builder_LastSeen> >(); UpdateManager.Register(100, RetryLastSeen); } CachingList <LastSeen.Builder_LastSeen> list; if (!m_failedLastSeen.TryGetValue(bns.PrimaryNode, out list)) { list = new CachingList <LastSeen.Builder_LastSeen>(); m_failedLastSeen.Add(bns.PrimaryNode, list, true); } list.Add(bls); list.ApplyAdditions(); } } Logger.DebugLog("added " + bns.LastSeenList.Length + " last seen to " + store.PrimaryNode.DebugName, Rynchodon.Logger.severity.DEBUG); // messages in the save file belong on the server if (messages == null) { continue; } foreach (Message.Builder_Message bm in bns.MessageList) { Message msg; if (!messages.TryGetValue(bm, out msg)) { msg = new Message(bm); messages.Add(bm, msg); } else { Logger.DebugLog("found linked message", Rynchodon.Logger.severity.TRACE); } if (msg.IsValid) { store.Receive(msg); } else { Logger.AlwaysLog("failed to create a valid message from builder for " + bm.DestCubeBlock + "/" + bm.SourceCubeBlock, Rynchodon.Logger.severity.WARNING); } } Logger.DebugLog("added " + bns.MessageList.Length + " message to " + store.PrimaryNode.DebugName, Rynchodon.Logger.severity.DEBUG); } // past this point, only synchronized data if (!MyAPIGateway.Multiplayer.IsServer) { data = null; return; } // system disruption foreach (Disruption.Builder_Disruption bd in data.SystemDisruption) { Disruption disrupt; switch (bd.Type) { case "AirVentDepressurize": disrupt = new AirVentDepressurize(); break; case "CryoChamberMurder": disrupt = new CryoChamberMurder(); break; case "DisableTurret": disrupt = new DisableTurret(); break; case "DoorLock": disrupt = new DoorLock(); break; case "EMP": disrupt = new EMP(); break; case "GravityReverse": disrupt = new GravityReverse(); break; case "JumpDriveDrain": disrupt = new JumpDriveDrain(); break; case "MedicalRoom": disrupt = new MedicalRoom(); break; case "TraitorTurret": disrupt = new TraitorTurret(); break; default: Logger.AlwaysLog("Unknown disruption: " + bd.Type, Rynchodon.Logger.severity.WARNING); continue; } disrupt.Start(bd); } // autopilot if (data.Autopilot != null) { foreach (ShipAutopilot.Builder_Autopilot ba in data.Autopilot) { ShipAutopilot autopilot; if (Registrar.TryGetValue(ba.AutopilotBlock, out autopilot)) { autopilot.ResumeFromSave(ba); } else { Logger.AlwaysLog("failed to find autopilot block " + ba.AutopilotBlock, Rynchodon.Logger.severity.WARNING); } } } // programmable block if (data.ProgrammableBlock != null) { foreach (ProgrammableBlock.Builder_ProgrammableBlock bpa in data.ProgrammableBlock) { ProgrammableBlock pb; if (Registrar.TryGetValue(bpa.BlockId, out pb)) { pb.ResumeFromSave(bpa); } else { Logger.AlwaysLog("failed to find programmable block " + bpa.BlockId, Rynchodon.Logger.severity.WARNING); } } } // text panel if (data.TextPanel != null) { foreach (TextPanel.Builder_TextPanel btp in data.TextPanel) { TextPanel panel; if (Registrar.TryGetValue(btp.BlockId, out panel)) { panel.ResumeFromSave(btp); } else { Logger.AlwaysLog("failed to find text panel " + btp.BlockId, Rynchodon.Logger.severity.WARNING); } } } // weapon if (data.Weapon != null) { foreach (WeaponTargeting.Builder_WeaponTargeting bwt in data.Weapon) { WeaponTargeting targeting; if (WeaponTargeting.TryGetWeaponTargeting(bwt.WeaponId, out targeting)) { targeting.ResumeFromSave(bwt); } else { Logger.AlwaysLog("failed to find weapon " + bwt.WeaponId, Rynchodon.Logger.severity.WARNING); } } } // entity values if (data.EntityValues != null) { UpgradeEntityValue.Load(data.EntityValues); } // sync if (data.Sync != null) { ASync.SetBuilder(data.Sync); } data = null; }
public static OperationMessage OpenDoor(this DoorLock doorLock) { ushort destinationAddress = (ushort)(doorLock.Connector == null ? 0 : doorLock.Connector.Node.Address); return(OperationMessage.LogicWrite((ushort)doorLock.Id, LogicWriteValues.Set, (byte)doorLock.OpenTime, destinationAddress)); }
public object InterfaceControl(MigInterfaceCommand request) { ResponseText returnValue = new ResponseText("OK"); bool raiseEvent = false; string eventParameter = ModuleEvents.Status_Level; string eventValue = ""; string nodeId = request.Address; Commands command; Enum.TryParse <Commands>(request.Command.Replace(".", "_"), out command); ZWaveNode node = null; byte nodeNumber = 0; if (byte.TryParse(nodeId, out nodeNumber)) { if (nodeNumber > 0) { node = controller.GetNode(nodeNumber); } switch (command) { case Commands.Controller_Discovery: controller.Discovery(); break; case Commands.Controller_SoftReset: controller.SoftReset(); break; case Commands.Controller_HardReset: controller.HardReset(); controller.Discovery(); break; case Commands.Controller_HealNetwork: controller.HealNetwork(); break; case Commands.Controller_NodeNeighborUpdate: controller.RequestNeighborsUpdateOptions(nodeNumber); controller.RequestNeighborsUpdate(nodeNumber); controller.GetNeighborsRoutingInfo(nodeNumber); returnValue = GetResponseValue(nodeNumber, EventPath_RoutingInfo); break; case Commands.Controller_NodeRoutingInfo: controller.GetNeighborsRoutingInfo(nodeNumber); returnValue = GetResponseValue(nodeNumber, EventPath_RoutingInfo); break; case Commands.Controller_NodeAdd: lastAddedNode = 0; controller.BeginNodeAdd(); for (int i = 0; i < 20; i++) { if (lastAddedNode > 0) { break; } Thread.Sleep(500); } controller.StopNodeAdd(); returnValue = new ResponseText(lastAddedNode.ToString()); break; case Commands.Controller_NodeRemove: lastRemovedNode = 0; controller.BeginNodeRemove(); for (int i = 0; i < 20; i++) { if (lastRemovedNode > 0) { break; } Thread.Sleep(500); } controller.StopNodeRemove(); returnValue = new ResponseText(lastRemovedNode.ToString()); break; case Commands.Basic_Set: { raiseEvent = true; var level = int.Parse(request.GetOption(0)); eventValue = level.ToString(CultureInfo.InvariantCulture); Basic.Set(node, (byte)level); } break; case Commands.Basic_Get: Basic.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_Basic); break; case Commands.SwitchBinary_Set: { raiseEvent = true; var level = int.Parse(request.GetOption(0)); eventValue = level.ToString(CultureInfo.InvariantCulture); SwitchBinary.Set(node, (byte)level); } break; case Commands.SwitchBinary_Get: SwitchBinary.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_SwitchBinary); break; case Commands.SwitchMultilevel_Set: { raiseEvent = true; var level = int.Parse(request.GetOption(0)); eventValue = level.ToString(CultureInfo.InvariantCulture); SwitchMultilevel.Set(node, (byte)level); } break; case Commands.SwitchMultilevel_Get: SwitchMultilevel.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_SwitchMultilevel); break; case Commands.MultiInstance_GetCount: { string commandType = request.GetOption(0).Replace(".", ""); switch (commandType) { case "SwitchBinary": MultiInstance.GetCount(node, (byte)ZWaveLib.CommandClass.SwitchBinary); break; case "SwitchMultiLevel": MultiInstance.GetCount(node, (byte)ZWaveLib.CommandClass.SwitchMultilevel); break; case "SensorBinary": MultiInstance.GetCount(node, (byte)ZWaveLib.CommandClass.SensorBinary); break; case "SensorMultiLevel": MultiInstance.GetCount(node, (byte)ZWaveLib.CommandClass.SensorMultilevel); break; } returnValue = GetResponseValue(nodeNumber, EventPath_MultiInstance + "." + commandType + ".Count"); } break; case Commands.MultiInstance_Get: { byte instance = (byte)int.Parse(request.GetOption(1)); string commandType = request.GetOption(0).Replace(".", ""); switch (commandType) { case "SwitchBinary": MultiInstance.SwitchBinaryGet(node, instance); break; case "SwitchMultiLevel": MultiInstance.SwitchMultiLevelGet(node, instance); break; case "SensorBinary": MultiInstance.SensorBinaryGet(node, instance); break; case "SensorMultiLevel": MultiInstance.SensorMultiLevelGet(node, instance); break; } returnValue = GetResponseValue(nodeNumber, EventPath_MultiInstance + "." + commandType + "." + instance); } break; case Commands.MultiInstance_Set: { byte instance = (byte)int.Parse(request.GetOption(1)); int value = int.Parse(request.GetOption(2)); // //raisepropchanged = true; //parampath += "." + instance; // Status.Level.<instance> // switch (request.GetOption(0)) { case "Switch.Binary": MultiInstance.SwitchBinarySet(node, instance, value); //raiseparam = (double.Parse(request.GetOption(2)) / 255).ToString(); break; case "Switch.MultiLevel": MultiInstance.SwitchMultiLevelSet(node, instance, value); //raiseparam = (double.Parse(request.GetOption(2)) / 100).ToString(); // TODO: should it be 99 ? break; } } break; case Commands.SensorBinary_Get: SensorBinary.Get(node); break; case Commands.SensorMultiLevel_Get: SensorMultilevel.Get(node); break; case Commands.Meter_Get: // see ZWaveLib Sensor.cs for EnergyMeterScale options int scaleType = 0; int.TryParse(request.GetOption(0), out scaleType); Meter.Get(node, (byte)(scaleType << 0x03)); break; case Commands.Meter_SupportedGet: Meter.GetSupported(node); break; case Commands.Meter_Reset: Meter.Reset(node); break; case Commands.NodeInfo_Get: controller.GetNodeInformationFrame(nodeNumber); returnValue = GetResponseValue(nodeNumber, EventPath_NodeInfo); break; case Commands.Battery_Get: Battery.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_Battery); break; case Commands.Association_Set: Association.Set(node, (byte)int.Parse(request.GetOption(0)), (byte)int.Parse(request.GetOption(1))); break; case Commands.Association_Get: byte group = (byte)int.Parse(request.GetOption(0)); Association.Get(node, group); returnValue = GetResponseValue(nodeNumber, EventPath_Associations + "." + group); break; case Commands.Association_Remove: Association.Remove(node, (byte)int.Parse(request.GetOption(0)), (byte)int.Parse(request.GetOption(1))); break; case Commands.ManufacturerSpecific_Get: ManufacturerSpecific.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_ManufacturerSpecific); break; case Commands.Config_ParameterSet: Configuration.Set(node, (byte)int.Parse(request.GetOption(0)), int.Parse(request.GetOption(1))); break; case Commands.Config_ParameterGet: byte position = (byte)int.Parse(request.GetOption(0)); Configuration.Get(node, position); returnValue = GetResponseValue(nodeNumber, EventPath_ConfigVariables + "." + position); break; case Commands.WakeUp_Get: WakeUp.Get(node); returnValue = GetResponseValue(nodeNumber, EventPath_WakeUpInterval); break; case Commands.WakeUp_Set: WakeUp.Set(node, uint.Parse(request.GetOption(0))); break; case Commands.WakeUp_SendToSleep: WakeUp.SendToSleep(node); break; case Commands.WakeUp_GetAlwaysAwake: returnValue = new ResponseText(WakeUp.GetAlwaysAwake(node) ? "1" : "0"); break; case Commands.WakeUp_SetAlwaysAwake: WakeUp.SetAlwaysAwake(node, uint.Parse(request.GetOption(0)) == 1 ? true : false); break; case Commands.Version_Get: returnValue = new ResponseText("ERROR"); CommandClass cclass; Enum.TryParse <CommandClass>(request.GetOption(0), out cclass); if (cclass != CommandClass.NotSet) { var nodeCclass = node.GetCommandClass(cclass); if (nodeCclass != null && nodeCclass.Version != 0) { returnValue = new ResponseText(nodeCclass.Version.ToString()); } else { ZWaveLib.CommandClasses.Version.Get(node, cclass); returnValue = GetResponseValue(nodeNumber, "ZWaveNode.Version." + cclass); } } break; case Commands.Version_GetAll: controller.GetNodeCcsVersion(node); break; case Commands.Control_On: raiseEvent = true; double lastLevel = GetNormalizedValue((double)GetNodeLastLevel(node)); eventValue = lastLevel > 0 ? lastLevel.ToString(CultureInfo.InvariantCulture) : "1"; if (node.SupportCommandClass(CommandClass.SwitchMultilevel)) { SwitchMultilevel.Set(node, 0xFF); } else if (node.SupportCommandClass(CommandClass.SwitchBinary)) { SwitchBinary.Set(node, 0xFF); } else { Basic.Set(node, 0xFF); } SetNodeLevel(node, 0xFF); break; case Commands.Control_Off: raiseEvent = true; eventValue = "0"; if (node.SupportCommandClass(CommandClass.SwitchMultilevel)) { SwitchMultilevel.Set(node, 0x00); } else if (node.SupportCommandClass(CommandClass.SwitchBinary)) { SwitchBinary.Set(node, 0x00); } else { Basic.Set(node, 0x00); } SetNodeLevel(node, 0x00); break; case Commands.Control_Level: { raiseEvent = true; var level = int.Parse(request.GetOption(0)); eventValue = Math.Round(level / 100D, 2).ToString(CultureInfo.InvariantCulture); // the max value should be obtained from node parameters specifications, // here we assume that the commonly used interval is [0-99] for most multilevel switches if (level >= 100) { level = 99; } if (node.SupportCommandClass(CommandClass.SwitchMultilevel)) { SwitchMultilevel.Set(node, (byte)level); } else { Basic.Set(node, (byte)level); } SetNodeLevel(node, (byte)level); } break; case Commands.Control_Toggle: raiseEvent = true; if (GetNodeLevel(node) == 0) { double lastOnLevel = GetNormalizedValue((double)GetNodeLastLevel(node)); eventValue = lastOnLevel > 0 ? lastOnLevel.ToString(CultureInfo.InvariantCulture) : "1"; if (node.SupportCommandClass(CommandClass.SwitchMultilevel)) { SwitchMultilevel.Set(node, 0xFF); } else if (node.SupportCommandClass(CommandClass.SwitchBinary)) { SwitchBinary.Set(node, 0xFF); } else { Basic.Set(node, 0xFF); } SetNodeLevel(node, 0xFF); } else { eventValue = "0"; if (node.SupportCommandClass(CommandClass.SwitchMultilevel)) { SwitchMultilevel.Set(node, 0x00); } else if (node.SupportCommandClass(CommandClass.SwitchBinary)) { SwitchBinary.Set(node, 0x00); } else { Basic.Set(node, 0x00); } SetNodeLevel(node, 0x00); } break; case Commands.Thermostat_ModeGet: ThermostatMode.Get(node); break; case Commands.Thermostat_ModeSet: { ThermostatMode.Value mode = (ThermostatMode.Value)Enum.Parse(typeof(ThermostatMode.Value), request.GetOption(0)); // raiseEvent = true; eventParameter = "Thermostat.Mode"; eventValue = request.GetOption(0); // ThermostatMode.Set(node, mode); } break; case Commands.Thermostat_SetPointGet: { ThermostatSetPoint.Value mode = (ThermostatSetPoint.Value)Enum.Parse(typeof(ThermostatSetPoint.Value), request.GetOption(0)); ThermostatSetPoint.Get(node, mode); } break; case Commands.Thermostat_SetPointSet: { ThermostatSetPoint.Value mode = (ThermostatSetPoint.Value)Enum.Parse(typeof(ThermostatSetPoint.Value), request.GetOption(0)); double temperature = double.Parse(request.GetOption(1).Replace(',', '.'), CultureInfo.InvariantCulture); // raiseEvent = true; eventParameter = "Thermostat.SetPoint." + request.GetOption(0); eventValue = temperature.ToString(CultureInfo.InvariantCulture); // ThermostatSetPoint.Set(node, mode, temperature); } break; case Commands.Thermostat_FanModeGet: ThermostatFanMode.Get(node); break; case Commands.Thermostat_FanModeSet: { ThermostatFanMode.Value mode = (ThermostatFanMode.Value)Enum.Parse(typeof(ThermostatFanMode.Value), request.GetOption(0)); // raiseEvent = true; eventParameter = "Thermostat.FanMode"; eventValue = request.GetOption(0); // ThermostatFanMode.Set(node, mode); } break; case Commands.Thermostat_FanStateGet: ThermostatFanState.Get(node); break; case Commands.Thermostat_OperatingStateGet: ThermostatOperatingState.GetOperatingState(node); break; case Commands.UserCode_Set: byte userId = byte.Parse(request.GetOption(0)); byte userIdStatus = byte.Parse(request.GetOption(1)); byte[] tagCode = ZWaveLib.Utility.HexStringToByteArray(request.GetOption(2)); UserCode.Set(node, new ZWaveLib.Values.UserCodeValue(userId, userIdStatus, tagCode)); break; case Commands.DoorLock_Get: DoorLock.Get(node); returnValue = GetResponseValue(nodeNumber, ModuleEvents.Status_DoorLock); break; case Commands.DoorLock_Set: { DoorLock.Value mode = (DoorLock.Value)Enum.Parse(typeof(DoorLock.Value), request.GetOption(0)); DoorLock.Set(node, mode); } break; } } if (raiseEvent) { //ZWaveNode node = _controller.GetDevice ((byte)int.Parse (nodeid)); OnInterfacePropertyChanged(this.GetDomain(), nodeId, "ZWave Node", eventParameter, eventValue); } // return(returnValue); }
void Awake() { doorLock = GetComponent <DoorLock> (); animator = GetComponent <Animator> (); doorLock.OnLockEvent.AddListener(OnLocked); }
void Start() { // Get the door unlock script if(DoorToUnlock) LockScript = DoorToUnlock.GetComponent<DoorLock>(); }
public void makeType(RoomType newRoomType) { DoorFrame thisframe = DoorFrame.none; DoorLock thislock = DoorLock.open; if(newRoomType == RoomType.boss) { type = RoomType.boss; floor = FloorType.boss; thisframe = DoorFrame.bones; thislock = DoorLock.combat; } if (newRoomType == RoomType.hidden) { type = RoomType.hidden; floor = FloorType.secret; thisframe = DoorFrame.none; thislock = DoorLock.bomb; } if (newRoomType == RoomType.normal) { type = RoomType.normal; floor = FloorType.normal; thisframe = DoorFrame.wood; } if (newRoomType == RoomType.shop) { type = RoomType.shop; floor = FloorType.normal; thisframe = DoorFrame.wood; thislock = DoorLock.key; } if (newRoomType == RoomType.treasure) { type = RoomType.treasure; floor = FloorType.normal; thisframe = DoorFrame.gold; thislock = DoorLock.open; } if (adjacentNorth) { frameNorth = thisframe; lockNorth = thislock; } if (adjacentSouth) { frameSouth = thisframe; lockSouth = thislock; } if (adjacentEast) { frameEast = thisframe; lockEast = thislock; } if (adjacentWest) { frameWest = thisframe; lockWest = thislock; } }