Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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:{}, Delay:{}".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:{}, Delay:{}'.format(self.m_external_url, self.m_external_delay))
     return p_house_obj.Internet
Beispiel #5
0
 def read_interface_xml(p_controller_xml):
     l_ethernet = EthernetControllerInformation()
     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
Beispiel #6
0
    def read_pandora_section_xml(p_pyhouse_obj):
        """
        This has to:
            Fill in an entry in Entertainment Plugins

        @param p_pyhouse_obj: containing an XML Element for the <PandoraSection>
        @return: a EntertainmentPluginData object filled in.
        """
        l_plugin_obj = p_pyhouse_obj.House.Entertainment.Plugins[SECTION]
        l_plugin_obj.Name = SECTION
        l_xml = XmlConfigTools.find_section(p_pyhouse_obj, 'HouseDivision/EntertainmentSection/PandoraSection')
        if l_xml is None:
            return l_plugin_obj
        l_count = 0
        try:
            l_plugin_obj.Active = PutGetXML.get_bool_from_xml(l_xml, 'Active')
            l_plugin_obj.Type = PutGetXML.get_text_from_xml(l_xml, 'Type')
            for l_device_xml in l_xml.iterfind('Device'):
                l_device_obj = XML._read_device(l_device_xml)
                l_device_obj.Key = l_count
                l_plugin_obj.Devices[l_count] = l_device_obj
                LOG.info('Loaded {} Device {}'.format(SECTION, l_plugin_obj.Name))
                l_count += 1
                l_plugin_obj.Count = l_count
        except AttributeError as e_err:
            LOG.error('ERROR if getting {} Device Data - {}'.format(SECTION, e_err))
        p_pyhouse_obj.House.Entertainment.Plugins[SECTION] = l_plugin_obj
        LOG.info('Loaded {} {} Devices.'.format(l_count, SECTION))
        return l_plugin_obj
Beispiel #7
0
 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', 'Main')
         l_obj.City = PutGetXML.get_text_from_xml(l_xml, 'City', 'Gotham')
         l_obj.State = PutGetXML.get_text_from_xml(l_xml, 'State', 'Confusion')
         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', '800-555-1212')
         l_obj.Latitude = PutGetXML.get_float_from_xml(l_xml, 'Latitude', 40.0)
         l_obj.Longitude = PutGetXML.get_float_from_xml(l_xml, 'Longitude', 100.0)
         l_obj.Elevation = PutGetXML.get_float_from_xml(l_xml, 'Elevation', 10.0)
         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
Beispiel #8
0
 def _read_one_interface_xml(p_interface_element):
     l_interface_obj = NodeInterfaceData()
     XmlConfigTools.read_base_UUID_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')
     l_interface_obj.NodeInterfaceType = PutGetXML.get_text_from_xml(p_interface_element, 'InterfaceType')
     return l_interface_obj
 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
Beispiel #10
0
 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 - {}'.format(e_err))
     return l_usb
Beispiel #11
0
 def _read_one_irrigation_schedule(p_schedule_element):
     """Extract schedule information from a schedule xml element.
     """
     l_obj = ScheduleIrrigationData()
     l_obj.System = PutGetXML.get_text_from_xml(p_schedule_element, 'System')
     l_obj.SystemUUID = None
     l_obj.Duration = PutGetXML.get_int_from_xml(p_schedule_element, 'Duration')
     return l_obj
Beispiel #12
0
 def read_interface_xml(p_controller_xml):
     l_xml = p_controller_xml.find('USB')
     l_usb = USBControllerInformation()
     try:
         l_usb.Product = PutGetXML.get_int_from_xml(l_xml, 'Product')
         l_usb.Vendor = PutGetXML.get_int_from_xml(l_xml, 'Vendor')
     except Exception as e_err:
         LOG.error('Read Interface - {}'.format(e_err))
     return l_usb
Beispiel #13
0
 def write_interface_xml(p_controller_obj):
     l_xml = ET.Element('USB')
     try:
         PutGetXML.put_int_element(l_xml, 'Product',
                                   p_controller_obj.Product)
         PutGetXML.put_int_element(l_xml, 'Vendor', p_controller_obj.Vendor)
     except Exception:
         pass
     return l_xml
Beispiel #14
0
 def _read_ports(p_xml):
     """
     @param p_xml: is the web section
     @return: the Port Number
     """
     l_port = PutGetXML.get_int_from_xml(p_xml, 'WebPort', 8580)
     l_secure = PutGetXML.get_int_from_xml(p_xml, 'SecurePort', 8588)
     l_socket = PutGetXML.get_int_from_xml(p_xml, 'SocketPort', 8581)
     return l_port, l_secure, l_socket
Beispiel #15
0
 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:{}, UpdateInterval:{}, UpdateUrl:{};".format(
                         l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval, l_dyndns_obj.UpdateUrl))
     return l_dyndns_obj
Beispiel #16
0
 def _read_ports(p_xml):
     """
     @param p_xml: is the web section
     @return: the Port Number
     """
     l_port = PutGetXML.get_int_from_xml(p_xml, 'WebPort', 8580)
     l_secure = PutGetXML.get_int_from_xml(p_xml, 'SecurePort', 8580)
     l_socket = PutGetXML.get_int_from_xml(p_xml, 'SocketPort', 8580)
     return l_port, l_secure, l_socket
Beispiel #17
0
def read_room_reference_xml(p_obj, p_xml):
    """ Since many different XML routines need this - it is factored out here.
    It will use the XML in a configuration file to gather the room information.
    @param p_obj: is the object that will have the room information from the XML added.
    @param p_xml: is the XML that has the room information as sub elements
    """
    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_uuid_from_xml(p_xml, 'RoomUUID')
    return p_obj
Beispiel #18
0
 def _write_one_login(p_obj):
     """
     @param p_obj: is one login object
     """
     l_xml = XmlConfigTools.write_base_UUID_object_xml('Login', p_obj)
     PutGetXML().put_text_element(l_xml, 'FullName', p_obj.LoginFullName)
     PutGetXML().put_text_element(l_xml, 'Password',
                                  p_obj.LoginPasswordCurrent)
     PutGetXML().put_text_element(l_xml, 'Role', p_obj.LoginRole)
     return l_xml
Beispiel #19
0
 def write_interface_xml(p_controller_obj):
     l_xml = ET.Element('Ethernet')
     try:
         PutGetXML.put_int_element(l_xml, 'PortNumber',
                                   p_controller_obj.PortNumber)
         PutGetXML.put_text_element(l_xml, 'Protocol',
                                    p_controller_obj.Protocol)
     except Exception:
         pass
     return l_xml
Beispiel #20
0
def read_room_reference_xml(p_obj, p_xml):
    """ Since many different XML routines need this - it is factored out here.
    It will use the XML in a configuration file to gather the room information.
    @param p_obj: is the object that will have the room information from the XML added.
    @param p_xml: is the XML that has the room information as sub elements
    """
    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_uuid_from_xml(p_xml, 'RoomUUID')
    return p_obj
Beispiel #21
0
 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_UUID_object_xml('IrrigationSystem', p_obj)
     PutGetXML.put_text_element(l_xml, 'Comment', p_obj.Comment)
     for l_obj in p_obj.Zones.values():
         l_zone = Xml._write_one_zone(l_obj)
         l_xml.append(l_zone)
     return l_xml
Beispiel #22
0
 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
Beispiel #23
0
 def _read_one_login(p_xml):
     """
     @param p_xml: is the element of one login
     """
     l_obj = LoginData()
     XmlConfigTools.read_base_UUID_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
Beispiel #24
0
 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
Beispiel #25
0
 def _read_one_login(p_xml):
     """
     @param p_xml: is the element of one login
     """
     l_obj = LoginData()
     XmlConfigTools.read_base_UUID_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
Beispiel #26
0
 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:{}, UpdateInterval:{}, UpdateUrl:{};"
             .format(l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval,
                     l_dyndns_obj.UpdateUrl))
     return l_dyndns_obj
Beispiel #27
0
 def _write_one_interface_xml(p_interface_obj):
     l_entry = XmlConfigTools.write_base_UUID_object_xml('Interface', p_interface_obj)
     PutGetXML.put_text_element(l_entry, 'MacAddress', p_interface_obj.MacAddress)
     PutGetXML.put_text_element(l_entry, 'IPv4Address', p_interface_obj.V4Address)
     PutGetXML.put_text_element(l_entry, 'IPv6Address', p_interface_obj.V6Address)
     PutGetXML.put_text_element(l_entry, 'InterfaceType', p_interface_obj.NodeInterfaceType)
     return l_entry
Beispiel #28
0
    def _read_one_base_schedule(p_schedule_element):
        """Extract schedule information from a Base schedule xml element.

        ScheduleBaseData()
        """
        l_obj = ScheduleBaseData()
        XmlConfigTools.read_base_UUID_object_xml(l_obj, p_schedule_element)
        l_obj.DOW = PutGetXML.get_int_from_xml(p_schedule_element, 'DayOfWeek', '127')
        l_obj.ScheduleMode = PutGetXML.get_text_from_xml(p_schedule_element, 'ScheduleMode', 'Default Mode')
        l_obj.ScheduleType = PutGetXML.get_text_from_xml(p_schedule_element, 'ScheduleType')
        l_obj.Time = PutGetXML.get_text_from_xml(p_schedule_element, 'Time')
        # if l_obj.ScheduleType == 'LightingDevice':
        #    l_obj.ScheduleType = 'Lighting'
        return l_obj
Beispiel #29
0
 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
Beispiel #30
0
 def _write_one_node_xml(p_node_obj):
     l_entry = XmlConfigTools.write_base_UUID_object_xml(NODE_ATTR, p_node_obj)
     PutGetXML.put_text_element(l_entry, 'ConnectionAddressV4', p_node_obj.ConnectionAddr_IPv4)
     PutGetXML.put_text_element(l_entry, 'ConnectionAddressV6', p_node_obj.ConnectionAddr_IPv6)
     PutGetXML.put_int_element(l_entry, 'NodeRole', p_node_obj.NodeRole)
     PutGetXML.put_date_time_element(l_entry, 'LastUpdate', p_node_obj.LastUpdate)
     l_entry.append(Xml._write_interfaces_xml(p_node_obj.NodeInterfaces))
     return l_entry
Beispiel #31
0
 def write_onkyo_section_xml(p_pyhouse_obj):
     """ Create the entire OnkyoSection of the XML.
     @param p_pyhouse_obj: containing an object with onkyo
     """
     l_active = p_pyhouse_obj.House.Entertainment.Plugins[SECTION].Count > 0
     l_xml = ET.Element('OnkyoSection', attrib={'Active': str(l_active)})
     l_count = 0
     l_obj = p_pyhouse_obj.House.Entertainment.Plugins[SECTION]
     PutGetXML.put_text_element(l_xml, 'Type', l_obj.Type)
     for l_device_object in l_obj.Devices.values():
         l_device_object.Key = l_count
         l_entry = XML._write_device(l_device_object)
         l_xml.append(l_entry)
         l_count += 1
     LOG.info('Saved {} Onkyo device(s) XML'.format(l_count))
     return l_xml
Beispiel #32
0
 def read_onkyo_section_xml(p_pyhouse_obj):
     """ Get the entire OnkyoDeviceData object from the xml.
     """
     # Clear out the data sections
     l_xml = XmlConfigTools.find_section(p_pyhouse_obj, 'HouseDivision/EntertainmentSection/OnkyoSection')
     l_entry_obj = p_pyhouse_obj.House.Entertainment.Plugins[SECTION]
     l_entry_obj.Name = SECTION
     l_device_obj = OnkyoDeviceData()
     l_count = 0
     if l_xml is None:
         l_entry_obj.Name = 'Did not find xml section '
         return l_entry_obj
     try:
         l_entry_obj.Type = PutGetXML.get_text_from_xml(l_xml, 'Type')
         for l_device_xml in l_xml.iterfind('Device'):
             l_device_obj = XML._read_device(l_device_xml)
             l_device_obj.Key = l_count
             l_entry_obj.Devices[l_count] = l_device_obj
             l_entry_obj.Count += 1
             LOG.info('Loaded Onkyo Device {}'.format(l_entry_obj.Name))
             l_count += 1
     except AttributeError as e_err:
         LOG.error('ERROR if getting Onkyo Device Data - {}'.format(e_err))
     if l_count > 0:
         l_entry_obj.Active = True
     LOG.info('Loaded {} Onkyo Devices.'.format(l_count))
     return l_entry_obj
Beispiel #33
0
 def read_panasonic_section_xml(p_pyhouse_obj):
     """ Get the entire PanasonicDeviceData object from the xml.
     """
     # Clear out the data sections
     l_xml = XmlConfigTools.find_xml_section(
         p_pyhouse_obj,
         'HouseDivision/EntertainmentSection/PanasonicSection')
     l_entry_obj = p_pyhouse_obj.House.Entertainment.Plugins[SECTION]
     l_entry_obj.Name = SECTION
     l_device_obj = PanasonicDeviceData()
     l_count = 0
     if l_xml is None:
         l_entry_obj.Name = 'Did not find xml section '
         return l_entry_obj
     try:
         l_entry_obj.Type = PutGetXML.get_text_from_xml(l_xml, 'Type')
         for l_device_xml in l_xml.iterfind('Device'):
             l_device_obj = XML._read_device(l_device_xml)
             l_device_obj.Key = l_count
             l_entry_obj.Devices[l_count] = l_device_obj
             l_entry_obj.DeviceCount += 1
             LOG.info('Loaded Panasonic Device {}'.format(l_entry_obj.Name))
             l_count += 1
     except AttributeError as e_err:
         LOG.error(
             'ERROR if getting Panasonic Device Data - {}'.format(e_err))
     if l_count > 0:
         l_entry_obj.Active = True
     LOG.info('Loaded {} Panasonic Devices.'.format(l_count))
     return l_entry_obj
Beispiel #34
0
 def read_base_device_object_xml(p_pyhouse_obj, p_obj, p_xml):
     """
     Get the BaseUUIDObject 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).
     """
     XmlConfigTools.read_base_UUID_object_xml(p_obj, p_xml)
     try:
         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')
         utils.read_room_reference_xml(p_obj, p_xml)
     except Exception as e_err:
         LOG.error('ERROR in xml_tools.read_base_obj_xml() - {}'.format(e_err))
     return p_obj
Beispiel #35
0
 def _write_one_base_schedule(p_schedule_obj):
     """
     """
     l_entry = XmlConfigTools.write_base_UUID_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
Beispiel #36
0
 def _read_light_data(_p_pyhouse_obj, p_obj, p_xml):
     p_obj.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment')
     if (p_xml.find('Brightness') != None):
         p_obj.BrightnessPct = PutGetXML.get_int_from_xml(p_xml, 'Brightness', 44)
     else:
         p_obj.BrightnessPct = PutGetXML.get_int_from_xml(p_xml, 'CurLevel', 45)
     p_obj.IsDimmable = PutGetXML.get_bool_from_xml(p_xml, 'IsDimmable', False)
     p_obj.DeviceType = PutGetXML.get_int_from_xml(p_xml, 'DeviceType', 41)
     p_obj.DeviceSubType = PutGetXML.get_int_from_xml(p_xml, 'DeviceSubType', 43)
     p_obj.RoomName = PutGetXML.get_text_from_xml(p_xml, 'RoomName')
     p_obj.RoomUUID = PutGetXML.get_uuid_from_xml(p_xml, 'RoomUUID')
     p_obj.RoomCoords = PutGetXML.get_coords_from_xml(p_xml, 'RoomCoords')
     return p_obj  # for testing
Beispiel #37
0
 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.values():
             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
Beispiel #38
0
 def write_panasonic_section_xml(p_pyhouse_obj):
     """ Create the entire PanasonicSection of the XML.
     @param p_pyhouse_obj: containing an object with panasonic
     """
     l_active = p_pyhouse_obj.House.Entertainment.Plugins[
         SECTION].DeviceCount > 0
     l_xml = ET.Element('PanasonicSection',
                        attrib={'Active': str(l_active)})
     l_count = 0
     l_obj = p_pyhouse_obj.House.Entertainment.Plugins[SECTION]
     PutGetXML.put_text_element(l_xml, 'Type', l_obj.Type)
     for l_device_object in l_obj.Devices.values():
         l_device_object.Key = l_count
         l_entry = XML._write_device(l_device_object)
         l_xml.append(l_entry)
         l_count += 1
     LOG.info('Saved {} Panasonic device(s) XML'.format(l_count))
     return l_xml
Beispiel #39
0
 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
Beispiel #40
0
 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")  # The root element.
     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
Beispiel #41
0
    def write_pandora_section_xml(p_pyhouse_obj):
        """ Create the <PandoraSection> portion of the <EntertainmentSection>

        @param p_pyhouse_obj: containing an object with pandora data filled in.
        @return: An Element of the tree which can be appended to the EntertainmentSection
        """
        l_entertain_obj = p_pyhouse_obj.House.Entertainment
        l_plugin_obj = l_entertain_obj.Plugins[SECTION]
        l_active = l_plugin_obj.Active
        l_xml = ET.Element('PandoraSection', attrib={'Active': str(l_active)})
        PutGetXML.put_text_element(l_xml, 'Type', l_plugin_obj.Type)
        l_count = 0
        for l_pandora_object in l_plugin_obj.Devices.values():
            l_pandora_object.Key = l_count
            l_entry = XML._write_device(l_pandora_object)
            l_xml.append(l_entry)
            l_count += 1
        LOG.info('Saved {} Pandora device(s) XML'.format(l_count))
        return l_xml
Beispiel #42
0
 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_UUID_object_xml(l_sys, p_xml)
     try:
         # l_sys.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment')
         l_sys.FirstZone = PutGetXML.get_int_from_xml(p_xml, 'FirstZone')
         l_sys.UsesMasterValve = PutGetXML.get_bool_from_xml(p_xml, 'MasterValve')
         l_sys.UsesPumpStartRelay = PutGetXML.get_bool_from_xml(p_xml, 'PumpRelay')
         l_sys.Type = PutGetXML.get_text_from_xml(p_xml, 'Type')
         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
Beispiel #43
0
    def read_base_device_object_xml(p_obj, p_xml):
        """
        Get the BaseUUIDObject entries from the XML element.
        Adds: Device Info, Room Info.

        @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).
        """
        XmlConfigTools.read_base_UUID_object_xml(p_obj, p_xml)
        try:
            # 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_text_from_xml(p_xml, 'DeviceType')
            p_obj.DeviceSubType = PutGetXML.get_text_from_xml(
                p_xml, 'DeviceSubType')
            utils.read_room_reference_xml(p_obj, p_xml)
        except Exception as e_err:
            LOG.error(
                'ERROR in xml_tools.read_base_obj_xml() - {}'.format(e_err))
        return p_obj
Beispiel #44
0
 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:{}, Delay:{}".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:{}, Delay:{}'.format(
         self.m_external_url, self.m_external_delay))
     return p_house_obj.Internet
Beispiel #45
0
 def _write_ports(p_obj, p_xml):
     """
     @param p_obj: is the Computer.Web object
     """
     PutGetXML.put_int_element(p_xml, 'Port', p_obj.WebPort)
     PutGetXML.put_int_element(p_xml, 'SecurePort', p_obj.SecurePort)
     PutGetXML.put_int_element(p_xml, 'SocketPort', p_obj.WebSocketPort)
     return p_xml
Beispiel #46
0
 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.values():
             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
Beispiel #47
0
 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)  # Name, Key, Active
     # l_obj.Comment = PutGetXML.get_text_from_xml(p_xml, 'Comment')
     l_obj.Duration = PutGetXML.get_time_from_xml(p_xml, 'Duration')
     l_obj.EmitterCount = PutGetXML.get_int_from_xml(p_xml, 'EmitterCount', 0)
     l_obj.EmitterType = PutGetXML.get_text_from_xml(p_xml, 'EmitterType')
     l_obj.Next = PutGetXML.get_int_from_xml(p_xml, 'NextZone', 0)
     l_obj.Previous = PutGetXML.get_int_from_xml(p_xml, 'PrevZone', 0)
     l_obj.Rate = PutGetXML.get_float_from_xml(p_xml, 'Rate', 0.0)
     l_obj.StartTime = PutGetXML.get_time_from_xml(p_xml, 'StartTime')
     #  Expand with much more control data
     return l_obj
Beispiel #48
0
    def _read_device(p_xml):
        """ Read an entire <Device> section of XML and fill in the PanasonicDeviceData Object

        @return: a completed PanasonicDeviceData object
        """
        l_device = PanasonicDeviceData()
        XmlConfigTools.read_base_UUID_object_xml(l_device, p_xml)
        l_device.IPv4 = PutGetXML.get_ip_from_xml(p_xml, 'IPv4')
        l_device.Port = PutGetXML.get_int_from_xml(p_xml, 'Port')
        l_device.RoomName = PutGetXML.get_text_from_xml(p_xml, 'RoomName')
        l_device.RoomUUID = PutGetXML.get_uuid_from_xml(p_xml, 'RoomUUID')
        l_device.Type = PutGetXML.get_text_from_xml(p_xml, 'Type')
        l_device.Volume = PutGetXML.get_int_from_xml(p_xml, 'Volume')
        return l_device
Beispiel #49
0
 def _read_derived(p_xml):
     """
     @param p_xml: points to a single "Internet" element
     """
     l_obj = InternetConnectionInformation()
     try:
         l_obj.Name = PutGetXML.get_text_from_xml(p_xml, 'Name')
         l_obj.Key = PutGetXML.get_int_from_xml(p_xml, 'Key', 0)
         l_obj.Active = PutGetXML.get_bool_from_xml(p_xml, 'Active', False)
         l_obj.ExternalIPv4 = PutGetXML.get_ip_from_xml(
             p_xml, 'ExternalIPv4')
         l_obj.ExternalIPv6 = PutGetXML.get_ip_from_xml(
             p_xml, 'ExternalIPv6')
         l_obj.LastChanged = PutGetXML.get_date_time_from_xml(
             p_xml, 'LastChanged')
         l_obj.UpdateInterval = PutGetXML.get_text_from_xml(
             p_xml, 'UpdateInterval')
     except:
         pass
     return l_obj
Beispiel #50
0
 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")  # The root element.
     # 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())))
     p_pyhouse_obj._Config.XmlTree = l_xml
     return
Beispiel #51
0
 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
Beispiel #52
0
 def _write_device(p_obj):
     l_xml = XmlConfigTools.write_base_UUID_object_xml('Device', p_obj)
     PutGetXML.put_ip_element(l_xml, 'IPv4', p_obj.IPv4)
     PutGetXML.put_int_element(l_xml, 'Port', p_obj.Port)
     PutGetXML.put_text_element(l_xml, 'RoomName', p_obj.RoomName)
     PutGetXML.put_text_element(l_xml, 'RoomUUID', p_obj.RoomUUID)
     PutGetXML.put_text_element(l_xml, 'Type', p_obj.Type)
     PutGetXML.put_text_element(l_xml, 'Volume', p_obj.Volume)
     return l_xml
Beispiel #53
0
 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 = XmlConfigTools.write_base_UUID_object_xml(
         p_element_tag, p_obj)
     PutGetXML.put_text_element(l_elem, 'DeviceFamily', p_obj.DeviceFamily)
     PutGetXML.put_text_element(l_elem, 'DeviceType', p_obj.DeviceType)
     PutGetXML.put_text_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
Beispiel #54
0
 def _write_updates_xml(p_obj):
     l_xml = ET.Element('UpdaterUrlSection')
     l_urls = p_obj.UpdateUrls
     for l_url in l_urls:
         PutGetXML.put_text_element(l_xml, 'UpdateUrl', l_url)
     return l_xml
Beispiel #55
0
 def _write_derived_xml(p_obj):
     l_xml = ET.Element('Internet')
     PutGetXML.put_text_attribute(l_xml, 'Name', p_obj.Name)
     PutGetXML.put_int_attribute(l_xml, 'Key', p_obj.Key)
     PutGetXML.put_bool_attribute(l_xml, 'Active', p_obj.Active)
     PutGetXML.put_ip_element(l_xml, 'ExternalIPv4', p_obj.ExternalIPv4)
     PutGetXML.put_ip_element(l_xml, 'ExternalIPv6', p_obj.ExternalIPv6)
     PutGetXML.put_date_time_element(l_xml, 'LastChanged',
                                     p_obj.LastChanged)
     PutGetXML.put_text_element(l_xml, 'UpdateInterval',
                                p_obj.UpdateInterval)
     return l_xml
Beispiel #56
0
 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_time_element(l_xml, 'Duration', p_obj.Duration)
     PutGetXML.put_int_element(l_xml, 'EmitterCount', p_obj.EmitterCount)
     PutGetXML.put_int_element(l_xml, 'EmitterType', p_obj.EmitterType)
     PutGetXML.put_int_element(l_xml, 'NextZone', p_obj.Next)
     PutGetXML.put_int_element(l_xml, 'PrevZone', p_obj.Previous)
     PutGetXML.put_int_element(l_xml, 'Rate', p_obj.Rate)
     PutGetXML.put_time_element(l_xml, 'StartTime', p_obj.StartTime)
     return l_xml
Beispiel #57
0
 def test_06_FalseDirect(self):
     result = PutGetXML.get_bool_from_xml(self.m_fields, 'Bool2')
     self.assertFalse(result)
Beispiel #58
0
def write_room_reference_xml(p_obj, p_xml):
    PutGetXML.put_coords_element(p_xml, 'RoomCoords', p_obj.RoomCoords)
    PutGetXML.put_text_element(p_xml, 'RoomName', p_obj.RoomName)
    PutGetXML.put_text_element(p_xml, 'RoomUUID', p_obj.RoomUUID)
    return p_xml
Beispiel #59
0
 def _write_one_pool(p_pool_obj):
     l_entry = XmlConfigTools.write_base_UUID_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