О чудный мир 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.

e2650219c388eb7f5bb1539cab8e7af6.png

Изучив доступную документацию (ее немного, а технических деталей еще меньше) и осознав что 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

Подключаемся к консоли через 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

Типовая схем подключения MAX436

Точки подключения сигналов V, M и Ct

Точки подключения сигналов V, M и Ct

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

Результат

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

На этом этапе мы можем изменить прошивку Wi-Box и интегрировать нашу открывашку с Homebridge (например, через Homebridge Http Switch) и Google Home.

Теперь дверь открывается из приложения на телефоне, со смарт часов и при помощи голосового ассистента. Можно посмотреть лог звонков и архив фото тех, кто звонил в дверь. Можно пообщаться голосом и открыть дверь удаленно. О чем еще мечтать?

Но почему-то это не радует, приходится искать телефон, кричать ассистенту, как в те, уже ушедшие времена прошлого десятилетия.

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

Продолжение следует.

Habrahabr.ru прочитано 3153 раза