code: def x10(cls, housecode, unitcode):
          
          if housecode.lower() in ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
                                   'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']:
              byte_housecode = insteonplm.utils.housecode_to_byte(housecode)
          else:
              if isinstance(housecode, str):
                  _LOGGER.error('X10 house code error: %s', housecode)
              else:
                  _LOGGER.error('X10 house code is not a string')
              raise ValueError
  
          # 20, 21 and 22 for All Units Off, All Lights On and All Lights Off
          # 'fake' units
          if unitcode in range(1, 17) or unitcode in range(20, 23):
              byte_unitcode = insteonplm.utils.unitcode_to_byte(unitcode)
          else:
              if isinstance(unitcode, int):
                  _LOGGER.error('X10 unit code error: %d', unitcode)
              else:
                  _LOGGER.error('X10 unit code is not an integer 1 - 16')
              raise ValueError
  
          addr = Address(bytearray([0x00, byte_housecode, byte_unitcode]))
          addr.is_x10 = True
          return addr
docs: Create an X10 device address.