树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇

ssh菜单控制篇

家居智能的关键是要带来方便,否则家居智能也失去意义。使用菜单控制比用代码方便了很多,但也不是最好的解决方案,只不过通过制作菜单也可以学习一些知识,仅仅是为了好玩,通过实践来看效果还是不错的。这个菜单是通过ssh连接树莓派,启动脚本实现菜单控制。先上菜单结构图给大家看看。

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第1张图片

这个菜单最多有四级,即主菜单-单个设备开关机-电视-频道。其他最多两级,并且每个键只按一次自动回车,操作方便,效果也不错。

各菜单全截图:

主菜单:

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第2张图片

开关机页面:

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第3张图片

摇控灯页面(使用的是RF315Mhz):

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第4张图片

摇控空调页面:

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第5张图片

天威机顶盒摇控页面:

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第6张图片

频道列表:

树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇_第7张图片

频道列表说明:因为为了方便每个单位不用回车,只要按一个按键就可以,所以频道列表的数量有限制,ssh一屏也就20个台,也够了,一般都是常看的。每个频道其实就是通过irsend命令发送三个频道红外代码。

我把代码也贴上来,虽然没有实际脚本,也可以跑起来看个样子,但肯定很多项会出错。800多行代码。

#!/bin/bash

function menu ()
{
clear
cat << EOF
----------------------------------------
|***************菜单主页***************|
----------------------------------------
`echo -e "\033[35m 1)开关机页面\033[0m"`
`echo -e "\033[35m 2)单个设备开关机\033[0m"`
`echo -e "\033[35m 3)摇控灯\033[0m"`
`echo -e "\033[35m 4)摇控空调\033[0m"`
`echo -e "\033[35m x)退出\033[0m"`
EOF
read -n1 -p "请输入对应功能的数字:" num1
case $num1 in
 1)
  clear
  echo "欢迎进入开关机页面!!"
  eleproduct_menu 
  ;;
 2)
  clear
  echo "欢迎进入单设备开关机页面!!"
  singleonoff_menu
  ;;
 3)
  clear
  echo "欢迎进入摇控灯页面!!"
  light_menu
  ;;
 4)
  cp /etc/lirc/remotes/zhigao.conf /etc/lirc/remotes/tv.conf
  killall -9 lircd
  sh /etc/lirc/remotes/remake.sh
  clear
  echo "欢迎进入空调摇控页面!!"
  airc_menu
  ;;
 x)
  clear
  exit 0
  ;;
 *)
  clear
  echo "没这个选项,标子!!"
  sleep 1s
  clear
  menu
esac
}
 
function eleproduct_menu ()
{
 cat << EOF
----------------------------------------
|**************开关机页面**************|
----------------------------------------
`echo -e "\033[35m 1)乐视盒子及相关设备开机\033[0m"`
`echo -e "\033[35m 2)乐视盒子及相关设备关机\033[0m"`
`echo -e "\033[35m 3)天威机顶盒和电视开/关机\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"`
EOF
read -n1 -p "请输入对应功能的数字:" num2
case $num2 in
 1)
  echo "乐视盒子及相关设备开机"
  sh /etc/lirc/remotes/poweronmediabox.sh
  clear
  eleproduct_menu
  ;;
 2)
  echo "乐视盒子及相关设备关机"
  sh /etc/lirc/remotes/poweroffmediabox.sh
  clear
  eleproduct_menu 
  ;;
 3)
  echo "天威机顶盒和电视开/关机!!"
  sh /etc/lirc/remotes/onoff.sh
  clear
  eleproduct_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "没这个选项,笨蛋!!"
  sleep 1s
  clear
  eleproduct_menu
esac
}
 
function singleonoff_menu ()
{
 cat << EOF
----------------------------------------
|***********单设备摇控页面*************|
----------------------------------------
`echo -e "\033[35m 1)电视\033[0m"`
`echo -e "\033[35m 2)天威机顶盒\033[0m"`
`echo -e "\033[35m 3)功放\033[0m"`
`echo -e "\033[35m 4)乐视盒子\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应设备的数字:" num3
case $num3 in
 1)
  sh /etc/lirc/remotes/dellirc.sh
  cp /etc/lirc/remotes/tv1.conf /etc/lirc/remotes/tv.conf
  killall -9 lircd
  sh /etc/lirc/remotes/remake.sh
  clear
  echo "欢迎进入电视摇控页面!!"
  tv1_menu
  ;;
 2)
  sh /etc/lirc/remotes/dellirc.sh
  cp /etc/lirc/remotes/tianwei1.conf /etc/lirc/remotes/tv.conf
  killall -9 lircd
  sh /etc/lirc/remotes/remake.sh
  clear
  echo "欢迎进入天威机顶盒摇控页面!!"
  tianwei_menu
  ;;
 3)
  sh /etc/lirc/remotes/dellirc.sh
  cp /etc/lirc/remotes/malanshi.conf /etc/lirc/remotes/tv.conf
  killall -9 lircd
  sh /etc/lirc/remotes/remake.sh
  clear
  echo "欢迎进入功放摇控页面!!"
  malanshi_menu
  ;;
 4)
  sh /etc/lirc/remotes/dellirc.sh
  cp /etc/lirc/remotes/leshi.conf /etc/lirc/remotes/tv.conf
  killall -9 lircd
  sh /etc/lirc/remotes/remake.sh
  clear
  echo "欢迎进入乐视盒子摇控页面!!"
  leshi_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "又按错了!!"
  clear
  singleonoff_menu
esac
}

function tv1_menu ()
{
 cat << EOF
----------------------------------------
|******** ***电视摇控页面** ***********|
----------------------------------------
`echo -e "\033[35m 1)开/关机\033[0m"`
`echo -e "\033[35m 2)静音\033[0m"`
`echo -e "\033[35m 3)返回\033[0m"`
`echo -e "\033[35m 4)视频源\033[0m"`
`echo -e "\033[35m 5)向下\033[0m"`
`echo -e "\033[35m 6)向上\033[0m"`
`echo -e "\033[35m 7)确定\033[0m"`
`echo -e "\033[35m 0)音量+\033[0m"`
`echo -e "\033[35m 9)音量—\033[0m"`
`echo -e "\033[35m a)向左\033[0m"`
`echo -e "\033[35m s)向右\033[0m"`
`echo -e "\033[35m d)3D\033[0m"`
`echo -e "\033[35m c)返回上级菜单\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应功能的数字:" num4
case $num4 in
 1)
  irsend send_once tv key_power
  clear
  tv1_menu    
  ;;
 2)
  irsend send_once tv key_mute
  clear
  tv1_menu
  ;;
 3)
  irsend send_once tv key_back
  clear
  tv1_menu
  ;;
 4)
  irsend send_once tv key_a
  clear
  tv1_menu
  ;;
 5)
  irsend send_once tv key_down
  clear
  tv1_menu
  ;;
 6)
  irsend send_once tv key_up
  clear
  tv1_menu
  ;;
 7)
  irsend send_once tv key_pause
  clear
  tv1_menu
  ;;
 0)
  irsend send_once tv key_volumeup
  clear
  tv1_menu
  ;;
 9)
  irsend send_once tv key_volumedown
  clear
  tv1_menu
  ;;
 a)
  irsend send_once tv key_left
  clear
  tv1_menu
  ;;
 b)
  irsend send_once tv key_right
  clear
  tv1_menu
  ;;
 d)
  irsend send_once tv key_b
  clear
  tv1_menu
  ;;
 c)
  clear
  singleonoff_menu

  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "二货!按错了!!"
  sleep 1s
  clear
  tv1_menu
esac
}

function tianwei_menu ()
{
 cat << EOF
----------------------------------------
|*********天威机顶盒摇控页面***********|
----------------------------------------
`echo -e "\033[35m 1)开/关机\033[0m"`
`echo -e "\033[35m 2)静音\033[0m"`
`echo -e "\033[35m 3)返回\033[0m"`
`echo -e "\033[35m 4)菜单\033[0m"`
`echo -e "\033[35m 5)向下\033[0m"`
`echo -e "\033[35m 6)向上\033[0m"`
`echo -e "\033[35m o)确定\033[0m"`
`echo -e "\033[35m 0)音量+\033[0m"`
`echo -e "\033[35m 9)音量—\033[0m"`
`echo -e "\033[35m a)向左\033[0m"`
`echo -e "\033[35m s)向右\033[0m"`
`echo -e "\033[35m u)上页\033[0m"`
`echo -e "\033[35m j)下页\033[0m"`
`echo -e "\033[35m h)主页\033[0m"`
`echo -e "\033[35m p)频道列表\033[0m"`
`echo -e "\033[35m c)返回上级菜单\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应功能的数字:" num5
case $num5 in
 1)
  irsend send_once tv key_power
  clear
  tianwei_menu    
  ;;
 2)
  irsend send_once tv key_mute
  clear
  tianwei_menu    
  ;;
 3)
  irsend send_once tv key_back
  clear
  tianwei_menu    
  ;;
 4)
  irsend send_once tv key_menu
  clear
  tianwei_menu    
  ;;
 5)
  irsend send_once tv key_down
  clear
  tianwei_menu    
  ;;
 6)
  irsend send_once tv key_up
  clear
  tianwei_menu    
  ;;
 o)
  irsend send_once tv key_pause
  clear
  tianwei_menu    
  ;;
 0)
  irsend send_once tv key_volumeup
  clear
  tianwei_menu    
  ;;
 9)
  irsend send_once tv key_volumedown
  clear
  tianwei_menu    
  ;;
 a)
  irsend send_once tv key_left
  clear
  tianwei_menu    
  ;;
 b)
  irsend send_once tv key_right
  clear
  tianwei_menu    
  ;;
 u)
  irsend send_once tv key_pageup
  clear
  tianwei_menu    
  ;;
 j)
  irsend send_once tv key_pagedown
  clear
  tianwei_menu    
 ;; 
 h)
  irsend send_once tv key_home
  clear
  tianwei_menu    
 ;;
 p)
  clear
  echo "欢迎进入频道列表页面!!"
  channellist_menu
 ;;
 c)
  clear
  singleonoff_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "二货!按错了!!"
  sleep 1s
  clear
  tianwei_menu    
esac
}

function channellist_menu ()
{
 cat << EOF
----------------------------------------
|************频道列表页面**************|
----------------------------------------
`echo -e "\033[35m 1)深圳都市高清303\033[0m"`
`echo -e "\033[35m 2)深圳卫视高清302\033[0m"`
`echo -e "\033[35m 3)中央1高清301\033[0m"`
`echo -e "\033[35m 4)中央5高清316\033[0m"`
`echo -e "\033[35m 5)中央6高清320\033[0m"`
`echo -e "\033[35m 6)中央9高清(记录)323\033[0m"`
`echo -e "\033[35m 7)中央10高清(科教)324\033[0m"`
`echo -e "\033[35m 8)湖面卫视高清329\033[0m"`
`echo -e "\033[35m 9)浙江卫生高清332\033[0m"`
`echo -e "\033[35m 0)求索记录高清336\033[0m"`
`echo -e "\033[35m q)每日影院高清341\033[0m"`
`echo -e "\033[35m w)明珠台标清024\033[0m"`
`echo -e "\033[35m e)凤凰中文标清030\033[0m"`
`echo -e "\033[35m c)返回上级菜单\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应功能的数字:" num6
case $num6 in
 1)
  irsend send_once tv key_3
  irsend send_once tv key_0
  irsend send_once tv key_3
  clear
  channellist_menu    
  ;;
 2)
  irsend send_once tv key_3
  irsend send_once tv key_0
  irsend send_once tv key_2
  clear
  channellist_menu    
  ;;
 3)
  irsend send_once tv key_3
  irsend send_once tv key_0
  irsend send_once tv key_1
  clear
  channellist_menu    
  ;;
 4)
  irsend send_once tv key_3
  irsend send_once tv key_1
  irsend send_once tv key_6
  clear
  channellist_menu    
  ;;
 5)
  irsend send_once tv key_3
  irsend send_once tv key_2
  irsend send_once tv key_0
  clear
  channellist_menu    
  ;;
 6)
  irsend send_once tv key_3
  irsend send_once tv key_2
  irsend send_once tv key_3
  clear
  channellist_menu    
  ;;
 7)
  irsend send_once tv key_3
  irsend send_once tv key_2
  irsend send_once tv key_4
  clear
  channellist_menu    
  ;;
 8)
  irsend send_once tv key_3
  irsend send_once tv key_2
  irsend send_once tv key_9
  clear
  channellist_menu    
  ;;
 9)
  irsend send_once tv key_3
  irsend send_once tv key_3
  irsend send_once tv key_2
  clear
  channellist_menu    
  ;;
 0)
  irsend send_once tv key_3
  irsend send_once tv key_3
  irsend send_once tv key_6
  clear
  channellist_menu    
  ;;
 q)
  irsend send_once tv key_3
  irsend send_once tv key_4
  irsend send_once tv key_1
  clear
  channellist_menu    
  ;;
 w)
  irsend send_once tv key_0
  irsend send_once tv key_2
  irsend send_once tv key_4
  clear
  channellist_menu    
  ;;
 e)
  irsend send_once tv key_0
  irsend send_once tv key_3
  irsend send_once tv key_0
  clear
  channellist_menu    
 ;;
 c)
  clear
  tianwei_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "三货!按错了!!"
  sleep 1s
  clear
  channellist_menu    
esac
}

function malanshi_menu ()
{
 cat << EOF
----------------------------------------
|*********马兰士功放摇控页面***********|
----------------------------------------
`echo -e "\033[35m 1)开/关机\033[0m"`
`echo -e "\033[35m 2)静音\033[0m"`
`echo -e "\033[35m 3)CAL/SAT输入\033[0m"`
`echo -e "\033[35m 4)DVD输入\033[0m"`
`echo -e "\033[35m 5)AUX1输入\033[0m"`
`echo -e "\033[35m 6)FM收音机\033[0m"`
`echo -e "\033[35m 7)USB输入\033[0m"`
`echo -e "\033[35m 8)网络收音机\033[0m"`
`echo -e "\033[35m 0)音量+\033[0m"`
`echo -e "\033[35m 9)音量—\033[0m"`
`echo -e "\033[35m c)返回上级菜单\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应功能的数字:" num7
case $num7 in
 1)
  irsend send_once tv key_power
  clear
  malanshi_menu    
  ;;
 2)
  irsend send_once tv key_mute
  clear
  malanshi_menu    
  ;;
 3)
  irsend send_once tv key_sat
  clear
  malanshi_menu    
  ;;
 4)
  irsend send_once tv key_dvd
  clear
  malanshi_menu    
  ;;
 5)
  irsend send_once tv key_aux
  clear
  malanshi_menu    
  ;;
 6)
  irsend send_once tv key_tuner
  clear
  malanshi_menu    
  ;;
 7)
  irsend send_once tv key_u
  clear
  malanshi_menu    
  ;;
 8)
  irsend send_once tv key_n
  clear
  malanshi_menu    
  ;;
 9)
  irsend send_once tv key_volumedown
  clear
  malanshi_menu    
  ;;
 0)
  irsend send_once tv key_volumeup
  clear
  malanshi_menu    
  ;;
 c)
  clear
  singleonoff_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "二货!按错了!!"
  sleep 1s
  clear
  tianwei_menu    
esac
}
function leshi_menu ()
{
 cat << EOF
----------------------------------------
|******欢迎进入乐视盒子摇控页面********|
----------------------------------------
`echo -e "\033[35m 1)开/关机\033[0m"`
`echo -e "\033[35m 2)静音\033[0m"`
`echo -e "\033[35m 3)返回\033[0m"`
`echo -e "\033[35m h)主页\033[0m"`
`echo -e "\033[35m m)菜单\033[0m"`
`echo -e "\033[35m w)向上\033[0m"`
`echo -e "\033[35m s)向下\033[0m"`
`echo -e "\033[35m a)向左\033[0m"`
`echo -e "\033[35m d)向右\033[0m"`
`echo -e "\033[35m o)确定\033[0m"`
`echo -e "\033[35m 4)设置\033[0m"`
`echo -e "\033[35m 5)乐视键\033[0m"`
`echo -e "\033[35m 0)音量+\033[0m"`
`echo -e "\033[35m 9)音量—\033[0m"`
`echo -e "\033[35m ,)频道+\033[0m"`
`echo -e "\033[35m .)频道—\033[0m"`
`echo -e "\033[35m c)返回上级菜单\033[0m"`
`echo -e "\033[35m x)返回主菜单\033[0m"` 
EOF
read -n1 -p "请输入对应功能的数字:" num8
case $num8 in
 1)
  irsend send_once tv key_power
  clear
  leshi_menu    
  ;;
 2)
  irsend send_once tv key_mute
  clear
  leshi_menu    
  ;;
 3)
  irsend send_once tv key_back
  clear
  leshi_menu    
  ;;
 4)
  irsend send_once tv key_a
  clear
  leshi_menu    
  ;;
 5)
  irsend send_once tv key_b
  clear
  leshi_menu    
  ;;
 h)
  irsend send_once tv key_home
  clear
  leshi_menu    
  ;;
 m)
  irsend send_once tv key_menu
  clear
  leshi_menu    
  ;;
 w)
  irsend send_once tv key_up
  clear
  leshi_menu    
  ;;
 s)
  irsend send_once tv key_down
  clear
  leshi_menu    
  ;;
 a)
  irsend send_once tv key_left
  clear
  leshi_menu    
  ;;
 d)
  irsend send_once tv key_right
  clear
  leshi_menu    
  ;;
 o)
  irsend send_once tv key_pause
  clear
  leshi_menu    
  ;;
 ,)
  irsend send_once tv key_channelup
  clear
  leshi_menu    
  ;;
 .)
  irsend send_once tv key_channeldown
  clear
  leshi_menu    
  ;;
 9)
  irsend send_once tv key_volumedown
  clear
  leshi_menu    
  ;;
 0)
  irsend send_once tv key_volumeup
  clear
  leshi_menu    
  ;;
 c)
  clear
  singleonoff_menu
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "二货!按错了!!"
  sleep 1s
  clear
  leshi_menu    
esac
}
function light_menu ()
{
clear
cat << EOF
----------------------------------------
|*************摇控灯主页面*************|
----------------------------------------
`echo -e "\033[35m 1)客厅灯全开/关\033[0m"`
`echo -e "\033[35m 2)闹闹房间灯开/关\033[0m"`
`echo -e "\033[35m 3)客厅灯A段开关\033[0m"`
`echo -e "\033[35m 4)客厅灯B段开关\033[0m"`
`echo -e "\033[35m 5)客厅灯C段开关\033[0m"`
`echo -e "\033[35m x)返回上级菜单\033[0m"`
EOF
read -n1 -p "请输入对应功能的数字:" num9
case $num9 in
 1)
  clear
  cd ~/433Utils/RPi_utils/
  ./codesend 2581592
  cd ~
  light_menu 
  ;;
 2)
  clear
  cd ~/433Utils/RPi_utils/
  ./codesend 16451928 
  cd ~
  light_menu 
  ;;
 3)
  clear
  cd ~/433Utils/RPi_utils/
  ./codesend 2581585
  cd ~
  light_menu 
  ;;
 4)
   clear
  cd ~/433Utils/RPi_utils/
  ./codesend 2581586
  cd ~
  light_menu 
  ;;
 5)
   clear
  cd ~/433Utils/RPi_utils/
  ./codesend 2581588
  cd ~
  light_menu 
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "没这个选项,标子!!"
  sleep 1s
  clear
  menu
esac
}
function airc_menu ()
{
clear
cat << EOF
----------------------------------------
|*************摇控空调页面*************|
----------------------------------------
`echo -e "\033[35m 1)空调开,制冷温度25\033[0m"`
`echo -e "\033[35m 2)空调关\033[0m"`
`echo -e "\033[35m 3)温度调到23度\033[0m"`
`echo -e "\033[35m 4)温度调到24度\033[0m"`
`echo -e "\033[35m 6)温度调到26度\033[0m"`
`echo -e "\033[35m 7)温度调到27度\033[0m"`
`echo -e "\033[35m 8)温度调到28度\033[0m"`
`echo -e "\033[35m 9)温度调到29度\033[0m"`
`echo -e "\033[35m x)返回上级菜单\033[0m"`
EOF
read -n1 -p "请输入对应功能的数字:" num10
case $num10 in
 1)
  irsend send_once tv key_power 
  clear
  airc_menu    
  ;;
 2)
  irsend send_once tv key_off 
  clear
  airc_menu    
  ;;
 3)
  irsend send_once tv key_3 
  clear
  airc_menu    
  ;;
 4)
  irsend send_once tv key_4 
  clear
  airc_menu    
  ;;
 6)
  irsend send_once tv key_6 
  clear
  airc_menu    
  ;;
 7)
  irsend send_once tv key_7 
  clear
  airc_menu    
  ;;
 8)
  irsend send_once tv key_8 
  clear
  airc_menu    
  ;;
 9)
  irsend send_once tv key_9 
  clear
  airc_menu    
  ;;
 x)
  clear
  menu
  ;;
 *)
  clear
  echo "没这个选项,标子!!"
  sleep 1s
  clear
  menu
esac
}
menu

感谢网上的一个大神,菜单的结构是根据他的资料学习的,并在其基础上改的,但不好意思没存网页!没记得是谁,请作者看到此贴跟我联系,我再具名感谢!

 

你可能感兴趣的:(树梅派3B红外、433&315全连接及家居智能控制(四)SSH菜单控制篇)