mirror of https://github.com/OpenIPC/wiki.git
Update hikvision-ds-2cd2345f-is.md
parent
894dcd594f
commit
58ca9ce9a4
|
@ -9,12 +9,11 @@ Hikvision DS-2CD2345F-IS
|
||||||
Среди камер продаваемых Ростелекомом существует модель Hikvision DS-2CD2345F-IS. От большинства прочих отличается тем, что оригинальной прошивки для неё, судя по всему, нет. Но железо поддерживается OpenIPC и значит не всё потеряно.
|
Среди камер продаваемых Ростелекомом существует модель Hikvision DS-2CD2345F-IS. От большинства прочих отличается тем, что оригинальной прошивки для неё, судя по всему, нет. Но железо поддерживается OpenIPC и значит не всё потеряно.
|
||||||
|
|
||||||
## Текущая ситуация
|
## Текущая ситуация
|
||||||
- В настоящее время удалось запустить сборку для процессора hi3516av100, т.к. только в ней есть поддержка памяти NAND, а всё остальное идентично сборке для hi3516av100.
|
- Нужно использовать сборку для процессора hi3516av100, т.к. только в ней есть поддержка памяти NAND, а всё остальное идентично сборке для hi3516dv100.
|
||||||
- Последняя протестированная работающая сборка - от 27.05.22 Сборка от 6.10.22 запускается, но в ней отсутствует eth0. Причина выясняется.
|
|
||||||
- В протестированной сборке отсутствует поддержка UBIFS, поэтому периодически настройки каеры слетают к дефолтным значениям.
|
|
||||||
- Переключение день/ночь реализовано дополнительным скриптом. Есть определённые проблемы на границах тёмного и светлого времени суток - в сумерках многократно переключается то в один то в другой режим.
|
- Переключение день/ночь реализовано дополнительным скриптом. Есть определённые проблемы на границах тёмного и светлого времени суток - в сумерках многократно переключается то в один то в другой режим.
|
||||||
- Микрофон не работает.
|
- Микрофон не работает.
|
||||||
- Запись на карпту памяти не тестировал.
|
- Запись на карту памяти не работает.
|
||||||
|
- Вход и выход не работают.
|
||||||
|
|
||||||
## Платформа
|
## Платформа
|
||||||
- процессор hi3516dv100
|
- процессор hi3516dv100
|
||||||
|
@ -29,79 +28,76 @@ Hikvision DS-2CD2345F-IS
|
||||||
setenv soc hi3516av100
|
setenv soc hi3516av100
|
||||||
setenv sensor ov4689
|
setenv sensor ov4689
|
||||||
setenv totalmem 128M
|
setenv totalmem 128M
|
||||||
|
setenv osmem 48M
|
||||||
|
setenv baseaddr 0x82000000
|
||||||
|
|
||||||
setenv osmem 32M
|
setenv bootargs 'mem=48M console=ttyAMA0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3,2048 mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) of_mdio.higmacphy=0'
|
||||||
|
setenv bootcmd 'nand read ${baseaddr} 0x100000 0x300000; bootm ${baseaddr}'
|
||||||
setenv bootargs 'mem=32M console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hinand:1024k(boot),1024k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
|
||||||
|
|
||||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; nand read 0x82000000 0x200000 0x200000; bootm 0x82000000'
|
|
||||||
|
|
||||||
setenv ethaddr 00:12:34:56:78:90 //задать MAC-адрес камеры, если не задан
|
setenv ethaddr 00:12:34:56:78:90 //задать MAC-адрес камеры, если не задан
|
||||||
setenv ipaddr 192.168.1.10 //задать IP-адрес камеры, если не задан
|
setenv ipaddr 192.168.1.10 //задать IP-адрес камеры, если не задан
|
||||||
setenv serverip 192.168.1.2 //задать адрес компа с TFTP-сервером
|
setenv serverip 192.168.1.2 //задать адрес компа с TFTP-сервером
|
||||||
|
|
||||||
|
saveenv
|
||||||
```
|
```
|
||||||
### Образы ядра и файловой системы
|
### Образы ядра и файловой системы
|
||||||
```
|
```
|
||||||
mw.b 0x82000000 0xff 0x1000000
|
mw.b ${baseaddr} ff 0x1000000
|
||||||
tftp 0x82000000 uImage.${soc}
|
tftp ${baseaddr} uImage.${soc}
|
||||||
nand erase 0x200000 0x200000
|
nand erase 0x100000 0x300000
|
||||||
nand write.i 0x82000000 0x200000 0x200000
|
nand write.i ${baseaddr} 0x100000 0x300000
|
||||||
|
|
||||||
mw.b 0x82000000 0xff 0x1000000
|
mw.b ${baseaddr} ff 0x1000000
|
||||||
tftp 0x82000000 rootfs.squashfs.${soc}
|
tftp ${baseaddr} rootfs.ubi.${soc}
|
||||||
nand erase 0x400000 0x500000
|
nand erase 0x400000 0x7c00000
|
||||||
nand write 0x82000000 0x400000 0x500000
|
nand write.i ${baseaddr} 0x400000 ${filesize}
|
||||||
|
|
||||||
reset
|
reset
|
||||||
```
|
```
|
||||||
Можно вводить команды одной строкой через **;**, но лучше построчно, чтобы контролировать выполнение.
|
Можно вводить команды одной строкой через **;**:
|
||||||
### Первый запуск
|
|
||||||
После загрузки системы нужно войти под пользователем root без пароля и выполнить команду **firstboot**. Система выполнит необходимые операции и перезапустится. Если не перезапустилась, то сделать это командой **reboot**.
|
|
||||||
Затем снова войти в бут и почистить память:
|
|
||||||
```
|
```
|
||||||
nand erase 0x900000 0x7700000
|
mw.b ${baseaddr} ff 0x1000000; tftp ${baseaddr} uImage.${soc}; nand erase 0x100000 0x300000; nand write ${baseaddr} 0x100000 0x300000
|
||||||
|
|
||||||
|
mw.b ${baseaddr} ff 0x1000000; tftp ${baseaddr} rootfs.ubi.${soc}; nand erase 0x400000 0x7c00000; nand write ${baseaddr} 0x400000 ${filesize}
|
||||||
|
|
||||||
reset
|
reset
|
||||||
```
|
```
|
||||||
Эту же операцию нужно выполнить, если происходят сбои по вине неподходящей файловой системы. Но то же самое можно сделать и через веб-интерфейс.
|
##№ Первый запуск
|
||||||
### Веб-интерфейс
|
Не прерываем загрузку бута и наблюдаем лог запуска системы. Если всё прошло штатно и в использованной сборке ничего не отломано, то через несколько секунд увидим приглашение входа. Логинимся под пользователем root без пароля и вводим команду ifconfig eth0, чтобы увидеть полученный IP-адрес.
|
||||||
Веб-интерфейс по умолчанию доступен по порту **85**. Логин: **admin**, пароль: **12345**. При первом входе будет предложено задать новый сложный пароль. Сам использую англоязычный интерфейс, поэтому и все пункты меню буду приводить тоже на английском. Основная часть системы — стример **Majestic**. Он выполняет функции захвата и трансляции изображения и делает всё остальное, что с этим связано. Надо настроить.
|
## Веб-интерфейс
|
||||||
#### Majestic->Majestic settings
|
Веб-интерфейс по умолчанию доступен по порту 85. Логин: admin, пароль: 12345. При первом входе будет предложено задать новый сложный пароль, который станет также и паролем root при входе в консоль через UART или SSH.
|
||||||
##### ISP
|
Основная часть системы — стример Majestic. Он выполняет функции захвата и трансляции изображения и делает всё остальное, что с этим связано. Надо настроить.
|
||||||
- В поле **Path to sensor configuration file** выбрать **/etc/sensors/ov4689_i2c_1080p.ini**
|
### Majestic -> Image Signal Processor (ISP)
|
||||||
##### VIDEO0
|
- В поле Path to sensor configuration file выбрать /etc/sensors/ov4689_i2c_1080p.ini для разрешения 2МП либо /etc/sensors/ov4689_i2c_4M.ini для разрешения 4МП.
|
||||||
- Включить **Enable Video0**
|
### Majestic -> Mainstream Video (Video0)
|
||||||
- Выбрать **Video0 codec: h265**
|
- Убедиться, что включен переключатель Enable Video0
|
||||||
- Задать **Video resolution: 1920×1080**
|
- В поле Video0 codec выбрать вариант h265
|
||||||
- Задать **Video frame rate: 25**
|
### Majestic -> Substream Video (Video1)
|
||||||
- Задать **Video bitrate: 2048**
|
- Включить переключатель Enable Video1
|
||||||
- Задать **Send I-frame each 1 second: 1**
|
- В поле Video1 codec выбрать вариант h265
|
||||||
##### VIDEO1
|
### Settings -> Reset…
|
||||||
- Включить **Enable Video1**
|
- Нажать Reboot Camera для перезапуска.
|
||||||
- Выбрать **Video0 codec: h265**
|
|
||||||
- Задать **Video resolution: 704×576**
|
В Preview только слайд-шоу, а если хочется видеопотока, то проще всего увидеть его в VLC, выбрав в меню пункт Открыть URL и введя одну из строк:
|
||||||
- Задать **Video frame rate: 25**
|
|
||||||
- Задать **Video bitrate: 512**
|
|
||||||
- Задать **Send I-frame each 1 second: 1**
|
|
||||||
|
|
||||||
После проведения указанных манипуляций сохранить изменения — видео настроено. В разделе **Preview** картинку можно увидеть только для JPEG и MJPEG. Просмотр видео работает не всегда — баг это или фича, разбираемся.
|
|
||||||
Увидеть картинку можно через VLC, выбрав в меню пункт Открыть URL и введя одну из строк:
|
|
||||||
- rtsp://admin:password@ip-address:554/stream=0 — первый поток
|
- rtsp://admin:password@ip-address:554/stream=0 — первый поток
|
||||||
- rtsp://admin:password@ip-address:554/stream=1 — второй поток
|
- rtsp://admin:password@ip-address:554/stream=1 — второй поток
|
||||||
|
|
||||||
где: password — ваш пароль, ip-address — адрес камеры.
|
где: password — ваш пароль, ip-address — адрес камеры.
|
||||||
|
|
||||||
|
Если дефолтные значения параметров не устраивают и кажется, что картинка может быть лучше, можно поиграть с настройками сенсора и видеопотоков, но есть шанс сломать Majestic. Для восстановления работоспособности в меню Settings -> Reset… есть пункт Reset Majestic Settings. После его использования надо сделать ещё и Reboot Camera.
|
||||||
## Переключение день/ночь
|
## Переключение день/ночь
|
||||||
При наступлении тёмного времени суток или выключении источников света, как правило, видеокамеры переходят в ночной режим. Происходит перевод изображения в чёрно-белый режим, отключается ИК-фильтр и включается ИК-подсветка. В обратной ситуации производятся обратные действия.
|
При наступлении тёмного времени суток или выключении источников света, как правило, видеокамеры переходят в ночной режим. Происходит перевод изображения в чёрно-белый режим, отключается ИК-фильтр и включается ИК-подсветка. В обратной ситуации производятся обратные действия.
|
||||||
|
|
||||||
Система может определять отсутствие света либо по датчику, либо по изображению. Пока **Majestic** умеет работать только с датчиком. В этой модели камеры его нет. Значит надо задать параметры управляющих выходов, а управлять ими придётся с помощью скрипта.
|
Система может определять отсутствие света либо по датчику, либо по изображению. Пока Majestic умеет работать только с датчиком. В этой модели камеры его нет. Значит надо задать параметры управляющих выходов, а управлять ими придётся с помощью скрипта.
|
||||||
### Настройка GPIO
|
### Пункт меню Majestic -> Night Mode:
|
||||||
- Включить **Enable night mode**
|
Настройка GPIO
|
||||||
- Задать **GPIO pin1 of signal for IRcut filter: 105**
|
- Включить Enable night mode
|
||||||
- Задать **GPIO pin2 of signal for IRcut filter: 104**
|
- Задать GPIO pin1 of signal for IRcut filter: 105
|
||||||
- Задать **GPIO pin to turn on night mode illumination: 114**
|
- Задать GPIO pin2 of signal for IRcut filter: 104
|
||||||
|
- Задать GPIO pin to turn on night mode illumination: 114
|
||||||
|
|
||||||
Теперь **Majestic** знает про **GPIO** и можно попробовать поуправлять переключением вручную из командной строки через **API**. Нужно войти в систему под пользователем **root** без пароля. Команды следующие:
|
Теперь **Majestic** знает про **GPIO** и можно попробовать поуправлять переключением вручную из командной строки через **API**. Нужно войти в систему под пользователем **root** без пароля. Команды следующие:
|
||||||
|
|
||||||
```
|
```
|
||||||
curl http://ip-address/night/on //включить ночной режим.
|
curl http://ip-address/night/on //включить ночной режим.
|
||||||
curl http://ip-address/night/off //выключить ночной режим.
|
curl http://ip-address/night/off //выключить ночной режим.
|
||||||
|
@ -116,30 +112,30 @@ cat > /usr/sbin/checkexp.sh
|
||||||
```
|
```
|
||||||
… и вставляем содержимое через буфер обмена:
|
… и вставляем содержимое через буфер обмена:
|
||||||
```
|
```
|
||||||
!/bin/sh
|
#!/bin/sh
|
||||||
|
sleep 10
|
||||||
login=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f2)
|
login=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f2)
|
||||||
pass=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f3)
|
pass=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f3)
|
||||||
|
chtime=300 #change time to check isp_again, default 300 sec
|
||||||
chtime=5 #change time to check exptime
|
chexp=15 #change isp_again threshold (15-30)
|
||||||
chexp=50 #change exptime threshold (40-80)
|
|
||||||
day=1
|
day=1
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
|
|
||||||
exp=$(curl -s http://localhost/metrics | grep ^isp_exptime | cut -d' ' -f2)
|
exp=$(curl -s http://localhost/metrics | grep ^isp_again | cut -d' ' -f2)
|
||||||
chexp=50 #change exptime threshold (40-80)
|
bri=`expr $exp / 1000`
|
||||||
bri=expr $exp / 1000
|
logger "Analog gain $bri"
|
||||||
echo $bri
|
|
||||||
|
|
||||||
if [ $bri -gt $chexp -a $day -eq 1 ] ;then
|
if [ $bri -gt $chexp -a $day -eq 1 ] ;then
|
||||||
day=0
|
day=0
|
||||||
curl -u $login:$pass http://localhost/night/on
|
curl -u $login:$pass http://localhost/night/on
|
||||||
|
logger "Night mode ON"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $bri -le $chexp -a $day -eq 0 ] ;then
|
if [ $bri -le $chexp -a $day -eq 0 ] ;then
|
||||||
day=1
|
day=1
|
||||||
curl -u $login:$pass http://localhost/night/off
|
curl -u $login:$pass http://localhost/night/off
|
||||||
|
logger "Night mode OFF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sleep $chtime
|
sleep $chtime
|
||||||
|
@ -149,7 +145,7 @@ done
|
||||||
```
|
```
|
||||||
chmod +x /usr/sbin/checkexp.sh
|
chmod +x /usr/sbin/checkexp.sh
|
||||||
```
|
```
|
||||||
Если теперь запустить скрипт, то он начнёт анализировать экспозицию и управлять ночным режимом. В консоль, с интервалом в 5 секунд, будут выдаваться значения экспозиции. Самая простая проверка — накрыть камеру ладонью и через 5 секунд должен раздаться щелчок ИК-фильтра — включится ночной режим. Убрать ладонь и ещё через 5 секунд ночной режим выключится.
|
Если теперь запустить скрипт, то он начнёт анализировать экспозицию и управлять ночным режимом. По умолчанию интервал проверки задан длительностью 300 секунд, то бишь 5 минут.
|
||||||
|
|
||||||
Для того, чтобы скрипт запускался автоматически при старте системы, создаём файл запуска:
|
Для того, чтобы скрипт запускался автоматически при старте системы, создаём файл запуска:
|
||||||
```
|
```
|
||||||
|
@ -162,6 +158,6 @@ exit 0
|
||||||
```
|
```
|
||||||
Сохраняем файл нажав комбинацию *Ctrl+D* и даём разрешение на выполнение:
|
Сохраняем файл нажав комбинацию *Ctrl+D* и даём разрешение на выполнение:
|
||||||
```
|
```
|
||||||
chmod +x /usr/sbin/S99rc.local
|
chmod +x /etc/init.d/S99rc.local
|
||||||
```
|
```
|
||||||
Теперь можно перезапускать камеру и радоваться что переключение режима, хоть и не идеально, но работает.
|
Теперь можно перезапускать камеру и радоваться что переключение режима, хоть и не идеально, но работает.
|
||||||
|
|
Loading…
Reference in New Issue