mqtt

使用树莓派搭建温湿度监控告警系统

吃可爱长大的小学妹 提交于 2020-04-10 02:48:21
本文作者:天工智能物联网 简介 本文档介绍了基于树莓派+百度天工(物接入、TSDB、物可视)快速搭建一个环境温湿度监测告警系统。帮助用户熟悉天工物接入的接入方式、物影子概念以及使用方式等内容,快速搭建自己物联网硬件和应用。 阅读本示例前建议先熟悉快速入门文档。 场景描述 该场景演示物联网应用场景中常用的功能,包括设备接入、数据上报、数据存储、数据展示、远程控制、配置下发等。 硬件设计 首先我们设计了一款智能温湿度监测仪,监测仪运行时会实时监测当前所处环境的温湿度,同时可以设置温湿度的告警值,当温湿度达到设定值时,相应的告警灯亮起——这是设备硬件部分具备的功能,还未涉及到物联网 设备接入 为了能够实时查看到环境温信息,进而需要将设备接入物联网平台,如果当前环境温湿度达到设置的阈值,触发设备告警灯亮起,并上报设备当前状态和温湿度信息,正常情况下则每30秒上报一次当前温湿度信息到平台 配置下发 通过远程向监测仪下发配置信息,修改温湿度的告警值 远程控制 硬件部分具备告警指示灯功能,温度、湿度值分别达到告警值时,对应的指示灯会亮起并保持常亮,通过远程指令消除告警状态熄灭指示灯 数据存储(拓展) 平台接收到信息后可以将温湿度数据存储,以便进行数据展示、分析 数据展示(拓展) 设备接入平台后,我们通过大屏的对实时和历史数据进行仪表盘、图表等展示监控,同时可展示告警状态 硬件清单 树莓派3B+

K8s系列-Kubeedge实现原理

大城市里の小女人 提交于 2020-04-08 08:55:00
感谢分享原文- http://bjbsair.com/2020-04-03/tech-info/29914.html Kubeedge除了在kubernetes的方面做了各种异步通信通道,保障offline后的业务连续性之外;还定义了一系列的设备抽象,用来管理边缘设备。而且,其v1.0版本正朝着边缘端服务网格,以及函数式计算等方向发展。 官方文档: https://docs.kubeedge.io/en/latest/ 架构 整体架构图比较明了,在不考虑edgesite的情况下,其架构分为了云端和边缘端。其实可以理解为kubernetes的管理侧和kubelet节点侧(对应edge端)。但是请注意,这里的场景是边缘计算,意味着edge端的网络环境难以保障。 云边通信 于是就衍生出了cloud端的cloud Hub与edge端的Edge Hub。这两个模块之间通过websocket或者quic通信,相当于建立了一条底层通信隧道,供k8s和其他应用通信。当然,使用什么协议通信不是重点,重点是如何保障当着之间的链路都无法保障的时候,业务不受到影响,这就是MetaManager的要解决的问题了。 CloudHub 前面提到cloud端的cloudHub就是一个隧道的server端,用于大量的edge端基于websocket或者quic协议连接上来;没错,这货才是正儿八经的二传手

EMQ X MQTT 5.0 服务器的保留消息与消息过期间隔

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-05 15:03:58
保留消息 服务端收到 Retain 标志为 1 的 PUBLISH 报文时,会将该报文视为保留消息,除了被正常转发以外,保留消息会被存储在服务端,每个主题下只能存在一份保留消息,因此如果已经存在相同主题的保留消息,则该保留消息被替换。 当客户端建立订阅时,如果服务端存在主题匹配的保留消息,则这些保留消息将被立即发送给该客户端。借助保留消息,新的订阅者能够立即获取最近的状态,而不需要等待无法预期的时间,这在很多场景下非常重要的。 保留消息虽然存储在服务端中,但它并不属于会话的一部分。也就是说,即便发布这个保留消息的会话终结,保留消息也不会被删除。删除保留消息只有两种方式: 客户端往某个主题发送一个 Payload 为空的保留消息,服务端就会删除这个主题下的保留消息。 如果包含保留消息的 PUBLISH 报文设置了消息过期间隔属性,那么保留消息在服务端存储超过过期时间后就会被删除。 消息过期间隔 PUBLISH 报文可以设置消息过期间隔这一属性,消息过期间隔是一个四字节的整数,表示应用消息的生命周期,单位是秒。 如果 PUBLISH 报文不设置消息过期间隔,那么应用消息不会过期。 如果 PUBLISH 报文设置了消息过期间隔,并且消息过期将已经过期,服务端还没开始向匹配的订阅者交付该消息,那么服务端必须删除该消息。 EMQ X MQTT 服务器的保留消息 EMQ X MQTT

Mqtt 客户端多主题订阅

家住魔仙堡 提交于 2020-04-04 11:43:03
前言: mqtt 的主题一个 层级 的概念. 我们订阅多个主题就需要用到这个技术点 功能是在主题中引入层次。层次又分主题层级分隔符,多层通配符和单层通配符 需要注意的一点是: 这些层级不能用在发布消息的 Publish 接口中 层级分类 主题层级分隔符: / 多层通配符: # 单层通配符: + 主题层级分隔符 "/" 被用来分割主题树的每一层,并给主题空间提供分等级的结构。当两个通配符在一个主题中出现的时候,主题层次分隔符的使用是很重要的。 // 主题Topic1: 分了三层 /test/child/aaa // 主题Topic2: 分了四层 /test/child/aaa2/bbb2 多层通配符 多层通配符"#"是一个匹配主题中任意层次数的通配符。我们用案例说明 案例1 订阅主题: /test/child/# 我们将收到这些主题发送来的消息: /test/child /test/child/aaa /test/child/ccc /test/child/aaa/bbb /test/child/aaa/bbb/ddd 多层通配符可以理解为大于等于0的层次。 多层通配符只可以确定当前层或者下一层 常见错误 和正确表示案例 # // Success, 会接收到不以 / 开头的所有主题 /# // Success /test/#/child // Error, #必须是最后一个字符

mqtt error void callback/subscribed on arduino

陌路散爱 提交于 2020-03-26 04:38:29
问题 I'm testing with my arduino and MQTT cloud. For the publish everything goes well, the arduino publishes "hello world" But with the void callback function nothing happens. With my MQTT.fx client, I'm subscribed to the topics "status" and "commando". At the "status" I see that the arduino is a live. When I publish with my MQTT.fx client to the topic "commando". I can see it arrived in my client, but not in the serial monitor of the arduino. Why is the void callback function not used? #include

QoS=1 with MqttAsyncClient subscription miss messages

試著忘記壹切 提交于 2020-03-25 16:07:19
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

QoS=1 with MqttAsyncClient subscription miss messages

我与影子孤独终老i 提交于 2020-03-25 16:06:52
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

QoS=1 with MqttAsyncClient subscription miss messages

瘦欲@ 提交于 2020-03-25 16:05:59
问题 I have foreground service acting as MQTT client. I'm using MqttAsyncClient mqttClient for this purpose. I'm using QoS=1 on subscribe to topic: mqttClient.subscribe("sensors/s1/", 1); But in case my phone gets offline for some period of time it miss current period messages. Whole code is below. Im my another application I'm using MqttAndroidClient mqttAndroidClient and in this case QoS=1 brings all missed messages. mqttAndroidClient.subscribe(topic, 1, null, new IMqttActionListener() {...})

阿里云物联网平台NET SDK实现RRPC服务端调用

↘锁芯ラ 提交于 2020-03-24 09:17:48
3 月,跳不动了?>>> 概述 MQTT协议是基于PUB/SUB的异步通信模式,不适用于服务端同步控制设备端返回结果的场景。前面博客 基于开源Java MQTT Client的阿里云物联网平台RRPC功能测试 介绍了RRPC原理,使用Open API实现服务端的调用实现。本文介绍如何使用NET SDK在本地实现RRPC的服务端调用。 Step By Step 1、创建产品与设备 参考 链接 准备工作部分。 2、设备端Code import com.alibaba.taro.AliyunIoTSignUtil; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import java.util.HashMap; import java.util.Map; public class IoTRRPCForSysTopicDemo { // 设备三元组信息 public static String productKey = "a16MX******"; public static String deviceName = "RRPC******"; public static String deviceSecret =

手机、ESP32单片机、MQTT服务器连接实验

旧时模样 提交于 2020-03-23 16:53:33
实验目的:通过自己制作的手机APP,连接MQTT服务器,获取ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关。 实验准备: 1、硬件:ESP32开发板(型号不限,esp01s也可以)、LED灯、DH11温湿度传感器、面包板等 2、软件: (1)arduino软件,可以到官网 https://www.arduino.cc/en/Main/Software 下载。 (2)App Inventor 2 集成版,可以到官网 https://www.wxbit.com/ 下载。(解释一下:这个软件是适用于初学者的手机APP制作软件,界面设计所见即所得,程序设计通过拖拽积木块来实现。) (3)需要一台服务器。(可以是自己的电脑,也可以到网上买云服务器,笔者是购买的腾讯云服务器(每年79元),除了运行网站外,再捎带着提供MQTT服务。) 实验步骤: 一、总体设想 1、建一个MQTT服务器,提供订阅/发布 消息的功能。 2、用App Inventor 2 制作一个APP,功能是连接MQTT服务器,订阅ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关。 3、为ESP32编写程序并烧录,完成连接MQTT服务器,发布温湿度信息,订阅LED控制主题,根据消息来开、关LED灯。 二、MQTT服务器的建立 MQTT是IBM开发的一个即时通讯协议