电子说
步骤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:绑定和您的第一个开关
******* 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音频
我无法使用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
全部0条评论
快来发表一下你的评论吧 !