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
本人已经移植完成。
后续开发使用,就是在此基础之上。