Может кто-нибудь объяснить, с какой целью в шаблонах устройств WirenBoard в названиях топиков, в конечных переменных, используются пробелы?
Зачем было называть /devices/wb-m1w2_0x004e/controls/External Sensor 1?
При этом почему-то правильно назван /devices/wb-gpio/controls/EXT1_R3A1. Почему бы его тоже было не назвать /devices/wb-gpio/controls/EXTERNAL 1 RELE 3A 1, “до кучи”?
Мало того, что постоянно возникают разные проблемы в передаче подобных параметров.
Для меня самое главное, - при фильтрации топиков в mosquitto.conf невозможно использовать топики с пробелами, потому что пробел воспринимается системой разделителем.
Я не нашел никакого способа передать парсеру правильное название с пробелом, - ни разнообразные кавычки, - ничего не работает.
В реальности мы используем (передаем, записываем в БД) только несколько значений со счетчиков WB. Но сами счетчики генерируют такое количество параметров, что нужные значения теряются в этом море, не говоря об износе флеш-памяти. Фильтрация топиков решает эту проблему, - но она невозможна из-за пробелов!
Может быть кто-то знает, как фильтровать эти… ммм “непрограммистские названия переменных”?
Единственное найденное рабочее решение - редактировать шаблоны из поставки, заменяя пробелы символом “_”. Но это не самое хорошее решение, т.к. при обновлении они будут перезаписаны.
Может я чего-то не вижу, не понимаю? Какой-нибудь %20 может помочь?
77dragon, добрый день!
Могу посоветовать вам сделать копию шаблона с другим типом устройства: только с нужными параметрами и только с подходящими вам названиями топиков. Тогда при апгрейде софта ваш шаблон не затрется обновленными, а вы будете получать только нужные данные в необходимом вам формате.
Но можно же было сразу сделать External_Sensor_1, ИМХО, ничего бы не изменилось… Программисты ведь работали. Ну почему, - в именах переменных (!), - пробелы?!..
А потом пишешь в поддержку, а тебе говорят: “тут какой-то шаблон не наш… замените на стандартный, ваш никто проверять не будет”. Или шаблон сам разработчик изменил, - опять все менять…
Добрый день!
Я отчасти разделяю ваши чувства.
Но, переходя к сути, вижу за ними только одну реальную проблему (настройки бриджа в mosquitto не работают с топиками с пробелами, потому что так захотели разработчики mosquitto) с простым обходным решением (создать свои копии шаблонов без пробелов).
Сталкивались ли вы ещё с какими-то проблемами из-за пробелов?
Даже с небольшим количеством модулей через бридж по умолчанию “летит” большое количество данных.
Траффика за месяц набегает более 1,5 Gb
Лишние деньги за превышение приходится отдавать и забивается БД на сервере.
Отладить приложение не просто, когда валит чухом состояние всего, что, как я понимаю, и предлагается делать, если забить на пробелы и, тем самым, бриджем не заниматься.
Ну и очень интересно все-таки узнать причины такого положения дел. Что побудило разработчиков таким образом поименовать топики.
Или так, раз уж mosquitto такой кастомный и ну никак не работает с пробелами, может есть предложение, какой еще брокер можно использовать, который так же пользуется спросом, но не имеет этих ограничений? Ну чтоб он был распространен и т.д.
Мне показалось, что вы, разработчики, упоминаете mosquitto, вероятно, пользуетесь. А такой ляп не торопитесь исправлять… Возможно, причины в другом? Может глючить начинает контроллер, если много записей будет в бридже, может еще какие косяки, и потому вы и не наводите в этом вопросе порядок.
А мне это очень странно. Программисты использовали архитектурно в названия переменных пробелы (спецсимволы)?!. Интернет, как бы, однозначно говорит, - да, спецификация позволяет, но не делайте этого, пожалуйста, никогда! Иначе замучаетесь потом глюки ловить.
Я логику не понимаю. Одно с пробелом, другое - с подчеркиванием.
Главное, ведь, - конечный пользователь никогда не увидит этих названий. Ему все равно, что там написано в топиках, он увидит “Свет в гостиной”. Только инсталлятор их видит, а ему эти пробелы (скобки, …) - “очень мешают”. И даже инсталлятор в большинстве случаев не пишет эти жуткие названия, он их копипастит из интерфейса.
Ну то есть ни одного плюса в названии “External Sensor 1” лично я не вижу, - одни минусы. А ответ разработчика - “это не работает, потому что так захотели разработчики mosquitto”.
Причем здесь разработчики mosquitto? Они пробелы и скобки в названиях переменных в шаблонах wirenboard использовали? Их косяк (такое поведение бриджа “супротив спецификации”) - это их косяк. Так косяков разных много, поэтому разумный интернет и пишет в white paper, чтобы не нарываться на чужие грабли, и обходить даже будущие возможные ошибки, - “никогда не используйте пробелы и спецсимволы в названиях переменных”.
и вот этот разброд в логике очень напрягает) Сразу понимаешь, что где-то еще будут недоделки и косяки( И такое знакомое чувство ожидания подвоха на каждом шагу)
Также столкнулись с проблемой наличия пробелов в названиях mqtt топиков при настройке бриджа. Сейчас планируем править шаблоны всех устройств с которых надо пересылать некоторые метрики через бридж в облако. В связи с этим вопросы:
Как правильнее делать - создавать новые пользовательские шаблоны в /etc/wb-mqtt-serial.conf.d/templates или править стандартные шаблоны в /usr/share/wb-mqtt-serial/templates ?
Шаблоны довольно большие. Для того, чтобы убрать пробелы в названиях mqtt топиков, какие секции в шаблоне надо править (groups, parameters, channels, translations)?
Попробуйте передать конкретно топик, в имени которого есть пробел, и поймете. Например, такой настройкой:
topic /Ch 1 Total P out 2 /devices/wb-map12e_180/controls /AIG2NB6T/wb-map12e_180
Нам нужно передавать для обработки в облако конкретные топики от конкретных устройств, если передавать все (например, так topic /# out 2 /devices/wb-map12e_180/controls /AIG2NB6T/wb-map12e_180) это бессмысленно расходует ресурсы.