Продолжаем поиск, начатый в предыдущей части "О чудный мир 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

Подключаемся к консоли через 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. Оказалось, он шлет команду 0x2BF0 (0x2B - функция открыть дверь и 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.

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

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

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

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

Комментарии (4)


  1. Melias
    20.05.2024 11:24
    +1

    У меня домофон Fermax CityMax - самая обычная трубка с кнопкой и без экрана

    Я повесил самую простую релюху Shelly 1 с сухим контактом на замыкание кнопки. Для этого даже пайка не понадобилась, У Shelly есть своё приложение, плюс оно интегрируется в Home Assistant, Google Home ну и во все прочие экосистемы.

    В Home Assistant можно сделать открытия по приближению к дому, по обнаружению метки ble и т.д., но мне пока как-то без надобности

    Весь "проект" по автоматизации занял час-полтора, работает уже 5 лет отлично.

    Единственное, до чего пока не дошли руки - перехватывать звонок домофона и по определенному паттерну (например три коротких - три длинных) открывать дверь


    1. sekuzmin Автор
      20.05.2024 11:24
      +1

      У меня домофон Fermax CityMax - самая обычная трубка с кнопкой и без экрана

      Возможно это Basic CityMax на технологии 4+N (analogue) https://www.fermax.com/intl-en/products/video-door-entry-systems/telephones/telefono-citymax/f80447-basic-citymax-telephone-white/. Там есть ксати приписка "No privacy of conversation with the panel".

      Я повесил самую простую релюху Shelly 1 с сухим контактом на замыкание кнопки. Для этого даже пайка не понадобилась, У Shelly есть своё приложение, плюс оно интегрируется в Home Assistant, Google Home ну и во все прочие экосистемы.

      Я видел подобные решения на реле, и это довольно популярно, просто и эффективно работает для определенных моделей, особенно на не цифровых. Только, например на нажатие кнопки открытия двери на моем терминале не последует никакой реакции. Терминал не пошлет код открытия если не было вызова со стороны панели в подъезде или не была использована функция Auto-Start.

      В Home Assistant можно сделать открытия по приближению к дому, по обнаружению метки ble и т.д., но мне пока как-то без надобности

      Да, это стоит протестировать. "По приближению к дому" Apple Homekit например срабатывает при приближении на примерно 100-200 метров. По метке BLE тоже нужно тестить при каком RSSI сработает автоматизация. Если слишком рано, то дверь будет уже закрыта до того, как успеешь подойти. Или, наоборот, придется стоять и ждать пока она откроется.

      Единственное, до чего пока не дошли руки - перехватывать звонок домофона и по определенному паттерну (например три коротких - три длинных) открывать дверь

      Это тоже только для аналоговых моделей. На ADS/VDS на терминал просто придет код звонка A9ХХ, без информации было ли длинное или короткое нажатие.


      1. ColdSUN
        20.05.2024 11:24
        +1

        Wi-Box у меня уже давно есть, но в подъезде нет камеры, так что без скриншотов, фоток и тд. Фактически используется просто для открытия подъездной двери удалённо. И честно говоря выглядит это как стрельба из пушки по воробьям. Но другого решения не нашёл, а своих мозгов не хватает. Наверняка же можно как-то просто отправлять 0x2BF0 просто с ESP. Может быть, чтобы не заниматься приведением уровня сигнала можно найти 3.3 вольта где-то в трубке.


        1. sekuzmin Автор
          20.05.2024 11:24

          Возможно level shifter на 3.3 или 5 вольт в трубке уже и есть. Но Wi-Box все таки позволяет еще и удаленно голосом пообщаться с посетителем, если сам не дома.