在物联网时代,越来越多的设备被连接起来。这也适用于你自己的Raspberry Pi智能家居。然而,每个设备都使用不同的传输协议,这可能会让控制它们变得相当不便。幸运的是,有一个解决办法:智能家居系统OpenHAB提供了许多现成的软件包,通过这些软件包,可以使用一个界面来控制所有来自知名制造商的设备。甚至对于那些默认尚不支持的组件,我们也可以简单地编写自己的插件。
这的主要优势是,我们可以通过一个控制面板来监控和控制所有连接的设备,无论是在室内还是室外。
为了能够使用OpenHAB,从而为我们的Raspberry Pi智能家居迈出第一步,我们在这个教程中首先进行OpenHAB的安装、设置和配置,然后在接下来的教程部分中连接更多模块。
Raspberry Pi 智能家居所需的硬件部件
正如已经提到的,几乎所有设备和传感器都可以与OpenHAB一起使用,包括我们在之前的教程中已经使用过的许多设备。此外,以下组件是必不可少的,这些硬件都能通过文章末尾的联系方式进行购买:
- Raspberry Pi(推荐使用3B型号)
- micro SD卡(最小16GB,推荐32GB)
- 电源插头(micro USB)
- 可能需要的LAN线
- 最佳选择:Raspberry Pi外壳
为了让你对可能性和进一步的教程有一个大致的了解,以下是支持的一些其他设备、协议和服务:
- Amazon Echo
- Amazon Dash Buttons
- 蓝牙
- IFTTT
- KODI媒体中心
- Philips Hue灯
- Sonos HiFi系统
- Belkin WeMo开关
- 以及更多
所有新的物联网设备(或宣传用于智能家居应用中的设备)的协议都被OpenHAB支持,并且越来越多的协议正在被添加。
在 Raspberry Pi 上安装 OpenHAB
基本上有两种方法来安装OpenHAB。第一种(稍微复杂一些)方法是在现有的Raspbian系统上扩展所有软件包。另一种更方便的解决方案是使用预装了软件包的Raspbian系统,这也是我们在本教程中所做的。
首先,我们在项目页面上加载最新的镜像,它的名字是“openhabianpi-raspbian-……xy”。保存文件。
最新的镜像:https://github.com/openhab/openhabian/releases
如果你的micro SD卡还没有插入到你的电脑/Mac的卡槽中,请将其插入。如果你的SD卡还没有格式化,我推荐使用SD Formatter工具。这样你可以简单地用两次点击删除你的(micro)SD卡,然后继续使用。
SD Formatter工具:https://www.sdcard.org/downloads/formatter/
我们现在需要一个可以将“.xy”文件写入SD卡的工具。为此,我使用Etcher,它适用于所有常见的操作系统。下载并安装它。然后选择当前加载的文件并按下“Flash!”。
Etcher:https://www.balena.io/etcher
这个过程需要几分钟。在此期间,你可以先将以太网电缆连接到Pi。如果你无法建立以太网连接,你也可以立即输入WiFi数据。
在镜像写入SD卡后,在文件资源管理器中打开该目录。有一个名为“openhabian.conf”的文件,需要用文本编辑器打开。下面是两行带有注释(用井号/哈希标签)的行。删除开头的井号标签,并输入你的WiFi网络的名称和密码,然后保存文件:
#wifi_ssid="My Wi-Fi SSID"
#wifi_psk="password123"
现在将micro SD卡插入Pi并连接电源。在接下来的45到60分钟内,你不应该断开电源,因为所有必要的更新和配置文件都将被加载!只有在所有点都完成(安装步骤会显示出来,因此你可以在必要时重新启动)
如果一切顺利,你的Raspberry Pi已经连接到网络,你现在可以在浏览器中打开页面:http://openhabianpi:8080
将显示设置菜单(下面的文章中会提供逐步说明)。
通过SSH访问更新 OpenHAB
你可以通过Raspberry Pi上的键盘直接输入命令,或者通过SSH来输入。选择你的SSH客户端(如Putty),并输入以下主机名:
openhabianpi
默认用户名是openhabian,密码也是openhabian。你也可以事先在配置文件中更改这些信息。
如果更新过程尚未完成,会显示相关信息。否则,或者一旦此过程完成,输出将如下所示:
在这里,我们调用以下命令:
sudo openhabian-config
如果你已经更改了密码,请输入当前密码进行确认,否则使用默认密码:openhabian
首先,我们选择“01 | 更新”,然后选择“02 | 更新系统”。在“30 | 系统设置”下,你可以更改其他设置,如主机名、时区(默认为柏林)、密码、端口和WiFi网络。
通过“可选组件”,你可以添加更多软件包,如Node-RED等,这包括你可以轻松创建自己的物联网应用,而无需编写太多程序。如有必要,我可以在另一个教程中详细介绍。
Raspberry Pi 家庭自动化:OpenHAB用户界面
当然,我们也希望为我们的Raspberry Pi家庭自动化提供一个用户界面或图形用户界面,以便我们可以从智能手机、平板电脑、触摸屏或PC控制后续组件。因此,我们现在就来设置它。HMI可以能通过文章末尾的联系方式进行购买。
首先,我们在同一网络的浏览器上打开:http://openhabianpi:8080/start/index:
在这里,我们选择“标准”,这将预先安装一些主题。稍后,可以手动添加更多。
等待片刻后,我们现在可以确定用户界面的外观。有HABPanel、Paper UI和基本UI可供选择。你可以稍后更改选择。例如,我喜欢Paper UI。
在左侧,你会找到菜单。可以在这里进行选择。由于我们还没有安装任何内容,因此控制菜单也是空的。在“配置”下,我们可以在“附加组件”中为智能家居设置和安装新软件包。
在 Raspberry Pi 上安装 OpenHAB 附加组件
为了能够使用某些模块,如Phillips Hue Light或Z-Wave,必须先安装必要的文件。在本例中,我们从网络绑定开始,它检查设备当前是否处于本地网络中。这可用于触发某些操作,例如你离家时。
我们在左侧切换到“附加组件”,然后切换到“绑定”选项卡。在这里,我们正在寻找要安装的软件包,在我们的例子中是“网络绑定”。点击“安装”后,可能需要几分钟时间来完成安装。
一旦所有内容都安装完毕,我们导航回左侧栏中的“收件箱”。点击大加号(+)会显示已安装的绑定,包括我们的网络绑定。如果选择它,则会在我们的网络中搜索设备。
如果你不确定智能手机的内部IP地址,你可以查看路由器(192.168.1.1)或直接查看设备的设置。
点击蓝色勾选标记,我们可以添加设备并相应地命名它们。其他设备也可以从列表中忽略或删除(忽略它们只是暂时不显示,完全删除会使它们消失,直到你再次搜索)。
我们现在切换到“配置”>“事物”。选择你刚刚添加的设备。在这里,你会找到“在线”和“时间”这两个项目。我们选择这两个复选框:
通过点击上方的引脚按钮,可以更改某些设置(如IP地址等)。其他设备有可以按需激活的不同项目。
如果我们现在在左侧面板中切换到“控制”,我们会看到已激活的设备。下面是已激活的项目。在我们的例子中,这只是一个布尔值或数字,但也可以是温度值等。
在后续教程中,我们将安装和配置其他内容。
创建自己的OpenHAB事物和项目——显示CPU温度
最后,我想展示一下创建自己的模块有多简单。但是,此步骤是可选的,如有必要可以跳过。
OpenHAB知道两种类型的对象:事物(Things)和项目(Items)。简而言之,事物在控制面板中以磁贴的形式显示,并且可以有多个项目(值、按钮等)。在一个小示例中,我们将显示CPU温度:
在这个示例中,我们将创建一个带有两个项目(温度和最后一次查询的时间)的事物。
由于我们将为此执行shell命令,因此必须首先为此安装一个附加组件。在“附加组件”->“绑定”下搜索Exec Binding(文档)并安装它。
然后通过SSH连接到Raspberry Pi。首先,我们创建一个脚本以读取CPU温度。这也可以是Python脚本、Java或C++程序。
sudo nano /etc/openhab2/scripts/cpu_temp.sh
它包含以下内容:
#! /bin/bash
INPUT=$(/bin/cat /sys/class/thermal/thermal_zone0/temp)
TEMP=$(echo "scale=3; $INPUT / 1000" | bc)
echo $TEMP
按CTRL + O保存,然后按CTRL + X退出Nano编辑器。
我们现在授予必要的权限:
chmod +x /etc/openhab2/scripts/cpu_temp.sh
作为测试,你可以立即运行它,应该会显示温度:bash/etc/openhab2/scripts/cpu_temp.sh
接下来,使用以下内容创建我们的事物:
sudo nano /etc/openhab2/things/cpu_temp.things
Thing exec:command:cpu_temp "CPU Temperatur" [command="bash /etc/openhab2/scripts/cpu_temp.sh", transform="REGEX((.*?))"]
保存并关闭编辑器后,我们创建项目:
sudo nano /etc/openhab2/items/cpu_temp.items
在这里,我们插入以下两个项目:
String CPUTEMPRaw "Temperature [%.1f °C]" (All) {channel="exec:command:cpu_temp:output"}
DateTime CPUTEMPLastExecution "Executed[%1$tH:%1$tM Uhr]" {channel="exec:command:cpu_temp:lastexecution"}
有关两者(“事物 ”和 “项目”)细节的详细信息,请参阅文档页面。
https://www.openhab.org/docs/configuration/things.html
https://www.openhab.org/docs/configuration/items.html
导航回控制面板后,你将看到上面显示的视图。
在您的网络外部访问面板
您还可以使用内部网络名称(http://openhabianpi:8080)从智能手机或平板电脑访问控制面板。此外,还有适用于Android设备和iOS iPhone或iPad的应用程序。
然而,您可能还希望在外出时(例如,在移动中或在工作场所)访问您的智能家居控制面板,但如果不采取预防措施,这是不可能的。为此,您需要做到以下几点:
- 一方面,如果您没有静态IP地址,则需要一个使用动态域名系统(Dynamic Domain Name System,简称dDNS)服务的账户,如NoIP或DynDNS。
- 此外,您需要在路由器的“端口转发”设置中为您的Raspberry Pi(Raspberry Pi)的内部IP地址激活端口(对我们来说为8080)。
- 另外,当全局IP地址更改时,必须通知dDNS服务。您的路由器可能提供此选项(如Fritz Box等路由器有相关设置),或者您可以在Raspberry Pi上执行此步骤。有关此步骤的教程可在此处找到。
但请注意,控制面板未受密码保护,因此您很容易面临安全风险。因此,除非您已采取适当的预防措施并确保自己的操作无误,否则我不建议将面板设置为可从外部访问。
原文链接: https://tutorials-raspberrypi.com/raspberry-pi-home-automation-install-configure-openhab/