Делаем “устрашающе умный” (с) модуль из TOMZN TOB9-VAP. Реле всего.

2 года назад заказал “wifi-автомат” от TOMZN – TOB9-VAP. Доехало, подключил, поигрался. Работает. Даже добавил интеграцию с Tuya в Home Assistant. Модуль разобрал поисследовать, с тех пор так и лежал разобранный без дела, да и привязка к сторонним сервисам меня не особо радовала. Внутри – небольшая платка с БП, измерителем на базе BL0942 и модулем CBU на BK7231N. Уже не помню, была ли поддержка таких контроллеров в конце 2023-го года, да и опыта было поменьше, чтобы легко прошить такое:

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

Читать далее Делаем “устрашающе умный” (с) модуль из TOMZN TOB9-VAP. Реле всего.

Доехали mini 360 с Aliexpress

Закину в блог с мессенджера для истории.

Сегодня доехали mini 360. В общем, лепят их на самых разных чипах под одной и той же маркой. Причем, у чипов отличаются параметры, так что надо быть внимательнее. Те, что были на mp2307 - они до 23В - т.е., можно с ноутбучной зарядки питать. А вот эти - до 18. Тут уже облом.

И ток до 2А против 3 у старых.

Order date: Aug 14, 2025. Получил 27 августа 2025.

Home Assistant, уведомления и логика автоматизаций

Еще один баг, на этот раз со стороны Home Assistant. В последнее время решил хоть для чего-то начать использовать купленный на Али пару лет назад планшет Cubot TAB 20. Накатил туда Android-приложение Home Assistant, поставил его вместо ланчера (удобно, кстати, сделали – такой себе kiosk-mode из коробки), стоит теперь постоянно включенный. Для нескольких существующих автоматизаций решил сделать уведомления – пусть планшет подает звук, если кто-то звонит в ворота или если закончилась стирка. И поначалу вроде даже работало, но…

Сегодня заметил, что логика “звонка в ворота” сломана. Стоит сказать, что у меня на звонок стоит уведомление в джаббер, а дальше идет минутная пауза – т.е., не важно, как часто гость жмет кнопку, сообщения я буду получать лишь раз в минуту. Сейчас между сообщением в jabber и паузой добавилось еще уведомление на планшет. И – пауза перестала работать. При этом у меня на планшете нет никаких уведомлений, зато сообщения в джаббер могут идти как угодно часто. При попытке запуска уведомления на планшет вручную (в редакторе автоматизации) ничего не происходит. В другом случае (в уведомлении про стирку) получил сообщение, что устройство не подключено к локальному пуш-сервису (или как-то так). Так или иначе, проблема с одним “блоком” в автоматизации приводила к ее “вылету” и до паузы дело просто не доходило – появлялась возможность повторного запуска процесса целиком.

HA у меня не самый новый – 2024-го года, может в более свежем что-то и пофиксили, но проверить пока не могу.

esphome 2025.10.0 ломает связь с HA

Не было печали – апдейтов накачали.

Поставил свежий esphome – при прошивке девайсов (в моем случае на базе esp8266) при подключении к Home Assistant получаем

[D][api:160]: Accept 192.168.1.111
[D][api.connection:1383]: Home Assistant (192.168.1.111) connected
[W][api.connection:1880]: Home Assistant (192.168.1.111): Reading failed CONNECTION_CLOSED errno=11

Даже если удалить / добавить девайс со стороны HA – не помогает. Сам девайс видится (передобавить его можно), но при этом список объектов не передается. При этом в веб-интерфейсе устройства все в порядке.

Решается откатом на прошлую версию и прошивкой девайса с этой версии:

pip install esphome==2025.9.3

Со стороны HA ничего менять и передобавлять не надо.

Продолжаем наблюдение.

lm-sensors и Asrock A520M-ITX/ac

В последние несколько дней навожу порядки на “большом” домашнем сервере:

  • Обновил domU с сервером статистики. На самом деле – раскатал новую систему и мигрировал данные, так как пришлось бы последовательно апгрейдить Debian 9 -> Debian 13. Реально, но в чистовой установке будет меньше мусора, да и Nagios за это время сменил мажорную версию и простого апдейта не получилось бы.
  • После чего подобавлял кое-где munin-node и мониторинг хостов в Nagios’е: наконец-то убрал заглушку “return-ok” в мониторинге хоста и теперь карта красиво подсвечивает неработающие “ветки”, а также получаю меньше писем, если отвалился корневой узел.

Глаз зацепился в том числе и за подсвеченный красным раздел sensors в munin’е. Честно говоря, никогда не обращал внимания на ALERT’ы в выводе sensors, что-то показывает – и ладно.

Во-первых, поисключал явно нерабочее. Помогла эта ссылка. Дальше – больше: в ряде сенсоров (прежде всего – напряжения) были не прописаны минимальные и максимальные значения (либо было что-то неадекватное) – например, даже при корректном значении измерителя линии 3.3В в минимальных и максимальных значениях стоял ноль и датчик выдавал ALERT. В итоге чуть расширил свой кастомный конфиг для lm-sensors/etc/sensors.d/local.conf. В целом, синтаксис оказался достаточно простым: описываем секцию, обозначая чип или маской, или точным именем, дальше описываем то, что хотим сделать с опциями отдельных сенсоров, которые можно посмотреть по sensors -u.

/etc/sensors.d/local.conf

# https://superuser.com/questions/1828051/how-to-exclude-sensors-from-output
chip "nct6792-*"
        ignore  temp1
        ignore  temp4
        ignore  temp5
        ignore  temp6
        ignore  temp8
        ignore  temp9
        ignore  temp10
        ignore  in1
        ignore  in4
        ignore  in5
        ignore  in14

        set temp3_max 75
        set temp3_max_hyst 70


# +/- 5% для линий, которые на 3,3В
        set in2_min 3.3 * 0.95
        set in2_max 3.3 * 1.05
        set in3_min 3.3 * 0.95
        set in3_max 3.3 * 1.05
        set in7_min 3.3 * 0.95
        set in7_max 3.3 * 1.05
        set in8_min 3.3 * 0.95
        set in8_max 3.3 * 1.05

# Что-то непонятное. Задал диапазон или 0-1В, или 1-2В.
        set in9_min 1
        set in9_max 2
        set in12_min 1
        set in12_max 2
        set in13_min 1
        set in13_max 2
        set in10_min 0
        set in10_max 1
        set in11_min 0
        set in11_max 1
        set in6_min 0
        set in6_max 1


# Пара SSD. Адрес может смениться, если менять слоты
chip "nvme-pci-0b00"
        ignore  temp3
        set temp1_min 0

chip "nvme-pci-0c00"
        set temp1_min 0
        set temp2_max 100
        set temp2_min 0
        set temp3_max 100
        set temp3_min 0

[свернуть]

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

Еще одна полезная команда – sensors -s от рута, чтобы применить изменения в конфиге.

Накрылся очередной SSD от Kingspec

Накупил в конце 2023-го / начале 2024-го несколько SSD от Kingspec – сначала вторым для ноута, потом еще несколько для различных целей. Дешевые ж – на тот момент.

На сейчас – в ноуте иногда отваливается до перезагрузки, но пока живет. Терабайтник mini SATA, поставленный в плеер (т.е., крайне редкая запись и немногие чтения) накрылся некоторое время назад, остался без плеера.

Сейчас пришел черед мелкого диска на 256 ГБ, поставленный в малом сервере в пару с диском, шедшим с HP 820. Куплен был 13-го февраля 2024-го – т.е., хватило на полтора года. Сначала отвалился до перезагрузки, потом пропал насовсем. Купил замену на “Розетке” на 512 ГБ – объем про запас, смысл брать снова на 256? А в целом, цены на 256 локально сейчас дешевле, чем на Али “тогда”.

Сохранил SMART на тот момент, когда диск еще опознавался:

SMART

root@melissa:/home/rain# smartctl -a /dev/nvme1n1
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.1.0-39-amd64] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number: XF-256 2280
Serial Number: 0009556000221
Firmware Version: 0629479F
PCI Vendor ID: 0xfe19
PCI Vendor Subsystem ID: 0x1d89
IEEE OUI Identifier: 0x000000
Total NVM Capacity: 250 059 350 016 [250 GB]
Unallocated NVM Capacity: 0
Controller ID: 0
NVMe Version: 1.4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 250 059 350 016 [250 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 4f0000 000023c1ab
Local Time is: Tue Sep 23 10:33:27 2025 UTC
Firmware Updates (0x02): 1 Slot
Optional Admin Commands (0x0007): Security Format Frmw_DL
Optional NVM Commands (0x0016): Wr_Unc DS_Mngmt Sav/Sel_Feat
Log Page Attributes (0x02): Cmd_Eff_Lg
Maximum Data Transfer Size: 64 Pages
Warning Comp. Temp. Threshold: 100 Celsius
Critical Comp. Temp. Threshold: 110 Celsius

Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 4.00W – – 0 0 0 0 1 1
1 + 4.00W – – 1 1 1 1 10 10
2 + 4.00W – – 2 2 2 2 50 50
3 – 0.1000W – – 3 3 3 3 10000 5000
4 – 0.0050W – – 4 4 4 4 20000 125000

Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 35 Celsius
Available Spare: 83%
Available Spare Threshold: 10%
Percentage Used: 223%
Data Units Read: 12 537 201 [6,41 TB]
Data Units Written: 22 550 782 [11,5 TB]
Host Read Commands: 85 562 699
Host Write Commands: 586 078 813
Controller Busy Time: 29 138
Power Cycles: 19
Power On Hours: 13 721
Unsafe Shutdowns: 11
Media and Data Integrity Errors: 23 534
Error Information Log Entries: 171
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 45 Celsius
Temperature Sensor 2: 35 Celsius

Error Information (NVMe Log 0x01, 4 of 4 entries)
Num ErrCount SQId CmdId Status PELoc LBA NSID VS
0 171 2 0x90ed 0x2281 – 2465024 1 –
1 170 2 0x80ed 0x2281 – 2465024 1 –
2 169 2 0x90f8 0x2281 – 11612896 1 –
3 168 2 0x80f8 0x2281 – 11612896 1 –

[свернуть]

Примечательно “Percentage Used: 223%”. У “Тошибы”, стоявшей в паре (которая до того была в ноуте) – только 26%.

На сейчас из живых Kingspec’ов остался только терабайтник в USB-кармане, который пока не использовал.

Несчастливые они какие-то.

ping и код завершения процесса

Давно уже использую в скрипте, рулящем маршрутами на несколько ISP, проверку доступности канала через ping несколькими пакетами на 8.8.8.8. Основной канал частенько переподключался без видимых на то причин. При этом пускал отдельно свой ping – там потерь пакетов вообще не было. Дошли руки подебажить. Если из 5 проверочных пингов пролазят только 2 – то ping -q отдает false. При 3 нормально. Вероятно, граница проходит по половине заданного числа попыток. В man’е вроде ничего на этот счет.

Переделал логику; теперь канал считается мертвым при полной потере пакетов на интерфейсе. Пока полет нормальный.

Пара малогабаритных БП с APFC с Али

По мотивам обзора на Mysku обзавелся парой симпатичных БП с APFC. Вышло около 22$ за штуку.

Дублирую сюда то, что писал на Mysku в комментариях:

В 12В стоят NCEP40T11 с TEA1995. В 48В внизу с отдельной термопрокладкой стоят 4 MBRD20150CT (смотрел один), по 2 впараллель.

Как резюме обсуждения – 2 отдельно закрепленных элемента могут быть транзисторами или диодами (надо смотреть обозначение на плате). Если транзисторы – там синхронный выпрямитель и снизу есть еще микросхема.  При этом в одном и том же БП (в данном случае на 12В) может быть как вариант с синхронным выпрямителем (мой случай), так и с простыми диодами (в обзоре).

Если отдельных элементов нет (как в 48В у меня) – диоды (всегда ли?) находятся с нижней стороны платы.

Косяк парсинга у apt-mirror

А может и не совсем косяк, но надо быть внимательнее.

Решил миррорить на NAS’е некоторые зеркала для Debian. В какой-то момент закинул в mirror.list строки вида

deb https://deb.debian.org/debian/ trixie main contrib non-free # Debian 13

При запуске утилита ломанулась качать вообще все – как для других архитектур, так и html’ки; каталог skel раздулся совсем уж неприлично. Не сразу нашел, что виной символ # – тот не обрабатывался как комментарий, а как какой-то wildcard. Убрал “хвосты” – все наладилось.

Заметки обо всем