↑ К новым записям

14 января 2025

Кажется, я пофиксил проблему с подсчетом расхода воды. Заценить можно тут: https://github.com/lan143/navier/commit/7c1c6647900e8ee8b0bde137e6d8f843135dd3c0

Собственно, как я это сделал. Я решил, что зачем изобретать велосипед, пойду да посмотрю как это делает Ватериус. Благо он опенсурс. В коде его конечно черт ногу сломит. Особенно не очень хотелось курить даташит по attiny85 чтобы понять что там происходит (ибо по коду там вовсю всякие регистры процессора юзаются). Поэтому я решил погуглить, вдруг есть какое-то описание его работы на хабре. И таки я нашел, вот эту статью: https://habr.com/ru/articles/418573/ Судя по всему она была написана еще на первых версиях Ватериуса, когда он не поддерживал всякие намуры, и реализация считывания данных с счетчика там просто гениальная: просто каждые 250 мс проверяем состояние пина. Если он притянут к земле, то еще раз проверим через 250 мс (вдруг словили наводку), и если он так же притянут к земле, то считаем что замкнулся геркон в счетчике и плюсуем 10 литров. Блин, почему я до такого не додумался) Я начал изобретать с прерываниями и все такое. Случился короч оверинжиринг.

Дальше читать не стал, идея понятна, осталось реализовать. Я сразу доработал идею, что когда мы плюсуем 10 литров, после блокируемся до следующего поднятия пина на плюс питания. И тут возникает интересная ситуация: если вдруг счетчик остановился в момент когда геркон замкнут, и потом случилась перезагрузка контроллера, то после загрузки флаг блокировки сбросится и мы опять приплюсуем 10 литров лишние. И так будет каждую перезагрузку. Сначала я подумал, что ну чо там, редкое событие. Но, когда отлаживал код, у меня счетчик как раз встал на показании 0 литров, и каждую перезагрузку у меня было +10 литров)) Штош, надо пилить сохранение флага))

Решил сделать по простому: когда записываем показания в кольцевое хранилище, к текущим значениям выставим 1 самый левый бит в 1, в случае если есть блокировка. Затем, когда блокировка была снята, запишем еще раз значение в кольцевое хранилище, но на этот раз без крайнего бита в 1. Далее при загрузке мы можем восстановить информацию о блокировке и не делать +10 литров. Идеально вроде. Это я собственно реализовал, проверил, все отлично работает.

Кто-то может сказать, что, ну мол, ты ж теперь сможешь меньше кубов воды хранить. Но, спешу вас обрадовать - для хранения показаний у меня используется переменные типа uint32, а это 32 бита. Один бит мы отдали под флаг блокировки, получается что для показаний у нас осталось 31 бит. Максимальное значение, что мы сможем туда сохранить, будет 2 в 31ой степени - 1. А это: 2147483647 литров, или 2147483 кубометров. Что-то мне подсказывает, что такого хранилища хватит не только до конца жизни esp32 (в которой флешка сдохнет спустя 100к перезаписей) но и до конца моей тоже.

Так вот, новая версия задеплоена, будет наблюдать. Но я очень надеюсь, что все будет в порядке и этот гештальд можно будет считать закрытым. Ладно, пойду спать, до связи)

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

Еще вот сегодня СКАТ и контроллер повесил на стену в щитке. Сначала сделал разметку и просверлил отверстия. Делать это было конечно не очень удобно, там толком не развернешься, всего 15 см внутри из доступного пространства. Но кое как я это сделал, и с виду как будто ровно.

Затем навесил СКАТ и прикрутил рейку, на рейку поставил контроллер. А за ними потянулся вот такой не красивый клубок проводов и кабелей. Я попытался кое как его распутать (3е фото), но идеальный кабель менеджмент я устрою уже наверное завтра. А все потому, что завтра должен будет прийти кросс бокс, в котором я собственно и сделаю разводку. И думаю с этим щитком на время можно будет закончить.

13 января 2025

Привет. Апдейты по контроллеру, что я вчера запилил.

На скринах, собственно то, ради чего я запилил снятие показаний именно через свой контроллер. На первом то, как Ватериус отправлял данные. На втором - мой контроллер.

Как видно, ватериус отправляет данные 2 раза в сутки. Можно конечно сделать чаще, но, тогда батарейки будут быстро разряжаться. Да и чаще чем раз в час вроде все равно не сделать.

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

Так что вот, теперь у меня есть такая статистика. К сожалению, HA пока не умеет делать разбивку чаще чем по часам. Но, ничего мне не мешает со временем прикрутить графану и строить графики с разбивкой хоть по минутам.

Из проблем: до сих пор есть ложные срабатывания. Сегодня утром откручивал показания чуть назад, чтобы счетчик не опережало. И сейчас тоже это сделал. За пол дня получается убежало вперед на 260 литров, или было 26 ложных срабатываний. Это конечно печально, надо думать как это пофиксить.

Так же я сегодня запилил вытяжку в ванной комнате. Для начала я взял то реле, что было для вытяжку в туалете и прикинул его к корпусу вытяжки. К сожалению, в корпусе оно внутрь не помещается. Так что, раздеваем.

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

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

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

После прочистил от клея отверстия для дюбелей, установил дюбели, установил вытяжку, подключил кабели и собрал. Готово :)

Проверять пока не проверял, кабели в ванной я толком еще не расключал. Планирую это сделать после затирки швов на стенах. Вот тогда и проверим. Но я думаю все будет работать нормально.

Вытяжку то я поставил, правда она встала не совсем ровно. Все дело в том, что я трубу ставил с наклоном в сторону улицу, чтобы конденсат вытекал на улицу а не в дом, поэтому в нижней части вытяжки есть небольшой зазор до стены. Нужно будет потом с ним разобраться. Идея у меня такая: я с улицы дую в трубу феном, как только труба достаточно нагреется и размягчится, жена выставляет вытяжку ровно, при этом слегка изгибая трубу, потом затягивает саморезы. Уклон нарушен не будет и не будет этого противного зазора. Но, это потом. Мне надо лестницу для начала купить. А то снаружи дома труба вытяжки находится где-то в 4-5 метрах от земли.

А поскольку я хочу уже поскорей все розетки и регуляторы в ванной установить и запитать, мне нужно поскорей затереть швы. Подготовкой к этому я и занялся.

Для начала я отмыл окно. А то там все в клею было. Как было до я не сфоткал, но, можете проскролить выше и поискать фотки когда я докладывал плитку. Собственно, с тех пор особо ничего и не поменялось :) Но теперь я все оттер и окно чистенькое.

После занялся зачисткой швов от остатков клея. Успел за сегодня пройтись 2 ряда плитки по кругу, ну и все пока. Дите спать уложили, чищу швы я дремелем, а он шумит, так что дальнейшая очистка швов переносится на завтра.

12 января 2025

Исходники пуляю вот сюда: https://github.com/lan143/navier

Как только закончу основную стадию разработки и установлю, распишу подробней всякие интересные моменты.

Фух, привет еще раз :) Уже запилил контроллер в прод, так что могу рассказать про него.

Вчера меня чет переклинило, и захотелось пописать на плюсах. Решил, что надо сделать-таки уже контроллер в водяной щит. Который будет снимать показания с счетчика (вместо Ватериуса), управлять краном который перекрывает магистраль воды на дом, а так же включать вытяжку. Делать я его решил на Kincony KC868-A2, который купил еще в прошлом году и рассказывал вам про это. Пока он валялся все это время, я несколько раз порывался заиспользовать его в другие места, но, по итогу руки так и не дошли, так что он дождался своего часа :)

Решил что писать буду на своей платформе а не на esphome, программист я или кто :) Поэтому набросал по быстрому своих модулей в пустой проект, решил прошить и посмотреть как оно будет, а не тут то было - питание через usb оказывается не подается, нужно внешнее питание. Свободных блоков питания на 12 вольт под рукой не было, так что я сразу подключил к СКАТу, заодно убедился, что он тоже в порядке. И после этого прошивка пошла.

Начал разбираться с модулем ethernet, что там есть. Разобрался с библиотеками, написал свою обертку которая пробует подключиться по кабелю к сети, если не получилось - тогда wifi. Если и с ним не вышло - ну тогда поднимаем hot spot, что уж делать. После парился с библиотекой discovery под HA. У меня в голове уже давно выработалась примерная архитектура, какой она должна быть. Начал ее реализовывать. Были баги, куча отладки. По итогу вчера уже ночь у меня получилось ставить плату щелкать релюшками через Home Assistant.

А сегодня с утра принялся уже за написание счетчика. Тоже все пошло не сразу, но к обеду что-то кое-как работающее написал (что вам показывал в кружочках выше). Решил, что сейчас по быстрому установлю и пойду другими делами заниматься. Но, внезапно как контроллер оказался в туалете, он начал сходить с ума :) Счетчик считал сам собой без остановки. Я подумал что наводки какие-то, но нет. Щупал осцилографом, все вроде в порядке. А он считает и считает несуществующие литры. По итогу сделал небольшие костыли, которые вроде побороли эти спонтанные срабатывания. Странно конечно, вроде на контроллере все подтяжки есть. Да и осцилографом смотрел, чего-то критичного не увидел. Возможно особенности срабатывания прерываний в esp32. У меня изначально стоял RASING, т.е. поидее прерывание должно было сработать при изменения уровня сигнала на входе с LOW до HIGH. Но похоже, оно срабатывает не просто от 0, а если следующий уровень был чуть больше предыдущего. Хотя странно, на столе все работало норм...

В общем, тут я буду еще наблюдать и думать что с этим делать. А пока вроде текущие костыли хорошо отбрасывают ложные срабатывания.

Расположил я СКАТ и контроллер внизу, провода по классике болтаются посреди ящика. Ну, пока вот так. Мне чтоб на стену повесить надо дин рейку купить, а так же кросс модуль (а то оказалось, что в контроллере для земли ток один пин). Попозже как куплю все недостающее, повешу как-нибудь на стену. Как-нибудь - потому что не представляю как я там буду стену бурить чтобы закрепить это все.

UPD: о, мысля, нужно вешать на газоблочную стену. Ее отверткой можно проковырять, перфоратор не обязательно. Ну а отверткой я как-нибудь там все проковыряю.

А вот так работает автоматизация с вытяжкой.

Пока что алгоритм ее работы очень простой: если включается свет, то включаем вытяжку. После выключения света вытяжка отключится через 10 минут сама. Эту автоматизацию я написал ее во время новогодних праздников, и вытяжку повесил на обычное Zigbee реле. На нем она и работала до сегодняшнего дня. Теперь вытяжку включает мой контроллер. Ну а автоматизация та же осталась, в ней только поменялось что включать.

Более крутой алгоритм работы автоматизации будет в будущем. Пока что для него нужен датчик качества воздуха, которого нет пока.

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

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

Купил 3 стеллажа, уже даже собрал и частично их заполнил. Мало конечно 3 штуки, боюсь все на них не поместится :( Но, хоть так. Надеюсь к следующим выходным уже разгребу весь хлам в подвале и там станет немного приятней находиться.

Еще я тут на днях затащил мониторинг BMS от аккумуляторов в HA. В качестве контроллера - esp32nodemcu, которая у меня типо как тестовой, но уже стала чутка боевой :)

Подключается она к BMS пока через Bluetooth, зашито в ней esphome. Вроде работает, но частенько зависает и отваливается на пару минут. Потом опять включается. Уж не знаю в чем там проблема. Мне сейчас идет кабель с разъемчиком, чтобы подключать по uart (не захотел портить красоту и хочу на разъеме подключать). Так что, как он придет, подключу проводом и посмотрим будут ли еще отвалы или нет. Если будут - штош, придется свою прошивку писать. Не очень хочется ковыряться внутри esphome пытаясь понять из-за чего там виснет :)

ЕСПха пока подключена на usb порт сервера, питается собственно от нее. Как будет подключение по кабелю - питаться будет от BMS. Висит снаружи шкафа на кабеле потому что bluetooth внутрь шкафа не пробивает :)

И пришлось поставить роутер в подвал, потому что до wifi из дома не достает (90-100% потерь пакетов). Так что, поставил временно пока роутер что у нас был на съемной квартире. Его перенастроил в режим точки доступа, так что он просто wifi раздает и ничего более не делает. Надо заказать нормальную точку доступа в подвал, но, потом...

Кстати, тестировал тут на днях аккумуляторы. Отключил питание ИБП и поставил таймер на час. Через час включил обратно. Этот час дом успешно питался от аккумуляторов. И, вроде все в порядке. Напряжение на них не просело (значит емкость реальная), разбаланса тоже не случилось (значит ячейки более-менее норм). Так что вот, к следующей аварии на электросетях вроде как мы готовы 🙂

(на скрине кстати емкость не совсем правильная указана, так что остаточное время работы не 6 часов, а 12 где-то)

И это еще не все :) Полочку вот себе в кабинет собрал.

Купили мы ее в леруа еще в 21ом году, планировал разместить еще на съемной хате в пятигорске. Но, чет не срослось. В итоге она простояла все это время в упаковке в Цимлянске. И вот, наконец-то ее час настал.

Было еще много всякого мелкого. Как например - купил новый паяльный набор себе. Фильтр обратного осмоса еще купили, едет сейчас к нам из китая. И много всякого другого. Но, давайте про это все как-нибудь в другой раз, когда случай подвернется. Устал я уже чет печатать 🙂

2 января 2025

Привет, домучал я таки - теперь youtube полноценно работает и на теликах, и на мобилах, и на ноутах :)

Конечно пришлось знатно промучаться. Местами доходило до запуска ютуба на телике и сниффинга траффика через роутер, а потом его иследование в wireshark. Но, оно того стоило.

Как оказалось, dpi у моего провайдера в целом wireguard протокол не блокирует, но если видит в нем сигнатуры от youtube, то дропает пакеты. Запуск xray + vless порешал проблему. Правда, xray тоже не сразу заработал. Я при переключении траффика видел странные ошибки о udp траффике который не поддерживается, ну и гугл и ютуб в браузере переставали работать. Я вчера просидел до 2х ночи и так и не смог победить.

А сегодня на свежую голову вспомнил, что в браузере то у меня включен quic протокол, который как бы через udp работает. Может в этом дело? Вырубил его, и бамц - все заработало. Пошел проверять на теликах - и там работает.

Такие дела, еще одно свое желание выполнил :)

1 января 2025

Привет, с наступившим. Собственно, вот та самая загадка, старая как прошлогодний хлеб - мы купили еще один телик :)

Но, не простой, а аж целую яндекс станцию. Телик покупался для кухни, поэтому от него не требуется какого-то супер перфоманса или крутой картинки. Но, таки картинка там неплохая. С перфомансом сложней, он бывает подлагивает, но пока в пределах терпимого. Если вдруг в будущем сильно разлагается, то куплю к нему еще одну Apple TV.

Купили именно его, потому что внутри есть можно считать еще одна колонка от яндекса. Т.е. телику можно отдавать всякие команды по умному дому и он вполне их будет выполнять. А та колонка что была на кухне, она переехала в прихожую. Потому что запарился каждый раз орать на весь дом "Алиса мы ушли", чтобы запустилась автоматизация по отключению света и постановки дома на охрану.

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

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

Ну а сегодня я почти весь день занимался тем, что пытался завести умную маршрутизацию на роутер. Тот что микротик. Какая у меня была идея: все что заблокировано у нас властями, или заблокировалось само по каким-то причинам, должно ходить в интернеты через vpn или goodbyedpi, а весь остальной траффик должен идти напрямую. Этим должен рулить роутер. Т.е. со стороны устройств в пределах домашней сети не нужно ничего не включать, оно там само делает го бррр. И я частично уже это реализовал. Сделал импорт BGP префиксов из списков antifilter, запустил контейнер с AmneziaWG на роутере, написал правила по которым создавать маршруты из загруженых префиксов и куда роутить. И, таки оно работает. Правда еще не до конца как нужно :)

Инстаграммы и твиттеры работают без проблем. Ютуб тоже, но, только пока в браузере. А вот с приложениями что-то тухло. На мобилах он отрабатывает через раз. На теликах вообще глухо. Ну, ничего, будем побеждать. Есть у меня теория, что дело в протоколе Wireguard. Все же он достаточно простой и не шифрованный. И в принципе много где уже заблокирован. Но, по какому-то странному стечению обстоятельств он до сих пор работает у моего провайдера. Правда, постоянно рвется соединение. И вот есть у меня теория, что наш DPI пока Wireguard особо не трогает, кроме каких-то паттернов (например, траффик с мобильного приложения ютуба). Потому что я заметил, что в момент когда я открываю ютуб на мобиле, весь vpn отваливается. Так что, буду пробовать завести xray. Его уже не заблокировать. Есть правда минус: он требует знатно ресурсы и нет гарантий что мой роутер его затащит. Но я пока буду надеяться на то, что затащит :)

Вот так оно работает. Внутри дома - впны включать не надо, оно само роутится куда надо. Мобильная прила, как я и говорил, работает через раз, но думаю со временем и ее победю.

Такие вот дела, пойду ковырять как запустить xray на микротике :)

загрузка…