# kc031srv **Repository Path**: androidex_tony_admin/kc031srv ## Basic Information - **Project Name**: kc031srv - **Description**: KC031Srv 是基于 Openwrt 和 KC031 边缘计算网关编写的服务程序。可以接受从UDP/TCP/UART/MQTT等渠道的指令。协议可以是AEXUDP协议或者华强景观灯协议。 - UDP : 以udp客户端的方式来处理协议; - TCP : 以TCP客户端的方式来处理协议; - UART : 命令可以通过串口发给系统来执行相关功能; - MQTT :MQTT提供数据通路。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-10 - **Last Updated**: 2025-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README **KC031 Package for Openwrt** [[_TOC_]] # 1. 概述 KC031是集成WIFI路由器、边缘计算、DTU和RTU功能于一体的集成工业控制主板。 # 2. 下载 ```bash $ git clone ssh://git@gitlab.androidex.cn:222/smartiot/kc031ipk.git ``` # 3. 编译 代码编译分为HOST和Openwrt两种情况, ## 3.1、Docker虚拟机编译Openwrt OpenWRT编译可以使用Docker建立编译环境,建立Docker的项目: ```bash $ git clone ssh://git@gitlab.androidex.cn:222/aexprojects/dockers/aosp-docker.git $ cd aosp-docker $ make openwrt $ sudo cp ubuntu2004/openwrt /usr/local/bin ``` 建立好编译环境以后,使用此Docker编译代码需要放在~/openwrt目录下: ```bash $ openwrt bash ``` 进入Docker虚拟机后: ```bash $ cd openwrt $ ./scripts/feeds update -a $ ./scripts/feeds uninstall -a $ ./scripts/feeds install -a $ make menuconfig $ make V=s ``` 使用编译脚本编译: ```bash $ ./updateui.sh # 下载更新luci应用,主要是自己修改的增加的luci app,只有luci app修改过=才需要执行此命令。 $ ./build.sh # 更新openwrt代码并编译 ``` ## 3.2、服务器上的编译方法 在git1.androidex.cn的服务器上使用devel用户登录可以在服务器上编译openwrt项目。 ```bash $ ssh -p 8664 devel@git1.androidex.cn #没有登录权限可以找管理员申请 ``` - 登录成功: ```bash yangjundeMacBook-Pro-2:openwrt yangjun$ ssh -p 8664 devel@git1.androidex.cn Last failed login: Sat Jun 11 02:10:21 CST 2022 from vmi620569.contaboserver.net on ssh:notty There were 25 failed login attempts since the last successful login. Last login: Sat May 7 10:55:50 2022 from 113.87.29.224 ps.lanigiro: /usr/local/lib/liblzma.so.5: no version information available (required by /lib64/libsystemd.so.0) ps.lanigiro: /usr/local/lib/liblzma.so.5: no version information available (required by /lib64/libdw.so.1) [devel@localhost ~]$ [devel@localhost ~]$ [devel@localhost ~]$ [devel@localhost ~]$ [devel@localhost ~]$ ls aosp ccache make-4.1 make-4.1.tar.gz openwrt ``` - 启动虚拟机 ```bash [devel@localhost ~]$ openwrt bash aosp: Checking if /home/devel/openwrt exists aosp: Checking if /home/devel/openwrt exists - ok aosp: Checking if /home/devel/ccache exists aosp: Checking if /home/devel/ccache exists - ok docker_entrypoint: Creating user UID/GID [1031/1031] docker_entrypoint: Creating user UID/GID [1031/1031] - done docker_entrypoint: Copying .gitconfig and .ssh/config to new user home docker_entrypoint: Copying .gitconfig and .ssh/config to new user home - done docker_entrypoint: Creating /tmp/ccache and /aosp directory docker_entrypoint: Creating /tmp/ccache and /aosp directory - done To run a command as administrator (user "root"), use "sudo ". See "man sudo_root" for details. aosp@5020aef0caa3:/var/aosp$ ``` - 进入opennwrt目录 ```bash aosp@5020aef0caa3:/var/aosp$ aosp@5020aef0caa3:/var/aosp$ aosp@5020aef0caa3:/var/aosp$ ls dl psradar aosp@5020aef0caa3:/var/aosp$ cd psradar/ .repo/ Net2Ser/ openwrt/ prevent-stroke-radar/ radar-linux-sdk/ aosp@5020aef0caa3:/var/aosp$ cd psradar/openwrt/ aosp@5020aef0caa3:/var/aosp/psradar/openwrt$ ``` 下来就可以按照openwrt的编译方法编译了。 ## 3.3、HOST编译 因为增加了Lua和mosquitto,未再做编译测试。 在MacOS上可以编译,但是不使用lua和mqtt。 - 为了能在host编译以方便调试,增加了platform/lua-5.1.5.bz2文件,在host上解压后即可编译安装lua. 如在linux 编译: ```sh $ make linux $ sudo make linux install $ sudo chmod +x /usr/local/lib/liblua.so ``` - 使用apt-get 安装mosquitto-dev; - 然后就可以在host上编译出kc031srv的运行程序了。 # 4. 功能描述 KC031主板功能: | 名称 | 规格 | | :--- | :------------------------------------------------------------------------------- | | CPU | 580MHz MIPS 24KEc | | RAM | DDR2 64M | | ROM | SPI NOR FLASH 16M | | 网络 | 1WLAN+4LAN | | 无线 | 在802.11n Wi-Fi标准下:- 20MHz的频宽能达到144Mbps的速率,- 40MHZ的频宽能达到300Mbp | | 串口 | - 1xDebug UART - 1xRS485 | | 输入 | - 8x数字输入,3.3V\~48V | | 输出 | - 8x数字输出,DC(3.3V\~48V),AC(100V\~250V) | | 电源 | DC 9-18V | ## 4.1 当收到AEXGPIO输入状态变化的UEVENT时 - 将变化的IO引脚参数通过UDP/TCP端口以格式报告给服务器; - 将变化的IO引脚以MQTT的方式报告给服务器; - 如果存在启动相应的LUA脚本。 ## 4.2 当收到服务器指令,解析执行 - 从UDP/TCP服务器收取到指令。 - 从MQTT收到到指令 # 5. 使用方法 ```bash $ kc031srv -d --config <配置文件> ``` - 配置文件 ```text ``` # 6. 通讯协议 系统的通讯协议支持华强景观灯协议以及安卓工控边云控制协议。协议详细内容参见KC031规格书。规格书在生产文档的KC031目录。 # 7. 功能逻辑 ## 7.1 系统接受命令的渠道 系统可以接受从UDP、TCP、UART、MQTT等渠道发送的指令。协议格式可以是AEXUDP协议或者华强景观灯协议。 系统根据命令来源和格式确定回复数据的目标和协议格式,如果是事件则会向所有有效的目标均发送消息。 - UDP : 以udp客户端的方式来处理协议,本地会绑定端口,因此可以当做UDP server来对待,本地测试、定时消息、中断事件也都会通过本地UDP方式送给程序来实现相应的功能; - TCP : 以TCP客户端的方式来处理协议,默认如果没连接成功则最长会在20秒后重连,因为是作为TCP客户端因此本地端口不固定,所以本地没有连接服务器时服务器无法主动通过TCP来连接设备; - UART : 命令可以通过串口发给系统来执行相关功能,如果不符合命令格式则会打包成UDP格式的UART数据包发给服务器; - MQTT :MQTT的荷载数据为命令数据包的HEX格式。MQTT提供数据通路。 ## 7.2 输入事件处理 输入事件是驱动通过UEVENT来实现的,请查看:/etc/hotplug.d/aexgpio27/00-changed ```sh #!/bin/sh if [ "$ACTION" = "changed" ]; then #echo "$SUBSYSTEM $ACTION $VALUE $OLDVALUE " >> /tmp/log/kc031srv.log /bin/kc031srv --event:"$VALUE $OLDVALUE" fi ``` 可以看到事件发生后通过--event命令行参数启动系统功能。系统会调用lua脚本,用户可以自定义输入事件的处理方法。 ## 7.3 定时事件 定时使用系统cronb服务来实现,cronb事件触发后执行/bin/kc031srv --cmd,通过--cmd参数把udp命令传给系统。这个命令格式采用哪种协议,给服务器就会送什么协议。 ## 7.4 lua自定义功能 我们可以通过lua脚本定义一些功能函数,然后通过远程调用这些函数来实现特殊的功能需求。