嵌入式以太网社区

 找回密码
 立即注册
搜索
I2C总线监控分析仪,I2C总线数据抓取分析利器!利用Python来控制STM32USB转I2C总线适配器,数据透传!高速USB转SPI适配器,数据透传,速度快!
STM32高速USB数据传输方案,支持多系统!STM32全速USB数据传输方案,支持多系统!Flash高速烧写方案STM32 HID IAP/Bootloader升级方案
查看: 45221|回复: 403

STM32+W5500+MQTT+Android实现远程数据采集及控制

  [复制链接]

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
发表于 2015-8-10 13:57:15 | 显示全部楼层 |阅读模式
本帖最后由 飞鸿踏雪 于 2015-8-18 18:44 编辑

0 前言
最近在学习MQTT,发现MQTT还是挺好用的,于是花了点时间做了一个简单的应用示例,希望能给需要做这方面的人一些参考。
相关背景知识:http://www.embed-net.com/thread-224-1-1.html
具体功能为:
1,STM32F405为主控芯片,它通过传感器采集环境数据,比如温度,湿度,光照度,大气压强等;
2,主控芯片通过W5500模块将测量的数据通过MQTT协议方式发布到MQTT服务器(服务器域名和IP见固件程序);
3,主控订阅LED灯控制的消息,当接收到对应的控制指令后点亮或者熄灭对应的LED灯;
4,安卓手机端订阅传感器数据的消息,当接收到消息后将传感器数据在界面显示;
5,安卓手机可发送点亮或者熄灭LED灯的指令到服务器,然后服务器会将该指令转发给STM32主控,然后STM32主控解析该指令并执行指令。

1 单片机端实现
MQTT协议是基于TCP的协议,所以我们只需要在单片机端实现TCP客户端代码之后就很容易移植MQTT了,STM32F4+W5500实现TCP客户端的代码我们以前已经实现过,代码下载地址为:
http://www.embed-net.com/thread-87-1-1.html
当然,如果你想在代码里面直接使用服务器域名方式进行连接,我们还得在TCP客户端代码里面集成DNS的代码,当然在上面这个连接里面也有相关的代码。
MQTT代码源码下载地址:
http://www.eclipse.org/paho/
在STM32这边我们使用的是C/C++ MQTT Embedded clients代码。
硬件连接如下图所示:
QQ截图20150810130801.jpg
1.1 MQTT的移植
MQTT的移植非常简单,将C/C++ MQTT Embedded clients的代码添加到工程中,然后我们只需要再次封装4个函数即可:
[C] 纯文本查看 复制代码
int transport_sendPacketBuffer(unsigned char* buf, int buflen);
int transport_getdata(unsigned char* buf, int count);
int transport_open(void);
int transport_close(void);

transport_sendPacketBuffer:通过网络以TCP的方式发送数据;
transport_getdata:TCP方式从服务器端读取数据,该函数目前属于阻塞函数;
transport_open:打开一个网络接口,其实就是和服务器建立一个TCP连接;
transport_close:关闭网络接口。
如果已经移植好了socket方式的TCP客户端的程序,那么这几个函数的封装也是非常简单的,程序代码如下所示:
[C] 纯文本查看 复制代码
/**
  * @brief  通过TCP方式发送数据到TCP服务器
  * @param  buf 数据首地址
  * @param  buflen 数据长度
  * @retval 小于0表示发送失败
  */
int transport_sendPacketBuffer(unsigned char* buf, int buflen)
{
  return send(SOCK_TCPS,buf,buflen);
}
/**
  * @brief  阻塞方式接收TCP服务器发送的数据
  * @param  buf 数据存储首地址
  * @param  count 数据缓冲区长度
  * @retval 小于0表示接收数据失败
  */
int transport_getdata(unsigned char* buf, int count)
{
  return recv(SOCK_TCPS,buf,count);
}


/**
  * @brief  打开一个socket并连接到服务器
  * @param  无
  * @retval 小于0表示打开失败
  */
int transport_open(void)
{
  int32_t ret;
  //新建一个Socket并绑定本地端口5000
  ret = socket(SOCK_TCPS,Sn_MR_TCP,5000,0x00);
  if(ret != SOCK_TCPS){
    printf("%d:Socket Error\r\n",SOCK_TCPS);
    while(1);
  }else{
    printf("%d:Opened\r\n",SOCK_TCPS);
  }

  //连接TCP服务器
  ret = connect(SOCK_TCPS,domain_ip,1883);//端口必须为1883
  if(ret != SOCK_OK){
    printf("%d:Socket Connect Error\r\n",SOCK_TCPS);
    while(1);
  }else{
    printf("%d:Connected\r\n",SOCK_TCPS);
  }                
        return 0;
}
/**
  * @brief  关闭socket
  * @param  无
  * @retval 小于0表示关闭失败
  */
int transport_close(void)
{
  close(SOCK_TCPS);
  return 0;
}


完成了这几个函数,然后我们就可以根据官方提供的示例代码实现我们自己的代码了,比如我们向代理服务器发送一个消息的代码如下所示:
[C] 纯文本查看 复制代码
/**
  * @brief  向代理(服务器)发送一个消息
  * @param  pTopic 消息主题
  * @param  pMessage 消息内容
  * @retval 小于0表示发送失败
  */
int mqtt_publish(char *pTopic,char *pMessage)
{
  int32_t len,rc;
  MQTTPacket_connectData data = MQTTPacket_connectData_initializer;
  unsigned char buf[200];
  MQTTString topicString = MQTTString_initializer;
  int msglen = strlen(pMessage);
  int buflen = sizeof(buf);

  data.clientID.cstring = "me";
  data.keepAliveInterval = 5;
  data.cleansession = 1;
  len = MQTTSerialize_connect(buf, buflen, &data); /* 1 */

  topicString.cstring = pTopic;
  len += MQTTSerialize_publish(buf + len, buflen - len, 0, 0, 0, 0, topicString, (unsigned char*)pMessage, msglen); /* 2 */

  len += MQTTSerialize_disconnect(buf + len, buflen - len); /* 3 */
  transport_open();        
  rc = transport_sendPacketBuffer(buf,len);
  transport_close();
        if (rc == len)
                printf("Successfully published\n\r");
        else
                printf("Publish failed\n\r");
  return 0;
}

下面我们看下主函数的代码,思路也比较清晰:
[C] 纯文本查看 复制代码
int main(void)
{
  static char meassage[200];
  int rc;
  char *led;
  char led_value;
  float temperature,humidity,light,pressure;
  srand(0);
  //配置LED灯引脚
  LED_Config();
        //初始化配置网络
        network_init();
  while(1){
    memset(meassage,0,sizeof(meassage));
    //订阅消息
    rc = mqtt_subscrib("pyboard_led",meassage);
    printf("rc = %d\n\r",rc);
    if(rc >= 0){
      printf("meassage = %s\n\r",meassage);
      //解析JSON格式字符串并点亮相应的LED灯
      cJSON *root = cJSON_Parse(meassage); 
      if(root != NULL){
        led = cJSON_GetObjectItem(root,"led")->valuestring;
        printf("led = %s\n\r",led);
        led_value = cJSON_GetObjectItem(root,"value")->valueint;
        if(!strcmp(led,"red")){
          if(led_value){
            LED_On(LED_RED);
          }else{
            LED_Off(LED_RED);
          }
        }else if(!strcmp(led,"green")){
          if(led_value){
            LED_On(LED_GREEN);
          }else{
            LED_Off(LED_GREEN);
          }
        }else if(!strcmp(led,"blue")){
          if(led_value){
            LED_On(LED_BLUE);
          }else{
            LED_Off(LED_BLUE);
          }
        }else if(!strcmp(led,"yellow")){
          if(led_value){
            LED_On(LED_YELLOW);
            printf("Yellow On\n\r");
          }else{
            LED_Off(LED_YELLOW);
            printf("Yellow Off\n\r");
          }
        }
        // 释放内存空间  
        cJSON_Delete(root); 
      }else{
        printf("Error before: [%s]\n\r",cJSON_GetErrorPtr());  
      }
    }
    delay_ms(500);
    //获取传感器测量数据,该示例使用随机数
    temperature = rand()%50;
    humidity = rand()%100;
    light = rand()%1000;
    pressure = rand()%1000;
    //将数据合成为JSON格式数据
    sprintf(meassage,"{\"temperature\":%.1f,\"humidity\":%.1f,\"light\":%.1f,\"pressure\":%.1f}",temperature,humidity,light,pressure);
    //将数据发送出去
    mqtt_publish("pyboard_value",meassage);
  }
}

完整工程代码可在后面的附件下载。

2 手机端代码实现
手机端我们也使用官方提供的Java库Java client and utilities,下载地址:
http://www.eclipse.org/paho/
将jar文件添加到工程中即可,程序界面如下所示:
QQ截图20150810134415.jpg
上面4个条目分别显示STM32单片机通过W5500发送到服务器端的传感器测量数据;
下面4个图片分别控制板子上的4个LED灯;
消息发送我们采用线程的方式发送,接收采用回调函数方式接收消息。

2.1 实现消息发送
发送消息的代码如下所示:
[Java] 纯文本查看 复制代码
  /**
     * send message
     */
    class PublishThread extends Thread {
        String topic;
        MqttMessage message;
        int qos = 0;
        MemoryPersistence persistence = new MemoryPersistence();
        PublishThread(String topic,String message){
            this.topic = topic;
            this.message = new MqttMessage(message.getBytes());
        }
        public void sendMessage(String topic,String message){
            this.topic = topic;
            this.message = new MqttMessage(message.getBytes());
            run();
        }
        @Override
        public void run() {
            try {
                MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
                MqttConnectOptions connOpts = new MqttConnectOptions();
                connOpts.setCleanSession(true);
                connOpts.setKeepAliveInterval(1);
                System.out.println("Connecting to broker: " + broker);
                sampleClient.connect(connOpts);
                System.out.println("Connected");
                System.out.println("Publishing message: " + message.toString());
                message.setQos(qos);
                sampleClient.publish(topic, message);
                System.out.println("Message published");
                sampleClient.disconnect();
                System.out.println("Disconnected");
            }catch(MqttException me) {
                System.out.println("reason "+me.getReasonCode());
                System.out.println("msg "+me.getMessage());
                System.out.println("loc "+me.getLocalizedMessage());
                System.out.println("cause "+me.getCause());
                System.out.println("excep "+me);
                me.printStackTrace();
            }
        }
    }


2.2 实现消息接收
接收消息的代码如下所示:
[Java] 纯文本查看 复制代码
   /**
     * receive message
     */
    class SubscribeThread extends Thread{
        final String topic;
        MemoryPersistence persistence = new MemoryPersistence();
        SubscribeThread(String topic){
            this.topic = topic;
        }
        @Override
        public void run(){
            try {
                final MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
                final MqttConnectOptions connOpts = new MqttConnectOptions();
                connOpts.setCleanSession(true);
                System.out.println("Connecting to broker: " + broker);
                connOpts.setKeepAliveInterval(5);
                sampleClient.setCallback(new MqttCallback() {
                    @Override
                    public void connectionLost(Throwable throwable) {
                        System.out.println("connectionLost");
                        try {
                            sampleClient.connect(connOpts);
                            sampleClient.subscribe(topic);
                        }catch (MqttException e){
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception {
                        System.out.println("messageArrived:"+mqttMessage.toString());
                        System.out.println(topic);
                        System.out.println(mqttMessage.toString());
                        try {
                            JSONTokener jsonParser = new JSONTokener(mqttMessage.toString());
                            JSONObject person = (JSONObject) jsonParser.nextValue();
                            temperature = person.getDouble("temperature");
                            humidity = person.getDouble("humidity");
                            light = person.getDouble("light");
                            pressure = person.getDouble("pressure");
                            System.out.println("temperature = " + temperature);
                            System.out.println("humidity = " + humidity);
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    temperatureTextView.setText(String.format("%.1f", temperature));
                                    humidityTextView.setText(String.format("%.1f", humidity));
                                    lightTextView.setText(String.format("%.1f", light));
                                    pressureTextView.setText(String.format("%.1f", pressure));
                                }
                            });
                        } catch (JSONException ex) {
                            ex.printStackTrace();
                        }
                    }

                    @Override
                    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
                        System.out.println("deliveryComplete");
                    }
                });
                sampleClient.connect(connOpts);
                sampleClient.subscribe(topic);
            } catch(MqttException me) {
                System.out.println("reason "+me.getReasonCode());
                System.out.println("msg "+me.getMessage());
                System.out.println("loc "+me.getLocalizedMessage());
                System.out.println("cause "+me.getCause());
                System.out.println("excep "+me);
                me.printStackTrace();
            }
        }
    }


3 实测效果
1,单片机端定时更新传感器数据,手机端也会同步更新;
2,手机端点击4个LED控制的按钮,板子上也会点亮或者熄灭对应的LED;

4 源码下载
4.1 STM32端源码下载
MQTT_STM32_W5500.rar (512.37 KB, 下载次数: 1239, 售价: 20 金币)

点评

海!外直播 t.cn/RxlBL8s 禁闻视频 t.cn/RxBCc6q 这GFW防火墙,每年要花几百亿。网友评论:害怕人们知道真相,只有在信息封闭的环境中,才能实施“谎言变真理”的阴谋。看这个..  发表于 昨天 17:22
人生到处知何似,应似飞鸿踏雪泥。
回复

使用道具 举报

29

帖子

1

主题

11

金币

注册会员

Rank: 2

积分
65
发表于 2015-8-10 14:27:16 | 显示全部楼层
怎么下载还有限制要啊
回复 支持 1 反对 0

使用道具 举报

29

帖子

6

主题

76

金币

注册会员

Rank: 2

积分
109
发表于 2015-8-10 14:04:30 | 显示全部楼层
也有一块和版主一样的W5500的模块,改天也下载了玩一下
只是版主是否能详细介绍一下MQTT?
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-8-10 14:13:18 | 显示全部楼层
mini92 发表于 2015-8-10 14:04
也有一块和版主一样的W5500的模块,改天也下载了玩一下
只是版主是否能详细介绍一下MQTT?

http://www.embed-net.com/thread-224-1-1.html
看下这个
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

26

帖子

0

主题

191

金币

中级会员

Rank: 3Rank: 3

积分
217
发表于 2015-8-10 20:21:05 | 显示全部楼层
这个不错啊
回复 支持 反对

使用道具 举报

29

帖子

1

主题

11

金币

注册会员

Rank: 2

积分
65
发表于 2015-8-10 20:36:28 | 显示全部楼层
这个不错啊
回复 支持 反对

使用道具 举报

8

帖子

0

主题

20

金币

新手上路

Rank: 1

积分
36
发表于 2015-8-11 16:03:20 | 显示全部楼层
学习一下,好好研究
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-8-11 20:49:02 | 显示全部楼层
yklstudent 发表于 2015-8-11 13:05
STM32F407+DP83848+LWIP可以移植实现MQTT协议功能码?

肯定是可以的,如果你已经移植好了TCP的功能就很容易了,我后面也打算用这种组合来实现下
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-8-12 09:29:09 | 显示全部楼层
yklstudent 发表于 2015-8-12 09:15
TCPIP移植好了,数据收发都正常;
但是看你用的socket,据了解这个要在RTOS下用才可以,
所以支持版主 ...

其实不用socket方式也可以的,只要你能收发数据就行,只是我的程序用的这种方式而已,你可以自己封装下我文中提到的4个收发管理函数
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

1

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
5
发表于 2015-8-15 19:54:13 | 显示全部楼层
谢谢分享!!!!
回复

使用道具 举报

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
9
发表于 2015-8-16 13:43:12 | 显示全部楼层
lz 你好 我用stm32F103C8 + uip + ENC28j60 可以正常通信了  这套硬件 可以移植MQTT吗
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-8-16 20:32:59 | 显示全部楼层
u_tansuo 发表于 2015-8-16 13:43
lz 你好 我用stm32F103C8 + uip + ENC28j60 可以正常通信了  这套硬件 可以移植MQTT吗

完全可以,我也打算用这个组合实现MQTT
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

4

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
7
发表于 2015-8-17 16:21:12 | 显示全部楼层
学习一下,好好研究
回复 支持 反对

使用道具 举报

22

帖子

0

主题

37

金币

注册会员

Rank: 2

积分
77
发表于 2015-8-19 15:26:05 | 显示全部楼层
谢谢楼主分享,很有启发性
回复 支持 反对

使用道具 举报

9

帖子

0

主题

52

金币

注册会员

Rank: 2

积分
78
发表于 2015-8-30 21:28:48 | 显示全部楼层
好东西,长见识。。。
回复 支持 反对

使用道具 举报

1

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
7
发表于 2015-9-2 11:38:11 | 显示全部楼层
不错,正在学习中
回复 支持 反对

使用道具 举报

1

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
12
发表于 2015-9-4 01:40:25 | 显示全部楼层
谢谢楼主分享,我们正在做了一个开源项目:www.wifimcu.com,最近需要把mqtt集成进去,找到楼主的帖子,很有用。谢谢。
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-9-4 19:13:03 | 显示全部楼层
xsyp 发表于 2015-9-4 01:40
谢谢楼主分享,我们正在做了一个开源项目:www.wifimcu.com,最近需要把mqtt集成进去,找到楼主的帖子,很 ...

看了下,还不错
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

46

帖子

0

主题

38

金币

注册会员

Rank: 2

积分
150
发表于 2015-9-9 21:48:14 | 显示全部楼层
不错,值得借鉴一下,下次再来!
回复 支持 反对

使用道具 举报

9

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
27
发表于 2015-10-10 17:04:15 | 显示全部楼层
对于学习MQTT的初学者还是很有帮助的。正好有W5500的模块,准备试试。
回复 支持 反对

使用道具 举报

4

帖子

1

主题

6

金币

新手上路

Rank: 1

积分
14
发表于 2015-10-12 23:19:24 | 显示全部楼层
这个不错.

回复

使用道具 举报

11

帖子

0

主题

48

金币

注册会员

Rank: 2

积分
77
发表于 2015-10-13 09:54:02 | 显示全部楼层
回复

使用道具 举报

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
发表于 2015-10-13 13:58:21 | 显示全部楼层
飞鸿踏雪 发表于 2015-8-16 20:32
完全可以,我也打算用这个组合实现MQTT

thank you 已经找到原因
回复 支持 反对

使用道具 举报

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
发表于 2015-10-13 13:59:27 | 显示全部楼层
飞鸿踏雪 发表于 2015-8-16 20:32
完全可以,我也打算用这个组合实现MQTT

谢谢楼主 已经找到原因
回复 支持 反对

使用道具 举报

5

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
19
发表于 2015-10-13 14:02:41 | 显示全部楼层
谢谢楼主 已经找到原因
回复 支持 反对

使用道具 举报

11

帖子

2

主题

6

金币

新手上路

Rank: 1

积分
37
发表于 2015-10-14 13:39:37 | 显示全部楼层
谢谢分享,!!!!!!!!
回复

使用道具 举报

13

帖子

0

主题

145

金币

中级会员

Rank: 3Rank: 3

积分
294
发表于 2015-10-14 17:10:49 | 显示全部楼层
持续关注中,学习!
回复 支持 反对

使用道具 举报

11

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
49
发表于 2015-10-19 20:14:30 | 显示全部楼层
这个不错啊
回复 支持 反对

使用道具 举报

20

帖子

0

主题

11

金币

注册会员

Rank: 2

积分
63
发表于 2015-10-21 09:37:11 | 显示全部楼层
这金币也要太多啦
回复 支持 反对

使用道具 举报

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
发表于 2015-10-22 16:12:44 | 显示全部楼层
很好好好!很好好好!很好好好!很好好好!很好好好!
回复 支持 反对

使用道具 举报

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
发表于 2015-10-22 16:13:29 | 显示全部楼层
很好好好很好好好很好好好很好好好很好好好!
回复 支持 反对

使用道具 举报

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
发表于 2015-10-22 16:15:03 | 显示全部楼层

学习一下,好好研究
回复 支持 反对

使用道具 举报

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
发表于 2015-10-22 16:17:46 | 显示全部楼层
实现远程数据采集及控制,很好的
回复 支持 反对

使用道具 举报

21

帖子

1

主题

14

金币

注册会员

Rank: 2

积分
50
发表于 2015-10-22 17:17:11 | 显示全部楼层

多谢楼主分享,希望便宜一些:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
回复 支持 反对

使用道具 举报

17

帖子

0

主题

22

金币

注册会员

Rank: 2

积分
58
发表于 2015-10-30 03:24:27 | 显示全部楼层
努力赚积分下代码
回复 支持 反对

使用道具 举报

50

帖子

0

主题

196

金币

中级会员

Rank: 3Rank: 3

积分
343
发表于 2015-11-2 15:57:51 | 显示全部楼层
功能很不错,谢谢分享
回复 支持 反对

使用道具 举报

27

帖子

0

主题

26

金币

注册会员

Rank: 2

积分
89
发表于 2015-11-3 11:29:44 | 显示全部楼层
很好好好!很好好好!很好好好!很好好好!很好好好!
回复 支持 反对

使用道具 举报

4

帖子

1

主题

6

金币

新手上路

Rank: 1

积分
21
发表于 2015-11-3 15:26:41 | 显示全部楼层
正需要就是分太贵了
回复 支持 反对

使用道具 举报

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
发表于 2015-11-3 15:31:10 | 显示全部楼层
积分不够下不了哟,郁闷
回复 支持 反对

使用道具 举报

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
发表于 2015-11-3 15:31:48 | 显示全部楼层
不够分看不到内容呢郁闷ING
回复 支持 反对

使用道具 举报

12

帖子

3

主题

3

金币

新手上路

Rank: 1

积分
46
发表于 2015-11-3 15:33:33 | 显示全部楼层
很有用的东西
回复 支持 反对

使用道具 举报

13

帖子

1

主题

5

金币

新手上路

Rank: 1

积分
32
发表于 2015-11-4 12:12:05 来自手机 | 显示全部楼层
对于学习MQTT的初学者还是很有帮助的。
回复 支持 反对

使用道具 举报

17

帖子

0

主题

22

金币

注册会员

Rank: 2

积分
58
发表于 2015-11-8 19:48:58 | 显示全部楼层
下载了楼主的安卓源码,因为版本问题折腾好久一直都编译不过,报这个错:
\MQTT_Android\RemoteMeasure\app\src\main\res\values\styles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
楼主能不能搞个新工程,最低支持4.0 SDK的工程啊
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-11-9 08:46:06 | 显示全部楼层
lghtjpu 发表于 2015-11-8 19:48
下载了楼主的安卓源码,因为版本问题折腾好久一直都编译不过,报这个错:
\MQTT_Android\RemoteMeasure\ap ...

其实你完全可以自己新建一个工程,然后只把我界面设计文件和程序拷贝过去就行了
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
发表于 2015-11-9 13:31:51 | 显示全部楼层
如果改成是wifi模块的话socket这边就不用弄了吧
回复 支持 反对

使用道具 举报

17

帖子

0

主题

1

金币

新手上路

Rank: 1

积分
38
发表于 2015-11-9 15:54:47 | 显示全部楼层
楼主威武,不错。
回复 支持 反对

使用道具 举报

50

帖子

0

主题

196

金币

中级会员

Rank: 3Rank: 3

积分
343
发表于 2015-11-10 12:50:31 | 显示全部楼层
回复

使用道具 举报

2

帖子

0

主题

13

金币

新手上路

Rank: 1

积分
19
发表于 2015-11-12 16:16:48 | 显示全部楼层
学习了
回复

使用道具 举报

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
发表于 2015-11-14 18:28:01 | 显示全部楼层
楼主你是用socket的connect函数取连接MQTT的服务器的吗
  ret = connect(SOCK_TCPS,domain_ip,1883);
domain是MQTT的地址?
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-11-16 08:28:27 | 显示全部楼层
lqwwan233 发表于 2015-11-14 18:28
楼主你是用socket的connect函数取连接MQTT的服务器的吗
  ret = connect(SOCK_TCPS,domain_ip,1883);
dom ...

是的
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

3

帖子

0

主题

14

金币

新手上路

Rank: 1

积分
31
发表于 2015-11-16 09:48:49 | 显示全部楼层

那样的话一旦调用
int transport_close(void)
{
  close(SOCK_TCPS);
  return 0;
}
是不是不仅断开MQTT服务器,还断开本地的socket连接?
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2015-11-16 12:05:06 | 显示全部楼层
lqwwan233 发表于 2015-11-16 09:48
那样的话一旦调用
int transport_close(void)
{

是的
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

2

帖子

0

主题

27

金币

新手上路

Rank: 1

积分
33
发表于 2015-11-16 18:50:03 | 显示全部楼层
厉害!!!!
回复

使用道具 举报

1

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
3
发表于 2015-11-17 10:17:31 | 显示全部楼层
厉害啊
回复

使用道具 举报

8

帖子

0

主题

9

金币

新手上路

Rank: 1

积分
29
发表于 2015-11-20 22:27:55 | 显示全部楼层

谢谢分享!!!!
回复

使用道具 举报

10

帖子

1

主题

6

金币

新手上路

Rank: 1

积分
31
发表于 2015-11-26 11:40:32 | 显示全部楼层
太好了呀, 好资料,
回复 支持 反对

使用道具 举报

3

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
17
发表于 2015-11-26 20:38:09 | 显示全部楼层
正好需要,非常感谢
回复 支持 反对

使用道具 举报

3

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
25
发表于 2015-12-7 11:52:36 | 显示全部楼层
正在学习,非常感谢
回复 支持 反对

使用道具 举报

68

帖子

0

主题

52

金币

中级会员

Rank: 3Rank: 3

积分
246
发表于 2015-12-31 13:23:54 | 显示全部楼层
非常好的资料,多谢楼主分享
回复 支持 反对

使用道具 举报

5

帖子

0

主题

24

金币

新手上路

Rank: 1

积分
39
发表于 2015-12-31 17:54:21 | 显示全部楼层
你说不评论哪来的金币?
回复 支持 反对

使用道具 举报

9

帖子

0

主题

0

金币

新手上路

Rank: 1

积分
27
发表于 2016-1-4 13:22:00 | 显示全部楼层
楼主威武,zanzanzan
回复 支持 反对

使用道具 举报

15

帖子

0

主题

34

金币

注册会员

Rank: 2

积分
59
发表于 2016-1-11 20:21:23 | 显示全部楼层
xue xi xue xi
回复 支持 反对

使用道具 举报

22

帖子

0

主题

12

金币

注册会员

Rank: 2

积分
72
发表于 2016-1-25 01:54:17 | 显示全部楼层
楼主厉害,辛苦了!
回复 支持 反对

使用道具 举报

8

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
34
发表于 2016-1-26 15:30:33 | 显示全部楼层
金币啊 金币啊 金币  来些吧
回复 支持 反对

使用道具 举报

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
发表于 2016-1-29 15:24:55 | 显示全部楼层
狂赞啊,楼主实在太牛了,这个论坛都是楼主的精华资料
回复 支持 反对

使用道具 举报

27

帖子

0

主题

8

金币

注册会员

Rank: 2

积分
65
发表于 2016-1-29 18:06:20 | 显示全部楼层
楼主太牛了
回复 支持 反对

使用道具 举报

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
发表于 2016-2-1 15:58:34 | 显示全部楼层
首先感谢楼主的无私奉献,现在我已经用你的代码局域网可以,但是现在有个问题就是只用你代码中的域名
uint8_t domain_ip[4]={115,29,225,215};
uint8_t domain_name[]="www.embed-net.com";
为什么显示
0:Opened
0:Socket Connect Error
请问为什么啊
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2016-2-1 17:55:34 | 显示全部楼层
zhao305149619 发表于 2016-2-1 15:58
首先感谢楼主的无私奉献,现在我已经用你的代码局域网可以,但是现在有个问题就是只用你代码中的域名
uint ...

板子能上外网吗?连接失败了
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

12

帖子

0

主题

2

金币

新手上路

Rank: 1

积分
24
发表于 2016-2-1 19:33:28 | 显示全部楼层
谢谢楼主,请问有没有用android + 以太网实现paho应用的?谢谢!
回复 支持 反对

使用道具 举报

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
发表于 2016-2-2 11:00:19 | 显示全部楼层
飞鸿踏雪 发表于 2016-2-1 17:55
板子能上外网吗?连接失败了

能上外网,该怎么测试能不能上外网?现在是链接不了和你配套的网站,还有楼主我只有10个金币了,你的app源码能不能给发一份啊,万分感谢,ahzjp888@126.com
回复 支持 反对

使用道具 举报

12

帖子

0

主题

3

金币

新手上路

Rank: 1

积分
29
发表于 2016-2-3 13:26:36 | 显示全部楼层
你好,你的源码为什么我弄出来的apk安装不了啊
回复 支持 反对

使用道具 举报

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
发表于 2016-2-3 14:57:04 | 显示全部楼层
赞,关注W5500以太网通信
回复 支持 反对

使用道具 举报

18

帖子

0

主题

5

金币

注册会员

Rank: 2

积分
60
发表于 2016-2-3 14:59:10 | 显示全部楼层
APP,有点实际应用价值
回复 支持 反对

使用道具 举报

3

帖子

0

主题

18

金币

新手上路

Rank: 1

积分
27
发表于 2016-2-18 15:50:43 | 显示全部楼层
不错,好资料,感谢分享!
回复 支持 反对

使用道具 举报

4

帖子

0

主题

2

金币

新手上路

Rank: 1

积分
14
发表于 2016-2-20 19:55:17 | 显示全部楼层

也有一块和版主一样的W5500的模块,改天也下载了玩一下
回复 支持 反对

使用道具 举报

1

帖子

0

主题

8

金币

新手上路

Rank: 1

积分
11
发表于 2016-2-22 11:55:49 | 显示全部楼层
顶一下,老板让做的,做一下,看着流程是不复杂了,尝试一下
回复 支持 反对

使用道具 举报

1

帖子

0

主题

12

金币

新手上路

Rank: 1

积分
15
发表于 2016-2-23 22:39:40 | 显示全部楼层
非常有帮助,谢谢!
回复 支持 反对

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-2-25 09:43:04 | 显示全部楼层
可惜没金币
回复 支持 反对

使用道具 举报

21

帖子

4

主题

134

金币

版主

Rank: 7Rank: 7Rank: 7

积分
287
发表于 2016-2-25 09:48:24 | 显示全部楼层
非常棒的资源,相信IBM的MQTT物联网协议近几年会大火
回复 支持 反对

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-2-29 16:45:49 | 显示全部楼层
请教,我的系统也是STM32+W5500,服务器用的http://m2m.demos.ibm.com/mqttclient/#publish,Andriod手机端可以接收STM32发来的数据,但是手机端点击4个指示灯时STM32端收不到订阅,服务器可以看到,这是什么原因?
回复 支持 反对

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-2-29 17:04:06 | 显示全部楼层
同样的硬件也搭了这样的系统测试,服务器用的http://m2m.demos.ibm.com/mqttclient/#publish,手机端接收数据正常,现在的问题时手机点击4个灯时,STM32没有收到订阅,请问这是什么原因?
回复 支持 反对

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-3-2 10:44:49 | 显示全部楼层
服务器换成m2m.eclipse.org,可以接收订阅,但是不稳定,有没有可能是w5500阻塞接收的问题?
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2016-3-2 11:34:51 | 显示全部楼层
waterx3 发表于 2016-3-2 10:44
服务器换成m2m.eclipse.org,可以接收订阅,但是不稳定,有没有可能是w5500阻塞接收的问题?

有这可能,我一般会把单片机程序修改成非阻塞方式,也就是加一个超时参数,时间超时了直接跳出接收操作,执行后面的操作
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-3-2 14:16:40 | 显示全部楼层
飞鸿踏雪 发表于 2016-3-2 11:34
有这可能,我一般会把单片机程序修改成非阻塞方式,也就是加一个超时参数,时间超时了直接跳出接收操作, ...

谢谢您的回复,有没有类似的例子看看
回复 支持 反对

使用道具 举报

13

帖子

0

主题

5

金币

新手上路

Rank: 1

积分
30
发表于 2016-3-3 09:37:12 | 显示全部楼层
这么厉害!!!!!!!
回复

使用道具 举报

10

帖子

1

主题

43

金币

注册会员

Rank: 2

积分
67
发表于 2016-3-3 15:33:29 | 显示全部楼层
版主啊,给个非阻塞的例子看看吧
回复 支持 反对

使用道具 举报

1

帖子

0

主题

16

金币

新手上路

Rank: 1

积分
19
发表于 2016-3-13 21:08:31 | 显示全部楼层
非常好的资料  
回复 支持 反对

使用道具 举报

9

帖子

0

主题

38

金币

注册会员

Rank: 2

积分
54
发表于 2016-3-14 22:22:45 | 显示全部楼层
非常有帮助,感谢楼主
回复 支持 反对

使用道具 举报

8

帖子

0

主题

5

金币

新手上路

Rank: 1

积分
23
发表于 2016-3-15 15:47:38 | 显示全部楼层
高大上的东西,貌似太复杂了
回复 支持 反对

使用道具 举报

2

帖子

0

主题

6

金币

新手上路

Rank: 1

积分
12
发表于 2016-3-16 10:35:07 | 显示全部楼层
使用亚马逊的aws,学习MQTT中。
回复 支持 反对

使用道具 举报

2

帖子

0

主题

13

金币

新手上路

Rank: 1

积分
19
发表于 2016-3-18 14:24:44 | 显示全部楼层
很好的资料,学习
回复 支持 反对

使用道具 举报

7

帖子

0

主题

29

金币

注册会员

Rank: 2

积分
50
发表于 2016-3-22 22:08:48 | 显示全部楼层
想学习MQTT
回复 支持 反对

使用道具 举报

46

帖子

0

主题

38

金币

注册会员

Rank: 2

积分
150
发表于 2016-3-24 16:02:43 | 显示全部楼层
学习一下,好好研究
回复 支持 反对

使用道具 举报

12

帖子

1

主题

-22

金币

新手上路

Rank: 1

积分
11
发表于 2016-3-24 21:01:27 | 显示全部楼层
楼主确实厉害,佩服
回复 支持 反对

使用道具 举报

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
发表于 2016-4-8 10:06:35 | 显示全部楼层
资料真心不错,正在研究MQTT,非常有用,力荐。
回复 支持 反对

使用道具 举报

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
发表于 2016-4-8 10:07:06 | 显示全部楼层
资料真心不错,正在研究MQTT,非常有用,力荐。
回复 支持 反对

使用道具 举报

6

帖子

2

主题

45

金币

注册会员

Rank: 2

积分
69
发表于 2016-4-8 10:08:41 | 显示全部楼层
资料真心不错,正在研究MQTT,非常有用,力荐。
回复 支持 反对

使用道具 举报

11

帖子

0

主题

57

金币

注册会员

Rank: 2

积分
90
发表于 2016-4-9 01:25:28 | 显示全部楼层
@飞鸿踏雪 版主,那个APK怎么安装不了?
回复 支持 反对

使用道具 举报

1107

帖子

173

主题

12万

金币

超级版主

Rank: 8Rank: 8

积分
129033
QQ
 楼主| 发表于 2016-4-10 21:07:33 | 显示全部楼层
qq792368480 发表于 2016-4-9 01:25
@飞鸿踏雪 版主,那个APK怎么安装不了?

不知道,我手机上可以安装,你可以自己编译源码
人生到处知何似,应似飞鸿踏雪泥。
回复 支持 反对

使用道具 举报

14

帖子

0

主题

4

金币

新手上路

Rank: 1

积分
40
发表于 2016-4-11 14:34:46 | 显示全部楼层
楼主能否写下扩展芯片及传感器的信息?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|嵌入式以太网社区 ( 渝ICP备14007427号

GMT+8, 2019-1-17 05:09 , Processed in 0.141077 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表