CN108933716A - 基于OpenWrt的云交互网关、通信方法及智能家居系统 - Google Patents
基于OpenWrt的云交互网关、通信方法及智能家居系统 Download PDFInfo
- Publication number
- CN108933716A CN108933716A CN201810635309.6A CN201810635309A CN108933716A CN 108933716 A CN108933716 A CN 108933716A CN 201810635309 A CN201810635309 A CN 201810635309A CN 108933716 A CN108933716 A CN 108933716A
- Authority
- CN
- China
- Prior art keywords
- data
- gateway
- mysql
- openwrt
- socket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L12/283—Processing of data at an internetworking point of a home automation network
- H04L12/2834—Switching of information between an external network and a home network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Automation & Control Theory (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于OpenWrt的云交互网关、通信方法及智能家居系统。其中,基于OpenWrt的云交互网关包括智能家居云平台、网关主体和本地设备,所述网关主体包括网关核心板和若干连接节点;网关核心板以嵌入式OpenWrt系统为运行基础,包括连接节点驱动程序模块,其通过USB接口与连接节点进行数据交互;及MySQL本地数据库,其用来存储本地设备数据,以服务端模式运行,接受客户端的数据存取请求;及云平台插件程序模块,其负责云平台登录、鉴权以及数据上下行传输;及MySQL存取客户端,其使用C语言实现的API接口函数和SQL语句实现数据记录的存取操作,并通过Socket分别与云平台插件程序模块和连接节点驱动程序模块通信,完成数据传输和状态反馈。该网关具备良好的兼容性和扩展性。
Description
技术领域
本发明属于智能家居领域,尤其涉及一种基于OpenWrt的云交互网关、通信方法及智能家居系统。
背景技术
智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、便利、安全、环保的居住环境。智能家居大量利用计算机技术、网络通讯技术、综合布线技术,将与家居生活有关的各种子系统有机的结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。
其中,设备互联和接入互联网是智能家居产品的关键能力,在各种无线/有线通信技术中,除WiFi、有线以太网等少数几种技术可以直接接入互联网外,其他通信技术(如ZigBee、Bluetooth、Z-Wave、LoRa、RF射频等)都需要通过网关接入互联网中,网关的重要性不言而喻。
目前,不同厂商所搭建的云平台在设备接入、管理,以及数据通信时并没有统一标准,因此不能完全兼容,这样当智能家居网关或其他设备接入不同的云平台时,接入协议和数据通信的具体实现就存在不同,需要额外做相应的适配和定制工作。
综上所述,亟需一种通用以及可扩展的智能家居网关来解决智能家居网关连接各种本地单品设备、适配多种不同的云平台服务器的问题。
发明内容
为了解决现有技术的不足,本发明的第一目的是提供一种基于OpenWrt的云交互网关,其具备良好的兼容性和扩展性,解决了智能家居网关连接各种本地单品设备、适配多种不同的云平台服务器的问题。
本发明的一种基于OpenWrt的云交互网关,包括智能家居云平台、网关主体和本地设备,所述网关主体包括网关核心板和若干连接节点;所述网关核心板以嵌入式OpenWrt系统为运行基础,包括连接节点驱动程序模块,其通过USB接口与连接节点进行数据交互;及
MySQL本地数据库,其用来存储本地设备数据,以服务端模式运行,接受客户端的数据存取请求;及
云平台插件程序模块,其负责云平台登录、鉴权以及数据上下行传输;及
MySQL存取客户端,其使用C语言实现的API接口函数和SQL语句实现数据记录的存取操作,并通过Socket分别与云平台插件程序模块和连接节点驱动程序模块通信,完成数据传输和状态反馈;所述MySQL存取客户端包括云平台上行端、云平台下行端、设备上行端以及设备下行端。
在所述智能家居网关中,连接节点位于网关核心板与本地单品设备之间,承担着“上通下达”的作用。得益于网关核心板提供的标准USB总线,网关可以接驳多个连接节点,也即对应多种本地单品设备。
使用USB接口作为连接节点和网关核心板之间的通信接口,既能保证通信接口的标准性和通用性,又能给连接节点的软硬件设计提供最大限度的自由,使得连接节点的软硬件设计更加灵活和高效。
为保证本地设备数据可靠上传、用户指令可靠下发,良好的匹配本地设备和云平台插件程序模块的数据通信速率,以防止数据丢失、遗漏以及重复,本发明使用MySQL数据库来存储上下行数据。
为保证数据记录读写时的原子操作特性,避免多个存取客户端对同一条数据记录进行存取时发生冲突,防止由此造成的数据损坏,需要考虑各存取客户端读写操作的互斥问题。MySQL提供了页级、表级、行级三种级别的锁表机制,合理使用MySQL的锁表机制可有效避免客户端数据存取冲突的现象。
进一步的,所述网关核心板还包括WEB管理模块,其基于LuCI接口来实现网关管理页面,用以进行网关配置和状态显示。
进一步的,所述网关核心板还包括本地交互模块,其采用LED指示灯和液晶屏指示网关运行状态,同时提供用户操作按键。
进一步的,所述网关核心板还包括电源管理模块,其用于实时监测电源输入和控制电源供应,以实现降低功耗和断电保存的目的。
本发明的第二目的是提供一种基于OpenWrt的云交互网关的通信方法。
本发明的一种基于OpenWrt的云交互网关的通信方法,包括:
连接节点驱动程序模块中的驱动程序运行时,读取相应配置文件并打开连接节点对应的设备节点文件,分别初始化Socket客户端和服务端;其中,Socket客户端为云平台插件程序模块;服务端为MySQL本地数据库;
创建上行处理子线程和下行处理子线程,在子线程中执行各自的处理函数,待所有子线程结束,关闭Socket通信和设备节点文件,退出程序;
若主线程发生异常或错误,则进行相应处理后等待子线程结束,最后关闭Socket通信和设备节点文件,退出程序。
数据上行时,连接节点驱动程序模块接收并解析对应连接节点的上行数据,发送至MySQL设备上行端,进而写入本地数据库中;MySQL云平台上行端从本地数据库中读取需要上传的数据后,发送至云平台插件程序模块,进而上传到相应云平台,完成数据上行传输。
同理,数据下行时,云平台插件程序模块接收对应云平台的下行数据,发送至MySQL云平台下行端,进而写入本地数据库中;MySQL设备下行端从本地数据库中读取需要下发的数据后,发送至连接节点驱动程序模块,进而下发至连接节点和本地单品设备,完成数据下行传输。
进一步的,在上行处理子线程中,Socket客户端读取设备节点文件以获取上传数据包,并解析上传数据包的字段值;
Socket客户端将解析的上传数据包的字段值发送至MySQL设备上行端,并持续等待MySQL设备上行端的反馈消息,进而向连接节点反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
进一步的,在下行处理子线程中,Socket客户端接收MySQL设备下行端的下行数据包,并解析下行数据包的字段值;
Socket客户端将解析的下行数据包的字段值写入设备节点文件,即通过串口发送至连接节点,并持续等待连接节点的反馈消息,进而向MySQL设备下行端反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
进一步的,该通信方法还包括:对MySQL本地数据库进行维护,其具体过程包括:
读取配置文件以获取数据库的配置信息;之后连接MySQL本地数据库,并检查MySQL本地数据库以及其内存储的数据表是否存在,若缺失则创建相应数据库及数据表,并进行空白数据填充;若存在则直接进行数据表容量修正,并更新配置文件;之后进入维护循环,执行数据库定期维护工作,当有错误或异常发生时进行相应处理,进而结束进程。
其中,空白数据填充是为了构造数据表的环形缓存结构,同时也起到数据库存储设备(TF卡)剩余空间检查的功能。数据表容量修正其实就是获取数据表的记录数,使其等于预设值,以实现数据表的完整。在维护循环中,间隔执行数据库维护代码、数据库消息检查代码以及异常或错误处理代码。
进一步的,该通信方法还包括:对MySQL本地数据库进行数据存储,其具体过程包括:
读取配置文件以获取当前数据记录的写位置;继而连接数据库、初始化Socket服务端,之后便在数据存储主线程中阻塞等待Socket连接;当有Socket客户端建立连接后,创建对应的数据存储子线程,执行数据存储子线程处理函数;
当数据存储主线程出现错误或异常时,将进行相应的异常处理,并等待数据存储子线程结束、关闭Socket通信,最后将退出数据库并更新配置文件。
本发明的第三目的是提供一种智能家居系统。
本发明的一种智能家居系统,包括上述所述的基于OpenWrt的云交互网关。
与现有技术相比,本发明的有益效果是:
本发明的网关核心板运行OpenWrt系统,使用MySQL构建本地数据库,编程实现MySQL客户端、连接节点驱动程序、云平台插件程序、本地交互程序、WEB管理程序以及电源管理程序,具备良好的兼容性和扩展性,方便的推广应用于采用其他软硬件的设计方案中,从而达到兼容各种无线通信方式、适配各类云平台的目的。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1是本发明的一种基于OpenWrt的云交互网关结构示意图。
图2是网关核心板的软件模块组成框图。
图3是网关核心板的硬件模块组成框图。
图4是本发明的基于OpenWrt的云交互网关的通信方法流程图。
图5是上行处理子线程流程图。
图6是上行数据业务交互图。
图7是下行处理子线程流程图。
图8是下行数据业务交互图。
图9是本地数据库维护程序运行流程图。
图10是本地数据库数据存储程序主线程运行流程图。
图11是本地数据库数据存储程序子线程运行流程图。
具体实施方式
应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
术语解释:
OpenWrt是一款基于Linux内核开发的操作系统,其设备对象通常分为字符设备、块设备以及网络设备。
在所述智能家居网关中,本地设备处于系统末端,作为环境信息的感知器和控制动作的执行器。本地设备的功能和实现形式多种多样,既可以是各种各样的传感器,也可以是其他信息输入或获取装置;既可以是各种各样的家电设备(或家电控制器),也可以是其他信息输出或执行装置。由于功能各异,本地设备的设计实现千差万别。
通信方式是本地设备设计实现中的重要部分,应该依据设备功能、需求特性等因素合理选择通信方式,并与网关中对应的连接节点保持一致或兼容。例如对设备功耗要求苛刻时,可以选择蓝牙BLE或ZigBee;设备数量规模较大时,可以选用ZigBee或Z-Wave等。
图1是本发明的一种基于OpenWrt的云交互网关结构示意图。
如图1所示,本发明的一种基于OpenWrt的云交互网关,包括智能家居云平台、网关主体和本地设备。
网关主体包括网关核心板和若干连接节点;如图2所示,所述网关核心板以嵌入式OpenWrt系统为运行基础,包括连接节点驱动程序模块,其通过USB接口与连接节点进行数据交互;及
MySQL本地数据库,其用来存储本地设备数据,以服务端模式运行,接受客户端的数据存取请求;及
云平台插件程序模块,其负责云平台登录、鉴权以及数据上下行传输;及
MySQL存取客户端,其使用C语言实现的API接口函数和SQL语句实现数据记录的存取操作,并通过Socket分别与云平台插件程序模块和连接节点驱动程序模块通信,完成数据传输和状态反馈;所述MySQL存取客户端包括云平台上行端、云平台下行端、设备上行端以及设备下行端。
在所述智能家居网关中,连接节点位于网关核心板与本地单品设备之间,承担着“上通下达”的作用。得益于网关核心板提供的标准USB总线,网关可以接驳多个连接节点,也即对应多种本地单品设备。
使用USB接口作为连接节点和网关核心板之间的通信接口,既能保证通信接口的标准性和通用性,又能给连接节点的软硬件设计提供最大限度的自由,使得连接节点的软硬件设计更加灵活和高效。
为保证本地设备数据可靠上传、用户指令可靠下发,良好的匹配本地设备和云平台插件程序模块的数据通信速率,以防止数据丢失、遗漏以及重复,本发明使用MySQL数据库来存储上下行数据。
为保证数据记录读写时的原子操作特性,避免多个存取客户端对同一条数据记录进行存取时发生冲突,防止由此造成的数据损坏,需要考虑各存取客户端读写操作的互斥问题。MySQL提供了页级、表级、行级三种级别的锁表机制,合理使用MySQL的锁表机制可有效避免客户端数据存取冲突的现象。
网关核心板的软件设计以OpenWrt系统为基础,构建MySQL本地数据库,依据数据传输路径分别实现MySQL存取客户端、云平台插件程序模块以及连接节点驱动程序模块,并编程实现本地交互模块、电源管理模块和WEB管理模块。
USB设备的驱动由Linux内核中的“设备-总线-驱动”模型和相应的驱动程序模块提供,只需安装对应的设备驱动程序即可;同理,云平台插件程序模块所依赖的各种应用层网络协议由OpenWrt系统的网络协议栈或相应软件包提供,无需自行实现。
如图2所示,所述网关核心板还包括WEB管理模块,其基于LuCI接口来实现网关管理页面,用以进行网关配置和状态显示。
如图2所示,所述网关核心板还包括本地交互模块,其采用LED指示灯和液晶屏指示网关运行状态,同时提供用户操作按键。
如图2所示,所述网关核心板还包括电源管理模块,其用于实时监测电源输入和控制电源供应,以实现降低功耗和断电保存的目的。
在硬件方面,如图3所示,对于网关核心板,以MT7688AN为主芯片,在其最小系统的基础上,外围扩展了存储模块、网络接口、通用外设接口等,并设计实现了相应的电源管理电路;对于连接节点,采用CC2530芯片设计实现,通过USB接口与网关核心板通信;对于本地单品设备,采用CC2530芯片实现最小系统,并分别增加DHT11传感器和继电器,以实现ZigBee温湿度监测节点和ZigBee远程开关节点。
图4是本发明的基于OpenWrt的云交互网关的通信方法流程图。
如图4所示,本发明的一种基于OpenWrt的云交互网关的通信方法,包括:
连接节点驱动程序模块中的驱动程序运行时,读取相应配置文件并打开连接节点对应的设备节点文件,分别初始化Socket客户端和服务端;其中,Socket客户端为云平台插件程序模块;服务端为MySQL本地数据库;
创建上行处理子线程和下行处理子线程,在子线程中执行各自的处理函数,待所有子线程结束,关闭Socket通信和设备节点文件,退出程序;
若主线程发生异常或错误,则进行相应处理后等待子线程结束,最后关闭Socket通信和设备节点文件,退出程序。
数据上行时,连接节点驱动程序模块接收并解析对应连接节点的上行数据,发送至MySQL设备上行端,进而写入本地数据库中;MySQL云平台上行端从本地数据库中读取需要上传的数据后,发送至云平台插件程序模块,进而上传到相应云平台,完成数据上行传输。
同理,数据下行时,云平台插件程序模块接收对应云平台的下行数据,发送至MySQL云平台下行端,进而写入本地数据库中;MySQL设备下行端从本地数据库中读取需要下发的数据后,发送至连接节点驱动程序模块,进而下发至连接节点和本地单品设备,完成数据下行传输。
在本发明中,应用程序数据和用户配置信息需要永久保存(非易失性存储),例如数据表读写位置、Socket进程间通信文件路径、用户参数设置值等,此处将这些数据统一存放在配置文件中,并实现其读写、解析、修改等操作。
配置文件以文本文件的形式存在于OpenWrt文件系统中,可采用Turbo提供的标准文件操作函数(缓冲型文件操作函数)对其进行读写操作。解析配置文件时,对读取到的每行数据进行参数解析,首先要匹配信息名称;其次需要检索关键字符“=”,用以定位参数值的字符位置;之后,需要提取信息值或将字符串转换为数值(需剔除无效字符);最后,将解析的各类参数值封装在一个结构体中,以便参数传递和使用。
更新配置文件中的信息值时,首先需要将配置文件的所有数据读取到二维数组中,然后循环对每行数据进行字符串检索、匹配、替换等。在匹配到信息名称后删除该行数据,重新打印信息名称和参数值,组装为完整信息字符串后写入到数据缓存中,最后清空原配置文件并将修改后的数据写入到配置文件中,完成配置文件的修改和更新。
网关核心板的各应用程序之间进行数据交时,可采用多种通信机制,本文主要使用Socket套接字实现这些进程间的通信。Socket是一种被广泛使用的通信机制,其通信双方分别作为客户端和服务端,可以用于同一计算机上不同进程间的通信,也可以用于不同计算机间的跨网络通信。
Socket服务端建立并初始化时,首先创建一个Socket对象,其中AF_UNIX指定通信域为本地进程间通信,SOCK_STREAM指定传输类型为流类型,采用默认协议;继而检查通信载体文件是否存在,若存在则先将其删除,在后续绑定函数中再创建该文件;最后,开启Socket监听即可。
Socket服务端多线程处理是指在客户端发起通信连接时,服务端为每个通信链路创建一个独立的处理线程,在各自的处理线程中完成数据通信。采用这种方式,可以实现多个Socket客户端的并发访问,避免某个Socket链路工作时其他客户端发起连接所造成的干扰或冲突,或客户端长时间等待连接造成的低效率甚至错误现象。具体实现时,Socket服务端使用accept()阻塞等待客户端的连接,接受客户端的连接请求后与之建立通信链路。同时调用pthread_create()函数创建子线程,在指定的线程处理函数中实现数据传输。处理完毕后,子线程结束Socket通信,并调用pthread_exit()函数注销当前子线程,系统将自动释放线程资源。
Socket服务端开启监听后,客户端可发起通信连接,继而进行双向数据通信。任意一方使用send()或write()函数可发送数据,提供Socket对象描述符、数据缓存地址、发送长度即可(send()函数还需提供发送标志,可进一步控制发送行为);使用recv()或read()函数可接收对端数据,提供Socket对象描述符、接收数据存储地址、期望接收数据长度即可(recv()函数还需提供接收标志,可进一步控制接收行为)。
Socket通信结束后,通信双方使用close()或shutdown()函数即可断开通信链路,从而结束此次进程间的通信。
本发明中,MySQL数据库作为服务端运行于OpenWrt系统后台,接受MySQL客户端的连接和读写操作。在应用程序中,主要实现一个MySQL维护客户端和四个存取客户端。
MySQL客户端首先要进行初始化并登录MySQL数据库。连接MySQL服务端时,需提供目标服务器IP地址(此处为本地IP地址)、用户名及密码等;之后,使用mysql_query()函数配合SQL语句选择使用指定的数据库和数据表。
如图5所示,在上行处理子线程中,Socket客户端读取设备节点文件以获取上传数据包,并解析上传数据包的字段值;
Socket客户端将解析的上传数据包的字段值发送至MySQL设备上行端,并持续等待MySQL设备上行端的反馈消息,进而向连接节点反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
如图6所示,以ZigBee温湿度监测节点为例,对数据上行步骤介绍如下:
(1)通过ZigBee无线信道发送数据至连接节点,ZigBee技术可保证数据可靠送达。
(2)连接节点驱动程序阻塞读取温湿度数据并进行解析,物理接口为USB总线。
(3)通过Socket通信将解析后的结构化数据发送至MySQL上行设备端。
(4)MySQL上行设备端使用SQL语句将结构化数据写入本地数据库。
(5)通过Socket通信向上行云平台端发送通知,以告知最新的数据记录索引值。
(6)通过Socket通信向连接节点驱动程序发送存储ACK,表明数据存储成功。
(7)连接节点驱动程序向ZigBee连接节点反馈上行ACK,表明数据上报成功。
至此,温湿度上报数据已正确存入本地数据库中。
(8)上行云平台端得到最新的记录索引值后,查询并读取所有未上报的数据记录。
(9)本地数据库响应查询命令,反馈查询的数据记录值。
(10)上行云平台端解析数据记录,将结构化数据发送至云平台插件程序。
(11)云平台插件程序通过MQTT协议(OneNET云平台)/HTTP协议(乐为物联云平台)将温湿度数据发送至云平台服务器,MQTT/HTTP协议可保证可靠传输。
(12)云平台插件程序上报成功后,向MySQL上行云平台端反馈ACK。
(13)上行云平台端改写相应数据记录的上传标志,表明当前记录已上传云平台。
至此,温湿度数据已正确上传至云平台,完成了数据的上行通信。
如图7所示,在下行处理子线程中,Socket客户端接收MySQL设备下行端的下行数据包,并解析下行数据包的字段值;
Socket客户端将解析的下行数据包的字段值写入设备节点文件,即通过串口发送至连接节点,并持续等待连接节点的反馈消息,进而向MySQL设备下行端反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
如图8所示,以云平台控制ZigBee远程开关节点为例,对数据下行步骤介绍如下:
(1)云平台服务器通过MQTT协议(OneNET云平台)/HTTP协议(乐为物联云平台)将控制数据下发至对应云平台插件程序,MQTT/HTTP协议保证可靠传输。
(2)云平台插件程序解析控制数据,通过Socket通信发送至下行云平台端。
(3)下行云平台端通过SQL语句将结构化数据写入本地数据库。
(4)通过Socket通信向下行设备端发送通知,以告知最新的数据记录索引值。
(5)通过Socket通信向云平台插件程序发送存储ACK,表明数据下发成功。
至此,用户对ZigBee远程开关节点的控制指令已正确存入本地数据库中。
(6)下行设备端得到最新的记录索引值后,查询并读取所有未下发的数据记录。
(7)本地数据库响应查询命令,反馈查询的数据记录值。
(8)下行设备端解析数据记录,将结构化数据发送至连接节点驱动程序。
(9)连接节点驱动程序解析控制数据,并下发至连接节点,物理接口为USB总线。
(10)连接节点将控制数据发送至远程开关节点,ZigBee技术可保证数据可靠送达。
(11)控制数据成功发送至本地设备后,连接节点反馈动作ACK,表明控制生效。
(12)连接节点驱动程序进一步向下行设备端反馈ACK,表明下行数据分发成功。
(13)下行设备端改写对应数据记录的下行标志,表明当前记录已下发至本地设备。
至此,来自云平台的控制指令已正确下发至远程开关节点,完成了数据的下行通信。如图9所示,该通信方法还包括:对MySQL本地数据库进行维护,其具体过程包括:
读取配置文件以获取数据库的配置信息;之后连接MySQL本地数据库,并检查MySQL本地数据库以及其内存储的数据表是否存在,若缺失则创建相应数据库及数据表,并进行空白数据填充;若存在则直接进行数据表容量修正,并更新配置文件;之后进入维护循环,执行数据库定期维护工作,当有错误或异常发生时进行相应处理,进而结束进程。
其中,空白数据填充是为了构造数据表的环形缓存结构,同时也起到数据库存储设备(TF卡)剩余空间检查的功能。数据表容量修正其实就是获取数据表的记录数,使其等于预设值,以实现数据表的完整。在维护循环中,间隔执行数据库维护代码、数据库消息检查代码以及异常或错误处理代码。
如图10所示,该通信方法还包括:对MySQL本地数据库进行数据存储,其具体过程包括:
读取配置文件以获取当前数据记录的写位置;继而连接数据库、初始化Socket服务端,之后便在数据存储主线程中阻塞等待Socket连接;当有Socket客户端建立连接后,创建对应的数据存储子线程,执行数据存储子线程处理函数;
当数据存储主线程出现错误或异常时,将进行相应的异常处理,并等待数据存储子线程结束、关闭Socket通信,最后将退出数据库并更新配置文件。
如图11所示,在数据存储子线程处理函数中,程序依次接收Socket数据、判别是设备数据还是设备信息,进而解析数据包,并将各字段值写入对应的数据表中,作为一条新纪录存储,并更新配置文件中的写位置;存储成功后,子线程将通过Socket通信反馈存储状态,并向对应的读取客户端发送最新的存储位置。处理完毕后将结束Socket通信、注销子线程。
当有多个Socket客户端与存储程序建立连接时,将会对应创建多个数据存储子线程,每个数据存储子线程的处理过程一致,这样就保证了多个连接节点驱动程序或云平台插件程序的并发处理,每个插件程序的数据包独立处理,分别写入相应的数据表,互不干扰。
本发明还提供了一种智能家居系统。
本发明的一种智能家居系统,包括如图1所示的基于OpenWrt的云交互网关。
本发明的网关核心板运行OpenWrt系统,使用MySQL构建本地数据库,编程实现MySQL客户端、连接节点驱动程序、云平台插件程序、本地交互程序、WEB管理程序以及电源管理程序,具备良好的兼容性和扩展性,方便的推广应用于采用其他软硬件的设计方案中,从而达到兼容各种无线通信方式、适配各类云平台的目的。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.一种基于OpenWrt的云交互网关,包括智能家居云平台、网关主体和本地设备,其特征在于,所述网关主体包括网关核心板和若干连接节点;所述网关核心板以嵌入式OpenWrt系统为运行基础,包括连接节点驱动程序模块,其通过USB接口与连接节点进行数据交互;及
MySQL本地数据库,其用来存储本地设备数据,以服务端模式运行,接受客户端的数据存取请求;及
云平台插件程序模块,其负责云平台登录、鉴权以及数据上下行传输;及
MySQL存取客户端,其使用C语言实现的API接口函数和SQL语句实现数据记录的存取操作,并通过Socket分别与云平台插件程序模块和连接节点驱动程序模块通信,完成数据传输和状态反馈;所述MySQL存取客户端包括云平台上行端、云平台下行端、设备上行端以及设备下行端。
2.如权利要求1所述的一种基于OpenWrt的云交互网关,其特征在于,所述网关核心板还包括WEB管理模块,其基于LuCI接口来实现网关管理页面,用以进行网关配置和状态显示。
3.如权利要求1所述的一种基于OpenWrt的云交互网关,其特征在于,所述网关核心板还包括本地交互模块,其采用LED指示灯和液晶屏指示网关运行状态,同时提供用户操作按键。
4.如权利要求1所述的一种基于OpenWrt的云交互网关,其特征在于,所述网关核心板还包括电源管理模块,其用于实时监测电源输入和控制电源供应,以实现降低功耗和断电保存的目的。
5.一种如权利要求1-4中任一项所述的基于OpenWrt的云交互网关的通信方法,其特征在于,包括:
连接节点驱动程序模块中的驱动程序运行时,读取相应配置文件并打开连接节点对应的设备节点文件,分别初始化Socket客户端和服务端;其中,Socket客户端为云平台插件程序模块;服务端为MySQL本地数据库;
创建上行处理子线程和下行处理子线程,在子线程中执行各自的处理函数,待所有子线程结束,关闭Socket通信和设备节点文件,退出程序;
若主线程发生异常或错误,则进行相应处理后等待子线程结束,最后关闭Socket通信和设备节点文件,退出程序。
6.如权利要求5所述的基于OpenWrt的云交互网关的通信方法,其特征在于,在上行处理子线程中,Socket客户端读取设备节点文件以获取上传数据包,并解析上传数据包的字段值;
Socket客户端将解析的上传数据包的字段值发送至MySQL设备上行端,并持续等待MySQL设备上行端的反馈消息,进而向连接节点反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
7.如权利要求5所述的基于OpenWrt的云交互网关的通信方法,其特征在于,在下行处理子线程中,Socket客户端接收MySQL设备下行端的下行数据包,并解析下行数据包的字段值;
Socket客户端将解析的下行数据包的字段值写入设备节点文件,即通过串口发送至连接节点,并持续等待连接节点的反馈消息,进而向MySQL设备下行端反馈处理状态;
若发生异常或错误,则退出子线程;否则循环上述过程。
8.如权利要求5所述的基于OpenWrt的云交互网关的通信方法,其特征在于,该通信方法还包括:对MySQL本地数据库进行维护,其具体过程包括:
读取配置文件以获取数据库的配置信息;之后连接MySQL本地数据库,并检查MySQL本地数据库以及其内存储的数据表是否存在,若缺失则创建相应数据库及数据表,并进行空白数据填充;若存在则直接进行数据表容量修正,并更新配置文件;之后进入维护循环,执行数据库定期维护工作,当有错误或异常发生时进行相应处理,进而结束进程。
9.如权利要求5所述的基于OpenWrt的云交互网关的通信方法,其特征在于,该通信方法还包括:对MySQL本地数据库进行数据存储,其具体过程包括:
读取配置文件以获取当前数据记录的写位置;继而连接数据库、初始化Socket服务端,之后便在数据存储主线程中阻塞等待Socket连接;当有Socket客户端建立连接后,创建对应的数据存储子线程,执行数据存储子线程处理函数;
当数据存储主线程出现错误或异常时,将进行相应的异常处理,并等待数据存储子线程结束、关闭Socket通信,最后将退出数据库并更新配置文件。
10.一种智能家居系统,其特征在于,包括如权利要求1-4中任一项所述的基于OpenWrt的云交互网关。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810635309.6A CN108933716B (zh) | 2018-06-20 | 2018-06-20 | 基于OpenWrt的云交互网关、通信方法及智能家居系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810635309.6A CN108933716B (zh) | 2018-06-20 | 2018-06-20 | 基于OpenWrt的云交互网关、通信方法及智能家居系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933716A true CN108933716A (zh) | 2018-12-04 |
CN108933716B CN108933716B (zh) | 2021-06-01 |
Family
ID=64446090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810635309.6A Active CN108933716B (zh) | 2018-06-20 | 2018-06-20 | 基于OpenWrt的云交互网关、通信方法及智能家居系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108933716B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691031A (zh) * | 2019-10-15 | 2020-01-14 | 深圳华淩科技有限公司 | 一种弹性网关系统及方法 |
CN111030923A (zh) * | 2019-11-18 | 2020-04-17 | 重庆邮电大学 | 一种医院患者口服给药监测网关 |
CN111371869A (zh) * | 2020-02-26 | 2020-07-03 | 山西鲲博时代信息科技有限公司 | 一种基于智能多通路网关的多路通信监控方法 |
CN112245903A (zh) * | 2020-10-26 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 云应用中网络状态指示方法、操作系统、装置及存储介质 |
CN112367656A (zh) * | 2020-11-09 | 2021-02-12 | 深圳康佳电子科技有限公司 | 一种ZigBee网关控制方法、装置、存储介质及网关 |
CN112929259A (zh) * | 2021-01-22 | 2021-06-08 | 北京博瑞翔伦科技发展有限公司 | 一种基于后勤多业务泛场景的物联网关 |
CN113032018A (zh) * | 2019-12-25 | 2021-06-25 | 上海博泰悦臻电子设备制造有限公司 | 针对读取命令的改进方法及相关装置 |
CN116521105A (zh) * | 2023-07-03 | 2023-08-01 | 南京功夫豆信息科技有限公司 | 一种基于大数据设备数据管理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105471980A (zh) * | 2015-11-20 | 2016-04-06 | 合肥城市云数据中心有限公司 | 一种基于嵌入式OpenWrt无线路由器技术的云服务器数据访问方法 |
WO2017087285A1 (en) * | 2015-11-16 | 2017-05-26 | Securifi Corporation | System and method of wifi router based presence detection and control |
CN206251122U (zh) * | 2016-12-22 | 2017-06-13 | 珠海市金方达科技有限公司 | 一种具有存储功能的智能无线路由器 |
-
2018
- 2018-06-20 CN CN201810635309.6A patent/CN108933716B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017087285A1 (en) * | 2015-11-16 | 2017-05-26 | Securifi Corporation | System and method of wifi router based presence detection and control |
CN105471980A (zh) * | 2015-11-20 | 2016-04-06 | 合肥城市云数据中心有限公司 | 一种基于嵌入式OpenWrt无线路由器技术的云服务器数据访问方法 |
CN206251122U (zh) * | 2016-12-22 | 2017-06-13 | 珠海市金方达科技有限公司 | 一种具有存储功能的智能无线路由器 |
Non-Patent Citations (3)
Title |
---|
LI_WEN01: "linux 网络编程:使用两线程实现socket同时收发数据", 《HTTPS://BLOG.CSDN.NET/LI_WEN01/ARTICLE/DETAILS/52665505》 * |
YXWKAIFA: "实现经常使用的配置文件/初始化文件读取的一个C程序", 《HTTPS://WWW.CNBLOGS.COM/YXWKF/P/5368203.HTML》 * |
王远洋: "Linux下基于socket多线程并发通信的实现", 《微机算机信息(管控一体化)》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110691031A (zh) * | 2019-10-15 | 2020-01-14 | 深圳华淩科技有限公司 | 一种弹性网关系统及方法 |
CN111030923A (zh) * | 2019-11-18 | 2020-04-17 | 重庆邮电大学 | 一种医院患者口服给药监测网关 |
CN113032018A (zh) * | 2019-12-25 | 2021-06-25 | 上海博泰悦臻电子设备制造有限公司 | 针对读取命令的改进方法及相关装置 |
CN113032018B (zh) * | 2019-12-25 | 2024-03-01 | 博泰车联网科技(上海)股份有限公司 | 针对读取命令的改进方法及相关装置 |
CN111371869A (zh) * | 2020-02-26 | 2020-07-03 | 山西鲲博时代信息科技有限公司 | 一种基于智能多通路网关的多路通信监控方法 |
CN112245903A (zh) * | 2020-10-26 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 云应用中网络状态指示方法、操作系统、装置及存储介质 |
CN112367656A (zh) * | 2020-11-09 | 2021-02-12 | 深圳康佳电子科技有限公司 | 一种ZigBee网关控制方法、装置、存储介质及网关 |
CN112367656B (zh) * | 2020-11-09 | 2024-03-12 | 深圳康佳电子科技有限公司 | 一种ZigBee网关控制方法、装置、存储介质及网关 |
CN112929259A (zh) * | 2021-01-22 | 2021-06-08 | 北京博瑞翔伦科技发展有限公司 | 一种基于后勤多业务泛场景的物联网关 |
CN116521105A (zh) * | 2023-07-03 | 2023-08-01 | 南京功夫豆信息科技有限公司 | 一种基于大数据设备数据管理方法及系统 |
CN116521105B (zh) * | 2023-07-03 | 2023-09-08 | 南京功夫豆信息科技有限公司 | 一种基于大数据设备数据管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108933716B (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108933716A (zh) | 基于OpenWrt的云交互网关、通信方法及智能家居系统 | |
CN105704234B (zh) | 智能设备的控制方法及装置 | |
CN104932364B (zh) | 一种Modbus通讯协议的OPC UA转换装置及方法 | |
CN108667807A (zh) | 一种基于监控云平台与网关的协议自适应方法及系统 | |
CN107181659B (zh) | 基于rs485总线的智能柜通信方法以及系统 | |
CN104660682B (zh) | 一种基于td-lte的opc数据采集与监控智能终端 | |
CN110971614A (zh) | 物联网适配方法、系统、计算机设备及存储介质 | |
CN106878163A (zh) | 一种多数据协议转换的物联网智能网关 | |
US10284418B2 (en) | Network switch management via embedded management controller using management information base (MIB) to JSON parser | |
CN106094534A (zh) | 一种可穿戴设备智能手表控制的智能家居系统 | |
CN109889416A (zh) | 一种基于微服务架构的智能家居系统及构建方法 | |
CN111556163A (zh) | 基于opc ua的多传输协议设备监控系统 | |
CN109921986A (zh) | 一种多协议数据接入方法、装置、智能网关及存储介质 | |
CN105472044B (zh) | 一种基于xml的dl/t645与goose映射方法 | |
EA019680B1 (ru) | Способ и система доступа к сервису | |
CN104468274A (zh) | 一种集群监控管理方法及系统 | |
CN110417734A (zh) | 远程设备数据采集方法、装置和系统 | |
CN102185860A (zh) | 用于集成电路制造设备的标准化底层控制驱动系统 | |
US11997438B2 (en) | Declarative IoT data control | |
US10514713B2 (en) | Mailbox data storage system | |
Kastner et al. | Accessing KNX networks via BACnet/WS | |
CN104270432B (zh) | 基于钻井行业实时数据服务系统及数据交互方法 | |
CN103744365A (zh) | 用于客房控制终端与上位机通讯的桥接模块及其方法 | |
CN101360034B (zh) | 一种数字家庭数据交换中间件 | |
CN104578418B (zh) | 基于101规约配电自动化设备的配置方法和系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221228 Address after: 1201-7, Floor 12, Hanyu Jingu Artificial Intelligence Building, Jingshi Road, Jinan Area, China (Shandong) Pilot Free Trade Zone, 250000 Shandong Province Patentee after: Shandong Xinchen Artificial Intelligence Technology Co.,Ltd. Address before: 250061, No. ten, No. 17923, Lixia District, Ji'nan City, Shandong Province Patentee before: SHANDONG University |