rzyzzxw 发表于 2018-11-7 10:42:02

【掌控】mpython-24…光阴的故事,物联光线-1

光阴的故事,物联光线-1
【小提示】本项目要在完成上两个帖子基础上完成。

测试掌控物联网上传功能,做了个光线数据上传ONENET平台的小案例,发布在群里,引起了吴俊杰老师的注意。
吴老师的思维够敏捷,提出了一个好玩的想法,多找一些伙伴来测试全国各地某一天的光线值,看能得到好玩的结果不。




所以呢,我们拉了个小群,打算来做一下这个有趣的事。

这个帖子,当作准备帖……1。

【1】注册中国移动oneNET物联网平台,记录自己设备的MQTT参数。
方法参看帖子:https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=271896
【2】代码准备代码参考掌控板帮助文档,我稍有改动。
from simple import MQTTClient
from mpython import *
from machine import Timer
import time, network, json

# MQTT服务器地址域名为:183.230.40.39,不变
SERVER = "183.230.40.39"
# 设备ID
CLIENT_ID = "***"
# 产品ID
username = '***'
# 产品APIKey:
password = '***'


# wifi参数
SSID = "***"            # wifi名称
PASSWORD = "****"         # 密码
wlan = None

message = {'datastreams':[
{
'id':'sound',
'datapoints':[{'value':0}]
},
{
'id':'light',
'datapoints':[{'value':0}]
}
]}

tim1 = Timer(1)       # 创建定时器

# 本函数实现wifi连接
def ConnectWifi(ssid=SSID,passwd=PASSWORD):
    global wlan
    wlan=network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.disconnect()
    wlan.connect(ssid,passwd)

    while(wlan.ifconfig()=='0.0.0.0'):
      time.sleep(1)
      print('Connecting to network...')
      # 下面四行是我加的,为了显示网络正在连接
      display.fill(0)
      display.DispChar("IOT连接中...", 16, 16)
      display.show()
    print('WiFi Connection Successful,Network Config:%s' % str(wlan.ifconfig()))
   
def pubdata(data):
    j_d = json.dumps(data)
    j_l = len(j_d)
    arr = bytearray(j_l + 3)
    arr = 1 # publish数据类型为json
    arr = int(j_l / 256) # json数据长度 高位字节
    arr = j_l % 256      # json数据长度 低位字节
    arr = j_d.encode('ascii') # json数据
    return arr

def publishSenser():
    #message['datastreams']['datapoints']['value']=sound.read()
    message['datastreams']['datapoints']['value']=light.read()
    c.publish('$dp',pubdata(message))                   #publish报文上传数据点
    print('publish message:',message)
    # 下面四行是我加的,同步显示上传数据
    display.fill(0)
    display.DispChar("IOT连接成功", 16, 0)
    display.DispChar("光线值:", 16, 16)   
    display.DispChar(str(light.read()), 16, 32)
    display.show()

   
ConnectWifi()

c = MQTTClient(CLIENT_ID, SERVER, 6002, username, password)
c.connect()
print("Connected to %s" % SERVER)

tim1.init(period=1000, mode=Timer.PERIODIC, callback=lambda _: publishSenser())   # 每隔一秒(可以改变)上传数据点
代码刷入掌控板,设为默认运行,重启掌控,连接WIFI(信号要好点啊),数据开始上传了。

怎么看到平台上的数据呢,要做下面设置。

【3】平台接收端设置
参考帖子:https://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=272037
看图说话。




预览一下,这时如果已连接,数据已经可以显示了。
保存。

如果要发布,可以在网页,微信等平台分享。
可以填写申请。等待批准。


上面操作可以在平台帮助文档中查找。
我发布的页面如下。
https://open.iot.10086.cn/appview/p/caa5f2d01ef506385fc4fae9c55af484

还可以有二维码分享。


【4】数据查询
中移动的IOT平台不提供数据下载,但可以提供数据查询。
优点是数据不限量,保存一年。



还可以用代码查询。
我还不会,所以就不写了。

OK大伙先玩起来。其它功能自己探索一下吧。
{:5_151:}




Ryan520 发表于 2019-3-7 16:17:05

太赞了
页: [1]
查看完整版本: 【掌控】mpython-24…光阴的故事,物联光线-1