def add_network(): # First get the list of adapters response = nymea.send_command("Zigbee.GetAdapters", {}) if len(response['params']['adapters']) == 0: print "There are no adapters available." return None adapterList = []; for adapter in response['params']['adapters']: adapterList.append("%s (%s) - %s" % (adapter['description'], adapter['serialPort'], adapter['name'])) selection = nymea.get_selection("Please select a device descriptor", adapterList) selectedAdapter = {} if selection != None: selectedAdapter = response['params']['adapters'][selection] else: print "ERROR: invalid adapter selection." return None print("Selected adapter:") nymea.print_json_format(selectedAdapter) params = {} params["serialPort"] = selectedAdapter["serialPort"] params["baudRate"] = selectedAdapter["baudRate"] params["backend"] = selectedAdapter["backend"] response = nymea.send_command("Zigbee.AddNetwork", params) print("Add network returned %s" % response["params"]["zigbeeError"]) if response["params"]["zigbeeError"] == "ZigbeeErrorNoError": print("New network has the uuid %s" % response["params"]["networkUuid"])
def connect_wifi(): interface = selectWirelessInterface() if interface is None: print "There is no wireless interface available" return params = {} params['interface'] = interface wifiNetworks = [] wifiNetworkStrings = [] response = nymea.send_command("NetworkManager.GetWirelessAccessPoints", params) wifiNetworks = response['params']['wirelessAccessPoints'] for accessPoint in wifiNetworks: wifiNetworkStrings.append( ("%10s | %s%s | %s %s | %s" % (accessPoint['ssid'], accessPoint['signalStrength'], '%', accessPoint['frequency'], '[GHz]', accessPoint['macAddress']))) selection = selector.get_selection("Wifi access points", wifiNetworkStrings) if not selection: return None params['ssid'] = wifiNetworks[selection]['ssid'] if wifiNetworks[selection]['protected'] == True: params['password'] = raw_input( "Please enter the password for wifi network %s: " % (params['ssid'])) response = nymea.send_command("NetworkManager.ConnectWifiNetwork", params) nymea.print_networkmanager_error_code( response['params']['networkManagerError'])
def execute_rule_actions(): ruleDescription = select_rule() if ruleDescription == None: print "\n No rules found" return None ruleId = ruleDescription['id'] params = {} params['ruleId'] = ruleId rule = nymea.send_command("Rules.GetRuleDetails", params)['params']['rule'] if len(rule['exitActions']) == 0: options = ["Execute actions"] selection = nymea.get_selection( "Which actions of the rule should be executed?", options) response = nymea.send_command("Rules.ExecuteActions", params) nymea.print_rule_error_code(response['params']['ruleError']) else: options = ["Execute actions", "Execute exit actions"] selection = nymea.get_selection( "Which actions of the rule should be executed?", options) if selection == None: return None if (options[selection] == "Execute actions"): response = nymea.send_command("Rules.ExecuteActions", params) nymea.print_rule_error_code(response['params']['ruleError']) else: response = nymea.send_command("Rules.ExecuteExitActions", params) nymea.print_rule_error_code(response['params']['ruleError']) return None
def add_discovered_device(deviceClassId, deviceDescriptorId): deviceClass = get_deviceClass(deviceClassId) if deviceClass['setupMethod'] == "SetupMethodJustAdd": params = {} params['deviceClassId'] = deviceClassId params['deviceDescriptorId'] = deviceDescriptorId params['name'] = raw_input("\nEnter the \"name\" of the device: ") response = nymea.send_command("Devices.AddConfiguredDevice", params) if not response['status'] != "success": nymea.print_device_error_code(response['params']['deviceError']) else: print "Device added successfully. Device ID: %s\n" % response[ 'params']['deviceId'] elif deviceClass['setupMethod'] == "SetupMethodPushButton": params = {} params['deviceClassId'] = deviceClassId params['deviceDescriptorId'] = deviceDescriptorId params['name'] = raw_input("\nEnter the \"name\" of the device: ") response = nymea.send_command("Devices.PairDevice", params) #nymea.print_json_format(response) if not response['status'] == "success": print "Pairing failed: %s", response['params']['deviceError'] return print "\nPairing device %s\n\n%s\n\n" % ( deviceClass['displayName'], response['params']['displayMessage']) if response['params']['setupMethod'] == "SetupMethodPushButton": raw_input("\nPress \"enter\" to confirm\n") params = {} params['pairingTransactionId'] = response['params'][ 'pairingTransactionId'] response = nymea.send_command("Devices.ConfirmPairing", params) nymea.print_device_error_code(response['params']['deviceError']) elif deviceClass['setupMethod'] == "SetupMethodDisplayPin": params = {} params['deviceClassId'] = deviceClassId params['deviceDescriptorId'] = deviceDescriptorId params['name'] = raw_input("\nEnter the \"name\" of the device: ") response = nymea.send_command("Devices.PairDevice", params) #nymea.print_json_format(response) if not response['status'] == "success": print "Pairing failed: %s", response['params']['deviceError'] return print "\nPairing device %s\n\n%s\n\n" % ( deviceClass['displayName'], response['params']['displayMessage']) if response['params']['setupMethod'] == "SetupMethodDisplayPin": pin = raw_input("Pin: ") params = {} params['secret'] = pin params['pairingTransactionId'] = response['params'][ 'pairingTransactionId'] response = nymea.send_command("Devices.ConfirmPairing", params) nymea.print_device_error_code(response['params']['deviceError'])
def edit_device(): deviceId = select_configured_device() params = {} params['deviceId'] = deviceId params['name'] = raw_input("\nEnter the new \"name\" of the device: ") response = nymea.send_command("Devices.EditDevice", params) nymea.print_device_error_code(response['params']['deviceError'])
def list_rule_details(): ruleDescription = select_rule() if ruleDescription == None: print "\n No rules found" return None params = {} params['ruleId'] = ruleDescription['id'] rule = nymea.send_command("Rules.GetRuleDetails", params)['params']['rule'] print nymea.print_json_format(rule) nymea.debug_stop() print "========================================================" print "-> Details for rule \"%s\" (%s):\n" % (rule['name'], rule['id']) print "Rule is %s" % (print_rule_enabled_status(bool(rule['enabled']))) print "Rule is %s" % (print_rule_active_status(bool(rule['active']))) print "Rule is %s" % (print_rule_executable_status(bool( rule['executable']))) print "\nTimeDescriptor:\n" timedescriptor.printTimeDescriptor(rule['timeDescriptor']) if len(rule['eventDescriptors']) > 0: print "\nEvents:\n" events.print_eventDescriptors(rule['eventDescriptors']) if rule['stateEvaluator']: print "\nStates:\n", states.print_stateEvaluator(rule['stateEvaluator']) print "\nActions:\n" ruleactions.print_ruleActionList(rule['actions']) if len(rule['exitActions']) > 0: print "\nExit actions:\n" ruleactions.print_ruleActionList(rule['exitActions'])
def get_actionType(actionTypeId): params = {} params['actionTypeId'] = actionTypeId response = nymea.send_command("Actions.GetActionType", params) if not 'actionType' in response['params']: return None return response['params']['actionType']
def list_logEntries(): params = {} lines = [] response = nymea.send_command("Logging.GetLogEntries", params) for i in range(len(response['params']['logEntries'])): line = get_log_entry_line(response['params']['logEntries'][i]) print line
def discover_device(deviceClassId=None): if deviceClassId == None: deviceClassId = select_deviceClass() deviceClass = get_deviceClass(deviceClassId) if not deviceClass: return None params = {} params['deviceClassId'] = deviceClassId discoveryParams = parameters.read_params( deviceClass['discoveryParamTypes']) if len(discoveryParams) > 0: params['discoveryParams'] = discoveryParams print "\ndiscovering..." response = nymea.send_command("Devices.GetDiscoveredDevices", params) if not 'deviceDescriptors' in response['params']: print "no devices found" deviceDescriptorList = [] deviceDescriptorIdList = [] for deviceDescriptor in response['params']['deviceDescriptors']: deviceDescriptorList.append( "%s (%s)" % (deviceDescriptor['title'], deviceDescriptor['description'])) deviceDescriptorIdList.append(deviceDescriptor['id']) if not deviceDescriptorIdList: print "\n Timeout: no device found." return None selection = nymea.get_selection("Please select a device descriptor", deviceDescriptorList) if selection != None: return deviceDescriptorIdList[selection] return None
def get_stateType(stateTypeId): params = {} params['stateTypeId'] = stateTypeId response = nymea.send_command("States.GetStateType", params) if "stateType" in response['params']: return response['params']['stateType'] return None
def show_network_status(): params = {} response = nymea.send_command("NetworkManager.GetNetworkStatus", params) if 'status' in response['params']: nymea.print_json_format(response['params']['status']) else: nymea.print_networkmanager_error_code( response['params']['networkManagerError'])
def cloud_authenticate(): params = {} params['username'] = raw_input( "\nEnter the \"username\" of your cloud account: ") params['password'] = raw_input( "\nEnter the \"password\" of your cloud account: ") response = nymea.send_command("Cloud.Authenticate", params) nymea.print_cloud_error_code(response['params']['cloudError'])
def get_log_entry_lines(): global logFilter lines = [] response = nymea.send_command("Logging.GetLogEntries", logFilter) for i in range(len(response['params']['logEntries'])): line = get_log_entry_line(response['params']['logEntries'][i]) lines.append(line) return lines
def get_rule_description(ruleId): ruleDescriptions = [] ruleDescriptions = nymea.send_command("Rules.GetRules", {})['params']['ruleDescriptions'] for ruleDescription in ruleDescriptions: if ruleDescription['id'] == ruleId: return ruleDescription return None
def list_available_adapters(): params = {} response = nymea.send_command("Zigbee.GetAdapters", params) if len(response['params']['adapters']) == 0: print "There are no adapters available." return None nymea.print_json_format(response['params'])
def get_eventTypes(deviceClassId): params = {} params['deviceClassId'] = deviceClassId eventTypes = nymea.send_command("Devices.GetEventTypes", params)['params']['eventTypes'] if eventTypes: return eventTypes return None
def get_stateTypes(deviceClassId): params = {} params['deviceClassId'] = deviceClassId response = nymea.send_command("Devices.GetStateTypes", params) if "stateTypes" in response['params']: return response['params']['stateTypes'] else: return None
def enable_disable_rule(): ruleDescription = select_rule() if ruleDescription == None: print "\n No rules found" return actionTypes = ["enable", "disable"] selection = nymea.get_selection("What do you want to do with this rule: ", actionTypes) if selection == 0: params = {} params['ruleId'] = ruleDescription['id'] response = nymea.send_command("Rules.EnableRule", params) nymea.print_rule_error_code(response['params']['ruleError']) else: params = {} params['ruleId'] = ruleDescription['id'] response = nymea.send_command("Rules.DisableRule", params) nymea.print_rule_error_code(response['params']['ruleError'])
def remove_rule(): ruleDescription = select_rule() if ruleDescription == None: print "\n No rule found" return None params = {} params['ruleId'] = ruleDescription['id'] response = nymea.send_command("Rules.RemoveRule", params) nymea.print_rule_error_code(response['params']['ruleError'])
def set_language(): params = {} languages = get_languages() selection = nymea.get_selection( "Please select one of following allowed values:", languages) if selection == None: return None params['language'] = languages[selection] response = nymea.send_command("Configuration.SetLanguage", params) nymea.print_json_format(response['params'])
def scan_wirelessaccesspoints(): interface = selectWirelessInterface() if interface is None: print "There is no wireless interface available" return params = {} params['interface'] = interface response = nymea.send_command("NetworkManager.ScanWifiNetworks", params) nymea.print_networkmanager_error_code( response['params']['networkManagerError'])
def disconnect_networkdevice(): interface = selectWirelessInterface() if interface is None: print "There is no wireless interface available" return params = {} params['interface'] = interface response = nymea.send_command("NetworkManager.DisconnectInterface", params) nymea.print_networkmanager_error_code( response['params']['networkManagerError'])
def set_debug_server_interface(): params = {} enabled = selector.getYesNoSelection( "Should the debug server interface be enabled?") if enabled == None: return None params['enabled'] = enabled response = nymea.send_command("Configuration.SetDebugServerEnabled", params) nymea.print_json_format(response['params'])
def add_configured_device(deviceClassId): deviceClass = get_deviceClass(deviceClassId) params = {} params['deviceClassId'] = deviceClassId params['name'] = raw_input("\nEnter the \"name\" of the device: ") deviceParams = parameters.read_params(deviceClass['paramTypes']) if deviceParams: params['deviceParams'] = deviceParams print "\nAdding device with params:", nymea.print_json_format(params) response = nymea.send_command("Devices.AddConfiguredDevice", params) nymea.print_device_error_code(response['params']['deviceError'])
def remove_network(): selectedNetwork = selectNetwork("Please select the network you want to remove") if selectedNetwork is None: return None print("Selected network:") nymea.print_json_format(selectedNetwork) params = {} params["networkUuid"] = selectedNetwork["networkUuid"] response = nymea.send_command("Zigbee.RemoveNetwork", params) print("Remove network returned %s" % response["params"]["zigbeeError"])
def set_timezone(): params = {} timeZones = [] timeZones = get_timezones() selection = nymea.get_selection( "Please select one of following allowed values:", timeZones) if selection == None: return None params['timeZone'] = timeZones[selection] response = nymea.send_command("Configuration.SetTimeZone", params) nymea.print_json_format(response['params'])
def enable_cloud_connection(): params = {} options = ["enable", "disable"] selection = nymea.get_selection( "Do you want to do with the cloud connection: ", options) if selection == 0: params['enable'] = True else: params['enable'] = False response = nymea.send_command("Cloud.Enable", params) nymea.print_json_format(response['params'])
def list_rules(): response = nymea.send_command("Rules.GetRules", {}) if not response['params']['ruleDescriptions']: print "\n No rules found. \n" return None print "-> List of configured Rules:\n" for i in range(len(response['params']['ruleDescriptions'])): ruleDescription = response['params']['ruleDescriptions'][i] print "%20s ( %s ) -> %s / %s" % ( ruleDescription['name'], ruleDescription['id'], print_rule_enabled_status(bool(ruleDescription['enabled'])), print_rule_active_status(bool(ruleDescription['active'])))
def permit_join_network(): selectedNetwork = selectNetwork("Please select the network you want to allow/deny joining nodes") if selectedNetwork is None: return None print("Selected network:") timeout = int(raw_input("Please enter the duration (0 - 255 seconds) for how long the network should be open (0 for closing it): ")) params = {} params["duration"] = timeout params["networkUuid"] = selectedNetwork["networkUuid"] response = nymea.send_command("Zigbee.SetPermitJoin", params) print("SetPermitJoin returned %s" % response["params"]["zigbeeError"])
def enable_networking(): params = {} options = ["enable", "disable"] selection = nymea.get_selection("Do you want to do with the networking: ", options) if selection == 0: params['enable'] = True else: params['enable'] = False response = nymea.send_command("NetworkManager.EnableNetworking", params) nymea.print_networkmanager_error_code( response['params']['networkManagerError'])