mirror of https://github.com/OpenIPC/wiki.git
				
				
				
			Merge pull request #59 from mixatronik/master
Запуск OpenIPC на камере Hikvision DS-2CD2345F-ISpull/60/head
						commit
						f9f3de0ec3
					
				
								
									
									
										
											1
										
									
									index.md
									
									
									
									
								
								
							
							
										
											1
										
									
									index.md
									
									
									
									
								|  | @ -109,6 +109,7 @@ In Russian | ||||||
| - [Ростелекомовская камера с NAND](ru/hardware-rtk-nand.md) | - [Ростелекомовская камера с NAND](ru/hardware-rtk-nand.md) | ||||||
| - [Полезные ссылки](ru/resources.md) | - [Полезные ссылки](ru/resources.md) | ||||||
| - [Обзоры камер разных производителей](ru/reviews.md) | - [Обзоры камер разных производителей](ru/reviews.md) | ||||||
|  | - [Hikvision DS-2CD2345F-IS](ru/hikvision-ds-2cd2345f-is.md) | ||||||
| 
 | 
 | ||||||
| ## Что можно прочитать про прошивку OpenIPC? | ## Что можно прочитать про прошивку OpenIPC? | ||||||
| - [Часто задаваемые вопросы и ответы на них][faq1] | - [Часто задаваемые вопросы и ответы на них][faq1] | ||||||
|  |  | ||||||
|  | @ -0,0 +1,165 @@ | ||||||
|  | # OpenIPC Wiki | ||||||
|  | [Оглавление](../index.md) | ||||||
|  | 
 | ||||||
|  | Hikvision DS-2CD2345F-IS | ||||||
|  | -------------- | ||||||
|  | 
 | ||||||
|  | Среди камер продаваемых Ростелекомом существует модель Hikvision DS-2CD2345F-IS. От большинства прочих отличается тем, что оригинальной прошивки для неё, судя по всему, нет. Но железо поддерживается OpenIPC и значит не всё потеряно. | ||||||
|  | 
 | ||||||
|  | ## Текущая ситуация | ||||||
|  | - В настоящее время удалось запустить сборку для процессора hi3516av100, т.к. только в ней есть поддержка памяти NAND, а всё остальное идентично сборке для hi3516av100. | ||||||
|  | - Последняя протестированная работающая сборка - от 27.05.22 Сборка от 6.10.22 запускается, но в ней отсутствует eth0. Причина выясняется. | ||||||
|  | - В протестированной сборке отсутствует поддержка UBIFS, поэтому периодически настройки каеры слетают к дефолтным значениям. | ||||||
|  | - Переключение день/ночь реализовано дополнительным скриптом. Есть определённые проблемы на границах тёмного и светлого времени суток - в сумерках многократно переключается то в один то в другой режим.  | ||||||
|  | - Микрофон не работает. | ||||||
|  | - Запись на карпту памяти не тестировал.  | ||||||
|  | 
 | ||||||
|  | ## Платформа | ||||||
|  | - процессор hi3516dv100 | ||||||
|  | - сенсор ov4689 | ||||||
|  | - объём ОЗУ 128Мб | ||||||
|  | - объём ПЗУ 128Мб | ||||||
|  | - тип ПЗУ NAND | ||||||
|  | 
 | ||||||
|  | ## Прошивка | ||||||
|  | ### Переменные окружения | ||||||
|  | ``` | ||||||
|  | setenv soc hi3516av100 | ||||||
|  | setenv sensor ov4689 | ||||||
|  | setenv totalmem 128M | ||||||
|  | 
 | ||||||
|  | setenv osmem 32M | ||||||
|  | 
 | ||||||
|  | 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 ipaddr 192.168.1.10          //задать IP-адрес камеры, если не задан | ||||||
|  | setenv serverip 192.168.1.2         //задать адрес компа с TFTP-сервером | ||||||
|  | ``` | ||||||
|  | ### Образы ядра и файловой системы  | ||||||
|  | ``` | ||||||
|  | mw.b 0x82000000 0xff 0x1000000 | ||||||
|  | tftp 0x82000000 uImage.${soc} | ||||||
|  | nand erase 0x200000 0x200000 | ||||||
|  | nand write.i 0x82000000 0x200000 0x200000 | ||||||
|  | 
 | ||||||
|  | mw.b 0x82000000 0xff 0x1000000 | ||||||
|  | tftp 0x82000000 rootfs.squashfs.${soc} | ||||||
|  | nand erase 0x400000 0x500000 | ||||||
|  | nand write 0x82000000 0x400000 0x500000 | ||||||
|  | 
 | ||||||
|  | reset | ||||||
|  | ``` | ||||||
|  | Можно вводить команды одной строкой через **;**, но лучше построчно, чтобы контролировать выполнение.   | ||||||
|  | ### Первый запуск | ||||||
|  | После загрузки системы нужно войти под пользователем root без пароля и выполнить команду **firstboot**. Система выполнит необходимые операции и перезапустится. Если не перезапустилась, то сделать это командой **reboot**.  | ||||||
|  | Затем снова войти в бут и почистить память: | ||||||
|  | ``` | ||||||
|  | nand erase 0x900000 0x7700000 | ||||||
|  | reset | ||||||
|  | ``` | ||||||
|  | Эту же операцию нужно выполнить, если происходят сбои по вине неподходящей файловой системы. Но то же самое можно сделать и через веб-интерфейс. | ||||||
|  | ### Веб-интерфейс | ||||||
|  | Веб-интерфейс по умолчанию доступен по порту **85**. Логин: **admin**, пароль: **12345**. При первом входе будет предложено задать новый сложный пароль. Сам использую англоязычный интерфейс, поэтому и все пункты меню буду приводить тоже на английском. Основная часть системы — стример **Majestic**. Он выполняет функции захвата и трансляции изображения и делает всё остальное, что с этим связано. Надо настроить. | ||||||
|  | #### Majestic->Majestic settings | ||||||
|  | ##### ISP | ||||||
|  | - В поле **Path to sensor configuration file** выбрать **/etc/sensors/ov4689_i2c_1080p.ini** | ||||||
|  | ##### VIDEO0 | ||||||
|  | - Включить **Enable Video0** | ||||||
|  | - Выбрать **Video0 codec: h265** | ||||||
|  | - Задать **Video resolution: 1920×1080** | ||||||
|  | - Задать **Video frame rate: 25** | ||||||
|  | - Задать **Video bitrate: 2048** | ||||||
|  | - Задать **Send I-frame each 1 second: 1** | ||||||
|  | ##### VIDEO1 | ||||||
|  | - Включить **Enable Video1** | ||||||
|  | - Выбрать **Video0 codec: h265** | ||||||
|  | - Задать **Video resolution: 704×576** | ||||||
|  | - Задать **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=1 — второй поток | ||||||
|  |   | ||||||
|  | где: password — ваш пароль, ip-address — адрес камеры. | ||||||
|  | 
 | ||||||
|  | ## Переключение день/ночь | ||||||
|  | При наступлении тёмного времени суток или выключении источников света, как правило, видеокамеры переходят в ночной режим. Происходит перевод изображения в чёрно-белый режим, отключается ИК-фильтр и включается ИК-подсветка. В обратной ситуации производятся обратные действия. | ||||||
|  | 
 | ||||||
|  | Система может определять отсутствие света либо по датчику, либо по изображению. Пока **Majestic** умеет работать только с датчиком. В этой модели камеры его нет. Значит надо задать параметры управляющих выходов, а управлять ими придётся с помощью скрипта. | ||||||
|  | ### Настройка GPIO | ||||||
|  | - Включить **Enable night mode** | ||||||
|  | - Задать **GPIO pin1 of signal for IRcut filter: 105** | ||||||
|  | - Задать **GPIO pin2 of signal for IRcut filter: 104** | ||||||
|  | - Задать **GPIO pin to turn on night mode illumination: 114** | ||||||
|  | 
 | ||||||
|  | Теперь **Majestic** знает про **GPIO** и можно попробовать поуправлять переключением вручную из командной строки через **API**. Нужно войти в систему под пользователем **root** без пароля. Команды следующие: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | curl http://ip-address/night/on         //включить ночной режим. | ||||||
|  | curl http://ip-address/night/off        //выключить ночной режим. | ||||||
|  | curl http://ip-address/night/toggle     //переключить режим. | ||||||
|  | ``` | ||||||
|  | Если всё работает, движемся дальше — автоматизируем процесс управления переключением режима на основе изменения времени экспозиции. | ||||||
|  | 
 | ||||||
|  | ### Скрипт управления переключением режима | ||||||
|  | Создаём файл файл скрипта: | ||||||
|  | ``` | ||||||
|  | cat > /usr/sbin/checkexp.sh | ||||||
|  | ``` | ||||||
|  | … и вставляем содержимое через буфер обмена: | ||||||
|  | ``` | ||||||
|  | !/bin/sh | ||||||
|  | 
 | ||||||
|  | login=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f2) | ||||||
|  | pass=$(cat /etc/httpd.conf | grep cgi-bin | cut -d':' -f3) | ||||||
|  | 
 | ||||||
|  | chtime=5 #change time to check exptime | ||||||
|  | chexp=50 #change exptime threshold (40-80) | ||||||
|  | day=1 | ||||||
|  | 
 | ||||||
|  | while true; do | ||||||
|  | 
 | ||||||
|  | exp=$(curl -s http://localhost/metrics | grep ^isp_exptime | cut -d' ' -f2) | ||||||
|  | chexp=50 #change exptime threshold (40-80) | ||||||
|  | bri=expr $exp / 1000 | ||||||
|  | echo $bri | ||||||
|  | 
 | ||||||
|  | if [ $bri -gt $chexp -a $day -eq 1 ] ;then | ||||||
|  | day=0 | ||||||
|  | curl -u $login:$pass http://localhost/night/on | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ $bri -le $chexp -a $day -eq 0 ] ;then | ||||||
|  | day=1 | ||||||
|  | curl -u $login:$pass http://localhost/night/off | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | sleep $chtime | ||||||
|  | done | ||||||
|  | ``` | ||||||
|  | Сохраняем файл нажав комбинацию **Ctrl+D** и даём разрешение на выполнение: | ||||||
|  | ``` | ||||||
|  | chmod +x /usr/sbin/checkexp.sh | ||||||
|  | ``` | ||||||
|  | Если теперь запустить скрипт, то он начнёт анализировать экспозицию и управлять ночным режимом. В консоль, с интервалом в 5 секунд, будут выдаваться значения экспозиции. Самая простая проверка — накрыть камеру ладонью и через 5 секунд должен раздаться щелчок ИК-фильтра — включится ночной режим. Убрать ладонь и ещё через 5 секунд ночной режим выключится. | ||||||
|  | 
 | ||||||
|  | Для того, чтобы скрипт запускался автоматически при старте системы, создаём файл запуска: | ||||||
|  | ``` | ||||||
|  | cat > /etc/init.d/S99rc.local | ||||||
|  | ``` | ||||||
|  | … и вставляем содержимое: | ||||||
|  | ``` | ||||||
|  | ./usr/sbin/checkexp.sh > /dev/null 2>&1 & | ||||||
|  | exit 0 | ||||||
|  | ``` | ||||||
|  | Сохраняем файл нажав комбинацию *Ctrl+D* и даём разрешение на выполнение: | ||||||
|  | ``` | ||||||
|  | chmod +x /usr/sbin/S99rc.local | ||||||
|  | ``` | ||||||
|  | Теперь можно перезапускать камеру и радоваться что переключение режима, хоть и не идеально, но работает. | ||||||
		Loading…
	
		Reference in New Issue