# socket_ds18b20 **Repository Path**: moqain/socket_ds18b20 ## Basic Information - **Project Name**: socket_ds18b20 - **Description**: 该项目以树莓派为客户端,远程服务器为服务器端,利用socket通信,将树莓派上采集的ds18b20的温度传感数据发送到服务器端。如果断开连接,客户端将采集的数据存于sqlite3数据库中,同样服务器端也会把每次接收到的数据存于sqlite3数据库中。 - **Primary Language**: C/C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-04-03 - **Last Updated**: 2023-02-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # socket_ds18b20 #### 介绍 该项目由客户端和服务器两端程序组成,以树莓派为客户端,远程服务器为服务器端,利用socket通信,将树莓派上采集的ds18b20的温度传感数据发送到服务器端。如果断开连接,客户端将采集的数据存于sqlite3数据库中,同样服务器端也会把每次接收到的数据存于sqlite3数据库中。 #### 软件架构 ##### 客户端 1.树莓派上运行socket客户端程序, 每隔30秒以字符串“设备号/日期时间/温度”形式上报采样温度,设备号便于服务器端区分是哪个树莓派客户端,如“RPI200/2022.4.4-12:01/28.00”; 2.通过命令行参数指定服务器端IP地址和端口以及间隔采样时间; 3.程序放到后台运行,并通过syslog记录程序的运行出错、调试日志; 4.程序可以捕捉kill信号正常退出; 5.当服务器断开时,将采集的数据存放至本地数据库中,等再次连接上服务器时,将已保存在数据库中的数据重新发送给服务器。 客户端程序流程图如下: ![输入图片说明](doc/client_flowchart.png) ##### 服务器端 1.服务器程序运行啊在Linux服务器上; 2.通过命令行指定监听的端口; 3.程序能够捕捉kill信号正常退出; 4.服务器支持多个客户端并发访问,选择epoll实现多路复用; 5.服务器收到每个客户端的数据都解析后保存到数据库中,接收到的格式为:“设备号/日期时间/温度”,如“RPI200/2022.4.4-12:01/28.00”; 服务器端程序流程图如下: ![输入图片说明](doc/server_flowchart.png) #### 安装教程 1. 客户端和服务器端安装数据库 sqlite3下载网址:http://www.sqlite.org/download.html $ tar xvzf sqlite-autoconf-3071502.tar.gz $ cd sqlite-autoconf-3071502 $ ./configure --prefix=/usr/local $ make $ make install 2. 在树莓派上安装客户端 $ wget https://gitee.com/moqain/socket_ds18b20/tree/master/socket_client 3. 在服务器上安装服务器端 $ wget https://gitee.com/moqain/socket_ds18b20/tree/master/socket_server #### 使用说明 1. 编译运行服务器端 $ cd ./src $ make $ cd ./bin $ ./server -p 端口号 -b(守护进程) 2. 编译运行客户端 $ cd ./src $ make $ cd ./bin $ ./client -p 端口号 -i IP地址 -t 采样间隔时间 -b(守护进程) #### 运行结果 1. 客户端连接服务端失败时 客户端:将采集数据存储于数据库中 ![输入图片说明](doc/lient_connect_failure.png) 2. 客户端成功连接服务端时 客户端:将数据发送给服务器端 ![输入图片说明](doc/client_connect_sucessfully.png) 服务器端:将接收的数据存于数据库中 ![输入图片说明](doc/server_connect_sucessfully.png)