Полноценное описание wb-rules - где?

Добрый день! Примерно полгода уже в относительно фоновом по причине загрузки другими задачами режиме пытаюсь разобраться в написании правил wb-rules. И то, что по началу казалось ощущением или подозрением, к сегодняшнему дню сформировалось практически в уверенность. В уверенность в том, что по данному функционалу отсутствует полноценная документация, которой можно доверять.Да, есть примеры правил, есть описание движка в wiki и на GitHub, но…

На GitHub показано, как создавать виртуальные устройства, описана часть задаваемых при их создании параметров. Но почему нельзя там же описать все возможные параметры и специфику их возможных значений? Про параметр “order” там - вообще ни слова, а он крайне полезен. Какие значения допустимы для precision - тоже не ясно, хотя для ряда применений было бы полезно округлять не до десятых долей целого, а даже до десятков или сотен. Из чьих-то примеров скриптов на портале поддержки недавно узнал, что существует параметр “format”, однако какие значения для него допустимы и как их задание влияет на соответствующий канал(топик) - пойди догадайся. Для dev есть еще, оказывается, параметр “extra” в котором может быть указано “invert”, но информации об этом просто нет.

Про то, что ссылки с GitHub в части описания доступных конструкций языка ведут на недоступный портал es5.javascript.ru, я уже писал несколько недель назад, но ссылка так и висит. С того же GitHub идем по ссылке на обучающий портал и видим там в числе прочего указание на конструкцию “const”, которую, однако, интерпретатор не понимает, хоть при редактировании правила и наборе “cons” сам предлагает подставить зарезервированное слово.

На русскоязычной исходной странице GitHub видим ссылку на Wiren Board MQTT Conventions на том же GHiHub, но не понимаем, почему содержимое данного документа нельзя было перевести на русский? Для Вас же это - ключевой рынок. Или нет?

Есть масса, вроде бы, простых вопросов, которые, думаю, возникают у очень многих, но ответы на них найти крайне непросто. Например, имеет у виртуального устройства канал(топик) кода состояния с типом “value”, и заполненной коллекцией “enum”, соответствующей каждому из допустимых значений. Вопрос: как в log() вывести не целочисленное значение кода состояния, а человеко-понятное его описание? Не нашел ответа.

В части того же округления численных значений - приличное количество упоминаний на конструкции с “parseFloat” и “toFixed()”, которые можно использовать только через copy/paste, поскольку описаний логики их работы нет ни в одном из найденных мной упоминаний на портале поддержки. А, по-хорошему, это базово описано д.б. где-то.

Web-интерфейс позволяет использовать несколько файлов-скриптов правилами, однако нет никакой информации о зонах видимости идентификаторов в них. Есть только упоминание о том, что обрабатываются файлы последовательно.

Есть неплохой раздел с примерами правил, есть пример отправки сообщений через Telegram и, вроде бы, было бы логично тут же показать и обратные возможности с приемом сообщений через Telegram-бота, ибо давным давно сделано это было, но такого нет. Та же история и с отправкой SMS.

Есть и еще примеры в “ту же копилку”. На странице контроллера на официальном сайте есть вкладка “Видео”, в которой выложены действительно хорошо продуманные видеоролики с ответами на типовые вопросы. Только вот по ходу повествования речь регулярно идет о каких-то “комментариях под видео”, которых во вкладке нет. Как нет, кстати, и ссылки на эти видео из WB_FAQ, где предлагается ролики от вас и партнеров посмотреть.

Понятно, что ваш конёк - оборудование. Здесь реально круто все, и с точки зрения аппаратной части, и в части гарантийно-сервисной поддержки. И развитие движка правил, возможно, не самое приоритетное направление. Только реально грустно от того, что документация-то, вроде бы, есть, но обрывками. Не всякий человек сможет разобраться во всех этих нюансах, да и захочет ли… А на выходе получится - что? Криво написанные скрипты, а ругать за кривую работу будут не их автора, а оборудование, название которого - на каждому устройстве…

P.S. Прошу прощения, если резко что-тот прозвучало. Но накопилось уже :slight_smile:

Доброго дня!

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

Это описано в конвенции MQTT.

Если вы про отображаемый формат переменной в веб интерфейсе, то описано там же.

Согласен, нужно дописать.

Можете дать ссылку этого обращения? разберемся.

С конструкцией const - это действительно правда и также надо описать.

Действительно странно - создам новую тему, уточню и дам ответ там.

Очень мало информации. По этому вопросу предлагаю создать новый тикет, поскольку это отдельная тема.

Это стандартное для JS, описано например тут.

Можно подробнее? что вы имеете ввиду под «видимости идентификаторов в них»?

Действительно, сделано было давно

Дело в том, что одно и то же видео выложено в нескольких местах: на YouTube, WB-Tube и непосредственной встройкой.

Я передам эту информацию для доработки, спасибо.


Здесь я постарался ответить на все ваши позиции. Если я что-то упустил, прошу уточнить что именно.


Нужно разделить ваши вопросы на относящиеся к теме и не относящиеся. Для вторых прошу создать отдельную тему, чтобы не было все в куче. С оставшимися нужно разобраться.


Правильно ли я понял ваш посыл, что:

  1. Плохо структурирована информация(документация) и примеры для работы с wb-rules?
  2. Недостаточна описана документация для некоторых методов и функций?

Реакция на обратную связь - это прекрасно. Только много ли обращений подобного рода у вас? Я один столкнулся с кривой ссылкой на портал по JS? А многие люди, столкнувшись с проблемой, просто плюнут и уйдут (к конкурентам). Если компания заинтересована в формировании пула пользователей, она сама должна проводить проверки документации. Понятно, что квалифицированному JS-программисту многое очевидно, но “тайных покупателей” тоже никто не отменял. Дайте людям бонусы какие-то, наконец, за выявленные несоответствия.

Описано. Но где написано, что все это относится в полной мере к виртуальным устройствам? Простого указания, что нумерация order начинается с 0, там тоже нет :slight_smile:

Нет, речь про параметр с указанием типа значения. Видел что-то типа: format: “ui32”

Возможно, и другие параметры есть…

https://support.wirenboard.com/t/obem-podderzhivaemoj-chasti-javascript-v-dvizhke-wb-rules/33776

Это очевидно, возможно, для JS-программиста. Но не все же такие. Ссылок с вашего портала на предлагаемый ресурс нет. И, опять-таки, встает вопрос о том, какая часть языковых конструкций поддерживается в wb-rules.

Речь о том, что нет в явном виде информации о том, будет доступен ли условный идентификатор “var RelayId = 34” (и его значение), объявленный в rules1.js, при исполнении следующего скрипта rules2.js

Тому, кто пытается разобраться только от этого не сильно легче :slight_smile:

По-хорошему, вам стоило бы провести анализ обращений (тикетов), выявить в них не частные вопросы, и вынести их в структурированный FAQ. Причем эту работу стоит вести и в текущем режиме работы с обращениями. Как, например, по моему свежему обращению, вопрос явно мог возникнуть не у меня одного. Если ответ на него вынести в FAQ по модулю, то однажды это сэкономит время инженера техподдержки, которому не придется отвечать на тот же вопрос.

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

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

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

Ну, во-первых, не совсем обычная “русская документация”. Те же первые обучающие видео по контроллеру - мало у кого есть что-то сравнимое с точки зрения осознанности повествования и его практической (!) пользе. Подход-то верный выбран. И я именно из этого исхожу, что недальновидно гробить попытку сделать установщикам удобно только лишь от того, что провалы в описаниях есть.

Что до написания документации в целом, так этот путь уже многими пройден, шишки набиты и методология есть. И специальные технические писатели тут - не что-то из непременно обязательных условий. Ничто не не мешает дополнять документацию по продукту на основе поступающих в техподдержку вопросов. Великих ресурсов для этого не надо, было бы желание.

Про количество “кривых рук” - тут многое зависит от подхода. Как и в классическом программировании. Если исходить из принципа “после меня - хоть потоп”, то комментарии внутри кода, как и его форматирование - особо не нужны. Если же понимать, что в этом, возможно, придется или самому через какое-то время повторно разбираться, или вообще кому-то другому по ряду причин, то иначе несколько на это смотришь.

А Вы предлагаете ничего не делать? :slight_smile:

Да они вроде не отказываются. Просто высказался на форуме, поддержал топик на плаву :wink:

Добавлю не в качестве оправданий, а для точности формулировок.
Wb-rules, по сути, это буквально несколько функций для работы с MQTT. Все остальное - это стандартный движок Ducktape для стандартного EcmaScript5. В нашей документации есть только описание тех функций, которые написаны нашими программистами (whenChanged, defineRule…)․ Все сведения по EcmaScript5 очень доступны, современные нейронки лучше любого учебника расскажут, что там есть за функции, и приведут примеры их использования.
Мы потому и документацию не дорабатываем практически. И бота в техподдержке специально обучили на нашей документации, чтобы он был вашим консультантом по всем вопросам, в т.ч. по wb-rules (кстати, он очень неплохо это делает). Я и сам уже практически никогда в документацию не лезу - бота спрашиваю.
Считаете, этого недостаточно? Или неудобно?

Да, действительно. Исправим сегодня.

Похоже, вы про unsigned 32-bit integer? это может много где встречаться…Это просто тип данных

Создайте, пожалуйста, другое обращение для этой темы.

Мы думаем над такой задачей, но, к сожалению, не ясно как это будет выглядеть. Думаете сделать FAQ под каждой страницей документации на wiki со ссылками на решения портала - будет хорошо?


Хорошо, я тогда формирую задачу по доработке документации по пунктам:

  1. Для wb-rules подробно описать уникальные методы и функции, а также все их параметры. В частности: order (виртуальное устройство), precision, dev (extra, invert)
  2. Для wb-rules подробно описать исключения, которые присутствуют в JS, не не работают в wb-rules. Например, const.

Да, собственно, не ради комплекса вины запрос создан был, а чтобы разобраться :slight_smile:

Так вот именно этого в документации и не хватает: что движок стандартный - такой-то, отличия - в том-то. Уже база будет понятна. Понятно, что кто-то будет техподдержку терзать, но многие будут четко понимать, где информацию искать, и в каких границах она применима.

Бота? Он на запросы на портале отвечает или?

Предположения такие (что тип данных) были. Вопрос в том, что не вполне очевидно, как именно явное задание типа данных у виртуапьного устройства влияет на его функциональность. Для чего это может быть нужно.

Общий подход - да, чтобы значительное количество страниц документации сопровождалось разделом FAQ. Дополнительно весь FAQ стоит отдельно в виде древовидной структуры собрать. Ответы в FAQ чисто в виде ссылок? Честно говоря, сомневаюсь. Ибо некоторые темы достаточно обширны и может быть не вполне просто понять, почему именно такое решение, да и, порой, что именно решали-то :slight_smile: В виде дол. информации для ответа на вопрос - конечно, да.

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

Да, вот эта мордочка слева ответит на все вопросы:
image

Интересно, попробую при случае. Но, честно говоря, визуально не очевидно. Знал бы - возможно тикеты какие-то не создавал бы