Cayenne. Сервис для интернет вещей.

Альтернатива Blynk.

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
pvorobei
Рядовой
Сообщения: 42
Зарегистрирован: 14.09.2018{, 20:30}
Репутация: 14
Откуда: СПБ
Имя: Иван

Cayenne. Сервис для интернет вещей.

#1

Сообщение pvorobei » 07.10.2018{, 22:06}

О Cayenne:
Cayenne https://mydevices.com - это ещё один облачный сервис, наряду с Blynk, ThingSpeak и пр. для создания собственных графических интерфейсов управления и обработки данных своих IoT-устройств(доступен как веб интерфейс, так и моб приложение).
На сколько мне известно изначально этот сервис создавался для работы с малиной, но со временем подтянулась и поддержка плат arduino, esp и т.п. К слову сказать при работе с arduino и другими мк Cayenne использует фреймворк Blynk, из чего можно сделать вывод, что это одно и тоже, только подход разный. Blynk бесплатно дает на старте ограниченное кол-во энергии для использования виджетов (это количество на все устройства созданные в нем), по окончанию можно докупить энергии, или ставить свой локальный сервер с Blynk. Cayenne же никак не ограничивает в количестве виджетов, но ограничивает в интервалах времени отправки данных (1 значение в секунду, т.е. если вы отправляете в интерфейс данные с 3х температурных датчиков, то делать это желательно не чаще 1 раза в 3 сек), во всяком случае я так понял покурив немного их форум, поскольку на сайте не нашел ни слова об ограничениях(может плохо искал). Ну и по скольку исходники Cayenne закрыты, то поднятие своего локального сервера не представляется возможным. Тем не менее инструментов предоставляемых Cayenne вполне достаточно для большинства домашних проектов.
Итак приступим.

1. Установка библиотек:
Я не стал прикреплять к блокам библиотеки, считаю так оно надежней и работа в Flprog легче.
Для начала нужно установить библиотеки CayenneMQTT и SimpleTimer.
1.1 CayenneMQTT берем из менеджера Arduino IDE: Компилируем любой проект в Flprog, при открытии IDE заходим во вкладку скетч, подключить библиотеку, управлять библиотеками. Откроется окно "Менеджер библиотек", в поиске начинаем вводить имя библиотеки, в списке появится CayenneMQTT, ставим последнюю версию(1.2.0). Закрываем IDE.
1.2 SimpleTimer качаем здесь:
SimpleTimer-master.zip
(3.89 КБ) 499 скачиваний
или по ссылке: https://github.com/jfturcot/SimpleTimer . Повторяем те же шаги, только теперь жамкаем не "управлять библиотеками", а "добавить .ZIP библиотеку", ищем место куда скачали, выбираем, добавляем.
1.3 Если вы хотите работать с модулем ESP подключенным по UART к Ардуино, то понадобится ещё одна библиотека - ESP8266SerialLibrary. Она находится в папке уже установленной библы CayenneMQTT, как правило по пути: C:\ Users\ Documents\ Arduino\ libraries\ CayenneMQTT\ extras\ libraries, устанавливаем также как предыдущую .ZIP библиотеку.
Блоки:
Cayenne.ubl
(151.31 КБ) 500 скачиваний

Аватара пользователя
pvorobei
Рядовой
Сообщения: 42
Зарегистрирован: 14.09.2018{, 20:30}
Репутация: 14
Откуда: СПБ
Имя: Иван

Cayenne. Сервис для интернет вещей.

#21

Сообщение pvorobei » 20.02.2019{, 23:27}

Timmy101,
Timmy101 писал(а):
20.02.2019{, 23:13}
Интересно проверить что будет с прошивкой если вдруг пропадет вай фай при уже запущенной прошивке
примерно такой тест я проводил. Переподключение происходит примерно через минуту и в последующем все работает без вмешательста. правда не помню как ведет себя во время переподключения основная программа.
Думается мне чтоб нае..ать судьбу нужно таки курить их форум и копать библу. Но это не точно.

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#22

Сообщение Timmy101 » 21.02.2019{, 11:30}

pvorobei писал(а):
20.02.2019{, 23:27}
мер
pvorobei писал(а):
20.02.2019{, 23:27}
Timmy101,
Timmy101 писал(а):
20.02.2019{, 23:13}
Интересно проверить что будет с прошивкой если вдруг пропадет вай фай при уже запущенной прошивке
примерно такой тест я проводил. Переподключение происходит примерно через минуту и в последующем все работает без вмешательста. правда не помню как ведет себя во время переподключения основная программа.
Думается мне чтоб нае..ать судьбу нужно таки курить их форум и копать библу. Но это не точно.
К сожалению у меня и через 5 минут не стартанула основная программа. Согласен что тут либо самим на базе команд MQTT делать библиотеку либо ковырять родную. Вариантов нет. Проблема сидит именно в библиотеке CayenneMQTT... она гасит wifi

Отправлено спустя 5 минут 29 секунд:
Встает еще один вопрос, можно ли обработать например долгое нажатие на кнопку RS или flash на самой плате? И залить 2 прошивки в nodemcu. Чтобы например по долгому нажатию переводить плату в режим конфигурирования и работала прошивка с вебмордой для настройки wi-fi.

Ведь по сути сама плата сделана для встраивания в бытовуху, дабы ее сделать умной. И режим точки доступа нужен именно для конфигурирования wifi клиента - в качестве первоначальной настройки или изменения параметров. например при смене пароля от клиентского вайфая или переподключения к другой сети.

Без режима точки доступа, получается что для перенастройки устройства его нужно по сути перепрошивать... а это как-то глупо....
Опять же нужно еще будет решить как передавать настройки брокера MQTT через пользовательские переменные.... иначе и для перенастройки брокера необходимо перепрошивать.

А это сводит к тому что и веб морда то особо не нужна на стороне wifi-клиента.... ну так если в глобальном смысле.

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#23

Сообщение Timmy101 » 25.02.2019{, 09:44}

Отправлено спустя 59 секунд:
pvorobei писал(а):
20.02.2019{, 23:27}
Timmy101,
Timmy101 писал(а):
20.02.2019{, 23:13}
Интересно проверить что будет с прошивкой если вдруг пропадет вай фай при уже запущенной прошивке
примерно такой тест я проводил. Переподключение происходит примерно через минуту и в последующем все работает без вмешательста. правда не помню как ведет себя во время переподключения основная программа.
Думается мне чтоб нае..ать судьбу нужно таки курить их форум и копать библу. Но это не точно.

Методом тыка определил.
1) Если подключение к интернету отсутсвует на момент старта устройства ESP с блоками Cayenne ОТСУТСТВУЕТ, то старт программы зависает. Видимо FLprog расставляя приоритеты на очередность работы плат, плату с блоками инициализации и блоками передачи данных ставит в вверх очереди, таким образом прошивка не стартует. Если в момент зависшего состояния подкинуть интернет - запуск возобновляется и контроллер оживает. Не знаю есть ли в библиотеке ограничение по количеству реконнетктов, или нет, но после ожидания в 10 мин, прошивка стартанула. Стартанет ли она если устройство простоит в таком состоянии более часа или дня.... неизвестно....
2) Если на момент старта программы интернет присутствовал, но в процессе работы интернет ОТВАЛИВАЕТСЯ, то прошивка ЗАВИСАЕТ!!!! При этом я попробовал "не компилировать плату с блоками передачи", так вот если исключить из цепочки блоки передачи, то при отключенном интернете, блок инициализации "НЕ МЕШАЕТ " работать остальным алгоритмам контроллера.

Резюмирую. Проблема сидит в блоках передачи данных. При детальном рассмотрении увидел что там есть цикл cayenne loop - видимо там стоит отправка данных с подтверждением. (предположение, библиотеку пока не копал) И при отсутствии интернета он зацикливается при этом создается впечатление что контроллер завис.

Есть ли у кого возможность помочь. Очень нужно. Делаю железку для управления вентиляцией, в гараже необходимо поддерживать опредленную температуру. При этом долбанный сервис cayenn mqtt при просадке интернета вешает железку....
Альтернативы каенну не нашел. Если кто предложит альтернативный вариант - буду благодарен.

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

Cayenne. Сервис для интернет вещей.

#24

Сообщение diman27 » 25.02.2019{, 12:57}

Подтверждаю, так же провел наблюдения, результат такой же.

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#25

Сообщение Timmy101 » 25.02.2019{, 13:21}

diman27 писал(а):
25.02.2019{, 12:57}
Подтверждаю, так же провел наблюдения, результат такой же.
Надо как-то побольше людей привлечь к проблеме. Меня из всех бесплтных сервисов IOT для ESP Cayenne устраивает больше всех. Конечно есть что хотелось бы еще, но и на этом спасибо.

Но блин это зависание, вообще ни к селу ни к городу, получается что автономно железка не может работать в случае обрыва интернета. Ну это вообще ни к селу ник городу.

Нашел вариант через RemoteXY, вроде от компилировалась, надо в железе проверять. Но и там всего 5 параметров и приложение для смартфонов убогое.

Остается Каскада.... Но я хз может ли она работать через облако....

updated: КаСкада не умеет работать через облако... Ну неужели мы первопроходцы в этом вопросе. Чтож такое, почему не гуглится вообще. ESP существует давно, Cayenne тоже...

Аватара пользователя
KaScada
Лейтенант
Сообщения: 388
Зарегистрирован: 23.04.2016{, 12:33}
Репутация: 13
Контактная информация:

Cayenne. Сервис для интернет вещей.

#26

Сообщение KaScada » 25.02.2019{, 16:50}

Timmy101 писал(а):
25.02.2019{, 13:21}
updated: КаСкада не умеет работать через облако... Ну неужели мы первопроходцы в этом вопросе. Чтож такое, почему не гуглится вообще. ESP существует давно, Cayenne тоже...
Добрый день.
У нас есть своё облако, но пока под преобразователи протоколов USR\RAK, можно еще подключить КаСкаду как slave и датчик температуры ODTEMP(OPEN DEV).
Так же у пользователей есть возможность из КаСкады выгружать данные к нам на сервер и хранить их.
Что касается ESP, то мы разговаривали с Сергеем о добавлении этой функции и она у нас есть в будущем в любом случае.
ПО КаСкада на базе смартфона/планшета с ОС Андроид

Подробнее здесь: http://www.hmi-kascada.ru/

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Cayenne. Сервис для интернет вещей.

#27

Сообщение Rovki » 25.02.2019{, 17:08}

Вся надежда на автора Сергея ,но он куда то пропал с форума (заработался) .Нужно по аналогии с ремоут ху сделать для Kascada cloud , как сделали ребята с датчиком температуры odtemp-2 - у них ESP соединяется с нашим облаком и все летает без зависаний ...Но они пишут код на микро питоне (вроде). :smile469:
Сергей обешал еще до нового года ,но мы все же ждем и надеемся
Электронщик до мозга костей и не только

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

Cayenne. Сервис для интернет вещей.

#28

Сообщение diman27 » 25.02.2019{, 18:40}

Cayenne хорош тем, что можно зайти из любого места на сайт и увидеть что надо. Я думаю допиливать его надо.

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#29

Сообщение Timmy101 » 25.02.2019{, 20:28}

KaScada писал(а):
25.02.2019{, 16:50}
Timmy101 писал(а):
25.02.2019{, 13:21}
updated: КаСкада не умеет работать через облако... Ну неужели мы первопроходцы в этом вопросе. Чтож такое, почему не гуглится вообще. ESP существует давно, Cayenne тоже...
Добрый день.
У нас есть своё облако, но пока под преобразователи протоколов USR\RAK, можно еще подключить КаСкаду как slave и датчик температуры ODTEMP(OPEN DEV).
Так же у пользователей есть возможность из КаСкады выгружать данные к нам на сервер и хранить их.
Что касается ESP, то мы разговаривали с Сергеем о добавлении этой функции и она у нас есть в будущем в любом случае.

Да видел ваше облако, но насколько я понял из существующих обзоров, нужно все равно 2 утсройство для HMI, меня интересует больше вариант cayenn. Необходимо из любой точки посмотреть состояние желези.

И это очень глупо выходит если интерфейс мониторинга при отсутствии интернета вешает саму железку. Ну просто очень глупо. Я согласен на работу мобильного приложения / сайта с режимом работы в виде post/get запросов/ mqtt.

А на стороне ESP желательно вообще иметь UDP интерфейс дабы не грузить железку обратной связью. Пусть шлет себе с интервалами и все.
Rovki писал(а):
25.02.2019{, 17:08}
Вся надежда на автора Сергея ,но он куда то пропал с форума (заработался) .Нужно по аналогии с ремоут ху сделать для Kascada cloud , как сделали ребята с датчиком температуры odtemp-2 - у них ESP соединяется с нашим облаком и все летает без зависаний ...Но они пишут код на микро питоне (вроде). :smile469:
Сергей обешал еще до нового года ,но мы все же ждем и надеемся

Да уж очень надеюсь на поддержку. Иначе хромые пользовательские блоки выходят. Не верю что нельзя поднять интерфейс передачи по-человечески....
diman27 писал(а):
25.02.2019{, 18:40}
Cayenne хорош тем, что можно зайти из любого места на сайт и увидеть что надо. Я думаю допиливать его надо.
В точку.


UPDATED.

Проверил RemoteXY он ссук работает при отсутсвии интернета. Но у меня нет ключа проверить досканально, а покупать такой страшный интерфейс вообще никакого желания!

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Cayenne. Сервис для интернет вещей.

#30

Сообщение Rovki » 25.02.2019{, 20:39}

Можно без двух HMI через облако ,но пока только если это модули вайфай или езернет от команий RAK или USR у них все нужные настройки делаются через их веб страницу ... :smile225: и они работают как прозрачные мосты.
Если не получится с флпрог (Сергей не сделает) ,то сами сделаем прошивку ESP - прозрачныйй мост+ настройки для Kascada cloud . :smile44:
Электронщик до мозга костей и не только

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#31

Сообщение Timmy101 » 25.02.2019{, 21:25}

Rovki писал(а):
25.02.2019{, 20:39}
Можно без двух HMI через облако ,но пока только если это модули вайфай или езернет от команий RAK или USR у них все нужные настройки делаются через их веб страницу ... :smile225: и они работают как прозрачные мосты.
Если не получится с флпрог (Сергей не сделает) ,то сами сделаем прошивку ESP - прозрачныйй мост+ настройки для Kascada cloud . :smile44:

Понимать бы еще сроки...не знаю, мое мнение Cayenne Он абсолютно достаточен. И интерфейс человеческий, единственное - надстрочные триггеры в нем не особо, триггер включить можно а вот текст сообщения нельзя отредактировать, в итоге в смс приходит слишком много ненужной инфы.

А так допилить бы его независимость работы в на ESP с реконнектом при появлении активного инета и все + чтобы он не мешал точке доступа. и по-сути то все... Причем поидее решение с блокирование отправки (которая собственно и вешает еспешку) на поверхности - тупо все блоки с передачей/приемом данных с сервисом cayenne пихаем в одну плату, и ставим условие на ее выполнение по признаку активности интернета на базе пользовательского блока esp_ping.

На данный момент проблема в том что если сделать как я написал выше IDE не компилирует. Ругается на лишние/недостающие скобки{}. Однако все мои попытки вручную модифицировать код в IDE после FLprog результатов не дало....

Возможно создатель компилятора Flprog - IDE сможем с легкостью поправить этот баг....

Отправлено спустя 4 минуты 56 секунд:
И да кстати, если настраиваете настройки "Клиента" в дереве проекта то их в блок инициализации можно не передавать Только что проверил.
Удалил вот эти параметры из раздела setup section блока инициализации и все по прежнему осталось работать:

Cayenne.begin(username, password, clientID, ssid, wifiPassword);
Мне кажется это уже как минимумм нужно поправить для ESPшки. чтобы не вводить людей в замешательство. Как это вводило меня.
Вот статья откуда я это подчерпнул (слава богу я не один такой):
https://community.mydevices.com/t/sonof ... ta-ap/6948

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#32

Сообщение Timmy101 » 26.02.2019{, 20:48}

Опять зависла железка изза этого долбанного подключения mqtt cayenne. Братцы выручайте.

Anydy

Cayenne. Сервис для интернет вещей.

#33

Сообщение Anydy » 26.02.2019{, 23:26}

А если написать в loop (отдельно от основного цикла) - - if mqtt connected - выполняем отправку данных ....else -иначе продолжает выполнятся основная программа ( на орфографию не смотрите...это пример)
Ребята, начинайте уже изучать язык (диалект) Wirning это намного проще языка C++

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Cayenne. Сервис для интернет вещей.

#34

Сообщение Rovki » 27.02.2019{, 00:18}

Anydy писал(а):
26.02.2019{, 23:26}
Ребята, начинайте уже изучать язык (диалект) Wirning это намного проще языка C++
Актуальное пожелание для пользователей FLProg :smile171:
Электронщик до мозга костей и не только

Anydy

Cayenne. Сервис для интернет вещей.

#35

Сообщение Anydy » 27.02.2019{, 02:13}

Rovki, а почему нет? Я когда начал пользоваться FLProg не знал вообще как программировать на языке С++, а со временем уже научился кое чему.....конечно до профи мне еще далеко)))))

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#36

Сообщение Timmy101 » 27.02.2019{, 07:10}

Anydy писал(а):
26.02.2019{, 23:26}
А если написать в loop (отдельно от основного цикла) - - if mqtt connected - выполняем отправку данных ....else -иначе продолжает выполнятся основная программа ( на орфографию не смотрите...это пример)
Ребята, начинайте уже изучать язык (диалект) Wirning это намного проще языка C++

В таком случае нужно созданную прошивку из флпрог после компиляции , открыть в ide, найти в ide место где сидит код от блоков отправки, кастрировать и засунуть в void loop через if. Встаёт 2 вопроса:
1) где взять признак mqtt connected.
2) найти в куче созданных переменных _gtv что это именно блок отправки ( иными словами, понять все ли кастрируешь).

Мне эта мысль пришла давно. НО. Признак mqtt connected - я преобразовал в признак - через Esp ping - пользовательский блок.
А вот со вторым пунктом беда. Там все неоднозначно. Просто так взять и вырезать и пенести в loop не удалось. Начинаются проблемы с объявлением переменных. Ибо каеновская библиотека создаёт функции cayenne out, которая передает данные. Так вот не получилось - куча необъявлпнных переменных. И т.д. Ну явно не подход если это делать через флпрог. Имхо тогда проще вообще в ide сразу писать. Но не нашел ничего даже полу-готового.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Cayenne. Сервис для интернет вещей.

#37

Сообщение Rovki » 27.02.2019{, 07:35}

Rovki писал(а):
27.02.2019{, 07:35}
Anydy писал(а):
27.02.2019{, 02:13}
Rovki, а почему нет? Я когда начал пользоваться FLProg не знал вообще как программировать на языке С++, а со временем уже научился кое чему.....конечно до профи мне еще далеко)))))
Да просто вспомнил лозунг на старом сайте ...Форумов посвященных текстовым языкам и ардуино вагон и маленькая тележка .. :smile225: Я понимаю ,когда не развивается основной инструмент, то это толкает пользователей искать выход...
Электронщик до мозга костей и не только

Аватара пользователя
pvorobei
Рядовой
Сообщения: 42
Зарегистрирован: 14.09.2018{, 20:30}
Репутация: 14
Откуда: СПБ
Имя: Иван

Cayenne. Сервис для интернет вещей.

#38

Сообщение pvorobei » 27.02.2019{, 10:10}

Timmy101,
По поводу зависания - есть идея, но на это нужно время поковыряться в библиотеке. Здесь Anydy, мыслит в верном направлении, мне кажется, работать нужно примерно так - каждые n сек проверка подключения если нет - вызываем reconnect. Если соединение есть - запускаем cayenne.loop. Это не избавит от мелких подвисаний во время реконекта, но, должно помочь с зависанием наглухо.
Со временем сейчас напряг, как появится - попробую побороть.
Но если у кого-то есть время и желание.
Вот нашёл на вскидку решение аналогичной проблемы с blynk.
https://electronic-crafts.blogspot.com/ ... t.html?m=1
Можно попробовать по аналогии запилить.

Timmy101
Рядовой
Сообщения: 12
Зарегистрирован: 20.02.2019{, 17:18}
Репутация: 0
Имя: Тимофей

Cayenne. Сервис для интернет вещей.

#39

Сообщение Timmy101 » 27.02.2019{, 10:55}

pvorobei писал(а):
27.02.2019{, 10:10}
Timmy101,
По поводу зависания - есть идея, но на это нужно время поковыряться в библиотеке. Здесь Anydy, мыслит в верном направлении, мне кажется, работать нужно примерно так - каждые n сек проверка подключения если нет - вызываем reconnect. Если соединение есть - запускаем cayenne.loop. Это не избавит от мелких подвисаний во время реконекта, но, должно помочь с зависанием наглухо.
Со временем сейчас напряг, как появится - попробую побороть.
Но если у кого-то есть время и желание.
Вот нашёл на вскидку решение аналогичной проблемы с blynk.
https://electronic-crafts.blogspot.com/ ... t.html?m=1
Можно попробовать по аналогии запилить.
А мне кажется нужно действовать вот так (Почти как вы написали )

1) Нужно запихнуть все что касается cayenne в отдельный модуль.
2) Проверять коннект с сервером mydevices раз в 10 сек. Если есть коннект, то запускать модуль cayenne если нет то ждать когда коннект появится и только потом делать реконнет.
3) кастрировать настройку wifi из блока cayenne чтоб он не мешал настрйокам из дерева проекта flprog

Сейчас вроде нашел вариант который надо попробовать:
111.PNG
111.PNG (6.69 КБ) 1501 просмотр
Простейший пример в flprog тупо только cayennе с передачей только одной переменной

Посмотрите что создает компилятор

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

#include <ESP8266WiFi.h>
#include <CayenneMQTTESP8266.h>

extern "C" {
#include "user_interface.h";
}
char username[] = "USERNAME_MQTT" ;
char password[] = "PASS_MQTT" ;
char clientID[] = "APKEY_MQTT" ;
int in_230823610_1;
bool ESP8266ControllerWifiClient_HRD = 0;
bool ESP8266ControllerWifiClient_status = 1;
bool ESP8266ControllerWifiClient_isDHCP = 1;
bool ESP8266ControllerWifiClient_IsNeedReconect = 0;
bool ESP8266ControllerWifiClient_workStatus = 1;
char ESP8266ControllerWifiClient_SSID[40] = "TEST";
char ESP8266ControllerWifiClient_password[40] = "123456789";
IPAddress ESP8266ControllerWifiClient_ip(0, 0, 0, 0);
 IPAddress  ESP8266ControllerWifiClient_dns (0, 0, 0, 1);
 IPAddress  ESP8266ControllerWifiClient_gateway (0, 0, 0, 1);
IPAddress ESP8266ControllerWifiClient_subnet (255, 255, 255, 0);
 uint8_t ESP8266ControllerWifiClient_mac[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
int _gtv1 = 25; //Temp
void setup()
{
WiFi.mode(WIFI_STA);
_esp8266WifiModuleClientReconnect();
Cayenne.begin(username, password, clientID);

}
void loop()
{if(ESP8266ControllerWifiClient_IsNeedReconect) {_esp8266WifiModuleClientReconnect(); ESP8266ControllerWifiClient_IsNeedReconect = 0; }
ESP8266ControllerWifiClient_status = WiFi.status() == WL_CONNECTED;
if (ESP8266ControllerWifiClient_status) { if ( ! ESP8266ControllerWifiClient_HRD) { ESP8266ControllerWifiClient_ip =  WiFi.localIP();
ESP8266ControllerWifiClient_subnet =  WiFi.subnetMask();
ESP8266ControllerWifiClient_gateway =  WiFi.gatewayIP();
ESP8266ControllerWifiClient_dns =  WiFi.dnsIP();
WiFi.macAddress(ESP8266ControllerWifiClient_mac);
ESP8266ControllerWifiClient_HRD = 1;
}} else {ESP8266ControllerWifiClient_HRD = 0;}





//Плата:1
Cayenne.loop();


//Плата:2
in_230823610_1 = _gtv1;
}
CAYENNE_OUT(0)
{
Cayenne.virtualWrite(0, in_230823610_1);




}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
int hexStrToInt(String instring)
{
  byte len = instring.length();
  if  (len == 0) return 0;
  int result = 0;
  for (byte i = 0; i < 8; i++)   // только первые 8 цыфар влезуть в uint32
  {
    char ch = instring[i];
    if (ch == 0) break;
    result <<= 4;
    if (isdigit(ch))
      result = result | (ch - '0');
    else result = result | (ch - 'A' + 10);
  }
  return result;
}
 void _esp8266WifiModuleClientReconnect()
{
 if( _checkMacAddres(ESP8266ControllerWifiClient_mac)) {  wifi_set_macaddr(0, const_cast<uint8*>(ESP8266ControllerWifiClient_mac));}
if( ESP8266ControllerWifiClient_isDHCP) { WiFi.config(0U, 0U, 0U, 0U, 0U); } else { 
WiFi.config(ESP8266ControllerWifiClient_ip, ESP8266ControllerWifiClient_gateway, ESP8266ControllerWifiClient_subnet, ESP8266ControllerWifiClient_dns , ESP8266ControllerWifiClient_dns );
}
 WiFi.begin(ESP8266ControllerWifiClient_SSID, ESP8266ControllerWifiClient_password);
}
bool _checkMacAddres(byte array[])
{
  bool result = 0;
  for (byte i = 0; i < 6; i++)
  {
    if (array[i] == 255) {
      return 0;
    }
    if (array[i] > 0 ) {
      result = 1;
    }
  }
  return result;
}
Так вот моими тестами выяснилось, что проблема кроется в блоках передачи / приема данных.
Данные блоки при добавлении их в проект создают указанные функции с соответсвующими именами каналов.

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

CAYENNE_OUT(0)
{
Cayenne.virtualWrite(0, in_230823610_1);




}
Причем если обратите внимание, данные функции сидят не в цикле void loop().
Как они вызываются и кто их вызывает мне пока неизвестно...

Так давайте в эту функцию cayenne out передавать параметр Enable, если 1 - выполнять, 0 - break из функции. Чтобы прошивка из функции выходила, так как она насколько я понял зацикливается именно в ней.

Кто сможет синтаксис поправить? Сам на работе только если вечером...

Отправлено спустя 18 минут 9 секунд:
А если того проще. Есть у кого возможность проверить. Если создать переменную ENABLE - признак доступа в инет. Потом руками уже в IDE прописать в блоках передачи:

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

CAYENNE_OUT(0)
{
 if (ENABLE=true){Cayenne.virtualWrite(0, in_230823610_1);}
}
Отправлено спустя 4 минуты 45 секунд:
При этом если сделать это же самое "по принципу" в условиях платы. То как это бы поуму б было, то посмотрите как компилирует код Flprog
переменная gtv2 = Читать как Enable.

Компилятор все делает правильно, он вставляет условие на выполнение платы, но прикол заключается в том, что блоки передачи/прием данных находятся ВНЕ цикла void loop и поэтому это все работает некорректно. Необходимо условие выполнения платы по условию запихивать внутрь функций передачи. А еще лучше - на вызов самой функции, но кто ее вызывает я не нашел....

Но это предположение. Надо проверять. Опять же это решает только вопрос работы основной прошивке в момент пропадания интренета. Но остается вопрос реконнекта.... хотя возможно что решив этот вопрос реконнект шаттно будет работать, ибо железка уже не будет зациклена... кто может проверить?


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

/Плата:2
if (_gtv2 == 1) {
in_230823610_1 = _gtv1;
}
CAYENNE_OUT(0)
{
Cayenne.virtualWrite(0, in_230823610_1);
}
Отправлено спустя 11 часов 39 минут 15 секунд:
Ну что ребятушки!!! Это фигня помогла!!! Если ручками вписывать условие! Единственное, не стартует при отсутствии интернета, но это мне нужно проверить, возможно это у меня из-за этапности....а так работает) Железка не виснет)

Отправлено спустя 3 минуты :
И точка доступа заработала!!! Юхху! В общем лекарство действенное!!! Осталось победить старт без интернета!

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

Cayenne. Сервис для интернет вещей.

#40

Сообщение diman27 » 22.03.2019{, 15:52}

Timmy101, удалось победить старт без интернета?

Ответить

Вернуться в «Коммуникация и связь»