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

Souliss - open source облачная платформа и мобильное приложение

Anydy

New member
Приветствую!
Заинтересовался этим приложением Souliss, кое как получилось залить скетч через ардуинку на ESP тот который в примере....но вот как теперь подключиться к ESP с планшета с установленной Souliss не пойму...
Весь интернет перерыл...по этому вопросу нет ответа....вернее инструкций на русском, я в английском не очень и в программировании новичок
неужели ни кто не связывал этот модуль с этой программой? или есть более лучшие решения? без облаков, только ESP и андроид с защитой...чтобы например открыть ворота в гараже)))
Хотелось бы просто для начала понять как мигать светодиодом с программы souliss на модуле ESP в прямом подключении?
PS. какой то пример souliss для ардуины с сетевым шилдом W5100 заработал....светодиод управлялся! а вот с ESP что то не получается...
У меня дома сеть на статических ИП, но я так понимаю в скетче по ссылке выше ESP работает как DHCP сервер? Пробовал и статику и динамику...программа не соединяется....
Помогите куда копать! или ссылки плиз!
 

smerlin

Member
У меня Souliss заработал на ESP-07 (диод с релюхой висели на GPIO 14)

Вот как делаем:
Скачиваем Souliss и импортируем в ArduinoIDE (Эскиз->Include Library->Add .ZIPLibrary и выбираем скачанный только что файл).
Потом заливаем код в ESP (адрес ESP поставил 192. 168. 1. 34 - типичный адрес для устройства в моей локалке, у вас свой может быть)

// Configure the framework
[HASHTAG]#include[/HASHTAG] "bconf/MCU_ESP8266.h"
[HASHTAG]#include[/HASHTAG] "conf/Gateway.h"
[HASHTAG]#include[/HASHTAG] "conf/IPBroadcast.h"

[HASHTAG]#define[/HASHTAG] WIFICONF_INSKETCH
// ******Настройте ваши имя локальной сети Wi-Fi и пароль*****
[HASHTAG]#define[/HASHTAG] WiFi_SSID "ваш SSID Wi-Fi"
[HASHTAG]#define[/HASHTAG] WiFi_Password "ваш пароль Wi-Fi"

// *****Не забываем скачать последнюю версию библиотеки Souliss и импортировать в Arduino IDE
// Include framework code and libraries
[HASHTAG]#include[/HASHTAG] "WiFiUdp.h"
[HASHTAG]#include[/HASHTAG] "Souliss.h"

// *****Тут как я понял прописывается тип логики светодиода (нагрузки), хотя может и ошибаюсь, я настройку не трогал, так работает
[HASHTAG]#define[/HASHTAG] MYLEDLOGIC 0

// *****Прописываем сетевые настройки в соответствии с настройками вашего роутера
uint8_t ip_address[4] = {192, 168, 1, 34};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4] = {192, 168, 1, 1};
[HASHTAG]#define[/HASHTAG] Gateway_address 34
[HASHTAG]#define[/HASHTAG] myvNet_address ip_address[3]
[HASHTAG]#define[/HASHTAG] myvNet_subnet 0xFF00
[HASHTAG]#define[/HASHTAG] myvNet_supern Gateway_address

// **** А вот тут номер пина УПРАВЛЯЕМОГО диода или релюхи ****
[HASHTAG]#define[/HASHTAG] OUTPUTPIN 14
//**** А вот тут номер пина КНОПКИ ****
[HASHTAG]#define[/HASHTAG] INPUTPIN 12

void setup()
{
Initialize();

// Устанавливаем параметры сети
Souliss_SetIPAddress(ip_address, subnet_mask, ip_gateway);
SetAsGateway(myvNet_address);

// Define a simple LED light logic
Set_SimpleLight(MYLEDLOGIC);

pinMode(OUTPUTPIN, OUTPUT); // Включаем диод
pinMode(INPUTPIN, INPUT); // Переключаем пин кнопки в состояние ВХОДА

}

void loop()
{
// Здесь начинаем играть
EXECUTEFAST() {
UPDATEFAST();

// Мы обрабатываем логику и соответствующий вход
// и делаем это каждые 50 миллисекунд
FAST_50ms() {
// Управляем диодом в соответствии с командой
LowDigIn(INPUTPIN, Souliss_T1n_ToggleCmd, MYLEDLOGIC);
Logic_SimpleLight(MYLEDLOGIC);
DigOut(OUTPUTPIN, Souliss_T1n_Coil, MYLEDLOGIC);

}

// Здесь реализована обратная связь от управляемого устройства
FAST_GatewayComms();

}
}
Код залили, изучили - пол дела сделали)
Теперь устанавливаем на свой смартфон SoulissApp - есть в Google Market (бесплатное и поддерживает русский язык)
Запускаем и заходим в "Настройки - Сеть - Локальный адрес Souliss" ставим ip-адрес ESP (у меня это был 192.168.1.34)
Затем заходим "Настройки - БД Souliss" и жмем "GetSoulissNodes" - т.е. опрашиваем все наши узлы (а он у нас один) и записываем в базу.
В разделе Функции есть подраздел Ручной режим, там и должен отобразиться наш "Узел 0" и индикатор "в сети" позеленеть.
Готово, можно играться с ВКЛ/ВЫКЛ и ТАЙМЕРОМ.
Замечу что приложение поддерживает голосовое управление. Правда я в него не вдавался...
 
Последнее редактирование:

smerlin

Member
В планах заставить OpenHAB видеть и управлять модулем без использования SoulissApp
 

smerlin

Member
Всё, сегодня воплотил планы: прикрутил модуль ESP под управлением Souliss к серверу OpenHAB без всяких посредников (mqtt-брокеров, http-серверов и т.п.). OpenHAB официально поддерживает Souliss. Теперь управляю с компьютера вкл/выкл диодом, также со смартфона с помощью мобильного приложения OpenHAB или с помощью голосового ассистента ДУСЯ (наш русский ответ Siri - неплохая весч! купил его официально еще когда он стоил 100 руб.). Осталось повесить полезную нагрузку вместо диода и выложу процесс в эту ветку, если интересно кому.
 

Anydy

New member
Спасибо, попробую повторить Ваш пример.
Но вопрос остается открытым ... Как это сделать без роутера, только модуль ESP в режиме АР + Souliss?
Например в гараже модуль с реле, подьезжаешь - телефон уже зацепился к АР, достаточно просто ткнуть кнопку в приложении и ворота открылись .... роутер тут ни к чему.
 

smerlin

Member
Например в гараже модуль с реле, подьезжаешь - телефон уже зацепился к АР, достаточно просто ткнуть кнопку в приложении и ворота открылись .... роутер тут ни к чему.
Совершенно с Вами согласен: для такой задачи он не нужен. Достаточно модуля и приложения на смартфоне SoulissApp для его контроля (в нем даже можно создавать кое-какие сценарии поведения узлов сети). Но я сознательно выбрал в качестве "мозгового центра" OpenHAB, т.к. это дает возможность более гибко настраивать логику поведения узлов, а так же избежать многих ошибок при программировании (возможности отладки на микроконтроллере весьма ограничены, а тут полный функционал). Да и мобильное приложение у OpenHab тоже имеется (правда логика все равно выполняется на сервере).

Для управления двигателем автоматических ворот вижу 2 пути:
1) Собрать устройство, посылающее сигнал на приемник ворот (т.е. собрать пульт под управлением ESP модуля);
2) Собрать устройство, управляющее непосредственно приводом ворот (т.е. модуль ESP должен будет САМ включать привод).
Более правильным, наверное, является 1 вариант, тут не придется лезть внутрь самого привода и его автоматики, но элементная база решения, думаю, будет более обширной и затратной. Во 2-м случае скорее всего элементная база будет дешевле, но придется разобраться в принципах функционирования автоматики привода. Что выбрать - решать вам.
 
Последнее редактирование:

Anydy

New member
Так все же, может Souliss клиентом цепляться к ESP AP?
В качестве ворот в гараже это один из примеров, можно просто электромагнит поставить или моторы открытия дверей от авто, а ворота будут распахиваться с помощью пружин или бытовых доводчиков, закрывать вручную.
Тут важный фактор цена вопроса - ESP + БП + реле +мотор с двери авто =300 -400р.
За такую цену есть смысл сделать управление много какими устройствамми, от лампочки до кормушки животных. Та же WiFi розетка стоит 3-6т.р. За такую цену люди будут по старинке руками включать, а вот за 500р. заинтересуются! Понравится, захочет развивать, вот тогда будем и роутеры ставить и Openhab настраивать и т.д.
Хотелось простое и дешевое решение - софт под андроид и контроллер с реле. У меня не получилось связать Souliss с ESP AP (без роутера).
Есть пример скетча для ESP и приложение андроид, но там только одна кнопка ВКЛ/ВЫКЛ ... по сути то что надо, но придется изучать программирование под андроид)))
 

smerlin

Member
Anydy, может только немного не так как вы себе представляете. Попробую объяснить в 2 предложениях.
Все узлы умного дома на ESP8266, AVR, Arduino и практически на любом микроконтроллере могут быть под управлением Souliss. Вот какие на данный момент поддерживаются. Для ESP8266 программа пишется на Arduino IDE, в которую импортирована библиотека Souliss, заливается в каждый узел, все узлы должны находиться в одной локальной сети на уровне протокола TCP/IP. Затем выстраивается сеть более высокого уровня поверх топологии TCP/IP - сеть Souliss-устройств (узлов), потом выбирается один узел в качестве шлюза (принудительно вами программируется или программируется так, чтобы узлы его сами выбирали). Предусмотрено автоматическое переключение шлюзов (например, если основной отказал или просто выключен, переключиться на запасной). В качестве шлюзов нужно выбирать модули с большей памятью, т.к. там осуществляется сбор инфы ото всех других узлов. Программируется логика (все на ArduinoIDE) и заливается по узлам. Какие функции библиотеки Souliss при этом понадобятся можно посмотреть и изучить здесь. Можно даже заставить один узел выполнять команды удаленно через другой, или запросить данные с датчиков с удаленного узла через первый узел, в общем много чего...
Чтобы вся эта сеть где-то отображалась и как-то контролировалась есть приложение на андроиде SoulissApp, через него и можно открывать ворота, включать лампочки и поливать грядки, а так же программировать сценарии поведения узлов, и никакие роутеры не нужны, если только вы не задумаете созданный вами монстродом подключить к интернету и управлять им из вне (например полить грядки на даче, находясь на работе или в отпуске в Турции, в Египет сейчас не летают....)
 
Так все же, может Souliss клиентом цепляться к ESP AP?
Может:
Код:
    SetAccessPoint();
Далее настраиваете SoulissApp на IP модуля ESP8266 (192.168.4.1). Ну и в программе в ArduinoIDE добавляете нужные вам устройства https://github.com/souliss/souliss/wiki/Typicals

@smerlin а подскажи можно в этом самом souliss`e передавать свои числовые значения? Например, мне нужно из программы на Андроиде установить значение переменной (какого-либо своего параметра) в программе в ESP8266. Соответственно также получать из ESP.
 

smerlin

Member
@smerlin а подскажи можно в этом самом souliss`e передавать свои числовые значения? Например, мне нужно из программы на Андроиде установить значение переменной (какого-либо своего параметра) в программе в ESP8266. Соответственно также получать из ESP.
В этом нет необходимости: Soulis библиотека служит только для связи с узлами, имеющими конкретные физические параметры, и управления ими. Для передачи "своих" данных никто не отменял "обычное" программирование на Arduino IDE и стандартные для него библиотеки для связи с ESP.
 
Ну вот а я уже обрадовался, что нашел удобное приложение на андрюше для управления без необходимости наличия интернета (работа с AP). Ужасть как лень писать свое под Андрюшу и/или АйОС.((
 
Да там 4 параметра входных и 3 выходных типа int (относительно ESP). Далее от них рассчитывается время (период) включения клапана и запускается подпрограмма обработки внешних прерываний с импульсного датчика. Изменение параметров требуется редко, сохраняются в еепром. На данный момент все это работает на ардуино и параметры задаются смартфоном по блютуз через модуль HC-05, но прога написана только для андрюши и не на всех телефонах нормально стыкуется с HC-05. Хотелось бы отвязаться от "голубоглаза", модуля HC-05 и сделать все на одном модуле ESP, благо его аппаратных средств более чем достаточно для моей задачи. Реализацию общения с юзером (интерфейс) я вижу так:
1. Написание приложений для Android и iOS.
2. Вебморда с сервером в ESP.
3. Применения приложений IoT (поддерживающих работу с ESP как с точкой доступа без интернета). Но у них своя специфика и ограничение по "конкретным физическим параметрам". Хотя я может плохо искал и что то нужное все такие существует)

Вроде как 2-й вариант самый простой. Но придется заняться web программированием разве что))
 

smerlin

Member
Ну 3 пункт вряд ли найдете, первые 2 реальны. И я бы начал именно со 2 пункта. Но возможно в Солис тоже есть инструменты, я, честно говоря, не изучал его досконально, просто бегло пробежал. Думаю должен существовать способ в SoulissApp "прикрутить" к узлу дополнительные параметры и считывать/менять их. В крайнем случае можно попробовать написать разработчику Солис, они тоже заинтересованы в развитии своего проекта.
 

jirafff

New member
smerlin, а можно код посмотреть из видео?
Интересует, как реализовано управление выключателем.
 

smerlin

Member
Код стандартный из примера Солиса, я его выложил под спойлером в моём первом сообщении в этой теме. (я его немного отредактировал)
 
Последнее редактирование:
Сверху Снизу