mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
							parent
							
								
									b206fff3dd
								
							
						
					
					
						commit
						6e02ae3d26
					
				|  | @ -34,6 +34,7 @@ source "$BR2_EXTERNAL_GOKE_PATH/package/mbedtls-openipc/Config.in" | |||
| source "$BR2_EXTERNAL_GOKE_PATH/package/microbe-web/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/motors/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/mt7601u-ap-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/nabto/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/node-exporter/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/opus-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_GOKE_PATH/package/quirc-openipc/Config.in" | ||||
|  |  | |||
|  | @ -111,6 +111,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -111,6 +111,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| ../../general/package/nabto | ||||
|  | @ -45,6 +45,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/microbe-web/Config.in" | |||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/mini/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/motors/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/mt7601u-ap-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/nabto/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/node-exporter/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/opus-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_HISILICON_PATH/package/quirc-openipc/Config.in" | ||||
|  |  | |||
|  | @ -115,6 +115,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -116,6 +116,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -114,6 +114,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -115,6 +115,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -116,6 +116,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -118,6 +118,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -116,6 +116,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -119,6 +119,9 @@ BR2_PACKAGE_MOSQUITTO=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| ../../general/package/nabto | ||||
|  | @ -28,6 +28,7 @@ source "$BR2_EXTERNAL_INGENIC_PATH/package/mbedtls-openipc/Config.in" | |||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/microbe-web/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/microsnander/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/motors/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/nabto/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/node-exporter/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/opus-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_INGENIC_PATH/package/quirc-openipc/Config.in" | ||||
|  |  | |||
|  | @ -106,6 +106,9 @@ BR2_PACKAGE_WIREGUARD_TOOLS=y | |||
| # ZEROTIER | ||||
| BR2_PACKAGE_ZEROTIER_ONE=y | ||||
| 
 | ||||
| # NABTO | ||||
| BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_HOST_GDB=y | ||||
| BR2_PACKAGE_GDB=y | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| ../../general/package/nabto | ||||
|  | @ -0,0 +1,8 @@ | |||
| config BR2_PACKAGE_NABTO | ||||
| 	bool "nabto embedded sdk" | ||||
| 	help | ||||
| 		The Nabto Edge platform makes it possible to communicate directly between two entities:  | ||||
| 		Instead of interacting indirectly with a device through a cloud service, the platform makes | ||||
| 		it simple to communicate directly with the actual device to invoke services or transfer data - also through firewalls. | ||||
| 
 | ||||
| 		https://github.com/nabto/nabto-embedded-sdk | ||||
|  | @ -0,0 +1,29 @@ | |||
| ################################################################################
 | ||||
| #
 | ||||
| # nabto embedded sdk
 | ||||
| #
 | ||||
| ################################################################################
 | ||||
| 
 | ||||
| NABTO_VERSION = 5.12.0 | ||||
| NABTO_SOURCE = nabto-embedded-sdk.zip | ||||
| NABTO_SITE = https://github.com/nabto/nabto-embedded-sdk/releases/download/v$(NABTO_VERSION) | ||||
| 
 | ||||
| define NABTO_EXTRACT_CMDS | ||||
| 	$(UNZIP) -d $(@D) $(NABTO_DL_DIR)/$(NABTO_SOURCE) | ||||
| 	mv $(@D)/nabto-embedded-sdk/* $(@D)/ | ||||
| 	rm -rf $(@D)/nabto-embedded-sdk | ||||
| endef | ||||
| 
 | ||||
| NABTO_CONF_OPTS += \
 | ||||
| 	-DCMAKE_BUILD_TYPE=Release \
 | ||||
| 	-DBUILD_SHARED_LIBS=OFF \
 | ||||
| 	-DDEVICE_BUILD_TESTS=OFF \
 | ||||
| 	-DDEVICE_BUILD_EXAMPLES=OFF | ||||
| 
 | ||||
| define NABTO_REMOVE_EXTRA | ||||
| 	rm -f $(TARGET_DIR)/usr/lib/libnabto_device.so | ||||
| endef | ||||
| 
 | ||||
| NABTO_POST_INSTALL_TARGET_HOOKS += NABTO_REMOVE_EXTRA | ||||
| 
 | ||||
| $(eval $(cmake-package)) | ||||
|  | @ -0,0 +1,112 @@ | |||
| [Nabto Edge Embedded SDK](https://github.com/nabto/nabto-embedded-sdk) | ||||
| 
 | ||||
| Пакет включает сборку tcp_tunnel_device из sdk. В примере показано как можно получить доступ к rtsp потоку из любой точки мира посредством платформы [Nabto](https://www.nabto.com/). | ||||
| 
 | ||||
| 
 | ||||
| ###### Регистрация | ||||
| 
 | ||||
| Для настройки камеры понадобится регистрация в облаке [Nabto Cloud Console](https://console.cloud.nabto.com) и получение `Product-ID` (pr-xxxxxxxx) и `Deviсe-ID` (de-xxxxxxxx) для каждого подключаемого устройства, `fingerprint` для завершения будет получен только после настройки камеры. | ||||
| 
 | ||||
| ###### Настройка камеры | ||||
| 
 | ||||
| Запустить в консоли `tcp_tunnel_device` с ключом `--demo-init` и ввести данные (pr-xxxxxxxx & de-xxxxxxxx) полученные при регистрации в облаке [Nabto Cloud Console](https://console.cloud.nabto.com) и создании устройства. | ||||
| 
 | ||||
| Далее выбрать проксируемый сервис, в данном случае `rtsp` и указать endpoint `/stream=0`: | ||||
| 
 | ||||
| ``` | ||||
| Next step is to add TCP tunnel services. | ||||
| What type of service do you want to add? | ||||
| [0]: continue | ||||
| [1]: ssh | ||||
| [2]: http | ||||
| [3]: rtsp | ||||
| Enter a valid number (default: 1) [0-3]: 3 | ||||
| Enter the port of your RTSP server (default: 8554) [0-65535]: 554 | ||||
| Enter your RTSP endpoint (default: /video): /stream=0 | ||||
| Added rtsp service on localhost port 554 with metadata rtsp-path => /stream=0 | ||||
| ``` | ||||
| 
 | ||||
| По окончании будет выдан `fingerprint`, который необходимо сохранить в настройках устройства в облаке. | ||||
| 
 | ||||
| ###### Запуск | ||||
| ``` | ||||
| tcp_tunnel_device | ||||
| ``` | ||||
| убедиться что подключение прошло успешно (пример): | ||||
| 
 | ||||
| ``` | ||||
| root@openipc-t31:# tcp_tunnel_device  | ||||
| 
 | ||||
| ######## Nabto TCP Tunnel Device ######## | ||||
| # Product ID:        pr-ydk3xhyn | ||||
| # Device ID:         de-orruyc4n | ||||
| # Fingerprint:       3de2ec6ded2cc975bf87ed63b2303e02b8051fb7359b19a3d950ed0158bb3813 | ||||
| # Version:           0.0.0-branch.heads/master.commits.1910+a49d27fc.dirty | ||||
| # Local UDP Port:    5592 | ||||
| # Friendly Name:     "Tcp Tunnel" | ||||
| #  | ||||
| # The device offers Local Open Pairing | ||||
| #  | ||||
| # The device has Password Open Pairing enabled | ||||
| # Open Pairing Password:  X9NphkArpzLU | ||||
| # Open Pairing SCT:       9jLgbUb4FWhe | ||||
| # Open Pairing String:    p=pr-ydk3xhyn,d=de-orruyc4n,pwd=X9NphkArpzLU,sct=9jLgbUb4FWhe | ||||
| #  | ||||
| ######## Configured TCP Services ######## | ||||
| # Id               Type             Host             Port              | ||||
| # rtsp             rtsp             127.0.0.1        554               | ||||
| ######## | ||||
| 
 | ||||
| Attached to the basestation | ||||
| ``` | ||||
| 
 | ||||
| ###### Получение потока | ||||
| 
 | ||||
| В примере будем забирать поток на linux машине, но в релизах на [github](https://github.com/nabto/nabto-client-edge-tunnel) есть версия клиента под windows. | ||||
| 
 | ||||
| Клонируем и собираем клиента (качаем из релизов). | ||||
| 
 | ||||
| Есть 2 способа "спаривания" - `Local Open` и `Password Open`. Первый режим позволяет легко найти и привязать устройство, если оно находится в одной локальной сети, второй вариант если устройство удаленное.  | ||||
| В качестве универсального примера используем вариант с удаленным устройством. | ||||
| 
 | ||||
| Запускаем `edge_tunnel_client` с ключом `--pair-string` и строкой с необходимыми учетными данными устройства `p=pr-ydk3xhyn,d=de-orruyc4n,pwd=X9NphkArpzLU,sct=9jLgbUb4FWhe`.  | ||||
| Строка в готовом виде присутствует в выводе подключенной к облаку камеры, потому просто копируем ее из предыдущего шага настройки камеры и выбираем `(0) Open Password`, при запросе username укажем `admin`: | ||||
| 
 | ||||
| ``` | ||||
| $./edge_tunnel_client --pair-string p=pr-ydk3xhyn,d=de-orruyc4n,pwd=X9NphkArpzLU,sct=9jLgbUb4FWhe | ||||
| 
 | ||||
| Connected to device ProductId: pr-ydk3xhyn DeviceId: de-orruyc4n | ||||
| Several pairing modes exists choose one of the following. | ||||
| [0]: Password Open | ||||
| [1]: Local Open | ||||
| Choose a pairing mode: 0 | ||||
| Open Password Pairing requires a username. The username is a name you choose for the new user, the username has to be unique among the registered users on the device. | ||||
| New Username: admin | ||||
| The device [0] pr-ydk3xhyn.de-orruyc4n has been set into the bookmarks as index 0 | ||||
| 
 | ||||
| ``` | ||||
| Настройка завершена. Запускаем клиент и проверяем список предоставляемых камерой сервисов: | ||||
| 
 | ||||
| ``` | ||||
| $ ./edge_tunnel_client --services | ||||
| Connected to the device [0] pr-ydk3xhyn.de-orruyc4n | ||||
| Available services ... | ||||
| Service: rtsp       Type: rtsp       Host: 127.0.0.1  Port: 554 | ||||
| ``` | ||||
| 
 | ||||
| В данном примере камера предоставляет доступ только к rtsp потоку. Подключаемся: | ||||
| 
 | ||||
| ``` | ||||
| ./edge_tunnel_client --service rtsp | ||||
| Connected to the device [0] pr-ydk3xhyn.de-orruyc4n | ||||
| TCP Tunnel opened for the service rtsp listening on the local port 44391 | ||||
| ``` | ||||
| 
 | ||||
| На `127.0.0.1:44391` будет доступен rtsp поток, используем ffplay обязательно выбрав транспорт tcp: | ||||
| 
 | ||||
| ``` | ||||
| ffplay -rtsp_transport tcp rtsp://127.0.0.1:44391/stream=0 | ||||
| ``` | ||||
| 
 | ||||
| Более подробно о возможностях платформы и настройках в официальной [документации](https://docs.nabto.com/developer/guides.html) | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue