简介:今天,首席执行官指出,与您分享如何与Django相关。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
instasted_apps =((
#“ jet.dashboard”,
#“喷气机”,
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Django Rest框架
'REST_FRAMEWORK',
'Rest_framework.authtoken',
#我的应用程序
'mqtt_bridge'
治愈
通信猫调试软件在下面使用。
通信猫调试软件在这里使用串行端口进行示例。首先打开软件,然后您可以在软件中间看到com1或com5(在这里您可以在计算机中正确单击属性,在计算机中查找串行端口设备管理器),然后将其打开。如果您成功打开它,则可以在左侧的串行端口上看到接收数据。
软件配置文件,通讯猫调试软件v313,收集串行端口,并行,USB,TCP,UDP,MQTT,MQTT,蓝牙,WiFi,摄像头测试功能以及一个车身中的许多实用小工具。通用猫调试软件是MQTT测试软件,是MQTT测试软件可以执行MQTT,TCPIP和串行测试。这些功能非常丰富,支持串行端口,并行,TCP服务器,TCP客户端,UDP,HTTP调试。功能是实用的,您可以下载它进行试用。
[1]可以在MQTT协议中指定用户名和密码。在Yeelink协议中,用户名变为u-apikey,密码是U-Apikey的特定值。
[2]订阅设备URI的主题,您需要将API版本编号修改为v1.1
[3]主机名是mqtt.yeelink.net而不是api.yeelink.net
在mqtt.js的示例代码中:client = mqtt.connect('mqtt:// user:pass@localhost');
在Yeelink的示例代码中:client = mqtt.connect(“ mqtt://u-apikey:your_key@mqtt.yeelink.net”);
以上两个示例代码可以解释每个参数的相应关系。
建立物联网所需的技术
一:单芯片微型计算机/嵌入式开发
聪明的硬件,嘿,不是一个芯片微型计算机吗?最终分析,它是一个微控制器。现在出现智能手表,照明LED灯,蓝牙解锁,WiFi插座等。专业人士通常教授51或AVR或计算机系统。流行的Arduino也是一种单芯片微型计算机的开发。
但是要制作智能硬件,不可能在技术中进行单个芯片编程。电子系统设计必须是!
两个:网络通信协议
智能硬件和传统电子产品之间的最大区别是,智能硬件已连接到网络。要连接到网络,我们需要使用网络通信模块和学习网络通信协议-TCP/IP。
TCP/IP是技术的一般说法。它包含两个协议TCP和UDP,该协议位于网络通信分层模型的传输层中,也由操作系统管理。这些技术(例如HTTP,DNS)属于应用程序层,位于TCP上/udp.simarly,最近更受欢迎的MQTT协议,来自具有有限计算能力的通信设备的MQTT协议也属于TCP。
为了允许电子产品具有连接的能力,只要电路设计将通信模块连接到主控制芯片,并为接收和接收网络说明编写代码,其余就是电子产品的设计。
3:服务器开发框架
客户端/服务器架构,客户端/服务器架构。智能硬件连接到背景服务器后,它是客户端和终端。由于单芯片机中的资源有限,实际上不太可能使用http协议,因此Internet中常见的Web服务器开发不适合这里。一些制造商将自定义TCP上的协议,并进行一些移植协议,例如MQTT,COAP等。
服务方面的开发更为复杂。芯片微型计算机/嵌入式软件开发是可以的。只要您学习C语言,就可以扮演世界无敌的手,并开发服务方面。使用Java或PHP?无论如何,Java和Python选择一个。通常学习Python。
Python服务器上有许多类型的开发框架。Web开发的Django,BlaskTornado Web服务器和TCP服务器可以使用扭曲,依此类推。MQTT具有已完成的服务器。这样的服务器本身不需要开发它。
1.下载Apollo服务器,下载后下载,然后运行Apache-Apollo-1.6binapollo.cmd,输入创建MyBroker,运行数据等,然后与服务器流程相关联。
2.创建MyBroker将在BIN目录中生成MyBroker文件夹,其中包含大量信息。其中,etcapollo.xml文件是配置服务器信息的文件。等等。Properties文件包含通过将MQTT服务器连接到MQTT服务器的用户名和密码。我将稍后介绍原始Admin =密码,然后您可以更改以添加新的用户名密码。
3.打开CMD并运行... apache-apollo-1.6binmyBrokerbinapollo- Broker.cmd Run打开服务器。您可以输入浏览器以查看安装是否成功。该界面显示了许多信息,例如主题和连接数量。
在上述简单步骤之后,服务器基本完成。下一篇文章将介绍Android客户端的写作和预防措施。
客户端使用的API,我开始使用MQTT-CLIENT。使用后,我发现存在数百个问题,无法很好地满足要求。后来,我使用了正式推荐的Eclipse Paho。客户代码在下面编写。两个项目:Android和J2SE:
1.新的Android工程MQTTCLCLIENT
2.主攻击代码如下:
[java]查看plaincopyprint?
软件包ldw.mqttclient;
导入java.util.concurrent.executors;
导入java.util.concurrent.scheduledexecutorservice;
导入java.util.concurrent.timeunit;
导入org.eclipse.paho.client.mqttv3.imqttlinerytoken;
导入org.eclipse.paho.client.mqttv3.mqttcallback;
导入org.eclipse.paho.client.mqttv3.mqttclient;
导入org.eclipse.paho.client.mqttv3.mqttconnectoptions;
导入org.eclipse.paho.client.mqttv3.mqttexception;
导入org.eclipse.paho.client.mqttv3.mqttmessage;
导入org.eclipse.paho.client.mqttv3.pers.memorypersistence;
导入Android.App.Activity;
导入android.os.bundle;
导入android.os.handler;
导入android.os.message;
导入android.view.keyevent;
导入android.widget.textview;
导入android.widget.toast;
公共班级主进扩展活动{
私有TextView resulttv;
私有字符串host =“ tcp://127.0.0.0.0.1:1883”;
私有字符串用户名=“ admin”;
私有字符串密码=“密码”;
私人处理程序;
私有mqttclient客户端;
私有字符串mytopic =“ test/topic”;
私有MQTTConnectOptions选项;
私有计划ExecutorService调度程序;
@Override
受保护的void ongreate(捆绑savedinstancestate){
super.oncreate(SavedinStancestate);
setContentView(r.layout.main);
resulttv =(textView)findViewById(r.id.result);
在里面 ();
处理程序= new Handler(){
@Override
public void handlemessage(消息msg){
super.handlemessage(msg);
if(msg.what == 1){{{
toast.maketext(mainActivity.this,(string)msg.obj,
toast.length_short).show();
system.out.println(“ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------”)
} else if(msg.what == 2){
toast.maketext(mainActivity.this,“连接成功”,toast.length_short).show();
尝试 {
client.subscribe(mytopic,1);
} catch(异常E){
e.printstacktrace();
}
} else if(msg.what == 3){
toast.maketext(mainActivity.this,“连接故障,系统已连接”,toast.length_short).show();
}
}
};
startOldNect();
}
私有void startreconnect(){
scheduler = executors.newsingleadschedexecutor();
Scheduler.scheduletFixedRate(new Runnable(){
@Override
public void run(){
if(!client.isconnect()){{){
连接 ();
}
}
},0 * 1000,10 * 1000,timeunit.milliseconds);
}
私人void init(){
尝试 {
//主机是主机名,测试是客户端,即连接到MQTT的客户端ID。通常,它由客户端唯一标识符表示。
客户端= new MQTCLIENT(主机,“测试”,
新的内存普及());
// MQTT连接设置
options = new mqttconnectoptions();
//设置是否清空会话。如果将其设置为false,则意味着服务器将保留客户端的连接记录。该集合在此处设置,以指示与服务器的每个连接都以新的身份连接到服务器。
options.setCleanssessess(true);
//设置连接的用户名
options.setusername(用户名);
//设置连接的密码
options.setPassword(password.tochararray());
//以秒为单位设置超时单元
options.setConnectionTimeOut(10);
//设置第二个服务器的会话 - 跳跃时间单元将向客户端发送消息,以确定客户端是否每1.5*20秒在线,但是此方法没有反复链接的机制。
options.setKeepaliveInterval(20);
//设置回调
client.setCallback(new mqttcallback(){
@Override
public void ConnectionLost(可抛出原因){{{
//连接丢失后,通常在此处重新连接
}
@Override
public void deliverycomplete(imqttdeliverytoken token){{{
//发布后将在此处执行发布
system.out.println(“交付compleplete ---------------------------”
+ token.iscomplete());
}
@Override
公共void messagearrived(字符串主题名,mqttmessage消息)
抛出异常{
//在此处将执行订阅者后获得的消息
system.out.println(“ Messagearrived ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------”)
消息msg = new Message();
msg.what = 1;
msg.obj = topicname+“ ---”+message.toString();
Handler.SendMessage(MSG);
}
});
// 连接 ();
} catch(异常E){
e.printstacktrace();
}
}
私有void connect(){
新线程(new runnable(){
@Override
public void run(){
尝试 {
client.connect(options);
消息msg = new Message();
msg.what = 2;
Handler.SendMessage(MSG);
} catch(异常E){
e.printstacktrace();
消息msg = new Message();
msg.what = 3;
Handler.SendMessage(MSG);
}
}
})。开始 ();
}
@Override
public boolean onkeydown(int key代码,keyevent事件){
if(client!= null keycode == keyevent.keycode_back){
尝试 {
client.disconnect();
} catch(异常E){
e.printstacktrace();
}
}
返回super.onkeydown(键代码,event);
}
@Override
受保护的void onDestroy(){
super.ondestroy();
尝试 {
Scheduler.shutdown();
client.disconnect();
} catch(mqttexception e){{
e.printstacktrace();
}
}
}
由于项目的需求,我再次使用了心跳。根据这里的说明,Apollo.xml主要设置为主机连接的地址。此外,选项还具有SETWILL方法。如果项目需要知道客户端是否被删除,则可以调用此方法。
结论:以上是每个人都为MQTT和Django汇总的首席CTO注释。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?