• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Простые скрипты - процессор

Господа - вопрос следующего плана.

Никто не видел реализации исполнения простых скриптов на ардуино IDE.
Принцип как в LUA, только проще.

Например к ардуине(esp8266) подключено реле и датчик температуры.

Пишем скрипт типа
IF (SENSOR>20,RELAY=1);
IF (SENSOR<20,RELAY=0);

Помещаем его в SPIFFS, а скетч пробегается по файлам и разбирает и исполняет скрипты.

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

sally555

New member
не совсем понятно как это должно работать:). Что за файлы, на СД карте? И как скетч определит какой именно скрипт ему исполнять?
 
Как должно работать ? Скетч разбирает файл со скриптом, и выполняет то что по логике скрипта должно быть.
Там с десяток команд то будет от силы.
файлы в SPIFFS, исполнять постоянно и последовательно, по кругу.
 

sally555

New member
все равно не понять, как это физически должно работать:). Скрипт записанный в файл должен кем то интерпретироваться, кем в данном случае? Скетчем? Или я что то не догоняю, SPIFFS просто еще не доводилось использовать.
 
Именно скетчем и интерпретироваться должен. SPIFFS это файловая система на флэшке, которая на борту ESP8266. Примеров вагон. Но в принципе пофигу. Пусть хоть из Serial строки идут, лишь бы их разобрать ...
 

sally555

New member
Но мне думается любой интерпретатор текстовых команд это медленная штука, вспоминая старый добрый СинклерZX:), выигрыш в удобстве -проигрыш в скорости. Может просто присвоить каждой команде цифровой код, тем более что вы говорите команд не так много? По моему так будет быстрее, или я не прав?
Параметры команд, я так понимаю, вы планируете изменять по WIFI с компьютера или смартфона, или через USB адаптер, вот с этой стороны можно сообразить интерпретатор. Вбиваете в браузере клиента(либо в программе работающей с USB адаптером) определенные текстовые команды с нужными параметрами, потом жмете типа кнопку "Отправить" и ваши команды уже в цифровом коде отправляются в ваше устройство. Ну а там направляйте их хоть на SPIFFS, хоть на СД-карту. Вот как то так.
 

sasasa

Member
А для чего хранить десяток команд в флешке, если это можно хранить в ЕСПке? Что за команды там, и для чего?
 
Ваше мнение понял, но это не то. Суть не в том быстро это или медленно. Суть в простой настройке логики устройства.
Можно все написать в скетче, откомпилить и прошить - все будет работать.
Надо простое, легко изменяемое решение БЕЗ подключения к USB. Зашел по сети, положил скриптик, и готово. Хоть с телефона поправил ...

К примеру - есть датчики влажности, температуры, co2. И 2 реле. На основании данных с этих датчиков хочу задать алгоритм работы вытяжки-приточки. Иногда надо в алгоритме одну цифру поменять, или больше на меньше исправить. И как ? Снимать железку, выковыривать плату и шить ? Ради пары байт ? Или лишнего условия ? А если она в гараже ? Или на даче ? Неудобно.

Вот что я нарыл: http://n.mtng.org/ele/arduino/iarduino.html
Это интерпретатор C. Работает, но проект огромный, и перелопачивать тяжело.
https://forum.arduino.cc/index.php?topic=193216.0
Это бейсик. Но посмотрите его реализацию. Там БИОС в массиве ... я "удивлен".

Так вот мне надо то же самое, но гораздо легче.

Пусть будет типа
IF,условие,команда
COM,команда // запуск процедуры скетча
SET,переменная, значение //установить значение переменной
SEN,переменная, название датчика //переменная=показание датчика
REL,номер,состояние //реле №nn, установить состояние.

Ну и для начала хватит ...
 

sasasa

Member
изменить одну две цифры - для этого и Serial и WiFi. При чём тут флешка??
Посылаете данные и меняете значения переменных или команд.
 
Последнее редактирование:
изменить одну две цифры - для этого и Serial и WiFi. При чём тут флешка??
Вам поспорить охота ? 2 слова выдернули ? Главное тут - изменить логику. А логика должна быть как-то описана. Как вы через serial поменяете условия
if (Temp>40) DigitalWrite(1,1); на if (Temp<20) DigitalWrite(1,0);
или вы предлагаете мне прописать ВСЕ возможные комбинации и пронумировать их ?
И вызывать типа - комбинация № 200 ? Так их миллионы.

Я вообще слабо понимаю зачем убеждать человека, которому нужен интерпретатор - в том что он ему не нужен ? Даже не понимая до конца моих целей ...
 

sasasa

Member
Запросто - изменить переменные само собой понятно - нет проблем, а поменять условия тоже так же делаете. Больше/меньше это у вас будет как переменная, например 0 >, 1 < , 2 >=, 3<=, 4!= итд. А все возможные комбинации не надо писать, это сама программа вычислит.
Если не подходит, то прошивайте ЕСКу другой ЕСПкой.
Цели вы описали, я не вижу там ничего сверхъестественного, что нельзя сделать через Сериал или WiFi
Никак не понимаю Почему делать сложно то, что можно сделать просто?
 
Последнее редактирование:
Запросто ... нет проблем, ... это сама программа вычислит.
Если не подходит, то прошивайте ЕСКу другой ЕСПкой.
Цели вы описали, я не вижу там ничего сверхъестественного, что нельзя сделать через Сериал или WiFi
Никак не понимаю Почему делать сложно то, что можно сделать просто?
А можно простой пример. А то если все запросто и нет проблем ... и особо сама программа вычислит.

сократим - датчиков 2. temp, humidity И исходя из их показаний реле на GPIO3 включаем или выключаем.

Напишите мне универсальное условие.
 

sally555

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

pvvx

Активный участник сообщества
А можно простой пример. А то если все запросто и нет проблем ... и особо сама программа вычислит.

сократим - датчиков 2. temp, humidity И исходя из их показаний реле на GPIO3 включаем или выключаем.

Напишите мне универсальное условие.
У вас 2 параметра и одно исполнительное устройство вкл.выкл. Для этого скрипта не требуется. Нужно всего 4 значения - start и stop для гистерезиса к каждому параметру. Можно ввести к ним модификатор - инверсия. Выходит не скрипт, а 6 чисел. :)
 
А вот теперь дурацкие дополнительные условия - а диапазонов несколько. Плюс граничные состояния. Сколько уже переменных выходит ?

Да и датчиков у меня в реальности не 2 штуки. А 12.
 

pvvx

Активный участник сообщества
А вот теперь дурацкие дополнительные условия - а диапазонов несколько. Плюс граничные состояния. Сколько уже переменных выходит ?

Да и датчиков у меня в реальности не 2 штуки. А 12.
Ну вот для каждого датчика необходимы старт и стоп для гистерезиса или диапазон - те-же два значения. Т.е. это обязательно, иначе датчик не влияет на работу.
Значит выходит таблица, а не скрипт. Уж сколько пром.оборудования не делал, скрипты не катят. Сложности с ними у клиентов. Таблицей всё решается запросто.

Сам язык в ардуине уже почти скрипт и вешать на него ещё скрипт как-то прикольно. :)
 

sally555

New member
Коллега видимо хочет что то более универсальное, кардинально изменять логику алгоритма, а может и добавлять что то по ходу. Это конечно сложнее. А управлять вытяжкой не такой уж умудренный процесс и просчитать предполагаемый алгоритм не так уж и сложно, ни как не 200 вариантов:). В более сложных системах согласен может это и актуально, когда не знаешь точно чего ожидать. Пусть коллега поиграется с бейсиком, если времени не жалко:), а может действительно это для него выход. Только по опыту знаю, вообще, большая универсальность это не всегда есть хорошо.
Ну и обычно такие бейсик системы или же другие, не важно, имеют множество подводных камней и баги конечно, и вопросов может появиться еще больше:).
 
Сверху Снизу