Информационная поддержка продукта

уберите эту строку со странички, ничего у вас еще не вышло.

https://wirenboard.com/wiki/index.php/Движок_правил_wb-rules

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

спасибо, исправил

готово

Не мог пройти мимо такой интересной темы.

мне сложно представить ситуацию, когда надо выбирать javascript как язык сценариев для промышленного контроллера. Это как был недоязык, так и останется.

Уважаемый @maxim2!

Вы, видимо, не различаете язык и платформу, и, мягко говоря, отстали от жизни.
Сам по себе язык javascript широко используется и на серверной части в рамках платформы nodejs, а его производные в виде json широко используются в протоколах обмена данными.

Более того, сейчас javascript постепенно переходит в “языки низкого уровня” (как бы это не звучало странно) и используется, как цель при компиляции программ на языках C, C++, Java, Go, Rust, Kotlin и прочих типа CoffeeScript, TypeScript, Dart и т.д. Т.е. программы на перечисленных языках могут компилироваться в javascript.

К вашему сведению, есть системы, работающие на javascript, которые представляют собой:

  1. виртуальную машину Linux: https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/buildroot-x86.cfg

  2. виртуальную машину Windows с графическим интерфейсом: https://bellard.org/jslinux/vm.html?url=https://bellard.org/jslinux/win2k.cfg&mem=192&graphic=1&w=1024&h=768

Поэтому, “неполноценность” не в языке, а, может быть, в голове.

Команде Wiren Board хотел бы пожелать удачи, т.к. видно, что к делу подходят с душой и дают огромную свободу творчества в программной части.

Заметно, что разработкой ПО занимались не “схемотехники”, а “специалисты-разработчики ПО”.
Например, по отношению к Segnetics ощущение строго обратное.

2 лайка

а потом переименуем в Ньювасюки!
Неполноценность языка была заложена в его целевом функционале, изначально, как скрипты встраиваемые в документ для его динамичности. И никто не виноват, что выросло поколение горекодеров, которые вообще не представляют что такое ресурсы компьютера и не могу уследить за переменными в своей программе.
Не надо натягивать сову на глобус. Если это продолжать делать, то получится тот же Си, только в виде чудовища франкенштейна.
Даже пишу этот коммент и вижу все огрехи чрезмерного употребления javascript который сделал страницу настолько тяжелой, что буквы пропечатываются с задержкой.

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

Неполноценность языка была заложена в его целевом функционале

Я же говорю, вы отстали от жизни на 20 лет. Уже вышла девятая редакция языка с его рождения, он давно не является каким-то неполноценным, вся неполноценность – только в голове программиста, который его использует.

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

Поколение горекодеров образуется независимо от языков программирования и платформ, это вообще не связанные вещи. Или у человека есть способности, желание разобраться в сути вещей, иметь достаточное абстрактное мышление, или этого нет и получается горе-кодер хоть на чем, хоть на C, хоть на PL/SQL.

Не надо натягивать сову на глобус. Если это продолжать делать, то получится тот же Си, только в виде чудовища франкенштейна.

Не хотите – не используйте. Архитектура Wiren Board позволяет построить архитектуру вашего приложения чуть ли на любом языке программирования.

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

Это золото, которое лежит под ногами, достаточно только наклониться и поднять его.

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

Сочувствую, такого не наблюдаю, это что-то у вас не в порядке. Процессор в данный момент у меня работает на частоте 900 Mhz.

Но если вы поклонник минимализма, то ассемблер и какая-нибудь Atmega8 – ваше все.

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

Вот, сразу видно, что вы не программист, а какой-нибудь радиофизик. Не понимаете, что есть архитектура приложения и ее нужно создавать правильно, видимо не достаточно понимаете, что такое MQTT, что там означает флаг retained, за что отвечает параметр persistence в mosquito. Что не нужно пихать что попало (в смысле функционала) в правила.

Архитекура Wiren Board позволяет делать подсистемы вашего приложения чуть ли на любом языке программирования и с любыми возможностями.

user@host:~# apt-cache search python | grep sql | wc
80 715 5577

user@host:~# apt-cache search javascript| grep sql | wc
4 37 307

могу еще выборок сделать.

вы наверное не поняли, то, что вы называет это уже не javascript, а перелатанный монстр которому шлепают заплатки, пытаясь довести до нормального языка. Зачем это делать, не ясно, если все давно было сделано на других языках, а эти редакции только берут оттуда уже отработанные идеи.
Для сравнения, у языка С было всего две редакции, с 1989 года. И на нем можно переписать все скрипты javascipt.

а другие бомжи любители? :slight_smile:

а свои переменные мне куда пихать? они мне нужны после выключения/включения.
Как восстановить работу контроллера на точке останова после внезапной перезагрузки без retained?
Есть ли скрипт начальной инициализации? или гадать какое правило первое сработает?

ответьте мне на вопросы из темы:

а то творческая команда Wiren почему то забыла в технической документации разъяснить что происходит с кодом который помимо правил.

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

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

я системный администратор.

могу еще выборок сделать.

Я же говорю, вы не отличаете язык от платформы. Сходите по ссылке https://node-postgres.com/ и посмотрите, как на javascript делают SQL-запросы к PostgreSQL, например.

а другие бомжи любители?

Да, есть и такие. PHP, например.

а свои переменные мне куда пихать? они мне нужны после выключения/включения.

Поясните, вот стандартный пример, он вам не подходит?

// То же самое с retained-флагом
publish("/abc/def/ghi", "0", 2, true);

а то творческая команда Wiren почему то забыла в технической документации разъяснить что происходит с кодом который помимо правил.

Ну а какие можно сделать выводы из фраз “…при необходимости можно определять глобальные функции…” и “…вместо изменяемых пользовательских глобальных переменных в условиях правил рекомендуется использовать параметры виртуальных устройств…” ?

Вам то пофиг зажжется лампочка после ресета или нет, а мне бы хотелось чтобы контроллер помнил, что по последней аналитике теплоноситель надо прогреть до 50 градусов, а не начинать с 25-30 и с нуля собирать статистику.

И в чем проблема, я не понимаю?

я системный администратор

Я уже понял, что у вас разработка ПО на начальном уровне.

Дополнение:

…Во избежание труднопредсказуемого поведения в функциях, фигурирующих в when, asSoonAs и whenChanged не рекомендуется использовать side effects, т.е. менять состояние программы (изменять значение глобальных переменных, значений параметров, запускать таймеры и т.д.) Следует особо отметить, что система не даёт никаких гарантий по тому, сколько раз будут вызываться эти функции при просмотрах правил…

…global - глобальный объект ECMAScript (в браузерном JavaScript глобальный объект доступен, как window)…

…При внесении изменений в файлы с правилами происходит автоматическая перезагрузка изменённых файлов. При перезагрузке глобальное состояние ECMAScript-движка сохраняется, т.е., например, если глобальная переменная определена в файле a.js, то при изменении файла b.js её значение не изменится. Глобальные переменные и функции, определения которых удалены из правил, также не удаляются до перезагрузки движка правил (service wb-rules restart). В то же время удаление определений правил и виртуальных устройств отслеживается и обрабатываются, т.е. если, например, удалить правило из .js-файла, то это правило более срабатывать не будет…

Вы это все, вообще, читали?

вы если людей не знаете, не надо ничего говорить.
Я даже уже с поведением скриптов разобрался. Но в документации этого ничего нет. Я хочу вам напомнить, что инсталляторы оборудования далеко не все программисты, тем более на таком идиотском языке. Как результат, контроллер выглядит гораздо скуднее чем конкуренты. А люди тратят время на выяснение подробностей в экспериментах.

Там написано про функции в when…, это и так понятно, что они срабатывают при каждом вызове правил. Но там ничего не написано про остальные функции и переменные (не глобальные) в скрипте. Что с ними происходит при перезагрузке, когда переменные инициализируются и сколько живут, пока не произойдет перезагрузки или когда? Там написано про удаление и ничего про измененные функции.
Например не написано, что при сохранении скрипта в нем выполняется все, что может выполниться, то есть самовызываемые функции тоже. И опять же, это происходит только при сохранении или еще в какие то моменты?
Еще раз, в описании нет четкой логики работы и последовательности выполнения. Быть может вам она понятна, но не все такие великие умы как Вы.

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

@maxim2 я соглашусь с @unicode - если вам надо сохранять какое-то состояние, то что-то в логике вашей программы не то. Контроллер вообще, по-хорошему, должен быть stateless. Загрузился, подтянул инфу с датчиков и всего, что там к нему подключено и продолжил дальше работать.

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

и я бы хотел закрыть этот бесполезный спор. Вы видите систему со своей колокольни, совершенно не обращая внимания на простых людей.

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

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

почему то остальные производители контроллеров с этим не согласны.

Да-да… Добро пожаловать в мир ограничения количества перезаписей EEPROM/FLASH.

Кто там говорил про поколение, которое не знает, как компьютер работает под капотом?

при чем тут язык? я уже язык не обсуждаю, это бесполезно.

Так я уже и не про язык пишу. Вы что-то слышали про ограничение ресурса (endurance) для EEPROM / FLASH памяти?

И что вы на этот счет думаете?

это не совсем так.В контроллерах под управлением операционной системы переменные retained сохраняются просто в файловую систему.

А файловая система-то где расположена? На EEPROM.

Не согласны, возможно потому что их делают не программисты )

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