#encoding=utf-8
# Данный пример меняет адрес модуля на указанный в переменной «i».
from pyiArduinoI2Crelay import *                # Подключаем библиотеку для работы с реле и силовыми ключами.
                                                #
i = 0x09                                        # Назначаемый модулю новый адрес (0x07 < адрес < 0x7F).
                                                #
choices = {                                     # Создаём словарь для сравнения методом get()
    DEF_MODEL_2RM:                              # 
        "электромеханическим"                   # 
        " реле на 2-канала",                    #
    DEF_MODEL_4RT:                              # 
        "твердотельным реле на 4-канала",       #
    DEF_MODEL_4NC:                              # 
        "силовым ключом на "                    # 
        "4 N-канала с измерением тока",         #
    DEF_MODEL_4PC:                              # 
        "силовым ключом на 4 P-канала"          # 
        " с измерением тока",                   #
    DEF_MODEL_4NP:                              # 
        "силовым ключом на "                    # 
        "4 N-канала до 10A",                    #
    DEF_MODEL_4PP:                              # 
        "силовым ключом на"                     # 
        " 4 P-канала до 10A"                    #
}                                               #
                                                #
relay = pyiArduinoI2Crelay()                    # Создаём объект relay для работы 
print("На шине I2C ", end='')                   # с функциями и методами библиотеки iarduino_I2C_Relay.
if relay.begin():                               # Инициируем работу с модулем реле или силовыми ключами.
    address = relay.getAddress()                # Если при объявлении объекта указать адрес, например, relay(0xBB),
    model = relay.getModel()                    # то пример будет работать с тем модулем, адрес которого был указан.
    model = choices.get(model,                  # Cравниваем модель модуля с константами, если ни одна 
                        "неизвестным силовым"   # не совпала - выводим строку по умолчанию
                        " ключом или реле")     # 
                                                #
    print("найден модуль с адресом %s,"         # Выводим текущий адрес модуля.
          " который является %s"                # 
          % (address, model))                   # 
    if relay.changeAddress(i):                  # Меняем адрес модуля на указанный в переменной i.
        print("Адрес модуля изменён на %s"      # Выводим текущий адрес модуля.
              % (relay.getAddress()))           #
    else:                                       # Если метод relay.changeAddress() вернул false,
        print("Адрес модуля "                   # значит библиотеке не удалось сменить адрес модуля.
              "изменить не удалось!")           #
else:                                           # Если метод relay.begin() вернул false,
    print("нет ни силовых ключей, ни реле!")    # значит библиотеке не удалось найти модуль реле или силовых ключей.
