Очень интересно, даже не знал, что такое существует. Но во всё это ещё нужно «въехаь». А так я только за.Я имел в виду обмен "правилами". Т.е. гибкая настройка правил реакции на "нервные импульсы". Если говорить об упомянутом узле автоматики, то там алгоритм приблизительно такой -- подключенное устройство генерирует событие, которое проходит все загруженные правила. Если правило срабатывает (срабатывает "условная" часть), то выполняется заданный набор "действий", включающий доступные для данного типа устройств реакции, а так же внутренние команды вроде установки переменных или http-запросов. В описанном случае правила настраиваются на внешнем сервере и устройство при включении их загружает в себя (если не смогло, то использует последние загруженные). Всё отлично работает, но хотелось бы уйти от промежуточного узла в виде роутера.
Arduino Mega Server
Модератор: Alex
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Выложил Arduino Serial Commander 0.1. Без скетча на стороне Ардуино он бесполезен. Если только посмотреть, что Ардуино выдаёт в Serial порт. В отличие от стандартного монитора не перезапускает Ардуино.
http://majordomo.smartliving.ru/forum/v ... f=4&t=2366
Но как только я выложу AMS, сразу же понадобится потому, что именно через него заливаются все файлы на SD карту без остановки сервера.
http://majordomo.smartliving.ru/forum/v ... f=4&t=2366
Но как только я выложу AMS, сразу же понадобится потому, что именно через него заливаются все файлы на SD карту без остановки сервера.
- Вложения
-
- Arduino Serial Commander
- asc.png (27.99 КБ) 27594 просмотра
- За это сообщение автора Alex поблагодарил:
- arturmon82 (Ср июн 24, 2015 12:50 am)
- Рейтинг: 1.16%
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: Arduino Mega Server
Мне кажется под эти требования подойдет NetAlarm http://www.avislab.com/blog/enc28j60/, в нем можно прописать уравнения для управления по определенному алгоритму, и устройство работает автономно, можно даже в сеть не включать. Сеть нужна только если ус-во будет взаимодействовать с другими ус-вами или для перестройки алгоритмов.sergejey писал(а):Я имел в виду обмен "правилами". Т.е. гибкая настройка правил реакции на "нервные импульсы". Если говорить об упомянутом узле автоматики, то там алгоритм приблизительно такой -- подключенное устройство генерирует событие, которое проходит все загруженные правила. Если правило срабатывает (срабатывает "условная" часть), то выполняется заданный набор "действий", включающий доступные для данного типа устройств реакции, а так же внутренние команды вроде установки переменных или http-запросов. В описанном случае правила настраиваются на внешнем сервере и устройство при включении их загружает в себя (если не смогло, то использует последние загруженные). Всё отлично работает, но хотелось бы уйти от промежуточного узла в виде роутера.Alex писал(а):Насколько я понимаю, Мега это универсальное устройство, которое может принимать любые команды откуда угодно и передавать команды в любом формате любым устройствам. Тут проблем нет. Можно просто написать модуль. Кому нужен - компилирует, кому не нужен не компилирует.
Для себя — в планах написать несколько протоколов обмена (командами, информацией, кодами, визуальными представлениями, нервными импульсами) между устройствами.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Arduino Mega Server
Да, это устройство довольно гибкое, судя по статье. Собственно, возможность установить правила для автономной работы, как по мне, так вещь обязательная для любого более или менее универсального контроллера. Тот же MegaD это может, контроллеры Uniel это могут, устройства NetPing тоже могут. В разных устройствах, конечно, разная степень гибкости настройки условий и реакции. Когда я делал свой узел автоматики, то хотел проверить несколько концепций, кроме собственно системы правил. Во-первых, возможность настройки правил не на устройстве, а на внешней веб-системе (сохраняя возможность автномной работы). Во-вторых, сервис CloudSync для управления контроллером через веб, но без наличия прямого сетевого доступа к устройству (без проброса портов, настройки firewall и т.п.). Ну и в третьих, хотелось бы один интерфейс настройки правил для различных типов контроллеров -- например, сейчас можно создавать одни и те же правила, как для узла на базе OpenWRT/CyberWRT, так и для узла на базе WirenBoard. Точно так же можно добавить и Arduino Mega Server, просто ему будут отдаваться правила в том формате, который он может сохранить и интерпретировать в дальнейшем, работая в оффлайн. Про CloudSync надо ещё подумать -- врятли получится так же организовать, но может имеет смысл посмотреть в сторону MQTT в качестве транспорта обмена.Urbas81 писал(а):Мне кажется под эти требования подойдет NetAlarm http://www.avislab.com/blog/enc28j60/, в нем можно прописать уравнения для управления по определенному алгоритму, и устройство работает автономно, можно даже в сеть не включать. Сеть нужна только если ус-во будет взаимодействовать с другими ус-вами или для перестройки алгоритмов.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 155
- Зарегистрирован: Сб июл 07, 2012 11:42 pm
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Re: Arduino Mega Server
вот что имел ввиду под скриптовым языком...что то подобное https://github.com/BleuLlama/TinyBasicPlusarturmon писал(а):Скриптовый язык нужно добавить...тогда можно устраивать полную автоматизациюsergejey писал(а):Alex, а не было мысли добавить сюда что-то вроде обработчика логических правил? Что-то вроде узла автоматики, но без роутера. Дело в том, что есть интерфейсы построения правил (если случилось то, то делать это) и они транслируются в bash-команды для OpenWRT-роутера, но можно их транслировать во что-то, что мог бы понять обработчик на самой меге. В принципе, мы приходим к чему-то вроде MegaD, только можно сделать поддержку облачной связи без проброса портов и настроек роутера.
теоретически с помощью него можно вообще любую логику расписать
и еще помоему тему нужно в железо перенести, а то непросто найти ее из корня если искать.
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Arduino Mega Server v.0.1 alpha
Альфа версия. Концепт и демонстрация идеи. Только для хардкорных разработчиков, которые готовы разбираться в километрах кода. Требуется знание HTML, CSS, JavaScript, Processing, Arduino, 3D, терпение и большое желание понять как всё это работает. Никаких гарантий!
Использование
На использование данного ПО не накладывается никаких ограничений. Вы вольны делать с ним всё, что вам заблагорассудится, в том числе создавать проекты на гитхаб и развивать любым доступным вам способом. Права на используемые библиотеки принадлежат их владельцам. За основу серверной части была взята информация с сайта startingelectronics.com.
Запуск
Для разработки использовался Firefox 35 с включённой функцией HTML Imports. ! Гарантированно всё работает в этой версии браузера ! В других версиях могут быть проблемы. HTML Imports поддерживается ff 33+, chrome 36+, opera 26+, android 37+. Технология не очень демократичная и желательно заменить её на что-нибудь более простое, чтобы всё работало и в старых системах.
Инструкция по активации функции HTML Imports:
1 Firefox has no plans to support HTML imports though for now it can be enabled through the "dom.webcomponents.enabled" preference in about:config
2 Enabled through the "Enable HTML Imports" flag in chrome://flags
3 Enabled through the "Experimental Web Platform features" flag in chrome://flags
4 Enabled through the "Enable HTML Imports" flag in opera://flags
5 Enabled through the "Experimental Web Platform features" flag in opera://flags
MajorDoMo
В данной версии используется тандемный режим работы. Часть функций работает в связке с MajorDoMo. Например, время AMS получает с сервера MajorDoMo (далее М), также М используется в качестве (быстрого) хранилища части файлов AMS (скрипты, картинки и т.д.). AMS можно полностью отвязать от М, но для этого понадобится оптимизация, иначе всё будет работать слишком медленно. Папка AMS на сервере М:
\htdocs\lan\mega
и подпапки : css, img, js, process
Адрес М 192.168.2.8 жёстко прописан в скриптах и чтобы всё заработало ваш М должен иметь этот IP (или изменить все вхождения этого IP в файлах проекта).
Arduino Serial Commander
http://majordomo.smartliving.ru/forum/v ... f=4&t=2366
ASC это важная часть проекта. Через него осуществляется заливка файлов на работающий AMS, без остановки оного (пока поддерживаются только текстовые файлы). Все файлы проекта, которые вы хотите залить на AMS должны находиться в папке Arduino Serial Commander. Формат имён файлов 8.3 (ограничение библиотеки работы с SD).
Быстродействие
Бутылочным горлышком в данной системе является быстродействие SD карты, поэтому нужно использовать как можно более быструю SD. Также на быстродействие влияет количество скриптов и размер картинок. Поэтому для увеличения быстродействия нужно уменьшать количество скриптов и размер картинок (или отказываться от них, если возможно). В данный момент используется хранение больших файлов на сервере М, что нивелирует проблему быстродействия.
Оптимизация не проводилась! Если что-то работает медленно — это повод разобраться в коде и улучшить его.
Сторонние библиотеки
Для распознавания компьютеров в сети используется модифицированная библиотека ICMPPing, которую нужно поместить в стандартную папку
\arduino\libraries\
Также используются библиотеки DallasTemperature и OneWire.
Версия сред разработки
Проект создан на Arduino 1.0.1 и Processing 1.5.1 и, соответственно, гарантированно компилируется в этих версиях сред. В новых — как повезёт.
Железо
В проекте используется Arduino Mega и Ethernet Shield W5100. На аналоговые входы подключён модуль контроля напряжения и потребляемой мощности на 13 линий, на цифровые — PIR датчики, контакты и управляющие ключи. Это только тестовая конфигурация, чтобы было с чего брать данные для вывода на веб-страницы. В вашем случае конфигурация будет другой и файлы проекта это только шаблон для дальнейшей работы. Если что-то не работает — изучайте код и модифицируйте его под своё железо.
Ещё раз — никаких гарантий! Только для тех, кто готов разбираться в коде и всё переделывать под себя. Удачи!
-------------------
Файл дистрибутива 0.1 alpha версии вместе со счётчиком загрузок (222) перенесён на официальный сайт проекта Arduino Mega Server
http://hi-lab.ru/arduino-mega-server
Альфа версия. Концепт и демонстрация идеи. Только для хардкорных разработчиков, которые готовы разбираться в километрах кода. Требуется знание HTML, CSS, JavaScript, Processing, Arduino, 3D, терпение и большое желание понять как всё это работает. Никаких гарантий!
Использование
На использование данного ПО не накладывается никаких ограничений. Вы вольны делать с ним всё, что вам заблагорассудится, в том числе создавать проекты на гитхаб и развивать любым доступным вам способом. Права на используемые библиотеки принадлежат их владельцам. За основу серверной части была взята информация с сайта startingelectronics.com.
Запуск
Для разработки использовался Firefox 35 с включённой функцией HTML Imports. ! Гарантированно всё работает в этой версии браузера ! В других версиях могут быть проблемы. HTML Imports поддерживается ff 33+, chrome 36+, opera 26+, android 37+. Технология не очень демократичная и желательно заменить её на что-нибудь более простое, чтобы всё работало и в старых системах.
Инструкция по активации функции HTML Imports:
1 Firefox has no plans to support HTML imports though for now it can be enabled through the "dom.webcomponents.enabled" preference in about:config
2 Enabled through the "Enable HTML Imports" flag in chrome://flags
3 Enabled through the "Experimental Web Platform features" flag in chrome://flags
4 Enabled through the "Enable HTML Imports" flag in opera://flags
5 Enabled through the "Experimental Web Platform features" flag in opera://flags
MajorDoMo
В данной версии используется тандемный режим работы. Часть функций работает в связке с MajorDoMo. Например, время AMS получает с сервера MajorDoMo (далее М), также М используется в качестве (быстрого) хранилища части файлов AMS (скрипты, картинки и т.д.). AMS можно полностью отвязать от М, но для этого понадобится оптимизация, иначе всё будет работать слишком медленно. Папка AMS на сервере М:
\htdocs\lan\mega
и подпапки : css, img, js, process
Адрес М 192.168.2.8 жёстко прописан в скриптах и чтобы всё заработало ваш М должен иметь этот IP (или изменить все вхождения этого IP в файлах проекта).
Arduino Serial Commander
http://majordomo.smartliving.ru/forum/v ... f=4&t=2366
ASC это важная часть проекта. Через него осуществляется заливка файлов на работающий AMS, без остановки оного (пока поддерживаются только текстовые файлы). Все файлы проекта, которые вы хотите залить на AMS должны находиться в папке Arduino Serial Commander. Формат имён файлов 8.3 (ограничение библиотеки работы с SD).
Быстродействие
Бутылочным горлышком в данной системе является быстродействие SD карты, поэтому нужно использовать как можно более быструю SD. Также на быстродействие влияет количество скриптов и размер картинок. Поэтому для увеличения быстродействия нужно уменьшать количество скриптов и размер картинок (или отказываться от них, если возможно). В данный момент используется хранение больших файлов на сервере М, что нивелирует проблему быстродействия.
Оптимизация не проводилась! Если что-то работает медленно — это повод разобраться в коде и улучшить его.
Сторонние библиотеки
Для распознавания компьютеров в сети используется модифицированная библиотека ICMPPing, которую нужно поместить в стандартную папку
\arduino\libraries\
Также используются библиотеки DallasTemperature и OneWire.
Версия сред разработки
Проект создан на Arduino 1.0.1 и Processing 1.5.1 и, соответственно, гарантированно компилируется в этих версиях сред. В новых — как повезёт.
Железо
В проекте используется Arduino Mega и Ethernet Shield W5100. На аналоговые входы подключён модуль контроля напряжения и потребляемой мощности на 13 линий, на цифровые — PIR датчики, контакты и управляющие ключи. Это только тестовая конфигурация, чтобы было с чего брать данные для вывода на веб-страницы. В вашем случае конфигурация будет другой и файлы проекта это только шаблон для дальнейшей работы. Если что-то не работает — изучайте код и модифицируйте его под своё железо.
Ещё раз — никаких гарантий! Только для тех, кто готов разбираться в коде и всё переделывать под себя. Удачи!
-------------------
Файл дистрибутива 0.1 alpha версии вместе со счётчиком загрузок (222) перенесён на официальный сайт проекта Arduino Mega Server
http://hi-lab.ru/arduino-mega-server
- Вложения
-
- image
- v01a.png (25.97 КБ) 27443 просмотра
Последний раз редактировалось Alex Вт янв 19, 2016 5:28 pm, всего редактировалось 1 раз.
- За это сообщение автора Alex поблагодарили (всего 2):
- arturmon82 (Вс июн 28, 2015 8:47 pm) • tammat (Ср июл 15, 2015 4:45 pm)
- Рейтинг: 2.33%
-
- Сообщения: 130
- Зарегистрирован: Пн окт 28, 2013 5:06 pm
- Откуда: Молдова
- Благодарил (а): 11 раз
- Поблагодарили: 10 раз
Re: Arduino Mega Server
Вопрос к Автору.
Можно про вот это подробней:
Можно про вот это подробней:
На аналоговые входы подключён модуль контроля напряжения и потребляемой мощности на 13 линий
Server: Raspberry Pi 3 B+
OS: Rasbian
OS: Rasbian
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
Можно. Это POWER MONITOR
http://smartliving.ru/forum/viewtopic.php?f=8&t=73
на стероидах, в смысле, что токовые каналы размножены до 13-и штук. AMS содержит поддержку этого девайса в модуле электро. Там не всё так просто и есть свои проблемы (ждём электро-гения для их решения), но в целом всё работает.
Главной проблемой Меги является мизерный объём RAM, а обслуживание 13 каналов требует много памяти, поэтому в текущей конфигурации оставлены только два канала — напряжение электросети и общий потребляемый ток (мощность) и отключена посылка электро-данных на MajorDoMo. Блок
if (STT == START_PIN && STP == END_PIN) {...
Включить обслуживание любого количества каналов можно просто изменив переменную-константу MAX_UI_SENSORS. Но нужно следить за памятью — возможны глюки — тогда нужно отключить какие-либо другие модули.
Модули отключаются простым комментированием в главном файле
//#define ELECTRO_FEATURE
http://smartliving.ru/forum/viewtopic.php?f=8&t=73
на стероидах, в смысле, что токовые каналы размножены до 13-и штук. AMS содержит поддержку этого девайса в модуле электро. Там не всё так просто и есть свои проблемы (ждём электро-гения для их решения), но в целом всё работает.
Главной проблемой Меги является мизерный объём RAM, а обслуживание 13 каналов требует много памяти, поэтому в текущей конфигурации оставлены только два канала — напряжение электросети и общий потребляемый ток (мощность) и отключена посылка электро-данных на MajorDoMo. Блок
if (STT == START_PIN && STP == END_PIN) {...
Включить обслуживание любого количества каналов можно просто изменив переменную-константу MAX_UI_SENSORS. Но нужно следить за памятью — возможны глюки — тогда нужно отключить какие-либо другие модули.
Модули отключаются простым комментированием в главном файле
//#define ELECTRO_FEATURE
-
- Сообщения: 155
- Зарегистрирован: Сб июл 07, 2012 11:42 pm
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Re: Arduino Mega Server
вопрос...сколько свободной памяти получается после компиляции?
не думали избавляться от Serial? вместо хранения ОЗУ использовать флеш, printf например.
немного переделал ваш pirs, посмотрите может так лучше чем плодить функции. но нужно я так понимаю немного переделать функцию отправки. P.S. не судите скрого, но это так мысли на работе, возможны ошибки надо проверять, но так как меги нет...то и проверять пока неначем
не думали избавляться от Serial? вместо хранения ОЗУ использовать флеш, printf например.
немного переделал ваш pirs, посмотрите может так лучше чем плодить функции. но нужно я так понимаю немного переделать функцию отправки. P.S. не судите скрого, но это так мысли на работе, возможны ошибки надо проверять, но так как меги нет...то и проверять пока неначем
СпойлерПоказать
Код: Выделить всё
#define pirNumber 6
int pirPin[pirNumber]={22,23,24,25,26,30};
int pirState[pirNumber];
int pir[pirNumber];
void pirsInitX() {
for (int x = 0; x < pirNumber; x++)
{
pirState[x] = LOW;
pir[x] = 0;
pinMode (pirPin[x], INPUT);
}
modulPirs = 1;
}
// вызов функции pirsWorksX (x);
void pirsWorksX(int Pin) {
pir[Pin] = digitalRead(pirPin[Pin]);
if (pir[Pin] == HIGH) {
if (pirState[Pin] == LOW) {
Serial.println("Detect motion STD");
pirState[Pin] = HIGH;
/*
sendRequest("pirSTD", 1);
if (MODE == LED_PIR_01) {
green(led1, bright);
}
*/
}
} else {
if (pirState[Pin] == HIGH){
Serial.println("End motion STD");
pirState[Pin] = LOW;
/*
sendRequest("pirSTD", 0);
*/
//black(led1);
}
}
}
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: Arduino Mega Server
> вопрос...сколько свободной памяти получается после компиляции?
В тестовом примере кажется 2464. Но это гибкая система и свободная память меняется в зависимости от подключённых модулей. Тут дело такое: в тестовом примере напиханы все модули, а в жизни, если это электро-контроллер, например, то половину модулей можно отключить.
> не думали избавляться от Serial?
В сериал вся фишка. Через него льются все обновления на сервер. Кстати круто было бы лить прямо через сеть.
> вместо хранения ОЗУ использовать флеш, printf например.
Вот это дело (с). Пробовал использовать PROGMEM, но с ним почему-то не работает, хотя в других скетчах нет проблем. Строки можно засунуть EEPROM.
> немного переделал ваш pirs
Спасибо, как буду разбираться с этим модулем обязательно посмотрю ваш пример. Я не стал засовывать ПИР в цикл потому, что для каждого ПИРа нужна индивидуальная реакция и код получается ещё больше.
В тестовом примере кажется 2464. Но это гибкая система и свободная память меняется в зависимости от подключённых модулей. Тут дело такое: в тестовом примере напиханы все модули, а в жизни, если это электро-контроллер, например, то половину модулей можно отключить.
> не думали избавляться от Serial?
В сериал вся фишка. Через него льются все обновления на сервер. Кстати круто было бы лить прямо через сеть.
> вместо хранения ОЗУ использовать флеш, printf например.
Вот это дело (с). Пробовал использовать PROGMEM, но с ним почему-то не работает, хотя в других скетчах нет проблем. Строки можно засунуть EEPROM.
> немного переделал ваш pirs
Спасибо, как буду разбираться с этим модулем обязательно посмотрю ваш пример. Я не стал засовывать ПИР в цикл потому, что для каждого ПИРа нужна индивидуальная реакция и код получается ещё больше.