带有触摸屏控制面板的开源智能家居
文件列表(压缩包大小 3.62K)
免费
概述
使用带有nymea:core和nymea:app的Raspberry Pi和7英寸触摸屏来构建带有触摸控制面板的智能家居系统。
由于最新的nymea Raspberry Pi图像具有直接集成的触摸屏UI,因此该项目描述现已过时。只需下载nymea图像,然后使用屏幕将其闪存到Raspberry Pi,即可立即使用下面所述的设置。
一段时间以来,我将nymea用作我的智能家居解决方案,并在Raspberry Pi上使用nymea:core和在手机上使用nymea:app。最初,我想在手机或平板电脑上壁挂式安装,但效果不是很好。手机是为口袋而设计的,在不同环境下使用时,会引起很多小问题。一个例子是唤醒屏幕:电话通常在侧面有一个硬件按钮来打开屏幕,如果东西粘在墙上,这将是一个真正的挑战。接下来的事情是,移动操作系统不喜欢应用程序始终在信息亭模式下运行,是的,Android具有将应用程序锁定在前台的功能,但是在某些情况下,它做不到正确的事情。我在尝试时遇到了更多此类问题。虽然可能有可能获得一款Android设备来满足用例的需要,但似乎对OS的摆弄很多。因此,最终我决定寻找替代方案,最终选择了带有7英寸触摸屏面板的Raspberry Pi。
在我的地方,我使用带有nymea:core的Raspberry Pi,它通过蓝牙覆盖了我家的大部分区域(包括阳台),因此蓝牙传感器处于可触及的距离之内。但是,控制面板应放置在其他容易接触和使用的位置。因此,我现在设置了2个Raspberry Pi,一个用于核心,另一个用于触摸面板前端。如果你也想构建它,则可以使用在与nymea:app相同的Raspberry Pi上运行的nymea:core进行相同的创建。为了简化本文,我将继续介绍单RPi系统。如果你想将多个触摸面板连接到同一个nymea:core,或者希望使用像我这样的分布式面板,只需在不同的Raspberry Pi上遵循:core或:app步骤,并根据需要重复。
对于联网的东西,我主要使用飞利浦Hue灯泡(还有一些其他灯泡,但这是一个全新的hackster主题:)),安装一些小米Flower Care传感器以防止柠檬树变干,然后将Kodi媒体中心连接到它(我在看电影时调暗了灯光),并在设置中加入了一堆在线服务,例如推送通知,天气服务等等。鉴于本文的重点是触摸屏控制面板,我将不介绍一般的nymea设置,而是继续设置显示器。以下是一些屏幕快照,可提供一些见解:
在我遇到的那种特殊情况下组装Raspberry Pi并进行展示并不困难,但有些麻烦。事实证明,如果你首先将Raspberry Pi安装在显示器的背面,然后尝试将其放入外壳,在不使用过多力的情况下将其安装起来将非常棘手。相反,我发现先插入电缆,然后将RPi放在外壳的最终位置,最后插入显示器,要容易得多。然后拧紧所有螺钉。但是,请注意,使用此外壳后,无法在SD卡安装后添加/删除它。因此,我建议你首先使用不带外壳的Raspberry Pi在SD卡上设置基本系统,如果你手边有一个,可能甚至在HDMI端口上使用常规监视器。7英寸触摸屏也应该这样做,现在将其放在Raspberry Pi旁边的桌子上。一旦你确定SD卡上的系统可以正常工作并且可以通过SSH进行访问(稍后再进行介绍),就可以将它们放在一起了。
零件清单
请注意,SD卡已经在Raspberry Pi中。
步骤1:准备Raspberry Pi SD卡
从nymea Wiki下载nymea:core图像。准备SD卡取决于你的操作系统,但是关于如何写入SD卡映像有很多说明。我倾向于dd
按照下载链接下面的nymea Wiki中所述使用,但是如果你更喜欢用户友好的东西并且在所有主要操作系统上都可以使用,则Etcher也应该可以正常工作。完成后,将SD卡插入Raspberry。 Pi并启动它。如果要使用以太网电缆,请立即插入。如果要使用WiFi,可以在iOS或Android手机上安装nymea:app并从那里设置WiFi凭据,而无需将键盘插入Raspberry Pi。为此,请使用应用程序加载屏幕中的“无线设置”菜单项。
步骤2:安装nymea:app
Raspberry Pi的nymea:core映像仅预安装了nymea:core。此时,它应该已经可以在你的手机上使用了。你可以玩一些并检查一下。但是,我们对在触摸面板上运行该应用感兴趣,不是吗?:)Ubuntu Core Snap存储中有一个nymea:app桌面快照软件包。它是作为GNU / Linux桌面应用程序构建的,但是由于存在可用的armhf构建,因此也将安装在Raspberry Pi上。但是,默认情况下,它将仅安装开始菜单项。我们需要进行一些调整,才能在一体机模式下实际启动它,而无需整个桌面。nymea:core映像已预安装并启用了SSH。在手机上使用nymea:app查找网络中的Raspberry Pi并获取IP地址。找到后,使用SSH登录Raspberry Pi(将192.168.0.100替换为Raspberry Pi的IP):
$ ssh nymea@192.168.0.100
nymea@192.168.0.1's password: nymea
登录后,安装应用
$ sudo snap install nymea-app
好吧,如果一切顺利的话,黑客部分就来了:)
第3步:在信息亭模式下使其自动启动
由于我们不需要整个桌面,因此我尝试了一些简单的窗口管理器,并在将lightdm与自动登录到openbox会话中使用时获得了最大的成功。因此,让我们安装lightdm和openbox:
$ sudo apt-get install lightdm openbox
现在编辑/etc/lightdm/lightdm.conf
。我最喜欢的编辑器是nano:
$ sudo nano /etc/lightdm/lightdm.con
转到该[Seat:*]
部分并更改以下设置(也删除#
该行开头的):
user-session=openbox
autologin-user=nymea
在其中创建具有以下内容的openbox自动启动文件~/.config/openbox/autostart
:
/snap/bin/nymea-app
现在创建一个systemd服务文件以自动启动lightdm。创建/etc/systemd/system/nymea-app.service
内容:
[Unit]
Description=LightDM with nymea:app autostart
After=systemd-user-sessions.service
[Service]
ExecStart=/usr/sbin/lightdm
Restart=always
[Install]
WantedBy=multi-user.target
使systemd加载新文件并将其添加到自动启动中:
$ sudo systemctl daemon-reload
$ sudo systemctl enable lightdm --now
步骤4:调整和清理
旋转屏幕:
默认情况下,外壳中的Raspberry Pi触摸屏上下颠倒旋转。你可以通过添加以下行来解决此问题/boot/config.txt
lcd_rotate=2
修复图形性能:
nymea:app是使用Qt和QtQuick2编写的,其中大量使用了OpenGL(ES2)。由于某些原因,Raspberry Pi图像默认情况下未启用该功能,因此对于nymea:app,图形性能会有所下降。要解决此问题,请运行
sudo raspi-config
转到Advanced Options
→GL Driver
并选择GL (Fake KMS)
驱动程序。使用非伪造的KMS驱动程序并没有取得很大的成功。我认为从理论上讲它应该可以工作,但是假冒的KMS当然足够了。或者,你可以再次编辑/boot/config.txt
并在最后添加以下行:
dtoverlay=vc4-fkms-v3d
隐藏鼠标光标:
默认情况下,每当你触摸屏幕时,使用的X11服务器都会绘制一个鼠标光标。鉴于我们使用的触摸屏没有什么意义。要隐藏该内容,请/etc/lightdm/lightdm.conf
再次打开并编辑以下行(删除#
并在末尾附加-nocursor
):
xserver-command=X -nocursor
关闭显示器,而不只是将其消隐:
现在,这是最棘手的调整,但我保证这将是最后一个需要的调整:)
默认情况下,Raspberry Pi在空闲时将仅使屏幕空白。这对于常规显示器来说是有道理的,但是对于这种触摸屏型号来说,也没有多大意义。我们希望屏幕在空闲时完全关闭,而不是被点亮并只涂成黑色。屏幕电源可以通过sysfs文件打开和关闭/sys/class/backlight/rpi_backlight/bl_power
。我们可以通过写入0
或写入此文件来手动打开和关闭它1
。为了在屏幕变黑/变黑时自动执行此操作,让我们安装xscreensaver并将其执行包装在一个脚本中,该脚本可以挂接到相应的位置:
$ sudo apt-get install xscreensaver
现在创建一个包含内容的文件/usr/local/bin/xscreensaver-wrapper.sh
:
#!/bin/bash
bl_on() {
sudo /usr/local/bin/screenon.sh
}
bl_off() {
sudo /usr/local/bin/screenoff.sh
}
process() {
while read line; do
case "$line" in
UNBLANK*)
bl_on
;;
BLANK*)
bl_off
;;
RUN*)
bl_off
;;
esac done
}
/usr/bin/xscreensaver &
/usr/bin/xscreensaver-command -watch | process
并使其可执行:
$ sudo chmod +x /usr/local/bin/xscreensaver-wrapper.sh
接下来,再创建两个包含内容的文件/usr/local/bin/screenon.sh
echo 0 | sudo tee /sys/class/backlight/rpi_backlight/bl_power
和/usr/local/bin/screenoff.sh
内容
echo 1 | sudo tee /sys/class/backlight/rpi_backlight/bl_power
使用以下命令再次使它们都可执行:
$ sudo chmod +x /usr/local/bin/screenon.sh
$ sudo chmod +x /usr/local/bin/screenoff.sh
最后遗漏的是授予用户nymea
执行这些sudo命令的权限,而无需输入密码。为此,请编辑/etc/sudoers
,然后添加两行,如下所示(重要信息:请正确注意以正确执行此操作。弄乱sudoers文件可能会使你无法进入系统,并且需要更深入的Linux知识或刷新才能解决此问题):
...
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
nymea ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/screenoff.sh
nymea ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/screenon.sh
# See sudoers(5) for more information on "#include" directives:
...
再次编辑〜/ .config / openbox / autostart并将此行插入开头,以便与nymea:app一起调用xscreensaver。
/usr/local/bin/xscreensaver-wrapper.sh &
步骤5:完成
重新启动并享受成果!
所有需要的文件在下载区均可找到。
via:
https://www.hackster.io/michael_zanetti/open-source-smart-home-with-touchscreen-control-panel-55e613
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)