[Модуль] MySensors (mysensor)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль MySensor

Сообщение lanket » Вт дек 05, 2017 11:47 pm

Попробовал выполнить условия ipz и kalina.
Выключил апач чтобы не мешался модуль MySensors работе MYSController.
Использовал bootloader, прошивки от kalina.
Результат почти такойже
СпойлерПоказать

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

....
77123 OTA:FWP:RECV B=0001
77126 OTA:FRQ:FW REQ,T=0017,V=0003,B=0000
77132 TSF:MSG:SEND,4-4-0-0,s=255,c=4,t=2,pt=6,l=6,sg=0,ft=0,st=OK:170003000000
77161 TSF:MSG:READ,0-0-4,s=255,c=4,t=3,pt=6,l=22,sg=0:1700030000000C94DA030C94E11D0C94BA1D0C940204
77170 OTA:FWP:RECV B=0000
77173 OTA:FWP:FW END
78254 OTA:CRC:B=04D0,C=0531,F=947A
78257 !OTA:FWP:CRC FAIL
почемуто CRC стал другим. но все равно ошибка что не совпадает.
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
kalina
Сообщения: 180
Зарегистрирован: Пн фев 22, 2016 11:01 pm
Благодарил (а): 29 раз
Поблагодарили: 90 раз

Re: Модуль MySensor

Сообщение kalina » Ср дек 06, 2017 4:45 pm

lanket писал(а):Что делать ? Куда рыть?
Попробуйте сделать следующее - в файле c:\Users\_YourUserName_\Documents\Arduino\libraries\MySensors\drivers\SPIFlash\SPIFlash.h
дефайн

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

#define SPIFLASH_BLOCKERASE_32K   0x52        //!< erase one 32K block of flash     
замените на

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

#define SPIFLASH_BLOCKERASE_32K   0xD8        //!< erase one 32K block of flash     
Перекомпилируйте, зашейте и попробуйте...
Вот моя переписка с одним из участников mysensors(он пишет про то что память не очищается и из-за этого ошибка CRC ):
ОтветПоказать
"Cleaning OTA flash is made into "two places":

1) In bootloader: when bootloader detects waiting a new firmware to install (wrote there by OTA), burns it into atmel memory and clears external flash (and here your patch to bootloader IS working fine and flash is cleared correctly)

2) In Mysensors core code (MySensors/core/MyOTAFirmwareUpdate.cpp function bool firmwareOTAUpdateProcess(void) ) when start of OTA is detected. Unfortunately because of problem with overriding definition of SPIFLASH_BLOCKERASE function _flash.blockErase32K(0) is not working (bad command send to chip). In most cases flash is empty after successful previous OTA upgrade (cleaned by bootloader) BUT if for some reasons (e.x. problems with network) OTA doesn't finish with success new firmware is not marked as "ready for flash by bootloader" and remains in flash. Another OTA retry ends up with CRC error because flash is NOT empty and Mysensors code is unable to clean memory before flashing new image. Device becomes "unwritable by OTA".

In Mysensors sorce codes in file:

MySensors/drivers/SPIFlash/SPIFlash.h

there is definition:

#define SPIFLASH_BLOCKERASE_32K 0x52 //!< erase one 32K block of flash memory

It's NOT possible to override it from the sketch in current stable version of MySensors code.
"
И проверьте еще раз схемотехнику подключения памяти...
За это сообщение автора kalina поблагодарил:
lanket (Ср дек 06, 2017 5:51 pm)
Рейтинг: 1.16%
Raspberry PI3 + образ 3.31 | MDMSGate | Lighting | LightingX2 | Power | Multisensor
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль MySensor

Сообщение lanket » Ср дек 06, 2017 6:06 pm

kalina писал(а):...

И проверьте еще раз схемотехнику подключения памяти...
Спасибо, попробую. Вечером, надеюсь лягу спать довольным от результата. Получается она будет сбрасывать внутренние настройки ноды хранящиеся в eeprom. Жаль, но не критично. А можно как-то в скетче выполнить код перед прошивкой? Для отправки в мажорик настроек для восстановления их после прошивки?
А схема точно правильная, так как проверено раз 10-15. Первая ошибка была на одной из Нод одна нога eeprom не туда была разведена, что приводило к ошибке 'eeprom init error' сразу после получения от гейта сообщения что есть новая прошивка для неё.

Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль MySensor

Сообщение lanket » Чт дек 07, 2017 12:32 am

kalina писал(а):
lanket писал(а):Что делать ? Куда рыть?
Попробуйте сделать следующее - в файле c:\Users\_YourUserName_\Documents\Arduino\libraries\MySensors\drivers\SPIFlash\SPIFlash.h
дефайн

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

#define SPIFLASH_BLOCKERASE_32K   0x52        //!< erase one 32K block of flash       
замените на

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

#define SPIFLASH_BLOCKERASE_32K   0xD8        //!< erase one 32K block of flash       
Перекомпилируйте, зашейте и попробуйте...
Вот моя переписка с одним из участников mysensors(он пишет про то что память не очищается и из-за этого ошибка CRC ):
ОтветПоказать
"Cleaning OTA flash is made into "two places":

1) In bootloader: when bootloader detects waiting a new firmware to install (wrote there by OTA), burns it into atmel memory and clears external flash (and here your patch to bootloader IS working fine and flash is cleared correctly)

2) In Mysensors core code (MySensors/core/MyOTAFirmwareUpdate.cpp function bool firmwareOTAUpdateProcess(void) ) when start of OTA is detected. Unfortunately because of problem with overriding definition of SPIFLASH_BLOCKERASE function _flash.blockErase32K(0) is not working (bad command send to chip). In most cases flash is empty after successful previous OTA upgrade (cleaned by bootloader) BUT if for some reasons (e.x. problems with network) OTA doesn't finish with success new firmware is not marked as "ready for flash by bootloader" and remains in flash. Another OTA retry ends up with CRC error because flash is NOT empty and Mysensors code is unable to clean memory before flashing new image. Device becomes "unwritable by OTA".

In Mysensors sorce codes in file:

MySensors/drivers/SPIFlash/SPIFlash.h

there is definition:

#define SPIFLASH_BLOCKERASE_32K 0x52 //!< erase one 32K block of flash memory

It's NOT possible to override it from the sketch in current stable version of MySensors code.
"
И проверьте еще раз схемотехнику подключения памяти...
АААААААААААААААААААА!!!!!!!!!!!!!!!!
Я щас с ума сойду :lol: :roll: :lol: :roll:

Теперь CRC сходиться но все равно не обновляется.
Сначало на Ваших прошивках после заливки перегружалась нода и лог засоряла uart таким бредом:
СпойлерПоказать

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

....
// ниже конец заливки по которой я так понял CRC наконец то сошёлся
197588 OTA:FRQ:FW REQ,T=0400,V=0001,B=0000
197595 TSF:MSG:SEND,4-4-0-0,s=255,c=4,t=2,pt=6,l=6,sg=0,ft=0,st=OK:000401000000
197737 TSF:MSG:READ,0-0-4,s=0,c=4,t=3,pt=6,l=22,sg=0:0004010000000C94DA030C94E11D0C94BA1D0C940204
197746 OTA:FWP:RECV B=0000
197749 OTA:FWP:FW END
198824 OTA:CRC:B=04CA,C=7A51,F=7A51
198828 OTA:FWP:CRC OK
// Ниже 6 строчек в бесконечном цикле крутились после автоматической перезагрузки ноды после заливки скетча
0 MCO:BGN:INIT REPEATER,CP=RNORAA-,VER=2.1.1
4 TSM:INIT
4 TSF:WUR:MS=0
11 TSM:INIT:TSP OK
13 TSM:INIT:STATID=4
15 TSF:SID:O⸮0 MCO:BGN:INIT REPEATER,CP=RNORAA-,VER=2.1.1
Подумал я немного и пришел к выводу что Ваш скетч может заточен под какой то репитор который она не может найти, правда почему она не хочет его искать при железной перезагрузки. Помоему она в такойже лууууууп переходит в случае если ее попросить перезагрузиться со стороны гейта.
А вот что получалось с моим скетчем:
СпойлерПоказать

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

....
// конец заливки
127732 OTA:FWP:RECV B=0001
127733 OTA:FRQ:FW REQ,T=0400,V=0001,B=0000
127736 TSF:MSG:SEND,4-4-0-0,s=255,c=4,t=2,pt=6,l=6,sg=0,ft=0,st=OK:000401000000
127808 TSF:MSG:READ,0-0-4,s=0,c=4,t=3,pt=6,l=22,sg=0:0004010000000C943F030C940D1E0C94E61D0C946703
127812 OTA:FWP:RECV B=0000
127814 OTA:FWP:FW END
128500 OTA:CRC:B=061E,C=2C68,F=2C68

// Ниже видим радосную новость что CRC сошлось
128502 OTA:FWP:CRC OK

// Ниже лог uart ноды после автоматической перезагрузки по случаю успешной загрузки прошивки
0 MCO:BGN:INIT NODE,CP=RNONAA-,VER=2.1.1
3 MCO:BGN:BFR
4 TSM:INIT
4 TSF:WUR:MS=0
5 TSM:INIT:TSP OK
6 TSF:SID:OK,ID=4
7 TSM:FPAR
25 TSF:MSG:SEND,4-4-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
414 TSF:MSG:READ,0-0-4,s=255,c=3,t=8,pt=1,l=1,sg=0:0
416 TSF:MSG:FPAR OK,ID=0,D=1
2029 TSM:FPAR:OK
2029 TSM:ID
2030 TSM:ID:OK
2031 TSM:UPL
2032 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
2035 TSF:MSG:READ,0-0-4,s=255,c=3,t=25,pt=1,l=1,sg=0:1
2038 TSF:MSG:PONG RECV,HP=1
2039 TSM:UPL:OK
2040 TSM:READY:ID=4,PAR=0,DIS=1
2042 TSF:MSG:SEND,4-4-0-0,s=255,c=4,t=0,pt=6,l=10,sg=0,ft=0,st=OK:000401001E06682C0300
2048 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
2052 TSF:MSG:READ,0-0-4,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
2056 TSF:MSG:SEND,4-4-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.1.1
2060 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
2440 TSF:MSG:READ,0-0-4,s=0,c=4,t=1,pt=6,l=8,sg=0:000401001E06682C

// Судя по надписи ниже почемуто плюём на апдейт. Парсер опять в недоумении от неизвеной строчки. Классный парсер ;(
2443 OTA:FWP:UPDATE SKIPPED
2494 TSF:MSG:READ,0-0-4,s=255,c=3,t=6,pt=0,l=1,sg=0:M
2497 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=11,pt=0,l=8,sg=0,ft=0,st=OK:Akvarium

// Ниже видим что версия прошивки осталась старой. А должна была отрапортавать 1.2.12
2502 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=12,pt=0,l=6,sg=0,ft=0,st=OK:1.2.11
2506 TSF:MSG:SEND,4-4-0-0,s=2,c=0,t=26,pt=0,l=15,sg=0,ft=0,st=OK:RGB for trottle
2511 TSF:MSG:SEND,4-4-0-0,s=1,c=0,t=26,pt=0,l=12,sg=0,ft=0,st=OK:RGB for fish
2515 TSF:MSG:SEND,4-4-0-0,s=3,c=0,t=4,pt=0,l=13,sg=0,ft=0,st=OK:Blue for fish
2521 TSF:MSG:SEND,4-4-0-0,s=4,c=0,t=4,pt=0,l=14,sg=0,ft=0,st=OK:UFO for trotle
2524 MCO:REG:REQ
2526 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
2529 TSF:MSG:READ,0-0-4,s=255,c=3,t=27,pt=1,l=1,sg=0:1
2532 MCO:PIM:NODE REG=1
2533 MCO:BGN:STP
2534 MCO:BGN:INIT OK,TSP=1
23585 TSF:MSG:READ,0-0-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
23587 TSF:MSG:BC
23603 TSF:MSG:SEND,4-4-0-0,s=255,c=3,t=21,pt=1,l=1,sg=0,ft=0,st=OK:0
Последующие загрузки видно тоже сообщение "OTA:FWP:UPDATE SKIPPED" делаю вывод что нода думает что прошивка и так последняя. Хотя рапартует предыдущую версию.


Сделал еще выше версию 1.2.13 в ней помимо просто измененной версии прошивки отключил шифрование. Кстати где узнать что оно вообще работает?

Результат тот же: CRC OK, Версия старая.

Кстати иногда проскакивает CRC Failed. Но было всего 2 раза из 20 эксперементов, но факт что было почемуто.
Да и MYSCommander обновляет заметно быстрее. Не засекал но думаю раза в 2 быстрее.

На всякий случай: Вышеописанные в этом посте эксперементы были в модуле можорика.

Уже поздно, пошел смотреть ночные кашмары про CRC и необновляемые версии нод по OTA.
:cry:
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
kalina
Сообщения: 180
Зарегистрирован: Пн фев 22, 2016 11:01 pm
Благодарил (а): 29 раз
Поблагодарили: 90 раз

Re: Модуль MySensor

Сообщение kalina » Пт дек 08, 2017 11:14 am

Наконец-то нам удалось запустить FОТА :) Хочу сделать пару заметок, на которые надо обратить внимание при работе с железом по схемотехнике лайтинга.
1. Бутлоадер берём отсюда. Это модифицированный DualOptiboot.
2. Фьюзы
ФьюзыПоказать
Fuses.jpg
Fuses.jpg (43.85 КБ) 5790 просмотров
3. Делаем патч в библиотеке MySensors - в файле c:\Users\_YourUserName_\Documents\Arduino\libraries\MySensors\drivers\SPIFlash\SPIFlash.h
дефайн

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

#define SPIFLASH_BLOCKERASE_32K   0x52        //!< erase one 32K block of flash           
меняем на

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

#define SPIFLASH_BLOCKERASE_32K   0xD8        //!< erase one 32K block of flash           
4. В рабочий скетч добавляем следующие дефайны:

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

#define MY_OTA_FIRMWARE_FEATURE
#define MY_OTA_FLASH_SS 7
#define M25P40 // Flash type          
5. В Arduino IDE выбираем плату Arduino UNO.
Последний раз редактировалось kalina Сб дек 09, 2017 2:21 pm, всего редактировалось 2 раза.
За это сообщение автора kalina поблагодарил:
lanket (Пт дек 08, 2017 1:05 pm)
Рейтинг: 1.16%
Raspberry PI3 + образ 3.31 | MDMSGate | Lighting | LightingX2 | Power | Multisensor
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль MySensor

Сообщение lanket » Пт дек 08, 2017 1:26 pm

kalina писал(а):...
Моя благодарность не имеет границ. От черепахи с рыбками отдельное спасибо. Будешь в Питере, покатаю по городу, покажу достопримечательности.

Поймал себя на мысли. Учитывая как странно себя вела нода с выключенным апачем. Что будет если повиснит этот апач, или остановиться цикл модуля Mysensors.

Для тех кто не знает. Речь идёт о реализации гейта на основе малины. Т. Е. Прямого подключения nrf к малине.

Вопрос считаю актуально так как видел Вашу с Иваном разработку платы расширения 'гейт mysensors' для малины.

Вечером попробую поэкспериментировать: остановить апач ещё раз, и отдельно остановить цикл mysensors.

Отправлено с моего Redmi Note 4 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: Модуль MySensor

Сообщение lanket » Сб дек 09, 2017 3:02 am

Поэксперментировал. Эффект глючной ноды не повторился.
Мое заключение:
Остановившийся цикл модуля MySensors на поведение ноды не влияет
Остановившийся/зависший апач с Мажориком на поведение ноды не влияет

По всей видимости, если гейт собран на малине с присоединенным к ней NRF , когда прошиваешь ноду по FOTA с помошью MYSController то почемуто после перезагрузки нода сходит с ума до железной перезагрузки.

Глюк отловил про FOTA и Dualoptiboot:
Если залить этот загрузчик а потом прошивку через USBasp то FOTA работать не будет, прошивка заливается но не перепрошивается.
А Если после заливки этого загрузчика залить прошивку через UART то все замечательно работает.

Собственно у меня была сначала проблема с CRC , решение выше в патче либы.
2ая проблема что я заливал прошивку по USBasp наивно полагая что разницы нет.

Надеюсь кому-нибудь пригодиться эта инфа.

UPD: Еще раз спасибо Kalina
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
ahelper
Сообщения: 106
Зарегистрирован: Ср фев 08, 2017 5:04 pm
Благодарил (а): 34 раза
Поблагодарили: 67 раз

Re: Модуль MySensor

Сообщение ahelper » Вс дек 31, 2017 7:56 pm

Подскажите как отключить проговаривание "Значение датчика вышло за порог (вернулось к норме)", ночью. Не могу найти код, где в МД это находится.
Denis_k
Сообщения: 587
Зарегистрирован: Сб мар 19, 2016 7:24 pm
Благодарил (а): 299 раз
Поблагодарили: 27 раз

Re: Модуль MySensor

Сообщение Denis_k » Вт янв 02, 2018 2:16 am

может это сообщение поможет
MD на raspberry pi3
ahelper
Сообщения: 106
Зарегистрирован: Ср фев 08, 2017 5:04 pm
Благодарил (а): 34 раза
Поблагодарили: 67 раз

Re: Модуль MySensor

Сообщение ahelper » Вт янв 02, 2018 6:59 pm

Denis_k писал(а):может это сообщение поможет
Нет, это не то. Переход в ночной режим работает, Алиса ночью молчит. Кроме этого
ahelper писал(а):Подскажите как отключить проговаривание "Значение датчика вышло за порог (вернулось к норме)", ночью. Не могу найти код, где в МД это находится.
Ответить