Документация ArtRelay


ArtRelay

ArtRelay используется для управления реле при помощи протокола Art-Net. Приложение написано на Python и работает под ОС Linux на Raspberry Pi.

ArtRelay реализует разрешение конфликтов между реле. Например, в конфигурации можно запретить совместное включение двух реле (hate), и тогда одновременно можно будет включить только одно из них. Также допускается указать, какие реле не могут быть включены друг без друга (love).

Для конфигурации используется файл config.json, находящийся в той же директории, что и main.py


config.json

Приложение автоматически сгенерирует конфигурацию по умолчанию при загрузке, если файла config.json не существует. Если файл содержит ошибки, в том числе ошибки в связях реле (например, реле, которые друг друга ненавидят, описываются в том числе как любящие друг друга), то приложение будет завершено с ошибкой, но файл изменён не будет. Для перезагрузки конфигурации приложение нужно перезапустить. Пример файла config.json:

{
    "host": "0.0.0.0",
    "port": 6454,
    "universe": 0,
    "subnet": 0,
    "relays": [
        {
            "pin": 37,
            "inverse": 1,
            "debounce": 0.2,
            "threshold": 127,
            "channel": 0
        },
        {
            "pin": 38,
            "inverse": 1,
            "debounce": 0.2,
            "threshold": 127,
            "channel": 0
        },
        {
            "pin": 40,
            "inverse": 1,
            "debounce": 0.2,
            "threshold": 127,
            "channel": 0
        }
    ],
    "love": [
        [38, 40]
    ],
    "hate": [
        [37, 38]
    ]
}

Везде, где нужно сослаться на реле, для ссылки используется номер пина, который управляет этим реле. Это касается hate и love (см. далее).

Корневой JSON элемент имеет следующие поля:

Каждое реле описывается следующими полями:


Любовь и ненависть

Группы любви (love)

Группы любви описывают множества реле, которые всегда включаются вместе. Если хотя бы одно реле из группы любви включается, то включаются все реле из этой группы.

Группы ненависти (hate)

Группы ненависти описывают множества реле, в которых одновременно может быть включено не более одного реле.

Оргия реле (пересечение love)

Если группы любви пересекаются, то они объединяются. Включение любого реле из пересечённых групп включает эти группы целиком.

Нездоровая зависимость

Конфигурация, в которой два или более реле одновременно входят вместе в одни и те же группы ненависти и группы любви, является ошибочной.