如今,大部分的酒店和餐馆食物的网上订单。许多酒店和餐馆促进开始预订或甚至呈现交付服务的地方。在这个项目中,一个酒店订单管理系统,客户可以预订食品使用移动应用程序和一个基于覆盆子π服务器管理菜单项和书满足订单。万博app怎么更新在每一个预订,客户承认的时间他们的订单将会准备好,这样他们就可以在指定的时间到达,接他们的订单。
这家旅馆订单管理系统是基于物联网和它使用MQTT协议移动应用和覆盆子π服务器之间的通信。万博app怎么更新覆盆子π万博app怎么更新是一个服务器是安装在酒店,没有wi - fi接入点连接到互联网。为此,覆盆子π3是使用哪个配备车载无万博app怎么更新线调制解调器。覆盆子π万博app怎么更新是连接到一个显示器,酒店员工可以查看接收到的订单。
覆盆子π万博app怎么更新和手机应用程序通过MQTT通信代理。在这个项目中是HiveMQ MQTT代理使用。手机应用程序订阅一个主题“FromServer”而发布一个主题“服务”。覆盆子π万博app怎么更新服务器作为另一个MQTT客户机订阅主题“服务”,并发布到主题“FromServer”。主题“服务”上的负载选择的菜单项从移动应用用户。当树莓π服务器接收到一个菜单项的顺序移动应用的主题——“服务”,它发送订单号和时间为有效载荷传感器的话题——“FromServer”。万博app怎么更新
覆盆子π,物联万博app怎么更新网与HiveMQ通信代理由一个python脚本,而移动应用程序使用paho-MQTT客户端库来管理物联网与HiveMQ代理沟通。Android的移动应用开发工作室。这个应用程序有一个活动,用户可以选择一个菜单项订购。
组件需要- - - - - -
1)覆万博app怎么更新盆子π3
2)任何智能手机
软件要求,
1)Raspbian操作系统
2)Leafpad GNU纳米/ Python 3闲置(编写Python脚本)
3)Android工作室(用于开发Android应用程序)
4)泛美卫生组织MQTT客户端库——Android服务在Android应用程序(进口)
框图,

图1:概述覆盆子π服务器和MQTT基于物万博app怎么更新联网酒店订单管理系统
电路连接,
在这个项目中,树莓π和智能手机作为物联万博app怎么更新网设备。作为MQTT客户机上的物联网网络而HiveMQ作为MQTT代理。覆盆子π万博app怎么更新被连接到一个显示屏,显示了通过手机应用程序收到的订单。覆盆子π被配置为在启动运行python脚本。这个python脚本管理MQTT订阅接收订单,显示订单收到客户编号,小订单和订单id显示屏和返回订单数量和时间准备订单MQTT出版商的手机应用程序。python 2.7的python脚本了。

图2:覆盆子π和MQTT标志和图像万博app怎么更新
智能手机安装的应用程序,可以放置一个订单。这个应用程序是使用android开发工作室。手机应用程序使用paho-MQTT等物联网通信客户端库python在管理方面。
电路是如何工作的
覆盆子π万博app怎么更新服务器与MQTT代理通过酒店无线路由器。然后连接到同一个应用程序通过互联网连接的移动代理。
覆盆子π万博app怎么更新服务器正在运行的python脚本连接到MQTT代理使用paho-MQTT库。脚本包含菜单项。现在手机应用程序连接到代理的时候发送一个信号在某一主题字符串“服务”,的覆盆子π服务器是同一主题订阅和接收信号。万博app怎么更新现在服务器回复主题上的菜单项“FromServer”,这是由应用程序订阅。从这些菜单项当客户订单然后到服务器,如果数据是有效的然后发送用户定时的定单做好准备。
编程指南,
在这个项目中,智能手机的移动应用程序和一个python脚本开发的覆盆子π上运行。万博app怎么更新这里开发的移动应用程序是一个android应用。为开发移动应用,首先,下载并安装android工作室。开放的安卓工作室和创建一个新项目。项目名称-酒店订单系统和提供任何公司名称。公司名称也可以开发人员的名字。单击next。在目标Android设备屏幕,保留默认值并单击Next。选择最低SDK支持的智能手机。在添加一个活动来移动屏幕,选择空活动并单击Next。在配置活动屏幕中,保留默认值并单击Finish。 Open the project window by navigating to View > Tool Windows > Project if it is not open select Android View. Here it can be seen that the project contains the following main files –
应用java com . example。> >themenu > MainActivity:这是主要的活动(应用程序的入口点)。构建和运行应用程序时,系统启动一个实例,这个活动并加载其布局。
应用程序> res > > activity_main布局。xml: xml文件定义了活动的UI布局。
应用程序>显示> AndroidManifest。xml:清单文件描述应用程序的基本特征和定义它的每个组件。
>建立Gradle脚本。gradle:这个名字将会有两个文件:一个用于项目和一个“应用程序”模块。每个模块都有自己的构建。gradle文件,但是这个项目目前只有一个模块。
导航到activity_main。如果不是已经打开xml选项卡。确保activity_main Design选项卡是开放的。xml显示。在res - > - > activity_main布局。xml,包括两个textview小部件添加布局元素,滚动视图,视图,两个edittext和一个按钮。这个程序有一个活动。
下载Paho-MQTT Android客户端库——服务。的下一个开放应用程序>显示> AndroidManifest。xml和添加权限和Paho-MQTT Android客户端作为一个服务。
的下一个开放MainActivity。java和应用程序的java代码写下来。java代码有以下主要突出了-
1。图书馆,其功能是用于订阅主题“FromServer”和它发布的主题“服务”。
静态字符串MQTTHOST =“tcp: / / broker.hivemq.com: 1883”;
字符串topicStr =“服务”;
字符串topicSub =“FromServer”;
2。应用程序接收来自服务器的菜单项
3所示。然后这些菜单项显示在应用程序屏幕
menuArray。add(新的字符串(message.getPayload ()));
ArrayAdapter <字符串>适配器= new ArrayAdapter <字符串> (MainActivity。这个,android.R.layout。simple_list_item_1 menuArray);
4所示。现在的应用程序有两个字段接收文本输入的输入被发送到服务器。
EditText msgToserver = () findViewById (R.id.orderno);
.toString消息=“已坏”+ msgToserver.getText () ();
客户端。发布(主题,message.getBytes(), 0,假);
5。根据查询服务器给出响应
更多细节用MQTT客户端库——泛美卫生组织Android服务与HiveMQ代理沟通,看看下面的教程
覆盆子π万博app怎么更新工作作为另一个MQTT客户机。它运行一个python脚本,是酒店订单管理效用。首先,树莓π需要装满一个操作系统。万博app怎么更新这里的官方的覆盆子π- Linux操作系统Raspbian安装。万博app怎么更新在安装操作系统时,树莓π应该连接到显示器使用HDMI电缆通过USB接口和一个键盘和鼠标万博app怎么更新。
MicroSD卡上安装Raspbian操作系统,首先下载最新的形象Raspbian操作系统从树莓π从以下链接的网站万博app怎么更新
复制最新的形象Raspbian MicroSD卡操作系统。如果下面32 GB或使用的MicroSD卡,它必须被格式化之前FAT32文件系统复制图像或如果MicroSD卡超过32 GB,它应该是格式化之前exFAT复制图像。提取操作系统压缩并将其复制到MicroSD卡。图像可以被写入卡片卡连接到一台笔记本电脑或电脑使用MicroSD卡阅读器。复制后提取的图像,插入在MicroSD卡槽,如下所示

图3:覆盆子π3 MicroSD卡槽的典型形象万博app怎么更新
连接的覆盆子π显示屏使用万博app怎么更新HDMI电缆,一个键盘和一个鼠标。权力在董事会通过连接一个电源适配器。红色的董事会将开始闪烁,从MicroSD卡操作系统将开始启动。引导过程将显示在监控和引导完成后,绿色LED将照亮覆盆子π。万博app怎么更新成功安装后Raspbian OS上树莓π,建议执行软件更新。万博app怎么更新它可以通过运行下面的Linux终端- Linux命令
$ sudo apt-get更新
$ sudo apt-get升级
安装Raspbian之后,是时候Raspbian上编写和运行的python脚本。一个python脚本可以使用一个文本编辑器写在Raspbian Leafpad或GNU Nano。编写的python脚本也可以使用默认的python IDE像python 2闲置或python 3闲置。打开Python 3闲置通过导航菜单- >程序- > Python 3闲置。一个叫做Python 3.4.2 Shell将打开窗口。编写python脚本并将它们保存到一个目录中。
这个项目的编写的python脚本应该在启动时运行π3驱动。脚本运行一个无限循环,所以它永远不会结束。有一些方法的覆盆子π可以配置为运行python脚本启动。万博app怎么更新可以使用下列方法-
1)编辑rc。当地的,
可以被添加到文件/etc/rc.的命令本地运行一个程序或命令时,树莓π启动。万博app怎么更新这是特别有用如果π插入无头,并让它运行一个程序没有配置或手动开始。文件应该与根编辑通过运行以下命令在Linux终端-
sudo nano /etc/rc.local
现在添加命令来执行python脚本使用完整的文件路径和添加一个字符的命令,脚本运行在一个单独的进程并引导可以继续。下面的命令应该添加在python脚本保存为菜单。py -
sudo python /home/pi/menu.py&
退出0
应该添加命令行之前退出rc 0。本地文件。
2)编辑. bashrc -
. bashrc是一个隐藏的文件在主文件夹,其中包含用户配置选项。打开.bshrc文件通过运行以下命令在Linux终端
sudo nano /home/pi/.bashrc
添加以下行后在文件最后一行-
回声在启动运行
sudo python /home/pi/menu.py
3)添加init脚本。d目录-
init。d目录包含的脚本开始在引导过程中(此外,所有程序执行当π是关闭或重启)。在启动时要运行的脚本添加到init。d目录,使用以下命令
sudo cp /home/pi/securitysystem。py /etc/init.d/
搬到init目录并打开python脚本通过运行以下命令
cd /etc/init.d
sudo nano menu.py
添加以下行python脚本使它一个Linux标准基础(LSB)
# /etc/init.d/sample.py
# # #开始初始化信息
#提供:sample.py
# Required-Start: remote_fs syslog美元
# Required-Stop: remote_fs syslog美元
#默认启动:2 3 4 5
#默认地停止:0 1 6
#简短描述:在启动时启动守护进程
描述:支持服务提供的守护进程。
# # #结束初始化信息
让python脚本初始化目录中的可执行文件通过运行下面的命令,改变其许可
sudo chmod + x menu.py
然后运行以下命令
sudo update-rc。d菜单。py违约
接下来通过运行以下命令重新启动π-
sudo重启
可以使用任何上述方法使python脚本启动。现在π3可以连接到显示器应该显示的客户订单。有以下主要亮点——python脚本
1。MQTT和GPIO导入库
进口paho.mqtt。客户机mqtt
进口paho.mqtt。出版,发布
进口零售物价指数。GPIO的GPIO
2。创建一个数组称为菜单,添加菜单项并将其发送
段=[“咖啡”,
“茶”,
“Maxixan大米”,
“烤蔬菜湿草地”,
“奶酪披萨”,
“词Aloo Tikki汉堡”,
“薯条”,
]
item_price = (200130100400200、55、90)
发送数组
def菜单():
因为我在范围(0,len(段)):
#打印str (i + 1) +“:”+段[我]+”:“+ str (item_price[我])
menu_send = (str (i + 1) +”。“+段[我]+“:”+ str (item_price[我])+“美元”)
发布。单(“FromServer”、menu_send主机名= broker_ip)
3所示。根据接收的数据向服务器发送响应
elif(消息“m”):
数=(数+ 1)
oldstr =消息
#打印oldstr
tim1 = oldstr。替换(“m”、“0”)
#打印tim1
tim1 = int (tim1)
tim1 = tim1 + 30
m = "分钟"
如果(tim1 > 60岁):
tim1 = (tim1/60)
m = "小时"
美国广播公司(abc) = str (tim1)
#打印abc
订单=(“订单就好了:“+ abc + m)
如果(tim2 > len(段)):
发布。单(“FromServer”、“次序错了!请选择一个有效的菜单项”,主机名= broker_ip)
4所示。脚本的最后这些线连接到代理
客户= mqtt.Client ()
客户端。on_connect = on_connect
客户端。on_message = on_message
客户端。连接(broker_ip broker_port 60)
client.loop_forever ()
下载并查看应用程序代码在Android工作室。然后尝试覆盆子π的python代码。万博app怎么更新这是一个简单的酒店订单管理系统,利用MQTT协议和管理食品订单。
在接下来的教程,了解IMAP协议。
项目源代码
# # #/ /程序进口paho.mqtt。客户机mqtt进口paho.mqtt。发布,发布进口随机进口线进口时间进口进口零售物价指数。GPIO的GPIO## Import GPIO library import os os.system('clear') ############################# Raspberry Pi GPIO ############################ GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) ## Use board pin numbering GPIO.setup(8, GPIO.OUT) ## Setup GPIO Pin 8 to OUT GPIO.setup(10, GPIO.OUT) ## Setup GPIO Pin 10 to OUT GPIO.setup(12, GPIO.OUT) ## Setup GPIO Pin 12 to OUT GPIO.setup(16, GPIO.OUT) ## Setup GPIO Pin 16 to OUT #declarations broker_ip = "broker.hivemq.com" broker_port = 1883 oldstr = '0' tim1 = '0' abc = '0' cba = '0' order ='0' m = '0' a = "ad" b = "cb" #Main Satrt menu_items=["Coffee", "Tea", "Maxixan Rice", "Grilled Veggie Wich", "Cheese Pizza", "Aloo Tikki Burger", "French Fries", ] item_price=[200,130,100,400,200,55,90] count = 0 count2 = 0 count3 = 0 # The callback for when the client receives a CONNACK response from the server. print (""" __ __ _______ _______ _______ ___ ___ _______ _______ | | | || || || || | | | | || | | |_| || _ ||_ _|| ___|| | | | | _ ||_ _| | || | | | | | | |___ | | | | | | | | | | | || |_| | | | | ___|| |___ | | | |_| | | | | _ || | | | | |___ | | | | | | | | |__| |__||_______| |___| |_______||_______| |___| |_______| |___| """) def on_connect(client, userdata, flags, rc): #print("Connected with result code "+str(rc)) print("Connected!") # Subscribing in on_connect() means that if we lose the connection and # reconnect then subscriptions will be renewed. client.subscribe("ToServer") GPIO.output(16,True) #GPIO pin will be on on the connection GPIO.output(8,False) GPIO.output(10,False) GPIO.output(12,False) # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): global count global count2 global count3 global order global abc global m message = str(msg.payload) #print(msg.topic+" "+str(msg.payload)) if ('19932' in message.lower()): #rand1 = random.randint(0, 4) #publish.single("FromServer", reasponse_on_name[rand1], hostname="192.168.1.106") menu() elif ('m' in message): count = (count + 1) oldstr = message #print oldstr tim1 = oldstr.replace("m", "0") #print tim1 tim1 = int(tim1) tim1 = tim1 +30 m = " minutes" if(tim1>60): tim1 = (tim1/60) m = " hour" abc = str(tim1) #print abc order = ("Order will be ready in:"+abc+m) elif ('ooo' in message): count2 = count2 + 1 count3 = count3 + 1 oldstr1 = message #print message tim2 = oldstr1.replace("ooo", "0") #print tim2 tim2 = int(tim2) #print tim2 if(tim2>len(menu_items)): publish.single("FromServer", "Wrong Order! Please Select a valid menu Item", hostname=broker_ip) #print (" Invalid order:"+" with id:"+str(count2)) else: publish.single("FromServer", order, hostname=broker_ip) print ("Custmor No."+ str(count) + " wil be here in "+ abc +" "+m), print (" With the order of:"+menu_items[(tim2-1)]+" with id:"+str(count2)) print " " if(count3==1): GPIO.output(8,True) GPIO.output(12,False) if(count3==2): GPIO.output(10,True) if(count3==3): GPIO.output(12,True) GPIO.output(8,False) GPIO.output(10,False) count3 = 0 def menu(): for i in range(0,len(menu_items)): #print str(i+1) +":"+ menu_items[i]+ ":" +str(item_price[i]) menu_send = (str(i+1) +"."+ menu_items[i]+ ":" +str(item_price[i]) + "$") publish.single("FromServer", menu_send, hostname=broker_ip) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(broker_ip, broker_port, 60) client.loop_forever() ###