ESP8266 MegaD api

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 05 янв 2017, 01:40

AvaloncheG, может пока что довести до ума задуманный функционал, для ADC пул пригодится, а для INа - всего же два состояния, другой вопрос если сделать виртуальные порты и в зависимости от их состояния выполнять некий ACT и NET.

Примерно так:
VP0-0, VP1-0, VP2-0,
ACT...... NET........

VP0-1, VP1-0, VP2-0,
ACT...... NET........

VP0-1, VP1-1, VP2-0
ACT...... NET........

Ну и так далее, сделать обращение к виртуальным портам как к обычному выходу, тогда эта штуковина сможет работать сценарии, пришла ночь - нажал кнопку(образно) - порт стал в 1- выполняется ночной сценарий, допустим по датчику движения включается только подсветка, а не весь свет. А если еще потом и часы приделать и типа cronа поля заделать, то вообще супер контроллер получится.

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 05 янв 2017, 02:24

Друзья, такой вопрос, если эта штуковина теряет сеть, то ACT перестает выполняться? то есть автономно без сети оно не работает, роутер повесился и все??? или сосед с магнетроном от микроволновки играться начал, дом жить перестает??? а можно с этим что-то сделать?

llams, заметил тенденцию, при замене имени сети (на не существующую) или сбросе через GPIO1 и подключении заново, пропадает TS9 (два раза уже было)

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 05 янв 2017, 02:48

AvaloncheG писал(а):...почему для всех портов типа IN и АЦП не организовать пул команд Act и NetAct?
Была такая мысль. Когда задал вопрос об этом, поддержки не нашел. Да и смысла то нет, думаю локальные порты так и будут иметь стандартный набор.
foolhome писал(а):...если сделать виртуальные порты...
Это уже попахивает ПЛИС, в таком случае нужно отходить от концепта еще дальше и оперировать событиями. А их может быть сколько угодно и превратится копеечный ESP в сервер умного дома работающий на "Мега операционной системе". Думаю не нужно перегружать простое устройство функционалом сервера.
foolhome писал(а):...если эта штуковина теряет сеть, то ACT перестает выполняться?...
Если роутер ушел первым то Atc должно выполняться, если одновременно то пока устройство не войдёт в сеть никакие сценарии выполняться не будут (над этим еще предстоит поработать).
foolhome писал(а):...пропадает TS9...
Спасибо, посмотрю.

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 05 янв 2017, 09:03

Это уже попахивает ПЛИС, в таком случае нужно отходить от концепта еще дальше и оперировать событиями. А их может быть сколько угодно ...
Так это и нужно, почему все упираются в концепцию Андрея? эта программа уже работает почти как PLC, на разные события по температуре выдает необходимые действия
и превратится копеечный ESP в сервер умного дома работающий на "Мега операционной системе".
Осталось чуть-чуть, на I2C часы RTC с CRON-ом повесить, WEB разукрасить чтоб глаз радовался, OLED доработать, просто многие смотрят на свои изделия как железячники или программисты, лично я смотрю на это как пользователь бытового уровня. Если интересно, то можно обсудить.
Думаю не нужно перегружать простое устройство функционалом сервера.
А что ему станет??? это же железяка, что прикажешь, то и будет делать, не устанет и в отпуск не попросится.

AvaloncheG
Сообщения: 54
Зарегистрирован: 27 фев 2015, 01:06

Re: ESP8266 MegaD api

Сообщение AvaloncheG » 05 янв 2017, 11:37

llams писал(а):Была такая мысль. Когда задал вопрос об этом, поддержки не нашел. Да и смысла то нет, думаю локальные порты так и будут иметь стандартный набор.
Я думал с точки зрения унификации и оптимизации кода так будет лучше, что бы стандартный набор был один для всех.
llams писал(а):А их может быть сколько угодно и превратится копеечный ESP в сервер умного дома работающий на "Мега операционной системе". Думаю не нужно перегружать простое устройство функционалом сервера.
Тут полностью согласен, у 80% пользователей есть/будет сервер, еще 19% он в принципи не надо и остается 1% который нужно убедить что без сервера нормальный "умный дом" не сделать.

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 05 янв 2017, 12:02

Тут полностью согласен, у 80% пользователей есть/будет сервер, еще 19% он в принципи не надо и остается 1% который нужно убедить что без сервера нормальный "умный дом" не сделать.
Откуда эта статистика? В корне не соглашусь, как раз у тех кто пользует сервер в жизни не более 1%, потребителю важно законченное устройство, простое в понимании и с возможностью изменить под себя, Обратите внимание на Broadlink, Xiaomi и подобное. А поднимать сервер, разбираться с линуксом, писать скрипты, Вы сами знаете какой это багаж знаний необходим, ради работы устройства в управлении освещением или сигнализации, это сверх маразм, тем более имея такие РЕСУРСЫ!!! как ESP. Может на этом ресурсе (форуме) и 80% серверистов, но ни кто не убеждает вас от него отказаться и нельзя отказываться от полей NET я это и не поддерживаю, поэтому и меня не надо убеждать что мне необходим сервер для того чтоб открыть ворота.

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 05 янв 2017, 13:07

Вопрос знатокам. Как определить наличие на шине датчика DS18B20 зная его адрес. Задача в следующем, при выходе из строя, обрыве провода нужно как то однозначно определить отсутствие элемента сети 1-wire. При использовании одного делается просто сбросом, датчик отвечает флагом присутствия. Как словить флаг присутствия от конкретного датчика обратившись к нему по адресу?
Что то мне подсказывает, что это Read Power Supply [B4h], у нас же нет паразитного питания. :-) Есть мысли?

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 05 янв 2017, 13:41

http://arduinolab.pw/index.php/2015/12/ ... /#more-110

может это поможет, здесь в коде была проверка на наличие

alexsis_76

Re: ESP8266 MegaD api

Сообщение alexsis_76 » 05 янв 2017, 13:49

команда
MATCH ROM [55h] Соответствие ROM [55h]
Команда соответствия ROM, сопровождаемая последовательностью кода ROM на 64 бита
позволяет устройству управления шиной обращаться к определенному подчиненному
устройству на шине. Только подчиненное устройство, которое точно соответствует 64
битам последовательности кода ROM, ответит на функциональную команду, выпущенную
главным устройством. Все другие подчиненные устройства на шине будет ждать импульса
сброса.

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 05 янв 2017, 15:33

foolhome писал(а):http://arduinolab.pw/index.php/2015/12/ ... /#more-110
может это поможет, здесь в коде была проверка на наличие
Это стандартные примеры. Ничего нового, при отсутствии датчика на шине значение температуры будет либо нули, что уже само по себе не верно, либо -0.06 уже разок упоминали об этом.
alexsis_76 писал(а): команда
MATCH ROM [55h] Соответствие ROM [55h]
Это очевидно, если используем несколько датчиков на одной шине их нужно идентифицировать, MATCH ROM заставляет, грубо говоря, заткнуться все устройства до импульса сброса. Я спрашивал про то, как понять, что датчик присутствует во множестве, точнее отвечает на запрос. Везде стандартные библиотеки:
запустили конвертацию - Convert T [44h],
подождали,
выбрали - Match Rom [55H],
приняли - Read Scratchpad [BEh],
посчитали и не важно, что там нули или данные.

Для DS18B20 оказалось все просто, мастер постоянно вычитывает весь SCRATCHPAD, т.е. все 9 байт, все примеры используют только 3 байта 0, 1 и 4-й, первые два значение температуры, 4-й конфиг, в данном случае разрешение.
Для данной реализации думаю нет смысла считать контрольные суммы, а достаточно проверить содержимое зарезервированного регистра 5-й байт, в нем всегда 255, если датчик пропал будут нули. Для DS18S20 это тоже справедливо.
Последний раз редактировалось llams 05 янв 2017, 15:58, всего редактировалось 1 раз.

alexsis_76

Re: ESP8266 MegaD api

Сообщение alexsis_76 » 05 янв 2017, 15:54

что датчик присутствует во множестве
никак
Везде стандартные библиотеки:
запустили конвертацию - Convert T [44h],
подождали,
выбрали - Match Rom [55H],
приняли - Read Scratchpad [BEh],
посчитали и не важно, что там нули или данные.
ну конечно так всегда делается,это нормально.
Для данной реализации думаю нет смысла считать контрольные суммы
лучше считать.

alexsis_76

Re: ESP8266 MegaD api

Сообщение alexsis_76 » 05 янв 2017, 16:41

посчитали и не важно, что там нули или данные
перед тем как посчитать,считаем crc,если процедура вернет false то датчик отсутствует или неисправен,дальше можно не продолжать либо произвести еще циклы чтения,кроме того на длинных линиях возможны ошибки, crc позволяет выловить их,так что если претендуете на серьезность то crc нужно считать.

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 05 янв 2017, 17:43

Очередная версия:
- добавлена проверка целостности данных для DS18B20, при потере датчика устройство будет возвращать NAN,
- исправлена проблема с подсчетом количества термостатов.
1.JPG
1.JPG (15.48 КБ) 3257 просмотров
MegaESP_0.34b6-4m.zip
(234.44 КБ) 143 скачивания

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 07 янв 2017, 09:24

В связи с тем, что в MegaESP используется OLED дисплей с шиной I2C поделюсь с Вами опытом работы с одной из разновидностью, может кому пригодится, заказал я как - то себе парочку универсальных OLED-ов с возможностью подключения по SPI или I2C, вот такого вида:
Изображение
Изображение
Стал вопрос как его перевести на работу с I2C, вроде все понятно, но не тут то было, просто перепаять резисторы как указанно сзади ни чего не дает, курим даташит по чипу экрана понимаем что лишние ноги нужно куда нибудь прикрутить, цепляем DC и CS на GND, RES на VCC и о чудо, он засветился и определяется по I2C, первое включение было с каким - то мусором на экране, пару раз передернул питание заработал вроде как надо. Стал я играться с разными прошивками для ESP и в один момент при переносе своей конструкции на работу без изменений в прошивке экран начал показывать примерно такой мусор:
Изображение
Это картинка Андрея немного с другим экраном, но мусор такой - же, что я ни делал, какую прошивку не заливал в ESP ни чего не помогало, я понял что экран зависит от погоды и святого духа, а так же Бога электроники, стал искать решение проблемы если вдруг Бог не видит экран. Поиск в сети ни чего толкового не дал, люди пытаются завести эти экранчики разными библиотеками, либо оставляют их в режиме SPI, но проблема мусора решается довольно просто на сигнал RESet необходимо повесить цепочку сброса, чтоб сброс проходил с задержкой после включения питания, стандартная схема сброса резистор 10К и конденсатор 0,1 мк и вуаля, все работает как надо:
Изображение
Изображение
Изображение

P.S. резисторы на дисплее перепаиваем как написано на нем для IIC, вместо R8 просто перемычка.
Последний раз редактировалось foolhome 09 янв 2017, 11:16, всего редактировалось 1 раз.

foolhome
Сообщения: 164
Зарегистрирован: 18 окт 2014, 21:39
Откуда: Minsk

Re: ESP8266 MegaD api

Сообщение foolhome » 08 янв 2017, 23:23

llams, а есть в планах дальнейшая работа над OLED дисплеем? Наверно же не просто так его прилепили. Было бы великолепно ввести несколько страниц для отображения портов, которые периодически сменяли бы друг друга как слайды, например:
1. Стартовая как сейчас - с системной информацией, с возможностью отключения при показе слайдов.
2. Общая страница с состоянием портов (общий список, мелкий шрифт)
3. Пользовательские - верхняя строчка (мелкий шрифт, название слайда пишет пользователь ) остальное поле крупный шрифт состояние (ON/OFF) или значение (HI/LO/1024/темп) только одного порта.
Пользовательских было бы не плохо несколько штук в запасе иметь.
Теперь обрисую для чего: даже банальный термостат подошли к устройству и температуру визуально увидели, состояние порта - пожалуйста.

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 09 янв 2017, 01:33

foolhome писал(а):llams, а есть в планах дальнейшая работа над OLED дисплеем?
Да, конечно. Спасибо Вам за информацию, думаю будет полезна.
Ваш предыдущий пост подтолкнул меня разобраться со своим дисплеем. Мало того, что у него сдвиг на один пиксель, так еще и умер через месяц работы. Вчера выяснил, что с ним было. :-) Пришлось выкинуть набортный стабилизатор питания. После этого завелся, буду продолжать.

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

Re: ESP8266 MegaD api

Сообщение arbuzmaster » 09 янв 2017, 13:22

Подскажите пожалуйста, как при помощи входов ESP организовать диммирование например 2 кнопки - одна прибавляет, а другая убавляет яркость ?

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 10 янв 2017, 09:01

arbuzmaster писал(а):Подскажите пожалуйста, как при помощи входов ESP организовать диммирование например 2 кнопки - одна прибавляет, а другая убавляет яркость ?
Это не предусмотрено. Чем вас не устраивает вариант с одной кнопкой?

arbuzmaster
Сообщения: 254
Зарегистрирован: 15 июл 2013, 23:43
Откуда: Астрахань

Re: ESP8266 MegaD api

Сообщение arbuzmaster » 10 янв 2017, 12:02

llams писал(а):
arbuzmaster писал(а):Подскажите пожалуйста, как при помощи входов ESP организовать диммирование например 2 кнопки - одна прибавляет, а другая убавляет яркость ?
Это не предусмотрено. Чем вас не устраивает вариант с одной кнопкой?
Как это одной кнопкой? Т.е. просто включать/выключать с определенной яркостью или я не правильно Вас понял? Теоретически я подумал, что можно сделать так:включить ежесекундную отправку данных на сервер и на сервере проверять скриптом - если первая кнопка ON то прибавляем с определенным шагом, если вторая ON то убавляем с тем же шагом, так можно же сделать? Но ели бы у входа был режим Pulse с интервалом опроса и отправкой на сервер, то это было бы вообще замечательно!

llams
Сообщения: 192
Зарегистрирован: 23 ноя 2015, 04:20

Re: ESP8266 MegaD api

Сообщение llams » 10 янв 2017, 12:33

Переводите IN в режим работы, параметр "mod" M, а в Act 0:~5 Где 0 номер PWM порта, а 5 шаг.
Изменение состояния порта происходит от 0 -> 255 -> 0 с заданным шагом.

Ответить