Укрощение 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) 8 месяцев назад

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

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

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

    • (Vazkiller)
      (Vazkiller) отредактировано 7 месяцев назад

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

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

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

  4. Станислав Кремков (sabotajue)
    Станислав Кремков (sabotajue) 8 месяцев назад

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

    • Павел O (Olepir)
      Павел O (Olepir) 8 месяцев назад

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

      • Станислав Кремков (sabotajue)
        Станислав Кремков (sabotajue) 8 месяцев назад

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

        • Павел O (Olepir)
          Павел O (Olepir) 8 месяцев назад

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

  5. Станислав Кремков (sabotajue)
    Станислав Кремков (sabotajue) отредактировано 8 месяцев назад
    Комментарий удален
К списку статей
Великобритания, г. Лондон

Тематические чаты

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

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем 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.
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 09:49
Как удаленно управлять Mac через Siri.
29 сентября 2018, 09:05
Мы рассмотрим как из камеры и кнопки (Mi/Aqara) сделать домофон для HomeKit