Arduino Mega Server

Модератор: Alex

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт июн 23, 2015 8:56 pm

Я имел в виду обмен "правилами". Т.е. гибкая настройка правил реакции на "нервные импульсы". Если говорить об упомянутом узле автоматики, то там алгоритм приблизительно такой -- подключенное устройство генерирует событие, которое проходит все загруженные правила. Если правило срабатывает (срабатывает "условная" часть), то выполняется заданный набор "действий", включающий доступные для данного типа устройств реакции, а так же внутренние команды вроде установки переменных или http-запросов. В описанном случае правила настраиваются на внешнем сервере и устройство при включении их загружает в себя (если не смогло, то использует последние загруженные). Всё отлично работает, но хотелось бы уйти от промежуточного узла в виде роутера.
Очень интересно, даже не знал, что такое существует. Но во всё это ещё нужно «въехаь». А так я только за.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вт июн 23, 2015 9:01 pm

Выложил Arduino Serial Commander 0.1. Без скетча на стороне Ардуино он бесполезен. Если только посмотреть, что Ардуино выдаёт в Serial порт. В отличие от стандартного монитора не перезапускает Ардуино.

http://majordomo.smartliving.ru/forum/v ... f=4&t=2366

Но как только я выложу AMS, сразу же понадобится потому, что именно через него заливаются все файлы на SD карту без остановки сервера.
Вложения
asc.png
Arduino Serial Commander
asc.png (27.99 КБ) 27593 просмотра
За это сообщение автора Alex поблагодарил:
arturmon82 (Ср июн 24, 2015 12:50 am)
Рейтинг: 1.16%
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Arduino Mega Server

Сообщение Urbas81 » Ср июн 24, 2015 11:01 am

sergejey писал(а):
Alex писал(а):Насколько я понимаю, Мега это универсальное устройство, которое может принимать любые команды откуда угодно и передавать команды в любом формате любым устройствам. Тут проблем нет. Можно просто написать модуль. Кому нужен - компилирует, кому не нужен не компилирует.

Для себя — в планах написать несколько протоколов обмена (командами, информацией, кодами, визуальными представлениями, нервными импульсами) между устройствами.
Я имел в виду обмен "правилами". Т.е. гибкая настройка правил реакции на "нервные импульсы". Если говорить об упомянутом узле автоматики, то там алгоритм приблизительно такой -- подключенное устройство генерирует событие, которое проходит все загруженные правила. Если правило срабатывает (срабатывает "условная" часть), то выполняется заданный набор "действий", включающий доступные для данного типа устройств реакции, а так же внутренние команды вроде установки переменных или http-запросов. В описанном случае правила настраиваются на внешнем сервере и устройство при включении их загружает в себя (если не смогло, то использует последние загруженные). Всё отлично работает, но хотелось бы уйти от промежуточного узла в виде роутера.
Мне кажется под эти требования подойдет NetAlarm http://www.avislab.com/blog/enc28j60/, в нем можно прописать уравнения для управления по определенному алгоритму, и устройство работает автономно, можно даже в сеть не включать. Сеть нужна только если ус-во будет взаимодействовать с другими ус-вами или для перестройки алгоритмов.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Arduino Mega Server

Сообщение sergejey » Ср июн 24, 2015 11:47 am

Urbas81 писал(а):Мне кажется под эти требования подойдет NetAlarm http://www.avislab.com/blog/enc28j60/, в нем можно прописать уравнения для управления по определенному алгоритму, и устройство работает автономно, можно даже в сеть не включать. Сеть нужна только если ус-во будет взаимодействовать с другими ус-вами или для перестройки алгоритмов.
Да, это устройство довольно гибкое, судя по статье. Собственно, возможность установить правила для автономной работы, как по мне, так вещь обязательная для любого более или менее универсального контроллера. Тот же MegaD это может, контроллеры Uniel это могут, устройства NetPing тоже могут. В разных устройствах, конечно, разная степень гибкости настройки условий и реакции. Когда я делал свой узел автоматики, то хотел проверить несколько концепций, кроме собственно системы правил. Во-первых, возможность настройки правил не на устройстве, а на внешней веб-системе (сохраняя возможность автномной работы). Во-вторых, сервис CloudSync для управления контроллером через веб, но без наличия прямого сетевого доступа к устройству (без проброса портов, настройки firewall и т.п.). Ну и в третьих, хотелось бы один интерфейс настройки правил для различных типов контроллеров -- например, сейчас можно создавать одни и те же правила, как для узла на базе OpenWRT/CyberWRT, так и для узла на базе WirenBoard. Точно так же можно добавить и Arduino Mega Server, просто ему будут отдаваться правила в том формате, который он может сохранить и интерпретировать в дальнейшем, работая в оффлайн. Про CloudSync надо ещё подумать -- врятли получится так же организовать, но может имеет смысл посмотреть в сторону MQTT в качестве транспорта обмена.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение arturmon » Ср июн 24, 2015 12:16 pm

arturmon писал(а):
sergejey писал(а):Alex, а не было мысли добавить сюда что-то вроде обработчика логических правил? Что-то вроде узла автоматики, но без роутера. Дело в том, что есть интерфейсы построения правил (если случилось то, то делать это) и они транслируются в bash-команды для OpenWRT-роутера, но можно их транслировать во что-то, что мог бы понять обработчик на самой меге. В принципе, мы приходим к чему-то вроде MegaD, только можно сделать поддержку облачной связи без проброса портов и настроек роутера.
Скриптовый язык нужно добавить...тогда можно устраивать полную автоматизацию :lol: :roll:
вот что имел ввиду под скриптовым языком...что то подобное https://github.com/BleuLlama/TinyBasicPlus
теоретически с помощью него можно вообще любую логику расписать :D
и еще помоему тему нужно в железо перенести, а то непросто найти ее из корня если искать.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Вс июн 28, 2015 8:43 pm

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
Вложения
v01a.png
image
v01a.png (25.97 КБ) 27442 просмотра
Последний раз редактировалось Alex Вт янв 19, 2016 5:28 pm, всего редактировалось 1 раз.
За это сообщение автора Alex поблагодарили (всего 2):
arturmon82 (Вс июн 28, 2015 8:47 pm) • tammat (Ср июл 15, 2015 4:45 pm)
Рейтинг: 2.33%
annakin
Сообщения: 130
Зарегистрирован: Пн окт 28, 2013 5:06 pm
Откуда: Молдова
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Arduino Mega Server

Сообщение annakin » Пн июн 29, 2015 12:13 am

Вопрос к Автору.
Можно про вот это подробней:
На аналоговые входы подключён модуль контроля напряжения и потребляемой мощности на 13 линий
Server: Raspberry Pi 3 B+
OS: Rasbian
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Пн июн 29, 2015 6:37 am

Можно. Это 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
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: Arduino Mega Server

Сообщение arturmon » Пн июн 29, 2015 1:22 pm

вопрос...сколько свободной памяти получается после компиляции?
не думали избавляться от Serial? вместо хранения ОЗУ использовать флеш, printf например.

немного переделал ваш pirs, посмотрите может так лучше чем плодить функции. но нужно я так понимаю немного переделать функцию отправки. P.S. не судите скрого, но это так мысли на работе, возможны ошибки надо проверять, но так как меги нет...то и проверять пока неначем :lol:
СпойлерПоказать

Код: Выделить всё

#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);
    }
  }
}

 
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Arduino Mega Server

Сообщение Alex » Пн июн 29, 2015 3:29 pm

> вопрос...сколько свободной памяти получается после компиляции?

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

> не думали избавляться от Serial?

В сериал вся фишка. Через него льются все обновления на сервер. Кстати круто было бы лить прямо через сеть.

> вместо хранения ОЗУ использовать флеш, printf например.

Вот это дело (с). Пробовал использовать PROGMEM, но с ним почему-то не работает, хотя в других скетчах нет проблем. Строки можно засунуть EEPROM.

> немного переделал ваш pirs

Спасибо, как буду разбираться с этим модулем обязательно посмотрю ваш пример. Я не стал засовывать ПИР в цикл потому, что для каждого ПИРа нужна индивидуальная реакция и код получается ещё больше.
Ответить