Укрощение config.json в Homebridge

14 ноября 2019, 17:50

При настройке Homebridge, редактирование config.json у многих вызывает сложности. Но это проще, чем кажется.
Данная статья содержит информацию для понимания структуры JSON и настройке файла config.json.
Для облегчения процесса, я рекомендую использовать редактор кода, например, Atom или Visual Studio Code.
Я использую редактор Atom с набором расширений для него:
  1. jsonlint – проверка ошибок в JSON;
  2. atom-beautify – автоматическое форматирование текста;
  3. bracket-colorizer – подсветка скобок.

1600x_image.png?1573744197

Я подготовил пример простого файла config.json, где цветами выделены основные массивы его структуры:
  • Коричневый - основной массив файла, обратите внимание на фигурные скобки {} сверху и снизу;
  • Белый - массив Homebridge;
  • Желтый - массив аксессуаров;
  • Красный - аксессуар #1;
  • Синий - аксессуар #2;
  • Orange - массив платформ;
  • Зеленый - платформа #1;
  • Фиолетовый - платформа #2.

Аксессуар WeMo (красный цвет) находится внутри “родительского” массива Accessories (желтый цвет), который, в свою очередь, находится внутри основного “родительского” массива (коричневый цвет). Это называется «вложением» и каждый аксессуар или платформа будет вложен внутри соответствующего “родителя” (Accessories или Platforms).
Помните, у вас только один массив Accessories и один массив Platforms. В каждом из этих массивов могут быть разные аксессуары и платформы (как в файле примера), если Accessories или Platforms будут указаны более одного раза, то вы получите ошибку.
Редактируя свой JSON-файл, вы будете добавлять детали в разделы аксессуаров и платформ (желтый и оранжевый соответственно).

В файле примера есть две платформы: Hue (зеленая) и Lifx (фиолетовая). Платформа Hue находится над Lifx, каждая платформа выделена фигурными скобками и отделена запятой.
Это говорит системе, что в “родительском” массиве Platforms, который выделен квадратными скобками, находятся два подмассива. Заметьте, что после раздела платформы Lifx нет запятой.
Это обусловлено тем, что в массиве Platforms нет других подмассивов после фигурной скобки, поэтому система знает, что нужно перестать искать другую платформу. Приведу пример конфигурации с ошибкой:

"platforms": [
        {
            "platform" : "PhilipsHue",
            "name" : "Hue"
        },
        {
        "platform": "LifxLan",
        "name": "Lifx",
        "ignoredDevices" : ["xxxxxxxx", "yyyyyyyyy"]
      },
    ]

Запятая после последней фигурной скобки вызовет ошибку.
Тут пригодится веб ресурс, который вы можете использовать для проверки файла на ошибки https://jsonlint.com, ту же функцию выполняет расширение jsonlint для Atom. Если вы вставите выше приведенный образец в https://jsonlint.com (включая неверную запятую), вы получите эту ошибку:

Error: Parse error on line 30:
... "yyyyyyyyy"]},]}
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'

Это означает, что анализатор ожидал какие-либо данные после запятой, но вместо этого он получил закрытую квадратную скобку. Для правки ошибки найдите причины, по которым система будет ожидать больше данных. В данном случае мы говорим системе «после этой запятой у нас будет другой массив», что не соответствует истине.

То же правило касается структурирования данных внутри подмассивов. Посмотрите на раздел Hue (зеленый): запятые ставятся после каждой строки (подсказка, после первой строки есть только одна запятая).

{
            "platform" : "PhilipsHue", <--- запятая
            "name" : "Hue" <-- нет запятой
        },

Здесь работает тот же принцип, что и выше, где нужно добавлять запятую после каждой строки, за исключением последней.
Посмотрите на раздел Lifx (фиолетовый), который имеет 3 строки и обратите внимание на строки с запятой.

{
        "platform": "LifxLan", <--- запятая
        "name": "Lifx", <--- запятая
        "ignoredDevices" : ["xxxxxxxx", "yyyyyyyyy"] <-- нет запятой
      }

На этом все. Пробуйте, изучайте, экспериментируйте и успехов вам в этом!


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Дмитрий Батюшин (ReD)
    Дмитрий Батюшин (ReD) месяц назад

    Очень полезная статья для начинающих. Теперь можно будет сослаться 

  2. Дмитрий Гоцюк (aka.GDM)
    Дмитрий Гоцюк (aka.GDM) месяц назад

    Полезно, но поздно! Пришлось разбираться во всем методом тыка в свое время ))

    • (Vazkiller)
      (Vazkiller) отредактировано 26 дней назад

      Это точно))) Но на всякий случай добавлю в избранное!

  3. (Veter268)
    (Veter268) месяц назад

    Наверное эта статья одна из самых важных для нас начинающих!  Спасибо огромное!!!

  4. (sabotajue)
    (sabotajue) месяц назад

    Блин, может написать плагин небольшой для HB чтобы автоматом форматировалось. Ну мучение сплошное.

    • Павел Полтавский (Olepir)

      Такой плагин уже есть — config-ui-x называется, но нужна поддержка со стороны плагинов, а их единицы пока.
      На самом деле нет никакого мучения — смотри чтобы не было лишних запятых, а все скобки были парные, Atom очень сильно помогает в этом.

      • (sabotajue)
        (sabotajue) 29 дней назад

        Ну можно было определить какие основные плагины нужны в нашем сообществе и допилить их. Почему бы и нет? Они же насколько я понимаю opensource

        • Павел Полтавский (Olepir)

          Кто будет этим заниматься? Сколько денег ты потратил на поддержку разработки плагинов и самого Homebridge?

  5. (sabotajue)
    (sabotajue) отредактировано 29 дней назад

    Ну можно было определить какие основные плагины нужны в нашем сообществе и допилить их. Почему бы и нет? Они же насколько я понимаю opensource

К списку статей

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
17 июня 2019, 13:00
HomeKit - это программный framework от компании Apple, который позволяет пользователям iOS, macOS, watchOS и tvOS устройств управлять умными аксессуарами в доме, как через приложение "Дом", так и через голосовой ассистент Siri. Тем самым, делая ваш дом умным. При помощи Apple TV (tvOS) и HomePod управление возможно, но пока только на английском языке через Siri.
29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
03 апреля 2019, 04:29
Разбираем простейшую задачу по электрическому подключению светодиодной ленты к источнику питания и управлению через Умный дом.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
29 сентября 2018, 09:05
Мы рассмотрим как из камеры и кнопки (Mi/Aqara) сделать домофон для HomeKit