Esempio n. 1
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
Esempio n. 2
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
Esempio n. 3
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')
         if l_xml is None:
             return l_dict
         l_xml = l_xml.find('CommunicationSection')
         if l_xml is None:
             return l_dict
         l_xml = l_xml.find('EmailSection')
         if l_xml is None:
             return l_dict
         l_dict.EmailFromAddress = PutGetXML.get_text_from_xml(
             l_xml, 'EmailFromAddress')
         l_dict.EmailToAddress = PutGetXML.get_text_from_xml(
             l_xml, 'EmailToAddress')
         l_dict.GmailLogin = PutGetXML.get_text_from_xml(
             l_xml, 'GmailLogin')
         l_dict.GmailPassword = PutGetXML.get_text_from_xml(
             l_xml, 'GmailPassword')
     except AttributeError as e_err:
         LOG.error('ERROR in mqtt_xml.read_xml() - {}'.format(e_err))
     return l_dict
Esempio 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
Esempio n. 5
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
Esempio n. 6
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
Esempio n. 7
0
 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
Esempio n. 8
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
Esempio n. 9
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
Esempio n. 10
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
Esempio n. 11
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
Esempio n. 12
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')
     LOG.info('Loaded login "{}"'.format(l_obj.LoginFullName))
     return l_obj
Esempio n. 13
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
Esempio n. 14
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
Esempio n. 15
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
Esempio n. 16
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
Esempio n. 17
0
 def _read_insteon(p_in_xml):
     l_insteon_obj = InsteonData()
     try:
         l_insteon_obj.InsteonAddress = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'InsteonAddress', '99.88.77'))
     except AttributeError:
         l_insteon_obj.InsteonAddress = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'Address', '99.88.77'))
     try:
         l_insteon_obj.DevCat = conversions.dotted_hex2int(PutGetXML.get_text_from_xml(p_in_xml, 'DevCat', 'A1.B2'))
         l_insteon_obj.GroupList = PutGetXML.get_text_from_xml(p_in_xml, 'GroupList')
         l_insteon_obj.GroupNumber = PutGetXML.get_int_from_xml(p_in_xml, 'GroupNumber', 0)
         l_insteon_obj.ProductKey = Xml._read_product_key(p_in_xml)
         l_insteon_obj.Version = PutGetXML.get_int_from_xml(p_in_xml, 'Version', 1)
     except Exception as e_err:
         LOG.error('ERROR: {}'.format(e_err))
     return l_insteon_obj
Esempio n. 18
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
Esempio n. 19
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
Esempio n. 20
0
 def read_interface_xml(p_controller_xml):
     l_ethernet = EthernetControllerData()
     l_ethernet.PortNumber = PutGetXML.get_int_from_xml(
         p_controller_xml, 'PortNumber')
     l_ethernet.Protocol = PutGetXML.get_text_from_xml(
         p_controller_xml, 'Protocol')
     return l_ethernet
Esempio n. 21
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
Esempio n. 22
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
Esempio n. 23
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')
         l_obj.City = PutGetXML.get_text_from_xml(l_xml, 'City')
         l_obj.State = PutGetXML.get_text_from_xml(l_xml, 'State')
         l_obj.ZipCode = PutGetXML.get_text_from_xml(l_xml, 'ZipCode', '99999')
         l_obj.Region = PutGetXML.get_text_from_xml(l_xml, 'Region', 'America')
         l_obj.Phone = PutGetXML.get_text_from_xml(l_xml, 'Phone')
         l_obj.Latitude = PutGetXML.get_float_from_xml(l_xml, 'Latitude')
         l_obj.Longitude = PutGetXML.get_float_from_xml(l_xml, 'Longitude')
         l_obj.Elevation = PutGetXML.get_float_from_xml(l_xml, 'Elevation', 10)
         l_obj.TimeZoneName = PutGetXML.get_text_from_xml(l_xml, 'TimeZoneName', 'America/New_York')
     except AttributeError as e_err:
         LOG.error('ERROR getting location Data - {}'.format(e_err))
     p_pyhouse_obj.House.Location = l_obj
     LOG.info('Loaded location information.')
     return l_obj
Esempio n. 24
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
Esempio n. 25
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
Esempio n. 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:{0:}, UpdateInterval:{1:}, UpdateUrl:{2:};".format(
                         l_dyndns_obj.Name, l_dyndns_obj.UpdateInterval, l_dyndns_obj.UpdateUrl))
     return l_dyndns_obj
Esempio n. 27
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
Esempio n. 28
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
Esempio n. 29
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
Esempio n. 30
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
Esempio n. 31
0
 def read_base_device_object_xml(p_obj, p_xml):
     """
     Get the BaseObject entries from the XML element.
     @param p_obj: is the object we wish to populate with data
     @param p_xml: is the element we will extract data from (including children).
     """
     try:
         p_obj.Name = PutGetXML.get_text_from_xml(p_xml, "Name", "Missing Name")
         p_obj.Key = PutGetXML.get_int_from_xml(p_xml, "Key", 0)
         p_obj.Active = PutGetXML.get_bool_from_xml(p_xml, "Active", False)
         p_obj.Comment = PutGetXML.get_text_from_xml(p_xml, "Comment")
         p_obj.DeviceFamily = PutGetXML.get_text_from_xml(p_xml, "DeviceFamily")
         p_obj.DeviceType = PutGetXML.get_int_from_xml(p_xml, "DeviceType")
         p_obj.DeviceSubType = PutGetXML.get_int_from_xml(p_xml, "DeviceSubType")
         p_obj.RoomCoords = PutGetXML.get_coords_from_xml(p_xml, "RoomCoords")
         p_obj.RoomName = PutGetXML.get_text_from_xml(p_xml, "RoomName")
         p_obj.UUID = PutGetXML.get_uuid_from_xml(p_xml, "UUID")
     except Exception as e_err:
         LOG.warn("ERROR in xml_tools.read_base_obj_xml() - {}".format(e_err))
         print(e_err)
     return p_obj
Esempio n. 32
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
Esempio n. 33
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
Esempio n. 34
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
Esempio n. 35
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
Esempio n. 36
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
Esempio n. 37
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
Esempio n. 38
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')
         l_xml = l_xml.find('LocationSection')
         l_obj.Street = PutGetXML.get_text_from_xml(l_xml, 'Street')
         l_obj.City = PutGetXML.get_text_from_xml(l_xml, 'City')
         l_obj.State = PutGetXML.get_text_from_xml(l_xml, 'State')
         l_obj.ZipCode = PutGetXML.get_text_from_xml(l_xml, 'ZipCode', '99999')
         l_obj.Region = PutGetXML.get_text_from_xml(l_xml, 'Region', 'America')
         l_obj.Phone = PutGetXML.get_text_from_xml(l_xml, 'Phone')
         l_obj.Latitude = PutGetXML.get_float_from_xml(l_xml, 'Latitude')
         l_obj.Longitude = PutGetXML.get_float_from_xml(l_xml, 'Longitude')
         l_obj.Elevation = PutGetXML.get_float_from_xml(l_xml, 'Elevation', 10)
         l_obj.TimeZoneName = PutGetXML.get_text_from_xml(l_xml, 'TimeZoneName', 'America/New_York')
     except AttributeError as e_err:
         LOG.error('ERROR getting location Data - {}'.format(e_err))
     p_pyhouse_obj.House.Location = l_obj
     return l_obj
Esempio n. 39
0
 def read_interface_xml(p_controller_xml):
     l_ethernet = EthernetControllerData()
     l_ethernet.PortNumber = PutGetXML.get_int_from_xml(p_controller_xml, 'PortNumber')
     l_ethernet.Protocol = PutGetXML.get_text_from_xml(p_controller_xml, 'Protocol')
     return l_ethernet
Esempio n. 40
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
Esempio n. 41
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
Esempio n. 42
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
Esempio n. 43
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