1# Pegasus与Taurus WiFi互联通信<a name="ZH-CN_TOPIC_0000001130176841"></a> 2- 在学习Pegasus与Taurus WiFi互联通信前,需要将[device_soc_hisilicon](http://gitee.com/openharmony/device_soc_hisilicon)仓下载,在ubuntu下执行:git lfs clone xxxxx仓库地址,下载完成后,将device_soc_hisilicon\hi3516dv300\sdk_linux\sample\taurus\histreaming_server这整个文件夹放到自己源码对应device\soc\hisilicon\hi3516dv300\sdk_linux\sample\taurus目录下,同时将device_soc_hisilicon/hi3861v100/sdk_liteos/build/libs/libhistreaminglink.a这个库文件替换到device\soc\hisilicon\hi3861v100\sdk_liteos\build\libs\目录下。 3 4- 前言:HiStreaming 组件作为一种技术基础设施,使得海思芯片可以通过WiFi或有线网络实现物联网设备之间的设备自动发现、服务注册与识别、服务操作。HiStreaming把物联网设备分为两类角色,对外部提供服务的设备称之为 Server 设备,而使用其他设备提供的服务的设备称之为 Client 设备。 5 6 ![输入图片说明](../doc/figures/wifi_connect/1.jpg) 7 8## 硬件环境搭建 9- 硬件要求:Taurus开发板;硬件搭建如下图所示。注意这里需要跟Taurus同时使用,详情可以参考[WiFi互联client端](http://gitee.com/openharmony/vendor_hisilicon/blob/master/hispark_pegasus/demo/histreaming_client_demo/README.md)端。 10 11 ![输入图片说明](../doc/figures/wifi_connect/260.jpg) 12 13 ![输入图片说明](../doc/figures/wifi_connect/12.jpg) 14 15## 组网方式 16- 组网方案1:将Taurus开发套件设置成为WiFi AP模式,Pegasus开发套件和手机直接连接到Taurus的WiFi AP热点。Taurus开发板上跑的是HiStreaming-Server和HiStreaming-Client程序,Pegasus开发板上跑的是HiStreaming-Server程序,手机上跑的是HiStreaming-Client程序。当三者在同一局域网内,手机能够同时发现Taurus和Pegasus上的HiStreaming-Server,且Taurus上的HiStreaming-Client也能发现Pegasus上的HiStreaming-Server。Taurus端、Pegasus端、手机端,三者之间的组网方式如下图所示。 17 18 ![输入图片说明](../doc/figures/wifi_connect/2.jpg) 19 20- 组网方案2:Pegasus端、Taurus端、手机端都配置成为STA模式,使Taurus开发套件、Pegasus开发套件以及手机都连接在同一路由器发出的WiFi AP热点下面,组成一个局域网。其中,Taurus开发板上跑的是HiStreaming-Server和HiStreaming-Client程序,Pegasus开发板上跑的是HiStreaming-Server程序,手机上跑的是HiStreaming-Client程序。当三者在同一局域网内,手机能够同时发现Taurus和Pegasus上的HiStreaming-Server,且Taurus上的HiStreaming-Client也能发现Pegasus上的HiStreaming-Server。Taurus端、Pegasus端、手机端,三者之间的组网方式如下图所示。(其实手机作为热点代替路由器也是可行的) 21 22 ![输入图片说明](../doc/figures/wifi_connect/3.jpg) 23 24## 软件介绍 25- 注意这里需要跟Taurus同时使用,Taurus软件介绍详情可以参考[WiFi互联client端](http://gitee.com/openharmony/vendor_hisilicon/blob/master/hispark_pegasus/demo/histreaming_client_demo/README.md)。 26- 1.代码目录结构及相应接口功能介绍 27 28- HiStreaming接口: 29 30| API | 描述 | 31| ------------------- | ------------------ | 32| LinkPlatformGe | 获得HiStreamingLinkLite组件对象 | 33| LinkPlatformFree | 释放HiStreamingLinkLite组件对象 | 34| LinkServiceAgentFree | 释放从设备列表中pop出来的LinkServiceAgent对象 | 35| LinkAgentGet | 获得LinkAgent对象 | 36| LinkAgentFree | 释放LinkAgent对象 | 37| QueryResultFree | 释放设备列表QueryResult。同时也释放设备列表关联的LinkServiceAgent对象 | 38 39## 获取WiFi可执行文件([util_OHOSL1_3516.zip](https://gitee.com/hihope_iot/embedded-race-hisilicon-track-2022/tree/master/taurus_resource)) 40* 解压util_OHOSL1_3516.zip到util_OHOSL1_3516文件。 41* 在util_OHOSL1_3516文件包新建hostapd.conf,udhcpd.conf,wpa_supplicant.conf文件(注意这些文件需要在ubuntu下创建,windows下会出现格式问题)。 42* 在hostapd.conf文件写入如下内容。 43 44``` 45interface=wlan0 46driver=hdf wifi 47ssid=H 48hw_mode=g 49channel=6 50ignore_broadcast_ssid=0 51#下面wpa2-psk类型加密的配置 52#如果不需要可以删除 53auth_algs=1 54wpa=2 55wpa_passphrase=12345678 56rsn_pairwise=CCMP 57``` 58 59* 在udhcpd.conf文件写入如下内容。 60 61``` 62# Sample udhcpd configuration file (/etc/udhcpd.conf) 63# The start and end of the IP lease block 64start 192.168.12.2 65end 192.168.12.100 66 67# The interface that udhcpd will use 68interface wlan0 #default: eth0 69 70# The maximim number of leases (includes addressesd reserved 71# by OFFER's, DECLINE's, and ARP conficts 72max_leases 20 #default: 254 73 74# If remaining is true (default), udhcpd will store the time 75# remaining for each lease in the udhcpd leases file. This is 76# for embedded systems that cannot keep time between reboots. 77# If you set remaining to no, the absolute time that the lease 78# expires at will be stored in the dhcpd.leases file. 79remaining yes #default: yes 80 81# The time period at which udhcpd will write out a dhcpd.leases 82# file. If this is 0, udhcpd will never automatically write a 83# lease file. (specified in seconds) 84auto_time 7200 #default: 7200 (2 hours) 85 86# The amount of time that an IP will be reserved (leased) for if a 87# DHCP decline message is received (seconds). 88decline_time 3600 #default: 3600 (1 hour) 89 90# The amount of time that an IP will be reserved (leased) for if an 91# ARP conflct occurs. (seconds) 92conflict_time 3600 #default: 3600 (1 hour) 93 94# How long an offered address is reserved (leased) in seconds 95offer_time 60 #default: 60 (1 minute) 96 97# If a lease to be given is below this value, the full lease time is 98# instead used (seconds). 99min_lease 60 #defult: 60 100 101# The location of the leases file 102lease_file /vendor/etc/udhcpd.leases 103 104# The remainer of options are DHCP options and can be specifed with the 105# keyword 'opt' or 'option'. If an option can take multiple items, such 106# as the dns option, they can be listed on the same line, or multiple 107# lines. The only option with a default is 'lease'. 108 109#Examples 110opt dns 10.221.0.11 8.8.8.8 111option subnet 255.255.255.0 112opt router 192.168.12.1 113``` 114 115* 在wpa_supplicant.conf文件写入如下内容。 116``` 117country=GB 118network={ 119 ssid="H" 120 psk="12345678" 121} 122``` 123 124**编译** 125 126* 在编译histreaming_server之前,需确保已经docker上整编通过,整编成功后,将./out/hispark_taurus/ipcamera_hispark_taurus_linux/usr/lib/libcjson_shared.so放到device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib目录下,**且已经按照《[修改源码及配置文件适配Taurus开发板](../doc/2.2.1.%E4%BF%AE%E6%94%B9%E6%BA%90%E7%A0%81%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%80%82%E9%85%8DTaurus%E5%BC%80%E5%8F%91%E6%9D%BF.md)》的内容进行修改**。然后在单编ohos_histreaming_server之前,需修改目录下的一处依赖,进入//device/soc/hisilicon/hi3516dv300/sdk_linux目录下,通过修改BUILD.gn,在deps下面新增target,``"sample/taurus/histreaming_server:hi3516dv300_histreaming_server"``。 127``` 128group("hispark_taurus_sdk") { 129 if (defined(ohos_lite)) { 130 deps = [ 131 ":sdk_linux_lite_libs", 132 ":sdk_make", 133 "//kernel/linux/build:linux_kernel", 134 "sample/taurus/histreaming_server:hi3516dv300_histreaming_server", 135 ] 136``` 137 138* 点击Deveco Device Tool工具的Build按键进行编译,具体的编译过程这里不再赘述。 139 140* 编译成功后,即可在out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin目录下,生成ohos_histreaming_server可执行文件。 141 142**使用NFS挂载的方式进行资料文件的拷贝** 143 144* 首先需要自己准备一根网线 145 146* 步骤1:参考[博客链接](https://blog.csdn.net/Wu_GuiMing/article/details/115872995?spm=1001.2014.3001.5501)中的内容,进行nfs的环境搭建 147 148* 步骤2:将编译后生成的可执行文件拷贝到Windows的nfs共享路径下 149 150* 步骤3:将device\soc\hisilicon\hi3516dv300\sdk_linux\sample\taurus\histreaming_server\lib\目录下的**libhistreaminglink.a**和解压后的**util_OHOSL1_3516文件夹**拷贝至Windows的nfs共享路径下 151 152* 步骤4:依赖文件拷贝至Windows的nfs共享路径下后,执行下面的命令,将Windows的nfs共享路径挂载至开发板的mnt目录下 153 154``` 155mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt 156``` 157 158## 拷贝mnt目录下的文件至正确的目录下 159* 执行下面的命令,拷贝mnt目录下面的ohos_histreaming_server至userdata目录,拷贝mnt目录下面的libhistreaminglink.a和util_OHOSL1_3516至/usr/lib/目录下,再将目录下 160 161``` 162cp /mnt/ohos_histreaming_server /userdata/ 163cp /mnt/*.so /usr/lib/ 164cp -rf /mnt/util_OHOSL1_3516/ /usr/lib/ 165``` 166 167* 第一种方式:执行下面的命令,将Taurus设置为AP模式。hostapd.conf文件设置AP名和密码。启动成功后,手机端可以搜索wifi名:H,密码:12345678。 168 169``` 170cd /usr/lib/util_OHOSL1_3516 171mkdir /usr/tmp 172mkdir /var/run 173touch /var/run/udhcpd.pid 174mkdir -p /vendor/etc 175touch /vendor/etc/udhcpd.leases 176./hostapd -i wlan0 hostapd.conf & 177ifconfig wlan0 192.168.12.145 178./busybox ./udhcpd udhcpd.conf 179``` 180* 执行下面的命令,Taurus运行ohos_histreaming_server 181``` 182cd /userdata 183chmod 777 ohos_histreaming_server 184./ohos_histreaming_server 185``` 186 187* 板端运行后,参考[WiFi互联client端](http://gitee.com/openharmony/vendor_hisilicon/blob/master/hispark_pegasus/demo/histreaming_client_demo/README.md) 188 189* Taurus端或者路由器需要发出热点,同时Taurus端运行ohos_histreaming_server可执行文件,再次点击Hi3861核心板上的“RST”复位键,此时开发板的系统会运行起来。运行结果:打开串口工具,可以看到如下打印,同时3861主板灯闪亮一下。 190 191 ![输入图片说明](../doc/figures/wifi_connect/260.jpg) 192 193 ![输入图片说明](../doc/figures/wifi_connect/22.jpg) 194 195 ![输入图片说明](../doc/figures/wifi_connect/24.jpg) 196 197* 如果你想使用手机来控制Pegasus或者Taurus,手机端安装及使用(源码下载](https://gitee.com/leo593362220/shistreaming.git)),然后进入app-release.rar目录,将程序安装到手机上,具体的安装过程这里就不介绍了(通过数据线复制到手机,或使用微信、QQ等方式发送到手机再安装)。 198APP安装成功后,打开手机的WiFi列表,连接到Taurus开发板的AP热点或者路由器热点,再打开刚安装好的HiStreaming APP,下拉刷新几次,手机会发现两个设备,分别是Pegasus开发板设备和Taurus开发板设备。 199 200 ![输入图片说明](../doc/figures/wifi_connect/20.jpg) 201 202 ![输入图片说明](../doc/figures/wifi_connect/21.jpg) 203 204* 任意点击一个设备进行操作,点击LED灯控制按钮,会进入一个灯的控制界面。点击图片会发生变化,且会给对应的设备发送数据,同时控制灯亮与熄。 205 206 ![输入图片说明](../doc/figures/wifi_connect/6.jpg) 207 208 ![输入图片说明](../doc/figures/wifi_connect/25.jpg) 209 210 ![输入图片说明](../doc/figures/wifi_connect/23.jpg) 211 212 ![输入图片说明](../doc/figures/wifi_connect/22.jpg) 213 214* 第二种方式:执行下面的命令,将Taurus设置为STA模式。wpa_supplicant.conf文件设置连接的WIFI名和密码。(手机和路由器使用4G网) 215``` 216cd /usr/lib/util_OHOSL1_3516 217./wpa_supplicant -i wlan0 -c wpa_supplicant.conf & 218连接热点: 219./busybox ./udhcpc -s ./default.script -b -i wlan0 220``` 221* 执行下面的命令,Taurus运行ohos_histreaming_server 222``` 223cd /userdata 224chmod 777 ohos_histreaming_server 225./ohos_histreaming_server 226``` 227 228* 板端运行后,参考[WiFi互联client端](http://gitee.com/openharmony/vendor_hisilicon/blob/master/hispark_pegasus/demo/histreaming_client_demo/README.md) 229 230* Taurus端或者路由器需要发出热点,同时Taurus端运行ohos_histreaming_server可执行文件,再次点击Hi3861核心板上的“RST”复位键,此时开发板的系统会运行起来。运行结果:打开串口工具,可以看到如下打印,同时3861主板灯闪亮一下。 231 232 ![输入图片说明](../doc/figures/wifi_connect/260.jpg) 233 234 ![输入图片说明](../doc/figures/wifi_connect/22.jpg) 235 236 ![输入图片说明](../doc/figures/wifi_connect/24.jpg) 237 238* 如果你想使用手机来控制Pegasus或者Taurus,手机端安装及使用(源码下载](https://gitee.com/leo593362220/shistreaming.git)),然后进入app-release.rar目录,将程序安装到手机上,具体的安装过程这里就不介绍了(通过数据线复制到手机,或使用微信、QQ等方式发送到手机再安装)。 239APP安装成功后,打开手机的WiFi列表,连接到Taurus开发板的AP热点或者路由器热点,再打开刚安装好的HiStreaming APP,下拉刷新几次,手机会发现两个设备,分别是Pegasus开发板设备和Taurus开发板设备。 240 241* 任意点击一个设备进行操作,点击LED灯控制按钮,会进入一个灯的控制界面。点击图片会发生变化,且会给对应的设备发送数据,同时控制灯亮与熄。 242 243 ![输入图片说明](../doc/figures/wifi_connect/6.jpg) 244 245 ![输入图片说明](../doc/figures/wifi_connect/25.jpg) 246 247 ![输入图片说明](../doc/figures/wifi_connect/23.jpg) 248 249 ![输入图片说明](../doc/figures/wifi_connect/22.jpg) 250 251