OpenHAB和Zwave的入门指南

电子说

1.3w人已加入

描述

步骤1:Raspbian设置

*** **** raspbian初始设置*******(假设所有用户均为pi)

将语言设置为美国英语

扩展文件系统

(可选)高级-》重命名主机

sudo apt-get update

sudo apt-get upgrade

******* raspbian可选NTP更新*******

sudo apt-get install ntp

cd 。.

sudo nano etc/ntp.conf

使用以下命令更新ntp.conf文件。

# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will

# pick a different set every time it starts up. Please consider joining the

# pool:

# server 0.debian.pool.ntp.org iburst

# server 1.debian.pool.ntp.org iburst

# server 2.debian.pool.ntp.org iburst

# server 3.debian.pool.ntp.org iburst

server 0.us.pool.ntp.org

server 1.us.pool.ntp.org

server 2.us.pool.ntp.org

server 3.us.pool.ntp.org

******* raspbian可选,重命名主机*********

sudo nano /etc/hosts

使用更改来更新文件

127.0.1.1 YOURPINAME

是raspberrypi(默认)

sudo nano /etc/hostname

使用更改来更新文件

YOURPINAME

sudo /etc/init.d/hostname.sh

******* raspbian可选静态地址*********

(我发现这是需要准确性的,不太可靠。建议您通过家庭路由器为Pi分配一个静态地址。)

sudo nano /etc/network/interfaces

使用所做的更改更新文件

auto lo

iface lo inet loopback

auto eth0

allow-hotplug eth0

iface eth0 inet dhcp

auto wlan0

allow-hotplug wlan0

iface wlan0 inet dhcp

#address XXX.XXX.XXX.XXX

#netmask XXX.XXX.XXX.XXX

#gateway XXX.XXX.XXX.XXX

#network XXX.XXX.XXX.XXX

#broadcast XXX.XXX.XXX.XXX

wpa-ssid YOURSSID

wpa-psk YOURSSIDPASSWORD sudo service networking restart

******* raspbian可选wifi访问*********

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

使用chang更新文件es

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

update_config=1 network={

ssid=“YOURSSID”

psk=“YOURSSIDPASSWORD”

proto=RSN

key_mgmt=WPA-PSK

pairwise=TKIP

auth_alg=OPEN

} sudo reboot

步骤2:OpenHAB设置

******* openHAB安装*******

有关这些步骤的详细信息,请点击此处。

sudo mkdir /opt/openhab cd /opt/openhab

sudo wget https://bintray.com/artifact/download/openhab/bin.。.》》

(检查当前版本)

sudo unzip distribution-1.7.1-runtime.zip sudo rm distribution-1.7.1-runtime.zip

cd addons/

sudo wget https://bintray.com/artifact/download/openhab/bin.。.

sudo unzip distribution-1.7.1-addons.zip

(这些是我指的附件。以后可以删除未使用的附件)

sudo rm distribution-1.7.1-addons.zip cd 。. sudo cp configurations/openhab_default.cfg configurations/openhab.cfg

让我们根据这篇文章将openHAB设置为自动运行。此代码中的默认用户为“ Ben”。但是,我从未设置过用户,并且在我们的安装中也没关系。

cd /opt/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/bin

DESC=“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

#RUN_AS=ben

# 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

sudo chmod a+x /etc/init.d/openhab sudo update-rc.d openhab defaults sudo nano etc/rc.local

(通过粘贴到文件中添加此代码。某些行可能已经存在,因此请粘贴缺少的内容)

# By default this script does nothing.

# By default this script does nothing.

sudo /opt/openhab/start.sh

fbset -xres 16 -yres 16 -vres 16 -depth 8

/opt/vc/bin/tvservice -o

# Print the IP address

_IP=$(hostname -I) || true

if [ “$_IP” ]; then

printf “My IP address is %s ” “$_IP”

fi

exit 0

******* openHAB可选演示安装开始*******

sudo wget https://github.com/openhab/openhab/releases/download/v1.6.2/distribution-1.6.2-demo-configuration.zip

cd /opt/openhab sudo unzip distribution-1.6.2-demo-configuration.zip sudo rm distribution-1.6.2-demo-configuration.zip sudo chmod +x start.sh sudo 。/start.sh

去检查一下。

http://192.168.X.XXX:8080/openhab.app?sitemap = demo 。..(使用您的Pi的IP地址)

步骤3:绑定和您的第一个开关

raspbian

raspbian

raspbian

******* openHAB可选Samba安装**** ***

(用于轻松访问配置文件。CATION-您具有删除/修改的root权限)

sudo apt-get install samba samba-common-bin sudo nano /etc/samba/smb.conf # Change this to the worgroup/NT-domain name your Samba server will part of

workgroup = YOURWORKGROUP

# WINS Support - Tells the NMBD component of Samba to enable its WINS Server

wins support = yes

#add to the last line

[OpenHAB]

comment = OpenHAB

path = /opt/openhab

browseable = Yes

writeable = Yes

only guest = no

create mask = 0777

directory mask = 0777

public = no

force user = root sudo smbpasswd -a pi

(将密码设置为所需的任意值)

您现在应该可以从PC(通过LAN)访问openHAB目录。

******* openHAB设计器*********

下载并按照安装说明进行操作。

https://bintray.com/artifact/download/openhab/bin/。..

通过samba通过网络文件夹访问openHAB配置文件夹。

[查看图像]

******* openHAB zwave绑定*********

转到此处获取有关zwave网络的更多信息http://www.vesternet.com/resources/technology-ind 。..

sudo nano /opt/openhab/configurations/openhab.cfg

查找标题为 Z-Wave Binding”的部分。

您只需激活2个属性(通过删除前面的#)即可。

zwave:port 是Z-Wave控制器的端口。如果您有raZberry,则为/dev/ttyAMA0 。 USB记忆棒将为/dev/ttyUSB0 。

zwave:healtime 是每天进行网络修复的时间。您可能可以将其保留为2(2AM)。

cd /opt/openhab sudo wget sudo unzip habmin.zip sudo rm habmin.zip

将您的z波设备添加到网络中,然后根据需要进行关联。

http://192.168.2.100:8080/habmin/(您的IP)

[查看图片]

示例项目

调光器test_dimmer2“调光器2 [%d %%]”(zwave){zwave =“ 11”}

联系Door_Switch“门传感器[%s]”(zwave){zwave =“ 10: command = switch_binary,respond_to_basic = true“}联系Door_Alarm”门防拆[%s]“(zwave){zwave =” 10:command = alarm“}

Number Door_Battery”门电池[%d %%]“”(zwave ){zwave =“ 10:command = battery”}

******* openHAB设置您的第一个站点*********

转到打开openHAB Wiki并阅读。

摘要:

项-是家庭自动化网络中每个节点的列表。向网络添加内容时,从此处开始。

持久性-允许您记录输入。规则-通常是一个(如果是-然后是那个)真正使您回家自动化的规则。

脚本-我不使用这些

站点地图-这是您通过web访问openHAB的主页。您可以有多个。

Transform-允许您将每个节点提供的文本更改为您的首选项。

让我们设置zwave调光器(下面引用的文件附在这篇文章中)

确认在openhab.cfg文件中启用了zwave绑定。我们之前做了这个。

确认已安装zwave附加组件。我们做了耳环。

\\ YOURPI \ OpenHAB \ addons \ org.openhab.binding.zwave-1.7.1

将新节点与zstick关联。说明在这里。

从openHAB管理界面(habmin)获取节点信息。这是较早安装的。

http://XXX.XXX.XXX.XXX:8080/habmin/(在您的pi上)

您可能需要基于以下内容分配“关联组”和“配置参数”在您的节点上。调光器通常不需要这样做。

获取节点号。在我的情况下11个

[请参见图片]

对项目列表中的节点进行编码

\ OpenHAB \ configurations \ items \ HAB.items(我正在命名此HAB。随着我们的前进,您会看到。)

将以下行添加到openhab

Dimmer light_living_dimmer “Living Rm Dimmer [%d %%]” (all,zwave,lights) { zwave= “11” }

Dimmer-是节点类型

light_living_dimmer-是节点的名称。我按类型命名所有项-位置-特异性

“ Living Rm Dimmer [%d %%]”-是出现在GUI(浏览器或应用程序)中的名称和值

滑块-是图标。在这种情况下,幻灯片可让您通过GUI

(所有,zwave,灯光)调整亮度-这些是组。它们有助于在站点地图上显示多个项目(通过组)。它们还有助于一次将规则应用于多个项目。

这些组也必须在Dimmer行下的openhab HAB.items中列出

Group all

Group zwave

Group lights

{zwave =“ 11”}-告诉openHAB它与zwave节点11接口。

将该项目添加到您的站点地图中

\ OpenHAB \ configurations \ sitemaps \ HAB.sitemap

将以下几行添加到站点地图中

sitemap HAB label=“My openHAB”

{ Frame label= “Switches” icon= “light_switch” { Group item= lights label=“Lights” icon=“light_switch”

}

}

在这种情况下,“灯光”组中的所有项目都将显示在这个框架中。您也可以单独添加项目。

让我们设置一个基于简单cron(时间)的规则

\ OpenHAB \ configurations \ rules \ HAB.rules

我使用http://www.cronmaker。 com/来延长计划时间

继续并添加一些库和规则。

import org.openhab.core.library.types.*

import org.openhab.core.persistence.*

import org.openhab.model.script.actions.*

import java.lang.Math

import org.openhab.core.library.types.DecimalType rule “Trigger Turn Light up to 75% at 1900”

when

Time cron “0 0 19 1/1 * ? *”

then

sendCommand(light_living_dimmer , 75)

}

end rule “Trigger Turn Light off at 2200”

when

Time cron “0 0 22 1/1 * ? *”

then

sendCommand(light_living_dimmer , 0)

}

end

仅此而已。玩得开心!

步骤4:Raspbian可选USB音频

raspbian

raspbian

raspbian

raspbian

raspbian

raspbian

raspbian

我无法使用openHAB通过USB运行音频。如果可行,请在评论中发布解决方案。

Syba USB 2.0外部虚拟7.1环绕声卡适配器

我可以让Pi与USB音频配合使用。对于openHAB来说,这将是无效的。可能是Java问题?

弄清楚您的芯片组

首先要使Raspi 关闭/关闭(执行干净操作)。关闭!),然后插入USB声卡。

登录后,键入 dmesg |。 grep cm109 查看启动消息。如果您使用的是 CM109 芯片组

图像1

,则应该看到关于 cm109 的几行,或者如果什么都没有出现,尝试 dmesg | grep 耳机,您将看到 C-Media USB耳机设置驱动程序。这表示其为 CM耳机

图片2

,或者如果未显示任何内容,请尝试 dmesg | grep C-Media ,您会看到一些C-Media注释,但没有提及cm109驱动程序。这表示其 CM108

图像3

CM耳机类型

类型 dmesg 查看启动消息。您应该会看到许多关于 C媒体USB耳机套件

图片4

的信息,如果您键入 lsusb ,您应该会看到对 C-Media Electronics音频适配器的引用,但没有提及 CM108 ,并且VID/PID为0x0d8c:0x00c

Image 5

没什么特别的事情要做!欢呼!继续进入“更新ALSA配置”部分

更新alsa选项

先备份

sudo cp /etc/modprobe.d/alsa-base.conf /etc/modprobe.d/alsa-base-1.conf

我们将进行编辑带有

sudo nano /etc/modprobe.d/alsa-base.conf

的音频系统配置文件,但除了最新的Raspbian版本外,请查找以下内容:

#options snd-usb-audio index=0

将其更改为:

options snd-usb-audio index=0

注意,我们在行的开头删除了#。

对于最新的Raspbian版本,请查找以下行:

options snd-usb-audio index=-2

在这种情况下没有要删除的#号,只需将索引从-2更改为0:

options snd-usb-audio index=0

图像6

就是这样!现在,使用 sudo reboot 重新启动并再次登录,您可以通过runnig使用扬声器测试进行测试

speaker-test -c2 -D hw:0,0

这会产生白噪声通过声卡上的左右“扬声器”。发出声音后,请尝试播放带有音频的音频文件(对于WAV文件,不是MP3)

aplay /usr/share/scratch/Media/Sounds/Animal/Bird.wav aplay /usr/share/sounds/alsa/Front_Center.wav

如果要播放音乐,您可以尝试

sudo apt-get install mpg123 mpg123 http://voxsc1.somafm.com:8882

如果您想按命令播放MP3,请查看本教程,其中涵盖了如何进行设置

耳机vs音频卡

别忘了,您在Pi上仍然拥有内置的耳机插孔,现在称为卡1 (不是默认的卡0 )

图片7

如果您想再次通过该插孔玩游戏,请用-指定卡1 D hw:1,0 代替 -D hw:0,0

speaker-test -c2 -D hw:1,0

责任编辑:wv

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分