Ejemplo n.º 1
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
Ejemplo n.º 2
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
Ejemplo n.º 3
0
 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
Ejemplo n.º 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:{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
Ejemplo n.º 5
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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
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 - {0:}'.format(e_err))
     return l_usb
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
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_int_element(l_xml, 'Duration', p_obj.Duration)
     return l_xml
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
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:{0:}, UpdateInterval:{1:}, UpdateUrl:{2:};".format(
                         l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval, l_dyndns_obj.UpdateUrl))
     return l_dyndns_obj
Ejemplo n.º 13
0
 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
Ejemplo n.º 14
0
 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
Ejemplo n.º 15
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_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
Ejemplo n.º 16
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)
     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
Ejemplo n.º 17
0
 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
Ejemplo n.º 18
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
Ejemplo n.º 19
0
 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
Ejemplo n.º 20
0
 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
Ejemplo n.º 21
0
 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
Ejemplo n.º 22
0
 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
Ejemplo n.º 23
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
Ejemplo n.º 24
0
 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)
Ejemplo n.º 25
0
 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
Ejemplo n.º 26
0
 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
Ejemplo n.º 27
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.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
Ejemplo n.º 28
0
 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
Ejemplo n.º 29
0
 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
Ejemplo n.º 30
0
 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
Ejemplo n.º 31
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")
     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
Ejemplo n.º 32
0
 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
Ejemplo n.º 33
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:{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
Ejemplo n.º 34
0
 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
Ejemplo n.º 35
0
 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)
Ejemplo n.º 36
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_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
Ejemplo n.º 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.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
Ejemplo n.º 38
0
 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))
Ejemplo n.º 39
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_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
Ejemplo n.º 40
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
Ejemplo n.º 41
0
 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
Ejemplo n.º 42
0
 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
Ejemplo n.º 43
0
 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
Ejemplo n.º 44
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
Ejemplo n.º 45
0
 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
Ejemplo n.º 46
0
 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
Ejemplo n.º 47
0
 def test_06_FalseDirect(self):
     result = PutGetXML.get_bool_from_xml(self.m_fields, 'Bool2')
     self.assertFalse(result)
Ejemplo n.º 48
0
 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
Ejemplo n.º 49
0
 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
Ejemplo n.º 50
0
 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
Ejemplo n.º 51
0
 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
Ejemplo n.º 52
0
 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
Ejemplo n.º 53
0
 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
Ejemplo n.º 54
0
 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
Ejemplo n.º 55
0
 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
Ejemplo n.º 56
0
 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
Ejemplo n.º 57
0
 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
Ejemplo n.º 58
0
 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)
Ejemplo n.º 59
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 = 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