При настройке Homebridge, редактирование config.json у многих вызывает сложности. Но это проще, чем кажется.
Данная статья содержит информацию для понимания структуры JSON и настройке файла config.json.
Для облегчения процесса, я рекомендую использовать редактор кода, например, Atom или Visual Studio Code.
Я использую редактор Atom с набором расширений для него:
jsonlint – проверка ошибок в JSON;
atom-beautify – автоматическое форматирование текста;
bracket-colorizer – подсветка скобок.
Я подготовил пример простого файла 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"] <-- нет запятой }
На этом все. Пробуйте, изучайте, экспериментируйте и успехов вам в этом!
Очень полезная статья для начинающих. Теперь можно будет сослаться
Полезно, но поздно! Пришлось разбираться во всем методом тыка в свое время ))
Это точно))) Но на всякий случай добавлю в избранное!
Наверное эта статья одна из самых важных для нас начинающих! Спасибо огромное!!!
Блин, может написать плагин небольшой для HB чтобы автоматом форматировалось. Ну мучение сплошное.
Такой плагин уже есть — config-ui-x называется, но нужна поддержка со стороны плагинов, а их единицы пока.
На самом деле нет никакого мучения — смотри чтобы не было лишних запятых, а все скобки были парные, Atom очень сильно помогает в этом.
Ну можно было определить какие основные плагины нужны в нашем сообществе и допилить их. Почему бы и нет? Они же насколько я понимаю opensource
Кто будет этим заниматься? Сколько денег ты потратил на поддержку разработки плагинов и самого Homebridge?
Ну можно было определить какие основные плагины нужны в нашем сообществе и допилить их. Почему бы и нет? Они же насколько я понимаю opensource
https://jsoneditoronline.org/">https://jsoneditoronline.org/