def write_interface_xml(p_xml, p_controller_obj): try: PutGetXML.put_int_element(p_xml, 'Product', p_controller_obj.Product) PutGetXML.put_int_element(p_xml, 'Vendor', p_controller_obj.Vendor) except Exception: pass return p_xml
def write_interface_xml(p_xml, p_controller_obj): try: PutGetXML.put_int_element(p_xml, 'PortNumber', p_controller_obj.PortNumber) PutGetXML.put_text_element(p_xml, 'Protocol', p_controller_obj.Protocol) except Exception: pass return p_xml
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_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 _write_thermostat_data(p_out_xml, p_obj): PutGetXML.put_float_element(p_out_xml, 'CoolSetPoint', p_obj.CoolSetPoint) PutGetXML.put_float_element(p_out_xml, 'HeatSetPoint', p_obj.HeatSetPoint) PutGetXML.put_text_element(p_out_xml, 'ThermostatMode', p_obj.ThermostatMode) PutGetXML.put_text_element(p_out_xml, 'ThermostatScale', p_obj.ThermostatScale) PutGetXML.put_float_element(p_out_xml, 'CurrentTemperature', p_obj.CurrentTemperature) return p_out_xml
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_interface_xml(p_controller_xml): l_usb = USBControllerData() try: l_usb.Product = PutGetXML.get_int_from_xml(p_controller_xml, 'Product') l_usb.Vendor = PutGetXML.get_int_from_xml(p_controller_xml, 'Vendor') except Exception as e_err: LOG.error('Read Interface - {0:}'.format(e_err)) return l_usb
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_derived(p_internet_sect_xml): l_icd = InternetConnectionData() try: l_icd.ExternalIPv4 = PutGetXML.get_ip_from_xml(p_internet_sect_xml, 'ExternalIPv4') l_icd.ExternalIPv6 = PutGetXML.get_ip_from_xml(p_internet_sect_xml, 'ExternalIPv6') l_icd.LastChanged = PutGetXML.get_date_time_from_xml(p_internet_sect_xml, 'LastChanged') except: pass return l_icd
def _write_one_zone(p_obj): """ @param p_obj: is one zone object @return the XML for one Zone """ l_xml = XmlConfigTools.write_base_object_xml('Zone', p_obj) PutGetXML.put_text_element(l_xml, 'Comment', p_obj.Comment) PutGetXML.put_int_element(l_xml, 'Duration', p_obj.Duration) return l_xml
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 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_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_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 _write_one_system(p_obj): """ @param p_obj: is one irrigation system object. @return: the XML for one complete IrrigationSystem """ l_xml = XmlConfigTools.write_base_object_xml('IrrigationSystem', p_obj) PutGetXML.put_text_element(l_xml, 'Comment', p_obj.Comment) for l_obj in p_obj.Zones.itervalues(): l_zone = Xml._write_one_zone(l_obj) l_xml.append(l_zone) return l_xml
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_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 ReadXml(p_device_obj, p_in_xml): """ @param p_in_xml: is the e-tree XML house object @param p_house: is the text name of the House. @return: a dict of the entry to be attached to a house object. """ l_obj = UPBData() l_obj.UPBAddress = PutGetXML.get_int_from_xml(p_in_xml, 'UPBAddress', 255) l_obj.UPBNetworkID = PutGetXML.get_int_from_xml(p_in_xml, 'UPBNetworkID') l_obj.UPBPassword = PutGetXML.get_int_from_xml(p_in_xml, 'UPBPassword') stuff_new_attrs(p_device_obj, l_obj) return l_obj # for testing
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_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 write_one_room(p_room_object): l_entry = XmlConfigTools.write_base_object_xml('Room', p_room_object) PutGetXML.put_text_element(l_entry, 'Comment', p_room_object.Comment) PutGetXML.put_text_element(l_entry, 'Corner', p_room_object.Corner) PutGetXML.put_text_element(l_entry, 'Floor', p_room_object.Floor) PutGetXML.put_text_element(l_entry, 'Size', p_room_object.Size) return l_entry
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 _create_empty_xml_skeleton(p_pyhouse_obj): l_xml = ET.Element("PyHouse") PutGetXML.put_text_attribute(l_xml, 'Version', p_pyhouse_obj.Xml.XmlVersion) PutGetXML.put_text_attribute(l_xml, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance') PutGetXML.put_text_attribute(l_xml, 'xsi:schemaLocation', 'http://PyHouse.org schemas/PyHouse.xsd') PutGetXML.put_text_attribute(l_xml, 'xmlns:comp', 'http://PyHouse.Org/ComputerDiv') l_xml.append(ET.Comment(' Updated by PyHouse {} '.format(datetime.datetime.now()))) return l_xml
def _write_one_light_schedule(p_schedule_obj, p_entry): """ Shove our entries in. """ PutGetXML.put_int_element(p_entry, 'Level', p_schedule_obj.Level) PutGetXML.put_text_element(p_entry, 'LightName', p_schedule_obj.LightName) PutGetXML.put_int_element(p_entry, 'Rate', p_schedule_obj.Rate) PutGetXML.put_text_element(p_entry, 'RoomName', p_schedule_obj.RoomName)
def _read_port(p_xml): """ @param p_xml: is the web section @return: the Port Number """ l_port = PutGetXML.get_int_from_xml(p_xml, 'WebPort', 8580) return l_port
def _write_one_base_schedule(p_schedule_obj): """ """ l_entry = XmlConfigTools.write_base_object_xml('Schedule', p_schedule_obj) PutGetXML.put_text_element(l_entry, 'ScheduleType', p_schedule_obj.ScheduleType) PutGetXML.put_text_element(l_entry, 'Time', p_schedule_obj.Time) PutGetXML.put_int_element(l_entry, 'DayOfWeek', int(p_schedule_obj.DOW)) PutGetXML.put_int_element(l_entry, 'Mode', p_schedule_obj.Mode) return l_entry
def write_internet(self, p_house_obj): """Create a sub tree for 'Internet' - the sub elements do not have to be present. @return: a sub tree ready to be appended to "something" """ l_internet_xml = ET.Element('Internet') PutGetXML.put_text_attribute(l_internet_xml, 'ExternalIP', p_house_obj.Internet.ExternalIP) PutGetXML.put_int_attribute(l_internet_xml, 'ExternalDelay', p_house_obj.Internet.ExternalDelay) PutGetXML.put_text_attribute(l_internet_xml, 'ExternalUrl', p_house_obj.Internet.ExternalUrl) try: for l_dyndns_obj in p_house_obj.Internet.DynDns.itervalues(): l_entry = self.write_base_object_xml('DynamicDNS', l_dyndns_obj) PutGetXML.put_int_element(l_entry, 'UpdateInterval', l_dyndns_obj.UpdateInterval) PutGetXML.put_text_element(l_entry, 'UpdateUrl', l_dyndns_obj.UpdateUrl) l_internet_xml.append(l_entry) except AttributeError: pass return l_internet_xml
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_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 write_xml(self, p_obj): l_xml = ET.Element('EmailSection') try: l_obj = p_obj.Computer.Email PutGetXML.put_text_element(l_xml, 'EmailFromAddress', l_obj.EmailFromAddress) PutGetXML.put_text_element(l_xml, 'EmailToAddress', l_obj.EmailToAddress) PutGetXML.put_text_element(l_xml, 'GmailLogin', l_obj.GmailLogin) PutGetXML.put_text_element(l_xml, 'GmailPassword', l_obj.GmailPassword) except AttributeError as e_err: LOG.error('ERROR in mqtt_xml.write_xml() - {}'.format(e_err)) return l_xml
def create_xml_config_foundation(p_pyhouse_obj): """ Create the "PyHouse" top element of the XML config file. The other divisions are appended to this foundation. """ l_xml = ET.Element("PyHouse") PutGetXML.put_text_attribute(l_xml, 'Version', p_pyhouse_obj.Xml.XmlVersion) PutGetXML.put_text_attribute(l_xml, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance') PutGetXML.put_text_attribute(l_xml, 'xsi:schemaLocation', 'http://PyHouse.org schemas/PyHouse.xsd') PutGetXML.put_text_attribute(l_xml, 'xmlns:comp', 'http://PyHouse.Org/ComputerDiv') l_xml.append(ET.Comment(' Updated by PyHouse {} '.format(datetime.datetime.now()))) return l_xml
def _write_one_base_schedule(p_schedule_obj): """ """ l_entry = XmlConfigTools.write_base_object_xml(SCHEDULE_ATTR, p_schedule_obj) PutGetXML.put_int_element(l_entry, 'DayOfWeek', int(p_schedule_obj.DOW)) PutGetXML.put_text_element(l_entry, 'ScheduleMode', p_schedule_obj.ScheduleMode) PutGetXML.put_text_element(l_entry, 'ScheduleType', p_schedule_obj.ScheduleType) PutGetXML.put_text_element(l_entry, 'Time', p_schedule_obj.Time) return l_entry
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 _write_derived_xml(p_internet_obj, p_xml): PutGetXML.put_text_element(p_xml, 'ExternalIPv4', p_internet_obj.ExternalIPv4) PutGetXML.put_text_element(p_xml, 'ExternalIPv6', p_internet_obj.ExternalIPv6) PutGetXML.put_text_element(p_xml, 'LastChanged', p_internet_obj.LastChanged)
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 WriteXml(p_out_xml, p_device_obj): try: PutGetXML.put_int_element(p_out_xml, 'UPBAddress', p_device_obj.UPBAddress) PutGetXML.put_int_element(p_out_xml, 'UPBNetworkID', p_device_obj.UPBNetworkID) PutGetXML.put_int_element(p_out_xml, 'UPBPassword', p_device_obj.UPBPassword) except AttributeError as e_err: LOG.error('InsertDeviceXML ERROR {}'.format(e_err))
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_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_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_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_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 _write_updates_xml(p_dns_obj): l_xml = ET.Element('UpdaterUrlSection') for l_url in p_dns_obj.UpdateUrls.itervalues(): PutGetXML.put_text_element(l_xml, 'UpdateUrl', l_url) return l_xml
def _write_locates_xml(p_internet_obj): l_xml = ET.Element('LocaterUrlSection') for l_url in p_internet_obj.LocateUrls.itervalues(): PutGetXML.put_text_element(l_xml, 'LocateUrl', l_url) return l_xml
def test_06_FalseDirect(self): result = PutGetXML.get_bool_from_xml(self.m_fields, 'Bool2') self.assertFalse(result)
def _read_light_data(_p_pyhouse_obj, p_obj, p_xml): p_obj.CurLevel = PutGetXML.get_int_from_xml(p_xml, 'CurLevel', 0) p_obj.IsDimmable = PutGetXML.get_bool_from_xml(p_xml, 'IsDimmable', False) return p_obj # for testing
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 _write_light_data(p_obj, p_xml): PutGetXML.put_text_element(p_xml, 'CurLevel', p_obj.CurLevel) PutGetXML.put_text_element(p_xml, 'IsDimmable', p_obj.IsDimmable) return p_xml
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 write_interface_xml(p_xml, p_controller_obj): try: PutGetXML.put_int_element(p_xml, 'BaudRate', p_controller_obj.BaudRate) PutGetXML.put_int_element(p_xml, 'ByteSize', p_controller_obj.ByteSize) PutGetXML.put_bool_element(p_xml, 'DsrDtr', p_controller_obj.DsrDtr) PutGetXML.put_text_element(p_xml, 'Parity', p_controller_obj.Parity) PutGetXML.put_bool_element(p_xml, 'RtsCts', p_controller_obj.RtsCts) PutGetXML.put_float_element(p_xml, 'StopBits', p_controller_obj.StopBits) PutGetXML.put_float_element(p_xml, 'Timeout', p_controller_obj.Timeout) PutGetXML.put_bool_element(p_xml, 'XonXoff', p_controller_obj.XonXoff) except Exception as e_err: LOG.error('Error writing XML - {}'.format(e_err)) return p_xml
def _write_one_pool(p_pool_obj): l_entry = XmlConfigTools.write_base_object_xml('Pool', p_pool_obj) PutGetXML().put_text_element(l_entry, 'Comment', p_pool_obj.Comment) PutGetXML().put_text_element(l_entry, 'PoolType', p_pool_obj.PoolType) return l_entry
def _write_controller_data(p_obj, p_xml): PutGetXML.put_text_element(p_xml, 'InterfaceType', p_obj.InterfaceType) PutGetXML.put_text_element(p_xml, 'Port', p_obj.Port) return p_xml
def write_location_xml(p_location_obj): """Replace the data in the 'House/Location' section with the current data. """ l_entry = ET.Element('LocationSection') PutGetXML.put_text_element(l_entry, 'Street', p_location_obj.Street) PutGetXML.put_text_element(l_entry, 'City', p_location_obj.City) PutGetXML.put_text_element(l_entry, 'State', p_location_obj.State) PutGetXML.put_text_element(l_entry, 'ZipCode', p_location_obj.ZipCode) PutGetXML.put_text_element(l_entry, 'Region', p_location_obj.Region) PutGetXML.put_text_element(l_entry, 'Phone', p_location_obj.Phone) PutGetXML.put_float_element(l_entry, 'Latitude', p_location_obj.Latitude) PutGetXML.put_float_element(l_entry, 'Longitude', p_location_obj.Longitude) PutGetXML.put_float_element(l_entry, 'Elevation', p_location_obj.Elevation) PutGetXML.put_text_element(l_entry, 'TimeZoneName', p_location_obj.TimeZoneName) LOG.info('Saved Location XML') return l_entry
def write_one_room(p_room_object): l_entry = XmlConfigTools.write_base_object_xml('Room', p_room_object) PutGetXML.put_text_element(l_entry, 'Comment', p_room_object.Comment) PutGetXML.put_coords_element(l_entry, 'Corner', p_room_object.Corner) PutGetXML.put_text_element(l_entry, 'Floor', p_room_object.Floor) PutGetXML.put_date_time_element(l_entry, 'LastUpdate', p_room_object.LastUpdate) PutGetXML.put_coords_element(l_entry, 'Size', p_room_object.Size) PutGetXML.put_text_element(l_entry, 'RoomType', p_room_object.RoomType) return l_entry
def _write_port(p_obj, p_xml): """ @param p_obj: is the Computer.Web object """ l_xml = PutGetXML.put_int_element(p_xml, 'Port', p_obj.WebPort) return l_xml
def _write_one_light_schedule(p_schedule_obj, p_entry): """ Shove our entries in. """ PutGetXML.put_int_element(p_entry, 'Level', p_schedule_obj.Level) PutGetXML.put_text_element(p_entry, 'LightName', p_schedule_obj.LightName) PutGetXML.put_text_element(p_entry, 'LightUUID', p_schedule_obj.LightUUID) PutGetXML.put_int_element(p_entry, 'Rate', p_schedule_obj.Rate) PutGetXML.put_text_element(p_entry, 'RoomName', p_schedule_obj.RoomName) PutGetXML.put_text_element(p_entry, 'RoomUUID', p_schedule_obj.RoomUUID)
def write_base_device_object_xml(p_element_tag, p_obj): """ @param p_element_tag: is the element name that we are going to create. @param p_obj: is the object that contains the device data for which we will output the XML @return: the XML element with children that we will create. """ l_elem = ET.Element(p_element_tag) PutGetXML.put_text_attribute(l_elem, 'Name', p_obj.Name) PutGetXML.put_int_attribute(l_elem, 'Key', p_obj.Key) PutGetXML.put_bool_attribute(l_elem, 'Active', p_obj.Active) # add sub elements try: PutGetXML.put_uuid_element(l_elem, 'UUID', p_obj.UUID) except AttributeError: PutGetXML.put_uuid_element(l_elem, 'UUID', 'No UUID Given') PutGetXML.put_text_element(l_elem, 'Comment', p_obj.Comment) PutGetXML.put_text_element(l_elem, 'DeviceFamily', p_obj.DeviceFamily) PutGetXML.put_int_element(l_elem, 'DeviceType', p_obj.DeviceType) PutGetXML.put_int_element(l_elem, 'DeviceSubType', p_obj.DeviceSubType) PutGetXML.put_coords_element(l_elem, 'RoomCoords', p_obj.RoomCoords) PutGetXML.put_text_element(l_elem, 'RoomName', p_obj.RoomName) PutGetXML.put_text_element(l_elem, 'RoomUUID', p_obj.RoomUUID) return l_elem