public ControllerCommandDlg(ZWManager _manager, uint _homeId, ZWControllerCommand _op, byte? nodeId, bool securityEnabled) { m_manager = _manager; homeId = _homeId; m_op = _op; m_nodeId = nodeId != null ? nodeId.Value : (byte)0; m_dlg = this; InitializeComponent(); m_manager.OnNotification += new ManagedNotificationsHandler(NotificationHandler); switch (m_op) { case ZWControllerCommand.RequestNodeNeighborUpdate: { this.Text = "Обновление списка соседних узлов"; this.label1.Text = "Узел обновляет список соседних узлов"; if (!m_manager.RequestNodeNeighborUpdate(homeId, m_nodeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.AddDevice: { this.Text = "Добавить устройство в ZWave сеть"; this.label1.Text = "Нажмите программную кнопку на Z-Wave устройстве для добавления его в сеть.\nДля безопасности, контроллер должен быть рядом с устройством ZWave (не более 2 метров)."; if (!m_manager.AddNode(homeId, securityEnabled)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.CreateNewPrimary: { this.Text = "Создать новый основной контроллер"; this.label1.Text = "Введите новый контроллер в режим передачи данных.\nТекущий контроллер должен быть рядом с целевым контроллером (не более 2 метров)."; if (!m_manager.CreateNewPrimary(homeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.ReceiveConfiguration: { this.Text = "Передача конфигурации"; this.label1.Text = "Передача сетевой конфигурации от другого устройства.\nПоместите другой контроллер в пределах 2 метров от текущего контроллера."; if (!m_manager.ReceiveConfiguration(homeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.RemoveDevice: { this.Text = "Удалит устройство из сети"; this.label1.Text = "Нажмите программную кнопку на устройстве ZWave для удаления его из сети.\nПо причинам безопасности, контроллер должен быть в радиусе 2-х метров от устройства."; if (!m_manager.RemoveNode(homeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.TransferPrimaryRole: { this.Text = "Передача роли основного контроллера другому контроллеру"; this.label1.Text = "Передача роли основного контроллера другому контроллеру.\n\nПо причинам безопасности, контроллер должен быть в радиусе 2-х метров от устройства."; if (!m_manager.TransferPrimaryRole(homeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.HasNodeFailed: { this.ButtonCancel.Enabled = false; this.Text = "Проверка узла на неисправность"; this.label1.Text = "Проверка узла.\nЭта команда не может быть отменена"; if (!m_manager.HasNodeFailed(homeId, m_nodeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.RemoveFailedNode: { this.ButtonCancel.Enabled = false; this.Text = "Удаление неисправного узла"; this.label1.Text = "Удаление неисправного узла.\nКоманда не может быть отменена."; if (!m_manager.RemoveFailedNode(homeId, m_nodeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.ReplaceFailedNode: { this.ButtonCancel.Enabled = false; this.Text = "Замена неисправного узла"; this.label1.Text = "Тестирование неисправного узла.\nКоманда не может быть отменена."; if (!m_manager.ReplaceFailedNode(homeId, m_nodeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } case ZWControllerCommand.RequestNetworkUpdate: { this.ButtonCancel.Enabled = false; this.Text = "Запрос обновления сети устройств"; this.label1.Text = "Запрос обновления сети устройств."; if (!m_manager.RequestNetworkUpdate(homeId, m_nodeId)) { MyControllerStateChangedHandler(ZWControllerState.Failed); } break; } default: { m_manager.OnNotification -= NotificationHandler; break; } } }
private void DoCommand(ZWControllerCommand command) { ControllerCommandDlg dlg = new ControllerCommandDlg(_zwave.Manager, _zwave.HomeId.Value, command, null, false); DialogResult d = dlg.ShowDialog(this); dlg.Dispose(); }