基于Domoticz智能家居系统(十三)Domoticz-3.8153在Tiny6410开发板上的移植

Domoticz-3.8153在Tiny6410开发板上的移植

本文将在友善之臂Tiny6410开发板上移植Domoticz-3.8153,起因是去年在mini2440上移植的3.5877版本编译出来放到开发板上个头很大,而且该版本有bug,具体说例如调光灯不能向外发布MQTT消息且与手机版界面不能同步。而后笔者尝试在domoticz的github上找个最新的版本(4.9700)移植,却发现该版本需要交叉编译器支持C++11标准,而C++11只有g++4.7以后的版本才支持,而友善之臂提供的系统和库文件都是基于其制作的arm-linux-gcc4.5.1版本的,目前没有时间尝试自制交叉编译器,而且,通常来说,更换交叉编译器版本,可能带来系统动态库的版本兼容性问题,所以暂且放弃,找到一个官方稳定版的3.8153版本。
经过使用,还算可以,已经没有了上述的bug,而且3.8153版本已经支持了小米智能网关,所以就先省事一下,移植这个。

  • Markdown和扩展Markdown简洁的语法
  • 代码块高亮
  • 图片链接和图片上传
  • LaTex数学公式
  • UML序列图和流程图
  • 离线写博客
  • 导入导出Markdown文件
  • 丰富的快捷键

一、本文使用的平台和编译器

1、硬件平台是友善之臂Tiny6410
2、软件方面:
VMWare虚拟机上装的RedHat Enterprise 5.5版本的PC桌面系统
3、交叉编译器为友善之臂提供的arm-linux-gcc-vfp- 4.5.1版

二、源码下载及移植参考文章

1、Domoticz-3.8153源代码下载地址

https://github.com/domoticz/domoticz/archive/3.8153.tar.gz

2、参考文章

1、基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(三)编译并安装cmake和git工具
2、基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(四)交叉编译OpenSSL、c-ares、e2fsprogs和mosquitto
主要是使用OpenSSL
3、基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(五)交叉编译并安装zlib、curl、boost和domoticz
4、基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(六)使用domoticz联合arm上的mosquitto实现Android客户端远程控制

三、编译过程

1、参考上述文章把OpenSSL、zlib、curl、boost交叉编译安装在虚拟机linux中的/usr/local/arm目录下;
2、把domotiz-3.8153.tar.gz拷贝到虚拟机中,并解压,进入目录后,修改CMakeLists.txt(以下所述第xx行为大概位置):
(1)、找到第4行

project(domoticz)

在下面加入

set(OPENSSL_ROOT_DIR "/usr/local/arm/ssl")
set(OPENSSL_LIBRARIES "/usr/local/arm/ssl/lib/")

修改后如图所示:
这里写图片描述

(2)找到第477行

option(USE_STATIC_BOOST "Build with static BOOST libraries" YES)

在它上面加入:

SET(Boost_ADDITIONAL_VERSION "1.63.0" "1.63.0")
SET(BOOST_ROOT /usr/local/arm/boost)

如图所示:
这里写图片描述
(3)找到第502行

option(USE_BUILTIN_ZLIB "Use builtin zlib library" NO)

在它上面加入:

set(ZLIB_ROOT /usr/local/arm/zlib)

如图所示:
这里写图片描述
(4)找到第520行

FIND_PACKAGE(CURL)

在它上面加上:

set(CURL_INCLUDE_DIR "/usr/local/arm/curl/include")
set(CURL_LIBRARY "/usr/local/arm/curl/lib/libcurl.so")

如图所示:
这里写图片描述

然后保存。

3、编写一个sh脚本用来创建编译工程:

rm -fr build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_BUILTIN_LUA=YES -DUSE_BUILTIN_SQLITE=YES  -DUSE_STATIC_BOOST=ON -DUSE_PYTHON=NO  -DCMAKE_C_COMPILER="arm-linux-gcc" -DCMAKE_CXX_COMPILER="arm-linux-g++" -DCMAKE_INSTALL_PREFIX="/work/addition-disk/new_work/domoticz/" CMakeLists.txt ..

保存为build.sh

上面的-DCMAKE_INSTALL_PREFIX=”/work/addition-disk/new_work/domoticz/”引号中的目录是编译好之后要安装到的目标目录,需要看具体情况做修改。

然后:

chmod +x build.sh

然后执行脚本:

./build.sh

或者

sh build.sh

执行完之后,生成了build目录。
这里写图片描述
4、进入build目录,然后

make

编译完,如图:
这里写图片描述

5、安装:

make install

这里写图片描述
进入安装目录查看结果:
这里写图片描述

6、关于配置启动脚本可以参考:
基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(五)交叉编译并安装zlib、curl、boost和domoticz
一文中的做法,不再赘述。

7、设置中文界面参考:
基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(六)使用domoticz联合arm上的mosquitto实现Android客户端远程控制

设置好之后,可以看到:
这里写图片描述

版本号虽然显示是V3.5876,但是实际上它是V3.8153版。

后记

为了配合后续的使用,可以把mosquitto-1.4.9一起编译安装到Tiny6410开发板上,这样的话,一个板子就可以担当整个智能家居系统的总服务器了,控制客户端,可以是PC版,也可以是手机移动版;而受控客户端,主要是使用MQTT作为通信协议来完成。

关于mosquitto在Tiny6410上的移植,可以参考:
基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(四)交叉编译OpenSSL、c-ares、e2fsprogs和mosquitto

本人已经移植完成。
后续开发使用,就是在此基础之上。

猜你喜欢

转载自blog.csdn.net/sqshining/article/details/81430671