def _read_one_interface_xml(p_interface_element): l_interface_obj = NodeInterfaceData() XmlConfigTools.read_base_object_xml(l_interface_obj, p_interface_element) l_interface_obj.MacAddress = PutGetXML.get_text_from_xml(p_interface_element, 'MacAddress') l_interface_obj.V4Address = PutGetXML.get_text_from_xml(p_interface_element, 'IPv4Address') l_interface_obj.V6Address = PutGetXML.get_text_from_xml(p_interface_element, 'IPv6Address') return l_interface_obj
def read_base_device_object_xml(p_pyhouse_obj, p_obj, p_xml): """ Get the BaseObject entries from the XML element. @param p_obj: is the object we wish to populate with data @param p_xml: is the element we will extract data from (including children). """ try: p_obj.Name = PutGetXML.get_text_from_xml(p_xml, 'Name', 'Missing Name') p_obj.Key = PutGetXML.get_int_from_xml(p_xml, 'Key', 0) p_obj.Active = PutGetXML.get_bool_from_xml(p_xml, 'Active', False) p_obj.UUID = PutGetXML.get_uuid_from_xml(p_xml, 'UUID') p_obj.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment') p_obj.DeviceFamily = PutGetXML.get_text_from_xml( p_xml, 'DeviceFamily') p_obj.DeviceType = PutGetXML.get_int_from_xml(p_xml, 'DeviceType') p_obj.DeviceSubType = PutGetXML.get_int_from_xml( p_xml, 'DeviceSubType') p_obj.RoomCoords = PutGetXML.get_coords_from_xml( p_xml, 'RoomCoords') p_obj.RoomName = PutGetXML.get_text_from_xml(p_xml, 'RoomName') p_obj.RoomUUID = PutGetXML.get_text_from_xml(p_xml, 'RoomUUID') except Exception as e_err: LOG.error( 'ERROR in xml_tools.read_base_obj_xml() - {}'.format(e_err)) print('Error 111', e_err) return p_obj
def read_xml(self, p_pyhouse_obj): """ @return: a EmailData object. """ l_dict = EmailData() try: l_xml = p_pyhouse_obj.Xml.XmlRoot.find('ComputerDivision') if l_xml is None: return l_dict l_xml = l_xml.find('CommunicationSection') if l_xml is None: return l_dict l_xml = l_xml.find('EmailSection') if l_xml is None: return l_dict l_dict.EmailFromAddress = PutGetXML.get_text_from_xml( l_xml, 'EmailFromAddress') l_dict.EmailToAddress = PutGetXML.get_text_from_xml( l_xml, 'EmailToAddress') l_dict.GmailLogin = PutGetXML.get_text_from_xml( l_xml, 'GmailLogin') l_dict.GmailPassword = PutGetXML.get_text_from_xml( l_xml, 'GmailPassword') except AttributeError as e_err: LOG.error('ERROR in mqtt_xml.read_xml() - {}'.format(e_err)) return l_dict
def read_internet_xml(self, p_house_obj, p_house_xml): """ """ p_house_obj.Internet = InternetData() l_sect = p_house_xml.find('Internet') try: self.m_external_ip = PutGetXML.get_text_from_xml(p_house_xml, 'ExternalIP') self.m_external_delay = PutGetXML.get_int_from_xml(l_sect, 'ExternalDelay') except AttributeError: LOG.error('internet section missing - using defaults.') self.m_external_ip = None self.m_external_url = None self.m_external_delay = 600 # Design change - one of these two should work try: self.m_external_url = PutGetXML.get_text_from_xml(l_sect, 'ExternalUrl') except: self.m_external_url = PutGetXML.get_text_from_xml(l_sect, 'UrlExternalIP') p_house_obj.Internet.ExternalIP = self.m_external_ip p_house_obj.Internet.ExternalUrl = self.m_external_url p_house_obj.Internet.ExternalDelay = self.m_external_delay LOG.debug("Got external IP params. URL:{0:}, Delay:{1:}".format(self.m_external_url, self.m_external_delay)) try: l_list = l_sect.iterfind('DynamicDNS') except AttributeError: l_list = [] l_count = 0 for l_entry in l_list: l_dyndns = self.extract_dyn_dns(l_entry) l_dyndns.Key = l_count # Renumber p_house_obj.Internet.DynDns[l_count] = l_dyndns l_count += 1 LOG.info('Loaded UpdateUrl:{0:}, Delay:{1:}'.format(self.m_external_url, self.m_external_delay)) return p_house_obj.Internet
def read_one_room(p_room_element): l_room_obj = RoomData() XmlConfigTools.read_base_object_xml(l_room_obj, p_room_element) l_room_obj.Comment = PutGetXML.get_text_from_xml(p_room_element, 'Comment') l_room_obj.Corner = PutGetXML.get_text_from_xml(p_room_element, 'Corner') l_room_obj.Floor = PutGetXML.get_text_from_xml(p_room_element, 'Floor', '1') l_room_obj.Size = PutGetXML.get_text_from_xml(p_room_element, 'Size') return l_room_obj
def _read_controller_data(p_obj, p_xml, p_version): """ There are extra fields for controllers - get them. See ControllerData() """ p_obj.InterfaceType = PutGetXML.get_text_from_xml(p_xml, 'InterfaceType') p_obj.Port = PutGetXML.get_text_from_xml(p_xml, 'Port') return p_obj # for testing
def _read_controller_data(_p_pyhouse_obj, p_obj, p_xml): """ There are extra fields for controllers - get them. See ControllerData() """ p_obj.InterfaceType = PutGetXML.get_text_from_xml( p_xml, 'InterfaceType') p_obj.Port = PutGetXML.get_text_from_xml(p_xml, 'Port') return p_obj # for testing
def _read_one_lighting_schedule(p_schedule_element): """Extract schedule information from a schedule xml element. """ l_obj = ScheduleLightData() l_obj.Level = PutGetXML.get_int_from_xml(p_schedule_element, 'Level') l_obj.LightName = PutGetXML.get_text_from_xml(p_schedule_element, 'LightName') l_obj.Rate = PutGetXML.get_int_from_xml(p_schedule_element, 'Rate') l_obj.RoomName = PutGetXML.get_text_from_xml(p_schedule_element, 'RoomName') return l_obj # for testing
def _read_one_login(p_xml): """ @param p_xml: is the element of one login """ l_obj = LoginData() XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.LoginFullName = PutGetXML.get_text_from_xml(p_xml, 'FullName') l_obj.LoginPasswordCurrent = PutGetXML.get_text_from_xml(p_xml, 'Password') l_obj.LoginRole = PutGetXML.get_text_from_xml(p_xml, 'Role') return l_obj
def _read_device_latest(p_device_obj, p_entry_xml): """ """ p_device_obj.Comment = PutGetXML.get_text_from_xml(p_entry_xml, 'Comment') p_device_obj.DeviceFamily = PutGetXML.get_text_from_xml(p_entry_xml, 'DeviceFamily') p_device_obj.DeviceType = PutGetXML.get_int_from_xml(p_entry_xml, 'DeviceType') p_device_obj.DeviceSubType = PutGetXML.get_int_from_xml(p_entry_xml, 'DeviceSubType') p_device_obj.LightingType = PutGetXML.get_text_from_xml(p_entry_xml, 'LightingType') p_device_obj.RoomCoords = PutGetXML.get_coords_from_xml(p_entry_xml, 'RoomCoords') p_device_obj.RoomName = PutGetXML.get_text_from_xml(p_entry_xml, 'RoomName') return p_device_obj
def _read_thermostat_data(p_obj, p_xml): """ @return: a ThermostatData object. """ p_obj.CoolSetPoint = PutGetXML.get_float_from_xml(p_xml, 'CoolSetPoint', p_default = 76.0) p_obj.HeatSetPoint = PutGetXML.get_float_from_xml(p_xml, 'HeatSetPoint', 68.0) p_obj.ThermostatMode = PutGetXML.get_text_from_xml(p_xml, 'ThermostatMode', 'Cool') p_obj.ThermostatScale = PutGetXML.get_text_from_xml(p_xml, 'ThermostatScale', 'F') # p_obj.CurrentTemperature = PutGetXML.get_float_from_xml(p_xml, 'CurrentTemperature') return p_obj
def _read_one_login(p_xml): """ @param p_xml: is the element of one login """ l_obj = LoginData() XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.LoginFullName = PutGetXML.get_text_from_xml(p_xml, 'FullName') l_obj.LoginPasswordCurrent = PutGetXML.get_text_from_xml( p_xml, 'Password') l_obj.LoginRole = PutGetXML.get_text_from_xml(p_xml, 'Role') LOG.info('Loaded login "{}"'.format(l_obj.LoginFullName)) return l_obj
def _read_device_v1_3(p_device_obj, p_entry_xml): """ Read the XML file version 1.3 - convert to 1.4 """ p_device_obj.Comment = '' p_device_obj.DeviceFamily = PutGetXML.get_text_from_xml(p_entry_xml, 'ControllerFamily') p_device_obj.DeviceType = 1 p_device_obj.DeviceSubType = 0 p_device_obj.LightingType = PutGetXML.get_text_from_xml(p_entry_xml, 'LightingType') p_device_obj.RoomCoords = PutGetXML.get_coords_from_xml(p_entry_xml, 'Coords') p_device_obj.RoomName = PutGetXML.get_text_from_xml(p_entry_xml, 'RoomName') return p_device_obj
def read_xml(self, p_pyhouse_obj): """ @return: a EmailData object. """ l_dict = EmailData() try: l_xml = p_pyhouse_obj.Xml.XmlRoot.find('ComputerDivision').find('EmailSection') l_dict.EmailFromAddress = PutGetXML.get_text_from_xml(l_xml, 'EmailFromAddress') l_dict.EmailToAddress = PutGetXML.get_text_from_xml(l_xml, 'EmailToAddress') l_dict.GmailLogin = PutGetXML.get_text_from_xml(l_xml, 'GmailLogin') l_dict.GmailPassword = PutGetXML.get_text_from_xml(l_xml, 'GmailPassword') except AttributeError as e_err: LOG.error('ERROR in mqtt_xml.read_xml() - {}'.format(e_err)) return l_dict
def _read_one_node_xml(p_node_xml): """ Read the existing XML file (if it exists) and get the node info. """ l_node_obj = NodeData() XmlConfigTools.read_base_object_xml(l_node_obj, p_node_xml) l_node_obj.ConnectionAddr_IPv4 = PutGetXML.get_text_from_xml(p_node_xml, 'ConnectionAddressV4') l_node_obj.ConnectionAddr_IPv6 = PutGetXML.get_text_from_xml(p_node_xml, 'ConnectionAddressV6') l_node_obj.NodeRole = PutGetXML.get_int_from_xml(p_node_xml, 'NodeRole') try: l_node_obj.NodeInterfaces = Xml._read_interfaces_xml(p_node_xml.find('InterfaceSection')) except AttributeError as e_err: LOG.error('ERROR OneNodeRead error {}'.format(e_err)) return l_node_obj
def _read_one_broker(p_xml): """ @param p_xml: XML information for one Broker. @return: an IrrigationZone object filled in with data from the XML passed in """ l_obj = MqttBrokerData() try: XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.BrokerAddress = PutGetXML.get_text_from_xml(p_xml, 'BrokerAddress') l_obj.BrokerPort = PutGetXML.get_int_from_xml(p_xml, 'BrokerPort') l_obj.UserName = PutGetXML.get_text_from_xml(p_xml, 'BrokerUser') l_obj.Password = PutGetXML.get_text_from_xml(p_xml, 'BrokerPassword') except Exception: pass return l_obj
def _read_insteon(p_in_xml): l_insteon_obj = InsteonData() try: l_insteon_obj.InsteonAddress = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'InsteonAddress', '99.88.77')) except AttributeError: l_insteon_obj.InsteonAddress = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'Address', '99.88.77')) try: l_insteon_obj.DevCat = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'DevCat', 'A1.B2')) l_insteon_obj.GroupList = PutGetXML.get_text_from_xml(p_in_xml, 'GroupList') l_insteon_obj.GroupNumber = PutGetXML.get_int_from_xml(p_in_xml, 'GroupNumber', 0) l_insteon_obj.ProductKey = Xml._read_product_key(p_in_xml) l_insteon_obj.Version = PutGetXML.get_int_from_xml(p_in_xml, 'Version', 1) except Exception as e_err: LOG.error('ERROR: {}'.format(e_err)) return l_insteon_obj
def _read_one_broker(p_xml): """ @param p_xml: XML information for one Broker. @return: an IrrigationZone object filled in with data from the XML passed in """ l_obj = MqttBrokerData() try: XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.BrokerAddress = PutGetXML.get_text_from_xml(p_xml, 'BrokerAddress') l_obj.BrokerPort = PutGetXML.get_int_from_xml(p_xml, 'BrokerPort') l_obj.UserName = PutGetXML.get_text_from_xml(p_xml, 'BrokerUser') l_obj.Password = PutGetXML.get_text_from_xml(p_xml, 'BrokerPassword') except Exception: pass return l_obj
def _read_one_lighting_schedule(p_schedule_element): """Extract schedule information from a schedule xml element. """ l_obj = ScheduleLightData() l_obj = Xml._read_one_base_schedule(p_schedule_element) l_obj.Level = PutGetXML.get_int_from_xml(p_schedule_element, 'Level') l_obj.LightName = PutGetXML.get_text_from_xml(p_schedule_element, 'LightName') l_obj.LightUUID = PutGetXML.get_uuid_from_xml(p_schedule_element, 'LightUUID') l_obj.Rate = PutGetXML.get_int_from_xml(p_schedule_element, 'Rate') l_obj.RoomName = PutGetXML.get_text_from_xml(p_schedule_element, 'RoomName') l_obj.RoomUUID = PutGetXML.get_uuid_from_xml(p_schedule_element, 'RoomUUID') return l_obj # for testing
def read_interface_xml(p_controller_xml): l_ethernet = EthernetControllerData() l_ethernet.PortNumber = PutGetXML.get_int_from_xml( p_controller_xml, 'PortNumber') l_ethernet.Protocol = PutGetXML.get_text_from_xml( p_controller_xml, 'Protocol') return l_ethernet
def _read_thermostat_data(_p_pyhouse_obj, p_obj, p_xml): """ @return: a ThermostatData object. """ p_obj.CoolSetPoint = PutGetXML.get_float_from_xml(p_xml, 'CoolSetPoint', p_default=76.0) p_obj.HeatSetPoint = PutGetXML.get_float_from_xml( p_xml, 'HeatSetPoint', 68.0) p_obj.ThermostatMode = PutGetXML.get_text_from_xml( p_xml, 'ThermostatMode', 'Cool') p_obj.ThermostatScale = PutGetXML.get_text_from_xml( p_xml, 'ThermostatScale', 'F') # p_obj.CurrentTemperature = PutGetXML.get_float_from_xml( p_xml, 'CurrentTemperature') return p_obj
def _read_product_key(p_entry_xml, p_default = '98.76.54'): l_ret = p_default try: l_prod = PutGetXML.get_text_from_xml(p_entry_xml, 'ProductKey', p_default) l_ret = conversions.dotted_hex2int(l_prod) except Exception: l_ret.ProductKey = p_default return l_ret
def read_location_xml(p_pyhouse_obj): """ @param p_house_xml: is the config file xml for a house. """ l_obj = LocationData() l_obj.RiseSet = RiseSetData() p_pyhouse_obj.House.Location = l_obj try: l_xml = p_pyhouse_obj.Xml.XmlRoot.find('HouseDivision') if l_xml is None: return l_obj l_xml = l_xml.find('LocationSection') if l_xml is None: return l_obj l_obj.Street = PutGetXML.get_text_from_xml(l_xml, 'Street') l_obj.City = PutGetXML.get_text_from_xml(l_xml, 'City') l_obj.State = PutGetXML.get_text_from_xml(l_xml, 'State') l_obj.ZipCode = PutGetXML.get_text_from_xml(l_xml, 'ZipCode', '99999') l_obj.Region = PutGetXML.get_text_from_xml(l_xml, 'Region', 'America') l_obj.Phone = PutGetXML.get_text_from_xml(l_xml, 'Phone') l_obj.Latitude = PutGetXML.get_float_from_xml(l_xml, 'Latitude') l_obj.Longitude = PutGetXML.get_float_from_xml(l_xml, 'Longitude') l_obj.Elevation = PutGetXML.get_float_from_xml(l_xml, 'Elevation', 10) l_obj.TimeZoneName = PutGetXML.get_text_from_xml(l_xml, 'TimeZoneName', 'America/New_York') except AttributeError as e_err: LOG.error('ERROR getting location Data - {}'.format(e_err)) p_pyhouse_obj.House.Location = l_obj LOG.info('Loaded location information.') return l_obj
def _read_one_base_schedule(p_schedule_element): """Extract schedule information from a schedule xml element. """ l_obj = ScheduleBaseData() XmlConfigTools.read_base_object_xml(l_obj, p_schedule_element) l_obj.Time = PutGetXML.get_text_from_xml(p_schedule_element, 'Time') l_obj.ScheduleType = PutGetXML.get_text_from_xml(p_schedule_element, 'ScheduleType') if l_obj.ScheduleType == 'LightingDevice': l_obj.ScheduleType = 'Lighting' try: l_obj.DOW = PutGetXML.get_int_from_xml(l_obj, 'DayOfWeek', 0x7F) except: l_obj.DOW = 0x7F try: l_obj.Mode = PutGetXML.get_int_from_xml(l_obj, 'Mode', 0) except: l_obj.Mode = 0 return l_obj
def _read_device_latest(p_device_obj, p_entry_xml): """ """ p_device_obj.Comment = PutGetXML.get_text_from_xml( p_entry_xml, 'Comment') p_device_obj.DeviceFamily = PutGetXML.get_text_from_xml( p_entry_xml, 'DeviceFamily') p_device_obj.DeviceType = PutGetXML.get_int_from_xml( p_entry_xml, 'DeviceType') p_device_obj.DeviceSubType = PutGetXML.get_int_from_xml( p_entry_xml, 'DeviceSubType') p_device_obj.LightingType = PutGetXML.get_text_from_xml( p_entry_xml, 'LightingType') p_device_obj.RoomCoords = PutGetXML.get_coords_from_xml( p_entry_xml, 'RoomCoords') p_device_obj.RoomName = PutGetXML.get_text_from_xml( p_entry_xml, 'RoomName') return p_device_obj
def extract_dyn_dns(self, p_internet_xml): l_dyndns_obj = DynDnsData() self.read_base_object_xml(l_dyndns_obj, p_internet_xml) l_dyndns_obj.UpdateInterval = PutGetXML.get_int_from_xml(p_internet_xml, 'UpdateInterval') l_dyndns_obj.UpdateUrl = PutGetXML.get_text_from_xml(p_internet_xml, 'UpdateUrl') if g_debug >= 1: LOG.debug("internet.extract_dyn_dns() - Name:{0:}, UpdateInterval:{1:}, UpdateUrl:{2:};".format( l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval, l_dyndns_obj.UpdateUrl)) return l_dyndns_obj
def read_one_room(p_room_element): l_room_obj = RoomData() try: XmlConfigTools.read_base_object_xml(l_room_obj, p_room_element) l_room_obj.Comment = PutGetXML.get_text_from_xml( p_room_element, 'Comment') l_room_obj.Corner = PutGetXML.get_coords_from_xml( p_room_element, 'Corner') l_room_obj.Floor = PutGetXML.get_text_from_xml( p_room_element, 'Floor', '1') l_room_obj.LastUpdate = PutGetXML.get_date_time_from_xml( p_room_element, 'LastUpdate') l_room_obj.Size = PutGetXML.get_coords_from_xml( p_room_element, 'Size') l_room_obj.RoomType = PutGetXML.get_text_from_xml( p_room_element, 'RoomType') except: LOG.warn('Incomplete data for room {}'.format(l_room_obj.Name)) return l_room_obj
def _read_one_zone(p_xml): """ @param p_xml: XML information for one Zone. @return: an IrrigationZone object filled in with data from the XML passed in """ l_obj = IrrigationZoneData() XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment') l_obj.Duration = PutGetXML.get_int_from_xml(p_xml, 'Duration', 0) # Expand with much more control data return l_obj
def read_interface_xml(p_controller_entry): l_serial = SerialControllerData() l_serial.BaudRate = PutGetXML.get_int_from_xml(p_controller_entry, "BaudRate", 19200) l_serial.ByteSize = PutGetXML.get_int_from_xml(p_controller_entry, "ByteSize", 8) l_serial.DsrDtr = PutGetXML.get_bool_from_xml(p_controller_entry, "DsrDtr", False) l_serial.Parity = PutGetXML.get_text_from_xml(p_controller_entry, "Parity", "N") l_serial.RtsCts = PutGetXML.get_bool_from_xml(p_controller_entry, "RtsCts", False) l_serial.StopBits = PutGetXML.get_float_from_xml(p_controller_entry, "StopBits", 1.0) l_serial.Timeout = PutGetXML.get_float_from_xml(p_controller_entry, "Timeout", 1.0) l_serial.XonXoff = PutGetXML.get_bool_from_xml(p_controller_entry, "XonXoff", False) return l_serial
def _read_one_zone(p_xml): """ @param p_xml: XML information for one Zone. @return: an IrrigationZone object filled in with data from the XML passed in """ l_obj = IrrigationZoneData() XmlConfigTools.read_base_object_xml(l_obj, p_xml) l_obj.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment') l_obj.Duration = PutGetXML.get_int_from_xml(p_xml, 'Duration', 0) # Expand with much more control data return l_obj
def read_base_device_object_xml(p_obj, p_xml): """ Get the BaseObject entries from the XML element. @param p_obj: is the object we wish to populate with data @param p_xml: is the element we will extract data from (including children). """ try: p_obj.Name = PutGetXML.get_text_from_xml(p_xml, "Name", "Missing Name") p_obj.Key = PutGetXML.get_int_from_xml(p_xml, "Key", 0) p_obj.Active = PutGetXML.get_bool_from_xml(p_xml, "Active", False) p_obj.Comment = PutGetXML.get_text_from_xml(p_xml, "Comment") p_obj.DeviceFamily = PutGetXML.get_text_from_xml(p_xml, "DeviceFamily") p_obj.DeviceType = PutGetXML.get_int_from_xml(p_xml, "DeviceType") p_obj.DeviceSubType = PutGetXML.get_int_from_xml(p_xml, "DeviceSubType") p_obj.RoomCoords = PutGetXML.get_coords_from_xml(p_xml, "RoomCoords") p_obj.RoomName = PutGetXML.get_text_from_xml(p_xml, "RoomName") p_obj.UUID = PutGetXML.get_uuid_from_xml(p_xml, "UUID") except Exception as e_err: LOG.warn("ERROR in xml_tools.read_base_obj_xml() - {}".format(e_err)) print(e_err) return p_obj
def read_internet_xml(self, p_house_obj, p_house_xml): """ """ p_house_obj.Internet = InternetData() l_sect = p_house_xml.find('Internet') try: self.m_external_ip = PutGetXML.get_text_from_xml( p_house_xml, 'ExternalIP') self.m_external_delay = PutGetXML.get_int_from_xml( l_sect, 'ExternalDelay') except AttributeError: LOG.error('internet section missing - using defaults.') self.m_external_ip = None self.m_external_url = None self.m_external_delay = 600 # Design change - one of these two should work try: self.m_external_url = PutGetXML.get_text_from_xml( l_sect, 'ExternalUrl') except: self.m_external_url = PutGetXML.get_text_from_xml( l_sect, 'UrlExternalIP') p_house_obj.Internet.ExternalIP = self.m_external_ip p_house_obj.Internet.ExternalUrl = self.m_external_url p_house_obj.Internet.ExternalDelay = self.m_external_delay LOG.debug("Got external IP params. URL:{0:}, Delay:{1:}".format( self.m_external_url, self.m_external_delay)) try: l_list = l_sect.iterfind('DynamicDNS') except AttributeError: l_list = [] l_count = 0 for l_entry in l_list: l_dyndns = self.extract_dyn_dns(l_entry) l_dyndns.Key = l_count # Renumber p_house_obj.Internet.DynDns[l_count] = l_dyndns l_count += 1 LOG.info('Loaded UpdateUrl:{0:}, Delay:{1:}'.format( self.m_external_url, self.m_external_delay)) return p_house_obj.Internet
def _read_one_base_schedule(p_schedule_element): """Extract schedule information from a Base schedule xml element. ScheduleBaseData() """ l_obj = ScheduleBaseData() XmlConfigTools.read_base_object_xml(l_obj, p_schedule_element) try: l_obj.DOW = PutGetXML.get_int_from_xml(l_obj, 'DayOfWeek', 0x7F) except: l_obj.DOW = 0x7F try: l_obj.ScheduleMode = PutGetXML.get_text_from_xml( l_obj, 'ScheduleMode', 0) except: l_obj.ScheduleMode = 'Home' l_obj.ScheduleType = PutGetXML.get_text_from_xml( p_schedule_element, 'ScheduleType') if l_obj.ScheduleType == 'LightingDevice': l_obj.ScheduleType = 'Lighting' l_obj.Time = PutGetXML.get_text_from_xml(p_schedule_element, 'Time') return l_obj
def extract_dyn_dns(self, p_internet_xml): l_dyndns_obj = DynDnsData() self.read_base_object_xml(l_dyndns_obj, p_internet_xml) l_dyndns_obj.UpdateInterval = PutGetXML.get_int_from_xml( p_internet_xml, 'UpdateInterval') l_dyndns_obj.UpdateUrl = PutGetXML.get_text_from_xml( p_internet_xml, 'UpdateUrl') if g_debug >= 1: LOG.debug( "internet.extract_dyn_dns() - Name:{0:}, UpdateInterval:{1:}, UpdateUrl:{2:};" .format(l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval, l_dyndns_obj.UpdateUrl)) return l_dyndns_obj
def _read_one_irrigation_system(p_xml): """ May contain zero or more zones. In general each zone is controlled by a solenoid controlled valve. """ l_sys = IrrigationSystemData() l_count = 0 XmlConfigTools.read_base_object_xml(l_sys, p_xml) try: l_sys.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment') for l_zone in p_xml.iterfind(ZONE): l_obj = Xml._read_one_zone(l_zone) l_sys.Zones[l_count] = l_obj l_count += 1 except AttributeError as e_err: LOG.error('Zone: {}'.format(e_err)) return l_sys
def _read_one_irrigation_system(p_xml): """ May contain zero or more zones. In general each zone is controlled by a solenoid controlled valve. """ l_sys = IrrigationSystemData() l_count = 0 XmlConfigTools.read_base_object_xml(l_sys, p_xml) try: l_sys.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment') for l_zone in p_xml.iterfind(ZONE): l_obj = Xml._read_one_zone(l_zone) l_sys.Zones[l_count] = l_obj l_count += 1 except AttributeError as e_err: LOG.error('Zone: {}'.format(e_err)) return l_sys
def read_interface_xml(p_controller_entry): l_serial = SerialControllerData() l_serial.BaudRate = PutGetXML.get_int_from_xml(p_controller_entry, 'BaudRate', 19200) l_serial.ByteSize = PutGetXML.get_int_from_xml(p_controller_entry, 'ByteSize', 8) l_serial.DsrDtr = PutGetXML.get_bool_from_xml(p_controller_entry, 'DsrDtr', False) l_serial.Parity = PutGetXML.get_text_from_xml(p_controller_entry, 'Parity', 'N') l_serial.RtsCts = PutGetXML.get_bool_from_xml(p_controller_entry, 'RtsCts', False) l_serial.StopBits = PutGetXML.get_float_from_xml( p_controller_entry, 'StopBits', 1.0) l_serial.Timeout = PutGetXML.get_float_from_xml( p_controller_entry, 'Timeout', 1.0) l_serial.XonXoff = PutGetXML.get_bool_from_xml(p_controller_entry, 'XonXoff', False) return l_serial
def read_location_xml(p_pyhouse_obj): """ @param p_house_xml: is the config file xml for a house. """ l_obj = LocationData() l_obj.RiseSet = RiseSetData() p_pyhouse_obj.House.Location = l_obj try: l_xml = p_pyhouse_obj.Xml.XmlRoot.find('HouseDivision') l_xml = l_xml.find('LocationSection') l_obj.Street = PutGetXML.get_text_from_xml(l_xml, 'Street') l_obj.City = PutGetXML.get_text_from_xml(l_xml, 'City') l_obj.State = PutGetXML.get_text_from_xml(l_xml, 'State') l_obj.ZipCode = PutGetXML.get_text_from_xml(l_xml, 'ZipCode', '99999') l_obj.Region = PutGetXML.get_text_from_xml(l_xml, 'Region', 'America') l_obj.Phone = PutGetXML.get_text_from_xml(l_xml, 'Phone') l_obj.Latitude = PutGetXML.get_float_from_xml(l_xml, 'Latitude') l_obj.Longitude = PutGetXML.get_float_from_xml(l_xml, 'Longitude') l_obj.Elevation = PutGetXML.get_float_from_xml(l_xml, 'Elevation', 10) l_obj.TimeZoneName = PutGetXML.get_text_from_xml(l_xml, 'TimeZoneName', 'America/New_York') except AttributeError as e_err: LOG.error('ERROR getting location Data - {}'.format(e_err)) p_pyhouse_obj.House.Location = l_obj return l_obj
def read_interface_xml(p_controller_xml): l_ethernet = EthernetControllerData() l_ethernet.PortNumber = PutGetXML.get_int_from_xml(p_controller_xml, 'PortNumber') l_ethernet.Protocol = PutGetXML.get_text_from_xml(p_controller_xml, 'Protocol') return l_ethernet
def _read_one_pool(p_pool_element): l_pool_obj = Xml._read_base(p_pool_element) l_pool_obj.Comment = PutGetXML.get_text_from_xml(p_pool_element, 'Comment') l_pool_obj.PoolType = PutGetXML.get_text_from_xml(p_pool_element, 'PoolType') return l_pool_obj
def get_xml_config_file_version(p_pyhouse_obj): """Get the value of the Version attribute of ??? """ l_root = p_pyhouse_obj.Xml.XmlRoot.find('.') l_ret = PutGetXML.get_text_from_xml(l_root, 'Version') return l_ret
def _read_one_pool(p_pool_element): l_pool_obj = Xml._read_base(p_pool_element) l_pool_obj.Comment = PutGetXML.get_text_from_xml(p_pool_element, 'Comment') l_pool_obj.PoolType = PutGetXML.get_text_from_xml(p_pool_element, 'PoolType') return l_pool_obj
def get_xml_config_file_version(p_pyhouse_obj): """Get the value of the Version attribute of ??? """ l_root = p_pyhouse_obj.Xml.XmlRoot.find('.') l_ret = PutGetXML.get_text_from_xml(l_root, 'Version') return l_ret