发布网友 发布时间:2024-09-27 00:10
共1个回答
热心网友 时间:2024-10-04 11:35
导读:今天首席CTO笔记来给各位分享关于mqtt怎么跟django的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django后台怎么执行threadINSTALLED_APPS=(
#'jet.dashboard',
#'jet',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Djangorestframework
'rest_framework',
'rest_framework.authtoken',
#myapps
'mqtt_bridge'
)
通信猫调试软件怎么用通信猫调试软件使用如下说明。
通信猫调试软件使用这里用串口来举例。首先打开软件,然后在软件右侧中间部位可以看到COM1或者COM5等(这里可以在计算机右键属性,设备管理器中找到串口查看串口号),然后点打开。如果打开成功,刚可以在左侧看到串口的接收数据,如要有乱码就要在配置中修改波物率即可。
软件简介,通信猫调试软件V313,集串口、并口、USB、TCP、UDP、MQTT、蓝牙、WIFI、摄像头调试功能及众多实用小工具于一身的小体积绿色软件。通信猫调试软件是一款mqtt测试软件,能够进行MQTT,TCPIP和串口测试,功能非常丰富,支持串口,并口,TCP服务器,TCP客户端,UDP,HTTP调试。功能实用,有需要可以下载试用看看。
paho.mqtt.python模块怎么安装【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、URI等这些技术,属于应用层,位于TCP/UDP之上。同样,最近物联网比较流行的,针对计算能力有限的通讯设备而出的MQTT协议,也属于TCP之上。
为了让电子产品有联网的能力,只要在电路设计上给主控芯片连接一个通信模块,写好收发网络指令的代码,剩下的就是电子产品设计了。
三:服务端开发框架
Client/Server架构,即客户端/服务器架构。智能硬件连上后台服务器后,其就是一个客户端,一个终端。由于单片机中资源受限,实际上是不太可能用HTTP协议的,所以互联网中通用的Web服务器开发并不适合这里。有的厂家会在TCP之上自定义协议,有的就移植别人做好的协议比如MQTT,CoAP等等。
服务端开发就比较复杂了。单片机/嵌入式软件开发还好,只要学习好C语言即可打遍天下无敌手,而服务端开发,用Java呢还是Python还是PHP?反正Java和Python选一个就好了,嵌入式出身的工程师,一般都会学Python。
Python服务器端的开发框架种类繁多,Web开发的有Django、FlaskTornadoWebServer,TCP服务器可以用Twisted,等等。MQTT有已经做好的服务器,像这样的服务器不用自己开发,直接部署即可。
androidstudio怎么安装mqtt1、下载Apollo服务器,下载后解压,然后运行apache-apollo-1.6\bin\apollo.cmd,输入createmybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。
2、createmybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apollo.xml文件下是配置服务器信息的文件,etc\users.properties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。
3、打开cmd,运行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmdrun开启服务器,可以在浏览器中输入查看是否安装成功,该界面展示了topic,连接数等很多信息。
经过上面的简单步骤,服务器基本上就已经完成,下一篇将介绍Android客户端的编写和注意事项。
客户端使用的API,开始我使用的是mqtt-client,使用过后发现问题百出,不能很好的满足要求,后来使用了官方推荐的EclipsePaho,下面开始客户端代码的编写,为了方便测试这里有android和j2se两个工程:
1、新建android工程MQTTClient
2、MainActivity代码如下:
[java]viewplaincopyprint?
packageldw.mqttclient;
importjava.util.concurrent.Executors;
importjava.util.concurrent.ScheduledExecutorService;
importjava.util.concurrent.TimeUnit;
importorg.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
importorg.eclipse.paho.client.mqttv3.MqttCallback;
importorg.eclipse.paho.client.mqttv3.MqttClient;
importorg.eclipse.paho.client.mqttv3.MqttConnectOptions;
importorg.eclipse.paho.client.mqttv3.MqttException;
importorg.eclipse.paho.client.mqttv3.MqttMessage;
importorg.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.view.KeyEvent;
importandroid.widget.TextView;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
privateTextViewresultTv;
privateStringhost="tcp://127.0.0.1:1883";
privateStringuserName="admin";
privateStringpassWord="password";
privateHandlerhandler;
privateMqttClientclient;
privateStringmyTopic="test/topic";
privateMqttConnectOptionsoptions;
privateScheduledExecutorServicescheduler;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
resultTv=(TextView)findViewById(R.id.result);
init();
handler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
if(msg.what==1){
Toast.makeText(MainActivity.this,(String)msg.obj,
Toast.LENGTH_SHORT).show();
System.out.println("-----------------------------");
}elseif(msg.what==2){
Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_SHORT).show();
try{
client.subscribe(myTopic,1);
}catch(Exceptione){
e.printStackTrace();
}
}elseif(msg.what==3){
Toast.makeText(MainActivity.this,"连接失败,系统正在重连",Toast.LENGTH_SHORT).show();
}
}
};
startReconnect();
}
privatevoidstartReconnect(){
scheduler=Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(newRunnable(){
@Override
publicvoidrun(){
if(!client.isConnected()){
connect();
}
}
},0*1000,10*1000,TimeUnit.MILLISECONDS);
}
privatevoidinit(){
try{
//host为主机名,test为clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
client=newMqttClient(host,"test",
newMemoryPersistence());
//MQTT的连接设置
options=newMqttConnectOptions();
//设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
//设置连接的用户名
options.setUserName(userName);
//设置连接的密码
options.setPassword(passWord.toCharArray());
//设置超时时间单位为秒
options.setConnectionTimeout(10);
//设置会话心跳时间单位为秒服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//设置回调
client.setCallback(newMqttCallback(){
@Override
publicvoidconnectionLost(Throwablecause){
//连接丢失后,一般在这里面进行重连
System.out.println("connectionLost----------");
}
@Override
publicvoiddeliveryComplete(IMqttDeliveryTokentoken){
//publish后会执行到这里
System.out.println("deliveryComplete---------"
+token.isComplete());
}
@Override
publicvoidmessageArrived(StringtopicName,MqttMessagemessage)
throwsException{
//subscribe后得到的消息会执行到这里面
System.out.println("messageArrived----------");
Messagemsg=newMessage();
msg.what=1;
msg.obj=topicName+"---"+message.toString();
handler.sendMessage(msg);
}
});
//connect();
}catch(Exceptione){
e.printStackTrace();
}
}
privatevoidconnect(){
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
client.connect(options);
Messagemsg=newMessage();
msg.what=2;
handler.sendMessage(msg);
}catch(Exceptione){
e.printStackTrace();
Messagemsg=newMessage();
msg.what=3;
handler.sendMessage(msg);
}
}
}).start();
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(client!=nullkeyCode==KeyEvent.KEYCODE_BACK){
try{
client.disconnect();
}catch(Exceptione){
e.printStackTrace();
}
}
returnsuper.onKeyDown(keyCode,event);
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
try{
scheduler.shutdown();
client.disconnect();
}catch(MqttExceptione){
e.printStackTrace();
}
}
}
由于项目需要,我用到了心跳重连。根据这里的解释设置apollo.xml,主要有设置主机连接的地址。另外,options还有个setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。
结语:以上就是首席CTO笔记为大家整理的关于mqtt怎么跟django的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~