• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 вариантов:). В более сложных системах согласен может это и актуально, когда не знаешь точно чего ожидать. Пусть коллега поиграется с бейсиком, если времени не жалко:), а может действительно это для него выход. Только по опыту знаю, вообще, большая универсальность это не всегда есть хорошо.
Ну и обычно такие бейсик системы или же другие, не важно, имеют множество подводных камней и баги конечно, и вопросов может появиться еще больше:).
 
Сверху Снизу