# smart_home **Repository Path**: yangdonggit/smart_home ## Basic Information - **Project Name**: smart_home - **Description**: 智能家居Linux中控程序。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-09-08 - **Last Updated**: 2023-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1. 使用方法 需要用到的库: - [libmodbus](https://github.com/stephane/libmodbus) - [cjson](https://github.com/DaveGamble/cJSON) - [sqlite3]() 编译: - 正常编译: ```shell mkdir build cd build cmake .. make ``` > 注意:交叉编译器aarch64-linux-gnu-gcc已经存放在`compiler/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu`文件夹下,库文件以及头文件分别存放在`compiler/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/lib`、`compiler/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/lib`,无需配置环境 运行: 在`build`目录下使用`../ftp.sh`可以将编译好的二进制可执行程序传输至开发板,在开发板端需要使用`chmod +x main`后使用`./main`运行程序 debug: - debug模式可以修改`CMakeLists.txt`中的`add_definitions(-DDEBUG -g)`,注释掉为正常模式,默认带debug功能 ## 2. 项目结构: ``` . ├── CMakeLists.txt ├── README.md ├── data │ ├── data.db │ └── insert_client.sql ├── ftp.sh ├── main.c ├── main.h ├── rs485 │ ├── rs485_sensors.c │ └── rs485_sensors.h ├── scene_control │ ├── control.c │ ├── control.h │ ├── scene.c │ └── scene.h ├── tcp │ ├── client │ │ ├── android │ │ │ ├── android.c │ │ │ ├── android.h │ │ │ ├── json_parse.c │ │ │ └── json_parse.h │ │ ├── clients.c │ │ ├── clients.h │ │ └── rs485_converter │ │ ├── rs485_converter.c │ │ └── rs485_converter.h │ └── server │ ├── tcp_server.c │ └── tcp_server.h ``` ## 3.流程 - main.c - - 创建TCP服务器线程 server_thread - - 创建传感器线程 sensor_thread - server_thread - 使用select处理socket - 当有新客户端连接后使用handle_client函数为clients链表中对应的client进行处理(设置在线状态,设置客户端类型),同时对一些需要创建线程的客户端创建新的线程来处理输入输出 - - android_thread 安卓设备线程 - - 接收消息,解析json数据后发出相应的控制指令 - - rs485_converter_thread:rs485转换器线程 - sensor_thread:当安卓客户端连接后,读取传感器数据并发送至安卓客户端 ## 4. 接口 scene_control文件夹下的`scene.c`与`control.c`提供场景控制与设备控制的接口,在接口中实现函数即可完成对接