0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样在树莓派上使用OpenHAB

454398 来源:网络整理 作者:网络整理 2019-11-19 16:54 次阅读

步骤1:

始终要确保您使用的是最新更新的软件包,因此,从此开始吧:

sudo apt-get updatesudo apt-get upgrade

某些应用可能会要求您更新固件,但通常不是必需的。我建议还是这样做。

sudo rpi-update

您可以使用任何一种将文件复制到Pi的方式。我选择下载它们。我还喜欢将它们直接下载到将要从中提取它们的文件夹中。然后,我将做一些整理工作,并删除不必要的zip文件。首先让我们创建所需的文件夹。

sudo mkdir /opt/openhab

然后您将要下载最新版本到该文件夹。您可以通过以下方法进行操作:转到openHab下载页面,然后右键单击运行时核心下载并复制链接地址以获取最新版本。然后,您可以将下面的网址替换为您复制的网址。

cd /opt/openhab

wget https://github.com/openhab/openhab/releases/download/v1.5.1/distribution-1.5.1-runtime.zip

好,让我们安装此b * tch。您下载的zip文件应该已经提取到正确的位置。如果您还没有,请转到openhab文件夹并在其中解压缩运行时zip文件。

cd /opt/openhabsudo

unzip distribution-1.5.1-runtime.zip

现在让我们删除将不再包含的zip文件。

rm distribution-1.5.1-runtime.zip

很好,已经安装了运行时并删除了zip文件,但是为了使openHAB正常工作,您需要添加绑定。在提取运行时zip后,将创建一个“附加组件”文件夹。所有绑定都属于此文件夹。转到addons文件夹并解压缩addons zip。首先让我们将它们下载到适当的文件夹中。

cd addons/

wget https://github.com/openhab/openhab/releases/download/v1.5.1/distribution-1.5.1-addons.zip

其中包含可用于openHAB的所有绑定。如openHAB Wiki中所述,绑定是可选软件包,可用于扩展openHAB的功能。通过绑定的帮助,openHAB用户可以例如访问Asterisk通信软件或连接到KNX家庭自动化总线。

让我们先安装所有这些,以后我们就可以筛选并决定保留哪一个。您只需从addons文件夹中删除.jar文件。

sudo unzip distribution-1.5.1-addons.zip删除或擦除zip文件。

rm distribution-1.5.1-addons.zip

接下来,我们将一个文件夹返回到openhab文件夹并复制“ openhab_default.cfg”文件。您将其称为“ openhab.cfg”。如果您必须更新您的openhab,则默认文件也会被更新。通过复制该文件,openhab将使用该文件进行配置,并且也不会对其进行更新。由于您将进行自己的自定义配置,因此务必将这些文件写入“ openhab.cfg”文件中以确保安全。

cd 。. sudo cp configurations/openhab_default.cfg configurations/openhab.cfg

在为了了解这种疯狂的事情是如何工作的,我建议部署演示应用程序。这是让您立足并对此有所了解的好方法。

cd /opt/openhab

wget https://github.com/openhab/openhab/releases/download/v1.5.1/distribution-1.5.1-demo-configuration.zip

转到openhab文件夹并在那里提取演示zip文件。 。 cd /opt/openhab

sudo unzip distribution-1.5.1-demo-configuration.zip

删除垃圾文件

rm distribution-1.5.1-demo-configuration.zip

默认情况下,“ start.sh”脚本不是可执行文件。为了使它可执行,请执行以下操作:

sudo chmod +x start.sh

sudo 。/start.sh

然后,乐趣就开始了!您应该有一个完全加载的演示,可以用来熟悉openHAB。只需转到您的电话或计算机,然后将以下网址放在您喜欢的浏览器中即可。确保将IP地址替换为Pi的IP地址。

http://192.168.X.XXX:8080/openhab.app?sitemap=demo

步骤2:将OpenHAB配置为在启动时自动启动

如果发生电涌,断电或决定重新启动Pi,则需要重新启动您的OpenHAB程序。后端那是一个很大的痛苦,所以我们将要配置它在启动时启动。

首先,您将要在/etc/init.d文件夹中创建一个名为“ openhab”的新文件。

您将要使用nano编辑器向openhab文件中添加几行代码或您最喜欢的编辑器。

sudo nano /etc/init.d/openhab

添加此代码:

#! /bin/sh

### BEGIN INIT INFO # Provides: openhab # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: OpenHAB Daemon ### END INIT INFO# Author: Thomas Brettinger# Do NOT “set -e”# PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/binDESC=“Open Home Automation Bus Daemon” NAME=openhab DAEMON=/usr/bin/java PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME ECLIPSEHOME=“/opt/openhab”; HTTPPORT=8080 HTTPSPORT=8443 TELNETPORT=5555 # be sure you are adopting the user to your local OH user RUN_AS=pi# get path to equinox jar inside $eclipsehome folder cp=$(find $ECLIPSEHOME/server -name “org.eclipse.equinox.launcher_*.jar” | sort | tail -1);DAEMON_ARGS=“-Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTPPORT -Djetty.port.ssl=$HTTPSPORT -Djetty.home=$ECLIPSEHOME -Dlogback.configurationFile=$ECLIPSEHOME/configurations/logback.xml -Dfelix.fileinstall.dir=$ECLIPSEHOME/addons -Djava.library.path=$ECLIPSEHOME/lib -Djava.security.auth.login.config=$ECLIPSEHOME/etc/login.conf -Dorg.quartz.properties=$ECLIPSEHOME/etc/quartz.properties -Djava.awt.headless=true -jar $cp -console ${TELNETPORT}”# Exit if the package is not installed [ -x “$DAEMON” ] || exit 0# Read configuration variable file if it is present [ -r /etc/default/$NAME ] && 。 /etc/default/$NAME# Load the VERBOSE setting and other rcS variables 。 /lib/init/vars.sh# Define LSB log_* functions. # Depend on lsb-base (》= 3.2-14) to ensure that this file is present # and status_of_proc is working. 。 /lib/lsb/init-functions# # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --chdir $ECLIPSEHOME --exec $DAEMON --test 》 /dev/null \ || return 1 start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --chdir $ECLIPSEHOME --exec $DAEMON -- $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. return 0 }# # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL=“$?” [ “$RETVAL” = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ “$?” = 2 ] && return 2 # Many daemons don‘t delete their pidfiles when they exit. rm -f $PIDFILE return “$RETVAL” }# # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # do_stop sleep 1 do_start return 0 }case “$1” in start) log_daemon_msg “Starting $DESC” do_start case “$?” in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; stop) log_daemon_msg “Stopping $DESC” do_stop case “$?” in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; status) status_of_proc “$DAEMON” “$NAME” && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave ’force-reload‘ as an alias for ’restart‘。 # #log_daemon_msg “Reloading $DESC” “$NAME” #do_reload #log_end_msg $? #;; restart|force-reload) # # If the “reload” option is implemented then remove the # ’force-reload‘ alias # log_daemon_msg “Restarting $DESC” do_stop case “$?” in 0|1) do_start case “$?” in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo “Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}” 》&2 echo “Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}” 》&2 exit 3 ;; esac :

您也可以转到此处查看可读版本,也可以从此处复制并粘贴代码。

您可能需要将 RUN_AS = pi 更改为当前用户。

最后,您将要使它成为可执行文件。

sudo chmod a+x /etc/init.d/openhab

并使其在Pi的开始时自动启动

sudo update-rc.d openhab defaults

如果出现以下错误:

insserv: Script openhab is broken: incomplete LSB comment. insserv: missing `Provides:’ entry: please add. insserv: missing `Required-Start:‘ entry: please add even if empty. insserv: missing `Required-Stop:’ entry: please add even if empty. insserv: missing `Default-Start:‘ entry: please add even if empty. insserv: missing `Default-Stop:’ entry: please add even if empty. insserv: Default-Start undefined, assuming empty start runlevel(s) for script `openhab‘ insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `openhab’

然后出现缩进问题。有时,在粘贴到编辑器中时,文本会以易于阅读的格式放置,从而在某些初始代码行中放置缩进。为update-rc.d编写的任何信息都必须在第一列中。并且在“#”之前不应有任何表格或空格。如果有任何删除它们,否则您将生成该错误。

返回您的文件并仔细检查。

sudo nano /etc/init.d/openhab

前几列应如下所示(请勿复制粘贴,包含ASCII字符间距),仅将其用作可视示例:

#!/bin/sh

### BEGIN INIT INFO

#提供:openhab

#必需开始:$ remote_fs $ syslog

#必需停止:$ remote_fs $ syslog

#默认-开始:2 3 4 5

#默认值:0 1 6

#简短描述:OpenHAB守护进程

### END INIT INFO

注意每个#之前没有空格或缩进

完成,您的Raspberry Pi现在将在启动时启动openHAB。

步骤3:附加功能(管理控制台)

FYI

openHAB有一个很酷的管理控制台,称为HABmin。它非常适合执行管理任务以及配置各种过程。搜索它,并确定它是否适合您。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件
    +关注

    关注

    67

    文章

    4348

    浏览量

    85620
  • 树莓派
    +关注

    关注

    113

    文章

    1639

    浏览量

    104736
收藏 人收藏

    评论

    相关推荐

    SBCFormer首次在树莓派4B上以1fps处理取得80.0%精度

    计算机视觉在不同领域解决已成为解决实际问题的常用方法,如智慧农牧管理。这类场景并不需要每秒处理许多帧,此时树莓派这类单板主机就派上了用场。
    的头像 发表于 11-09 12:32 568次阅读
    SBCFormer首次在<b class='flag-5'>树莓</b>派4B上以1fps处理取得80.0%精度

    树莓派Pico RP2040上怎样使用MicroPython呢?

    RP2040 是一款由树莓派公司设计的 32 位双核 ARM Cortex-M0+ 微控制器芯片,于 2021 年 1 月发布,作为树莓派 Pico 开发板的核心部件。
    的头像 发表于 11-08 14:29 1393次阅读
    在<b class='flag-5'>树莓</b>派Pico RP2040上<b class='flag-5'>怎样</b>使用MicroPython呢?

    基于树莓派的机器人设计方案

    以非常低的外形安装在树莓派的顶部。 注意:如果你打算在树莓派上安装散热器,请使用非常低调的散热器以避免 CRICKIT 帽子短路。
    发表于 10-19 12:31 330次阅读
    基于<b class='flag-5'>树莓</b>派的机器人设计方案

    ssd1306 OLED花屏怎么解决?

    ssd1306用spi连接arduino,几率花屏,但是树莓派上用就没问题,请问各位大佬有什么好的建议吗
    发表于 10-19 08:26

    如何在树莓派上面安装Windows

    早期,想要在树莓派上面安装Windows一直是个比较麻烦的事情,下载系统镜像,烧录、还有一系列复杂的配置。
    的头像 发表于 09-12 09:54 982次阅读
    如何在<b class='flag-5'>树莓</b><b class='flag-5'>派上</b>面安装Windows

    有移植树莓派到飞腾派的教程吗

    公司基于树莓派开发板做的产品 希望移植到飞腾派上,请大佬指导
    发表于 08-28 10:24

    如何用PyArmNN加速树莓派上的ML推理

    NN推理引擎构建一个示例应用程序,将图像分类为火或非火。 本指南使用Raspberry Pi 3或4设备。树莓派设备是由Arm CPU驱动的 霓虹灯的架构。Neon是针对Arm处理器的优化架构扩展
    发表于 08-02 15:40

    树莓派上新,福利来袭!

    工程师专区上新啦!   直击底价! 树莓派4B ,新客包邮! 工程师发烧友的福音, 新用户专享优惠价,还免费送电子发烧友VIP月卡。 ▼树莓派4B 4G开发板, 领满1 00减20优惠券 券后价格
    的头像 发表于 08-02 08:41 338次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派上</b>新,福利来袭!

    Banana Pi M2 Zero 运行 openHAB 回顾

    Pi Zero W 相比,Banana Pi BPI-M2 Zero 具有令人印象深刻的规格。以下是与 openHAB 相关的规格。 特征 BPI-M2 零 树莓派零W 中央处理器 四核皮质-A7
    发表于 07-29 12:45

    Banana Pi M2 Zero 运行 openHAB 回顾

    Zero W 相比,Banana Pi BPI-M2 Zero 具有令人印象深刻的规格。以下是与 openHAB 相关的规格。 特征 BPI-M2 零 树莓派零W 中央处理器 四核皮质-A7 H2+
    的头像 发表于 07-19 19:26 976次阅读
    Banana Pi M2 Zero 运行 <b class='flag-5'>openHAB</b> 回顾

    是否有一种简单的方法将esp连接到openhab并发送特殊命令?

    嗨, (首先抱歉我的英语不好) 一个月以来我一直玩 ESP,我真的很喜欢它! 但现在我想更进一步,将 ESP 连接到 Openhab 并控制灯、RGB-LED 等。 所以我的问题:是否有一种简单的(对于傻瓜)方法将 esp 连接到 o
    发表于 05-24 08:14

    如何使用ESP-01板通过MQTT和OpenHab使用Raspberry Pi控制LED?

    感谢大家为这个板所做的所有出色工作以及正在进行的开发。 使用本机 MQTT 代码和 Windows Eclipse 设置,我已经能够使用 OpenHab 创建一个简单的系统来打开或关闭 LED。 我
    发表于 05-24 07:34

    如何使用ESP-01、OpenHab和LM75 I2C芯片的温度计?

    我使用 mqtt 本机库和 openhab 创建了一个简单的项目。 它已经运行了大约 3 天,看起来非常稳定。
    发表于 05-24 06:58

    树莓派和激光雷达直接连接通信问题的解决方案

    、路由器以及PC处于同一个网段中。 问题:现在激光雷达直接通过网线有线连接到树莓派上的网口,树莓派和PC通过无线连接方式连接到公司的局域网中,如何进行激光雷达和树莓派的文件配置?
    发表于 05-17 09:41 1次下载
    <b class='flag-5'>树莓</b>派和激光雷达直接连接通信问题的解决方案

    如何在python中实现ESP TOUCH协议?

    树莓派上使用了多个 esp8266。我可以使用 ESP TOUCH 的 Android 应用程序配置 esp 模块,但我也想使用相同的应用程序配置我的树莓派。我的
    发表于 05-17 08:20