О чудный мир Fermax (часть 2, Wi-Box)
Продолжаем поиск, начатый в предыдущей части «О чудный мир Fermax (часть 1, ADS Citymax monitor)». Посмотрим, нет ли какого-либо готового решения по автоматизации открывания двери в подъезде. Оказывается, Fermax предлагает продукт «Wifi Vds Call Divert Wi-Box». Коробочка 80×80х20 мм подключается непосредственно к плате адаптерa терминала при помощи обычной отвертки, питается от сети же видеодомофона. Есть готовое приложение для iOS и Android, и при звонке в дверь отправляет пуш уведомление (iOS) или звонок (Android), хранит лог событий и фото позвонивших. Выглядит как идеальное решение, стоит сравнительно дорого ((100 EUR + доставка) + 25% налог) и есть один нюанс, Wi-Box предназначен для технологии VDS, а терминал у меня ADS.
Изучив доступную документацию (ее немного, а технических деталей еще меньше) и осознав что ADS и VDS пришли на смену 4+N, технологии очень похожи, обе поддерживают до 199 квартир. Так и не поняв различия я наткнулся на пост амиго Карлоса на сайте Nuki Developer. Nuki Opener к слову универсальное решение для разных типов домофонных систем, но оно не поддерживает видео. Я решил опробовать Fermax Wi-Box, т.к. Карлос пишет что удачно подключил Wi-Box к терминалу Citymax ADS 2447. Там был один нюанс с программированием VDS адреса (адрес терминала), но в процессе телефонного общения кто-то из Fermax порекомендовал ему в режиме программирования нажать кнопку вызова на центральной панели входа в подъезд, а не на самом терминале как описано в документации.
Отлично, заказываем Wi-Box на eBay, опускаем приключения с взиманием с меня два раза налога, отправки б/у устройства вместо нового и добровольного возврата мне за это большей части суммы. Подключаем Wi-Box в соответствии с документацией, странно, что маркировка видео сигналов отличается на адаптере терминала, но разберемся позже. Устройство доступно по wifi и в облаке, но получить VDS адрес как указано в документации и как рекомендовал Fermax Карлосу не получается. Пишем в поддержку Fermax, объясняем ситуацию, просим уточнить какие есть еще варианты по добавлению VDS адреса на Wi-Box. Поддержка высылает ссылки на уже изученную и бесполезную документацию на сайте Fermax и желает великолепной «транкильо» и наилучшей «маньяна» из солнечной Валенсии.
Не повод унывать, Wi-Box достаточно изучен и как получить доступ к консоли через UART и многое другое описано David Girón на Github. Окунемся во внутренний мир Fermax Wi-Box.
Fermax Wi-Box
Плата — передняя часть
Плата — обратная часть
Подключение к UART
Подключаемся к консоли через UART (115200 8N1), подаем питание на Wi-Box и наслаждаемся логом инициализации платы и загрузки Linux. Если после инициализации мы не видим лога, то нажимаем Enter, чтобы остановить autoboot и просим U-boot использовать правильный последовательный порт.
setenv consoledev 'ttySGK0'
saveenv
reset
После загрузки запускается основная программа под названием Sofia, зайдем в нее используя стандартные имя и пароль: admin/admin и осмотримся.
Интерфейс Sofia
user name:admin
password:*****
19:50:38|trace login(admin, ******, Console, 0)
CUser::login admin
admin$help
-------------------------------------------------------------------
access Print AccesssCtrl info
af af [inner_command] [parameter], Example: af step 64
audio audio: cmd [mod], mod = 0 line, 1 mic
audiogetg audiogetg [line][mic] , Example: audiogetg line
audiogetv audiogetv [line][mic] , Example: audiogetv line
audiosetg audiosetg [line][mic] {num}, Example: audiosetg line 1
audiosetv audiosetv [line][mic] {num} {num} {num} {num}, Example: audiosetv line 1 2 3 4
auth auth control !
bitrate Show the bit rate!
blc BLC {1...} [{1~15}], Example: BLC 6
cam Camera operation!
cpu Dump the CPU usage!
defog defog: cmd [mod], mod = 0 off, 1 auto, 2 manual
dn test for day/night parameter:set day/night mode
ds show day/night smartlight and wdr parameter:ds 0 or ds 1 or ds 2
dt test for day/night smartlight and wdr parameter:
eg:dt 1 1->set day wdr and smart light on
ef test for day/night effect parameter
encode to encode!
exit sofia OnExit !
focus Get Focus Info: cmd
graphic graphic debug !
help Dump this help message!
isp isp [inner_command] [parameter], Example: isp gain 100 100
mailsnap mailsnap
motor motor up/down/left/right !
nas Tty mount nas: cmd nasid
net Net set!
net6 IPV6 Net set!
netUser useronline!
packet Dump packet infomation or packet!
part Partition ide !
qrmake QR Make: cmd [QR strings] [fullpath name]
quit Logout myself!
qvprint qvprint: cmd [mod] [loglevel]
re reconfig all
reboot Reboot the system!
rotate rotate the video!(0~3)
shell Entering system shell!
smartir smartir {1...} [{1~15}], Example: smartir 6
smartlight smartlight {1/0} [{10~999}], Example: smartlight 1
snap to snap!
thread Dump all thread!
time Time operating!
timer Dump all timer!
trans Trans Printf!
vionoff on(1) off(0)!
-------------------------------------------------------------------
To see details, please use `cmd -h`.
Test memory:help num(num: 1-10,(M)) example: help 9
Выйдем в shell введя одноименную команду, и мы имеем root доступ на устройстве. Запустим «telnetd &», узнаем с помощью «ifconfig» или «ip address» текущий адрес на wlan0 интерфейсе, и зайдем на Wi-Box телнетом (root/qv2008). Сделаем бэкап всех разделов Flash диска.
Backup
Flash размером 16MB содержит следующие разделы
dev: size erasesize name
mtd0: 00040000 00010000 "uboot"
mtd1: 00010000 00010000 "env"
mtd2: 001e0000 00010000 "kernel"
mtd3: 00230000 00010000 "rootfs"
mtd4: 00b10000 00010000 "usr"
mtd5: 00080000 00010000 "mnt"
mtd6: 00010000 00010000 "cfg"
Запустим на локальном компьютере:
for I in $(seq 0 6); do
ncat -vlp 8888 > mtd${I}
done
На Fermax Wi-Box
YOUR_COMPUTER_IP=192.168.1.100
for I in $(seq 0 6); do
dd if=/dev/mtd${I} bs=4096 | nc $YOUR_COMPUTER_IP 8888
sleep 1
done
Теперь в случае проблем мы сможем восстановить разделы в рабочее состояние и смело приступаем к экспериментам. На обратной стороне платы мы видим процессор QT400, это ничто иное как широко известный GOKE GK7102S, используемый в IP камерах. Сразу оговорюсь, что OpenIPC мы ставить не будем. Во-первых надпись на сайте OpenIPC.org относительно GK7102S гласит «There is no ready solution yet», во вторых это не совсем камера.
Мы знаем, что Sofia общается с внешним миром не напрямую, и на плате присутствует микроконтроллер N76E003AT20 — Nuvoton 1T 8051-based Microcontroller. Вот он то и коммуницирует с центральной панелью через шину VDS, и получает команды от Sofia через последовательный порт /dev/ttySGK1. Тут весь список команд и алгоритм расчета контрольной суммы.
Попробуем для начала отправить команду открыть дверь
echo -e '\xFB\x12\x01\x1E' > /dev/ttySGK1
И вдруг, дверь отперта!
Подключим наш сниффер, который мы соорудили в первой части и посмотрим, что же отправляет Wi-Box. Оказалось, он шлет команду 0×2BF0 (0×2B — функция открыть дверь и 0xF0 (240) — адрес несуществующего терминала, у ADS/VDS есть ограничение на 199 номеров апартаментов).
Нам необходимо добиться того, чтобы Wi-Box использовал адрес нашего терминала, тогда при вызове с центральной панели мы скорее всего получим вызов или алерт в приложении.
Sofia отображает отладочные сообщения во время загрузки, в том числе общение по UART с микроконтроллером, и одно из них выглядит заманчиво FB 10 F0 0B, что соответствует описанию «Initialize the hardware? Run at Sofia start» и адресу, который микроконтроллер использует в данный момент. Там же мы находим другую любопытную команду SAVE_ADDR. Давайте попробуем подставить адрес нашего терминала, отправить команду вручную и перезагрузить после этого Wi-Box
echo -e '\xFB\x10\x04\x1F' > /dev/ttySGK1
и о чудо, мы-таки записали наш VDS адрес, и мы получаем алерт если кто-то звонит в апартаменты с центральной панели. Но что там с видео.
Я знаю, что если видео сигнал не поступает от камеры, как минимум мы должны видеть синий экран с датой, временем и названием камеры, но у меня просто черный экран в приложении. Есть ощущение, что видео просто отключено, возможно Sofia инициализирует подсистему видеозахвата после успешного получения VDS адреса, но мы тут немого считили. После изучения списка доступных команд в интерфейсе Sofia я дошел до последней по алфавиту, и она выглядела многообещающей
vionoff on(1) off(0)!
После выполнения «vionoff on», Sofia запустила дополнительный threаd связанный с обработкой видео, и я получил в приложении синий экран с датой, но не видео с камеры.
Пришло время вспомнить странную маркировку на плате адаптера терминала. В документации по подключению Wi-Box указаны сигналы V, M: Video Terminals (V: live, M: mesh) для композитного видео, но на адаптере указано Vi+ и Vi-. Терминал точно получает композитное видео, но на адаптер приходит не коаксиал, а пара проводов AWG. Давайте перевернем плату адаптера, и посмотрим внимателнее.
Плата адаптера терминала
Адаптер терминала — передняя часть
Адаптер терминала — обратная часть
Да тут собран преобразователь из дифференциального в композитный сигнал на MAX436, и включается вся схема по сигналу Ct: Video Camera Control (10Vdc) от терминала или Wi-Box. Теперь мы знаем куда правильно должны быть подключены провода с сигналами V, M, Ct от Wi-Box.
Подключение Wi-Box к MAX436
Типовая схем подключения MAX436
Точки подключения сигналов V, M и Ct
Да, придется немного поработать нагретым паяльником, но результат обещает быть великолепным.
Результат
Конечно, качество картинки не такое как на видео, поскольку в нашей ADS системе установлена черно-белая CCD камера.
На этом этапе мы можем изменить прошивку Wi-Box и интегрировать нашу открывашку с Homebridge (например, через Homebridge Http Switch) и Google Home.
Теперь дверь открывается из приложения на телефоне, со смарт часов и при помощи голосового ассистента. Можно посмотреть лог звонков и архив фото тех, кто звонил в дверь. Можно пообщаться голосом и открыть дверь удаленно. О чем еще мечтать?
Но почему-то это не радует, приходится искать телефон, кричать ассистенту, как в те, уже ушедшие времена прошлого десятилетия.
Уважаемый читатель, наверное, начинает догадываться, что пришло время тем или иным способом улучшить автоматизацию.
Продолжение следует.