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

Запоминание чего-либо в на случай потери питания

PeterPK

Active member
В родной прошивке eWeLink есть опция как вести себя реле по восстановлению питания. Там три варианта:
- выкл
- вкл
- последнее состояние

То есть устройство может помнить состояние своих реле до потери питания.
А значит, как факт, устройство может сохранять какие-то переменные во время потери питания.

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

valeraba

Moderator
Команда форума
В прошивке роллет есть запоминание последнего положения роллет. Но там своя логика, которая записывает параметр как можно реже (через одну минуту, после прекращения движения).
В esp8266 нельзя flash постоянно переписывать, её ресурс ограничен 100000 перезаписей. Если переписывать flash раз в секунду, то её хватит только на одни сутки.
 

PeterPK

Active member
В прошивке роллет есть запоминание последнего положения роллет. Но там своя логика, которая записывает параметр как можно реже (через одну минуту, после прекращения движения).
В esp8266 нельзя flash постоянно переписывать, её ресурс ограничен 100000 перезаписей. Если переписывать flash раз в секунду, то её хватит только на одни сутки.
Интересующая меня переменная меняется 2 раза в день и только когда тепло (летом). То есть примерно 200 раз в год. На 500 лет хватит. Но если нет такой опции, то ничего не поделать.

А еще пара дурацких вопросов. Только не ржать.
Параметры - они только для чтения? Устройство не может записать что-то в свои параметры или в чужие?
Параметры то как я понимаю хранятся на сервере.

А в чужие переменные нельзя писать?
 

glory24

Member
Только не ржать.
И не подумаю :)
Параметры - они только для чтения? Устройство не может записать что-то в свои параметры или в чужие?
Параметры то как я понимаю хранятся на сервере.

А в чужие переменные нельзя писать?
Лучше задачу опишите, а мы подумает как ее лучше решить.
Устройство не может записать что-то в свои параметры или в чужие?
Устройство может использовать "чужие" параметры или "чужие" переменные.
Этого, обычно бывает, достаточно.
 

valeraba

Moderator
Команда форума
Интересующая меня переменная меняется 2 раза в день и только когда тепло (летом). То есть примерно 200 раз в год. На 500 лет хватит. Но если нет такой опции, то ничего не поделать.

А еще пара дурацких вопросов. Только не ржать.
Параметры - они только для чтения? Устройство не может записать что-то в свои параметры или в чужие?
Параметры то как я понимаю хранятся на сервере.

А в чужие переменные нельзя писать?
Сервер не принимает никакого участия в логике работы устройств. Сервер отвечает только за коммуникацию, то есть за обмен данными между устройствами и панелями управления. А также сервер сохраняет исторические данные. Таким образом устроено горячее резервирование, при котором устройства могут мгновенно переключаться с облачного сервера на локальный raspberry и наоборот. Устройствам без разницы с каким сервером работать, они его используют только как broker (посредник).
Устройство имеет список именованных "сигналов". Также устройствам доступны все "сигналы" удалённых устройств.
Как правило в моих прошивках, названия "сигналов" носят смысловую нагрузку:
1) Сигналы с названием "Параметры" хранятся в постоянной памяти, но их нельзя записывать из сценария, чтобы не убить flash.
2) Сигналы с названием "Переменные" хранятся в оперативной памяти, поэтому их можно записывать из сценария.

Запись в "Переменные" удалённых устройств из сценария я не разрешаю (это была бы очень запутанная логика).
 

nikolz

Well-known member
В родной прошивке eWeLink есть опция как вести себя реле по восстановлению питания. Там три варианта:
- выкл
- вкл
- последнее состояние

То есть устройство может помнить состояние своих реле до потери питания.
А значит, как факт, устройство может сохранять какие-то переменные во время потери питания.

А что наши Переменные? Они всегда сбрасываются в NaN после восстановления питания или только если прошивка поменялась?
Поскольку я все переменные в своем сценарии на старте иничу в 0, то я на это даже и не обращал внимание.
Но тут возникла необходимость хранить в одной из переменных статус системы (положение клапана), чтобы по потери питания знать что происходило до этого.
Естественно, если менялась прошивка или сценарий, то все переменные должны уходить в NaN, а вот по потери питания как происходит?
когда включаем питание либо оно появилось после пропадания, то ESP всегда начинает исполнять программу с самого начала.
Т е все рассчитывается как в первый раз за исключением настроек для WiFi которые сохраняются во флеш автоматом.
Поэтому сохранять какие-либо значения на следующее включение как правила лишено смысла.
Как Вы полагаете, если питание пропало, то в каком состоянии будет обесточенное Ваше реле?
Да и вся электроника?
 

nikolz

Well-known member
Другое дело - режим сна у ESP
При выходе из него ESP начнет с первой команды. Но вся электроника при этом не выключалась и поэтому важно чтобы
параметры настройки сохранились. Для этого используют RAM в RTC ESP. В нее можно записывать вечно и читается она быстро.
 

PeterPK

Active member
когда включаем питание либо оно появилось после пропадания, то ESP всегда начинает исполнять программу с самого начала.
Т е все рассчитывается как в первый раз за исключением настроек для WiFi которые сохраняются во флеш автоматом.
Поэтому сохранять какие-либо значения на следующее включение как правила лишено смысла.
Чаще всего да. Но есть случаи когда это полезно - именно поэтому такая опция и появилась в настройках eWeLink.

Как Вы полагаете, если питание пропало, то в каком состоянии будет обесточенное Ваше реле?
Да и вся электроника?
Когда питания нет - положение реле неважно, все равно все обесточено.
А вот когда питание появится - в некоторых случаях важно чтобы сценарий знал в какой позе все умерло.
Например положение роллет, ворот или клапана под управлением шагового двигателя.
 

nikolz

Well-known member
Чаще всего да. Но есть случаи когда это полезно - именно поэтому такая опция и появилась в настройках eWeLink.


Когда питания нет - положение реле неважно, все равно все обесточено.
А вот когда питание появится - в некоторых случаях важно чтобы сценарий знал в какой позе все умерло.
Например положение роллет, ворот или клапана под управлением шагового двигателя.
А вот когда питания не было, то Вы ворота закрыли.
А питание появилось и ESP продолжает их закрывать пока Ваш двигатель не сгорит.
Чтобы такого не было ставят обратную связь чтобы не тупо помнить переменную а знать какое на самом деле состояние исполнительных механизмов.
 

PeterPK

Active member
А вот когда питания не было, то Вы ворота закрыли.
А питание появилось и ESP продолжает их закрывать пока Ваш двигатель не сгорит.
Чтобы такого не было ставят обратную связь чтобы не тупо помнить переменную а знать какое на самом деле состояние исполнительных механизмов.
А что вы такой агрессивный? У вас какие-то проблемы? Так лучше ими займитесь, а не хамите старшим в интернетах.

P.S. Обратную связь в моем конкретном случае сделать сложно. Никто клапан при отсутствии питания поворачивать не будет - потому как ручки нет и котел все равно не работает.
 

glory24

Member
А питание появилось и ESP продолжает их закрывать пока Ваш двигатель не сгорит.
На приводе ворот стоят концевики крайних положений, так что сгореть ничего не должно.
Что касается обратной связи, то она в планах есть, только пока еще не реализована.
 
Сверху Снизу