4278浏览
查看: 4278|回复: 29

[MP动手做] MicroPython动手做(26)——物联网之OneNET

[复制链接]
1、物联网(Internet of Things,缩写:IoT)
是基于互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。其应用领域主要包括运输和物流、工业制造、健康医疗、智能环境(家庭、办公、工厂)等,具有十分广阔的市场前景。

物联网的概念最早是在1999年由Kevin Ashton在一次演讲中提出来的,当时他是一个RFID研究机构的执行主任,这家研究机构是在宝洁公司和吉列公司的赞助下成立的。而他本人也因此被称为物联网之父。随后麻省理工学院的Neil Gershenfeld教授出版了一本名为《When things Start to Think》的书。以这些为标志,正式揭开了物联网的序幕。

物联网的英文是Internet of Things,缩写为IoT。这里的“物”指的是我身边一切能与网络联通的物品。例如你带的手表、你骑的共享单车、马路上的汽车、家里的冰箱、路边的路灯、甚至是一棵树。只要一件物品能够与网络相连,它就都是物联网中的“物”。而所谓物联网,就是“物”与人,以及“物”与“物”之间,通过网络来传递和处理信息。

MicroPython动手做(26)——物联网之OneNET图1

驴友花雕  中级技神
 楼主|

发表于 2020-6-2 13:07:24


6、通过OneNET平台控制小车的进退左右

[mw_shl_code=python,false]#MicroPython动手做(26)——物联网之OneNET
#通过OneNET平台控制小车的进退左右

from mpython import *

import network

my_wifi = wifi()

my_wifi.connectWiFi('zh', 'zy1567')

import music

import time

from umqtt.simple import MQTTClient

from machine import Timer

import machine

import ubinascii

def OneNET_recv(_msg):pass
_OneNET_msg_list = []
def OneNET_callback(_topic, _msg):
    global _OneNET_msg_list
    try: _msg = _msg.decode('utf-8', 'ignore')
    except: print(_msg);return
    OneNET_recv(_msg)
    if _msg in _OneNET_msg_list:
        eval('OneNET_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim14 = Timer(14)

_iot_count = 0
def timer14_tick(_):
    global _iot, _iot_count
    _iot_count = _iot_count + 1
    if _iot_count == 1000: _iot.ping(); _iot_count = 0
    try: _iot.check_msg()
    except: machine.reset()

_iot = None
def OneNET_setup():
    global _iot
    _iot = MQTTClient('600999469', '183.230.40.39', 6002, '350265', 'l6S0BsjGXsQACV3hBhml7=3pwCo=', keepalive=300)
    _iot.set_callback(OneNET_callback)
    if 1 == _iot.connect(): print('Successfully connected to MQTT server.')
    tim14.init(period=200, mode=Timer.PERIODIC, callback=timer14_tick)

import parrot

def forward():
    parrot.set_speed(parrot.MOTOR_1, 80)
    parrot.set_speed(parrot.MOTOR_2, 80)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Forward.pbm', 0), 32, 0)
    oled.show()

def retreat():
    parrot.set_speed(parrot.MOTOR_1, -80)
    parrot.set_speed(parrot.MOTOR_2, -80)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Backward.pbm', 0), 32, 0)
    oled.show()

def right():
    parrot.set_speed(parrot.MOTOR_1, 80)
    parrot.set_speed(parrot.MOTOR_2, -0)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Right.pbm', 0), 32, 0)
    oled.show()

def Left():
    parrot.set_speed(parrot.MOTOR_1, -0)
    oled.fill(0)
    oled.blit(image_picture.load('face/Information/Left.pbm', 0), 32, 0)
    oled.show()

_OneNET_msg_list.append('进')
def OneNET_recv_e8bf9b():
    rgb.fill((int(0), int(102), int(0)))
    rgb.write()
    time.sleep_ms(1)
    forward()

_OneNET_msg_list.append('退')
def OneNET_recv_e98080():
    rgb.fill((int(51), int(102), int(255)))
    rgb.write()
    time.sleep_ms(1)
    retreat()

_OneNET_msg_list.append('左')
def OneNET_recv_e5b7a6():
    rgb[0] = (int(0), int(102), int(0))
    rgb.write()
    time.sleep_ms(1)
    Left()

_OneNET_msg_list.append('右')
def OneNET_recv_e58fb3():
    rgb[2] = (int(0), int(102), int(0))
    rgb.write()
    time.sleep_ms(1)
    right()

image_picture = Image()
oled.fill(0)
oled.DispChar('   请准备好物联网控制', 0, 16, 1)
oled.show()
music.play('G5:1')
rgb[1] = (int(255), int(0), int(0))
rgb.write()
time.sleep_ms(1)
OneNET_setup()
while True:
    oled.fill(0)
    parrot.set_speed(parrot.MOTOR_1, 0)
    parrot.set_speed(parrot.MOTOR_2, 0)
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)
    oled.show()
    time.sleep(2)[/mw_shl_code]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 19:19:47


5、在电脑查看掌控板实时的光线值

掌控板上显示电脑上发送的命令(字符串),并点亮红色灯;当发送“open”命令时,掌控板传送“光线值”的数据流到电脑,并点亮蓝色灯,发送“close”,蓝灯熄灭。


[mw_shl_code=python,false]#MicroPython动手做(26)——物联网之OneNET
#在电脑查看掌控板实时的光线值

from mpython import *
import network
from umqtt.simple import MQTTClient
from machine import Timer
import machine
import ubinascii
import time
import json

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

def OneNET_recv(_msg):pass
_OneNET_msg_list = []
def OneNET_callback(_topic, _msg):
    global _OneNET_msg_list
    try: _msg = _msg.decode('utf-8', 'ignore')
    except: print(_msg);return
    OneNET_recv(_msg)
    if _msg in _OneNET_msg_list:
        eval('OneNET_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim14 = Timer(14)

_iot_count = 0
def timer14_tick(_):
    global _iot, _iot_count
    _iot_count = _iot_count + 1
    if _iot_count == 1000: _iot.ping(); _iot_count = 0
    try: _iot.check_msg()
    except: machine.reset()

_iot = None
def OneNET_setup():
    global _iot
    _iot = MQTTClient("600844609", "183.230.40.39", 6002, "350265", "l6S0BsjGXsQACV3hBhml7=3hgCo=", keepalive=300)
    _iot.set_callback(OneNET_callback)
    if 1 == _iot.connect(): print('Successfully connected to MQTT server.')
    tim14.init(period=200, mode=Timer.PERIODIC, callback=timer14_tick)

def pubdata(_dic):
    print(_dic)
    _list = []
    for _key in list(_dic.keys()):
        _d = {'id':_key,'datapoints':[{'value':_dic[_key]}]}
        _list.append(_d)
    _data = {'datastreams': _list}
    j_d = json.dumps(_data)
    j_l = len(j_d)
    arr = bytearray(j_l + 3)
    arr[0] = 1
    arr[1] = int(j_l / 256)
    arr[2] = j_l % 256
    arr[3:] = j_d.encode('ascii')
    return arr

def OneNET_recv(_msg):
    oled.fill(0)
    oled.DispChar(_msg, 0, 0, 1)
    oled.show()
    if _msg.isdigit():
        rgb.fill( (int((int(_msg))), int(0), int(0)) )
        rgb.write()
        time.sleep_ms(1)

_OneNET_msg_list.append('open')
def OneNET_recv_6f70656e():
    rgb.fill((int(0), int(0), int(153)))
    rgb.write()
    time.sleep_ms(1)

_OneNET_msg_list.append('close')
def OneNET_recv_636c6f7365():
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)


OneNET_setup()
while True:
    _iot.publish('$dp', pubdata({"light":light.read()}))
    time.sleep(3)[/mw_shl_code]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 16:13:23

4、OneNET平台控制远程RGB灯

服务器地址不用修改,按照上述查看设备ID、产品ID、产品APIKey的方式找到这三项,并将其粘贴到对应程序位置。

当OneNET收到特定消息“开灯”时,3个LED灯显示红色;当OneNET收到特定消息 “关灯”时,3个LED灯显示熄灭。



[mw_shl_code=python,false]#MicroPython动手做(26)——物联网之OneNET
#OneNET平台控制远程RGB灯

from mpython import *
import network
from umqtt.simple import MQTTClient
from machine import Timer
import machine
import ubinascii
import time

my_wifi = wifi()

my_wifi.connectWiFi("zh", "zy1567")

def OneNET_recv(_msg):pass
_OneNET_msg_list = []
def OneNET_callback(_topic, _msg):
    global _OneNET_msg_list
    try: _msg = _msg.decode('utf-8', 'ignore')
    except: print(_msg);return
    OneNET_recv(_msg)
    if _msg in _OneNET_msg_list:
        eval('OneNET_recv_' + bytes.decode(ubinascii.hexlify(_msg)) + '()')

tim14 = Timer(14)

_iot_count = 0
def timer14_tick(_):
    global _iot, _iot_count
    _iot_count = _iot_count + 1
    if _iot_count == 1000: _iot.ping(); _iot_count = 0
    try: _iot.check_msg()
    except: machine.reset()

_iot = None
def OneNET_setup():
    global _iot
    _iot = MQTTClient("192156", "183.230.40.39", 6002, "350146", "ZoSC5kM1oKqM7P6oCvbsaNOkDhg=", keepalive=300)
    _iot.set_callback(OneNET_callback)
    if 1 == _iot.connect(): print('Successfully connected to MQTT server.')
    tim14.init(period=200, mode=Timer.PERIODIC, callback=timer14_tick)

_OneNET_msg_list.append('开灯')
def OneNET_recv_e5bc80e781af():
    rgb.fill((int(204), int(0), int(0)))
    rgb.write()
    time.sleep_ms(1)

_OneNET_msg_list.append('关灯')
def OneNET_recv_e585b3e781af():
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)


OneNET_setup()[/mw_shl_code]
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 09:45:41

物联网的基本特征从通信对象和过程来看,物与物、人与物之间的信息交互是物联网的核心。物联网的基本特征可概括为整体感知、可靠传输和智能处理 。整体感知—可以利用射频识别、二维码、智能传感器等感知设备感知获取物体的各类信息。可靠传输—通过对互联网、无线网络的融合,将物体的信息实时、准确地传送,以便信息交流、分享。




智能处理—使用各种智能技术,对感知和传送到的数据、信息进行分析处理,实现监测与控制的智能化。根据物联网的以上特征,结合信息科学的观点,围绕信息的流动过程,可以归纳出物联网处理信息的功能:

(1)获取信息的功能。主要是信息的感知、识别,信息的感知是指对事物属性状态及其变化方式的知觉和敏感;信息的识别指能把所感受到的事物状态用一定方式表示出来。

(2)传送信息的功能。主要是信息发送、传输、接收等环节,最后把获取的事物状态信息及其变化的方式从时间(或空间)上的一点传送到另一点的任务,这就是常说的通信过程。

(3)处理信息的功能。是指信息的加工过程,利用已有的信息或感知的信息产生新的信息,实际是制定决策的过程。

(4)施效信息的功能。指信息最终发挥效用的过程,有很多的表现形式,比较重要的是通过调节对象事物的状态及其变换方式,始终使对象处于预先设计的状态 。


MicroPython动手做(26)——物联网之OneNET图1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 10:18:08

2、OneNET平台
是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。OneNET平台作为连接和数据的中心,能适应各种传感网络和通信网络,将面向智能家居、可穿戴设备、车联网、移动健康、智能创客等多个领域开放。

中移OneNET,将数据传输协议、数据储存格式等中间层的东西标准化,形成一个统一、开源的设备云平台,标准化、简约化、集成化,减少企业负担的同时为下一阶段的大数据分析提供基础条件。

核心能力输出
OneNET作为设备连接和数据的中心,面向物联网产业上下游企业提供标准化接入和定制化开发,具体能力输出包含2个方面:

1. 硬件侧:平台适配各种网络环境、兼容国内外主流通信协议,定制化支撑私有通信协议,以及完备的SDK包,可支持各类传感器和智能硬件的快速接入和可控触发控制;还提供对智能硬件的网络状态、终端状态、流量情况、位置信息进行全面的管理和监控;

2. 软件侧:平台通过丰富的API、应用孵化器、轻应用行业模板支持各类智能硬件和行业应用的图形化展示、SaaS层软件开发,满足物联网领域数据存储、数据安全、大数据分析等平台级服务需求。

OneNET平台在提供设备连接服务和数据中心服务的基础上进行开放合作,面向智能硬件创客和创业型企业推出硬件社区服务(包括硬件集市、双创云等),以及数据展现、数据分析和应用生成服务;面向重点行业领域/大客户推出行业PaaS服务和提供行业应用定制化开发服务。

IoT PaaS基础能力:提供智能设备自助开发工具、后台技术支持服务、物联网专网、短彩信、位置定位、设备管理、消息分发、远程升级等基础服务

SaaS业务服务:提供第三方应用开发平台,快速实现不同业务需求,借助轻应用孵化器快速搭建Web和APP应用

IoT数据云:提供高扩展的数据库、实时数据处理、智能预测离线数据分析、数据可视化展示等多维度的业务运营服务

开发者社区:高频的开发者社区,汇聚着不同的知识源,集合更多的物联网爱好者,让项目与开发成果开始传播

MicroPython动手做(26)——物联网之OneNET图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 10:22:47

MicroPython动手做(26)——物联网之OneNET图1
OneNET八大功能

专网专号:中国移动基于物联网特点打造的专业化网络通道,提供“云-管-端”一体化的智能管道和支撑系统,支持工业级、车规级的专网卡和通信模组;

海量连接:基于多类型标准协议和API开发满足海量设备的高并发快速接入;

在线监控:实现终端设备的监控管理、在线调试、实时控制功能;

数据存储:基于分布式云存储、消息对象结构、丰富的数据调用接口实现数据高并发读、写库操作,有效保障数据的安全;

消息分发:将采集的各类数据通过消息转发、短彩信推送、APP信息推送方式快速告知业务平台、用户手机、APP客户端,建立双向通信的有效通道;

能力输出:汇聚中国移动短彩信、位置服务、视频服务、公有云等核心能力,提供标准API接口,缩短终端与应用的开发周期;

事件告警:打造事件触发引擎,用户可以基于引擎快速实现应用逻辑编排;

数据分析:基于Hadoop等提供统一的数据管理与分析能力。




OneNET应用领域

OneNET物联网专网已经应用于环境监控、远程抄表、智慧农业、智能家电、智能硬件、节能减排、车联网、工业控制、物流跟踪等多种商业领域。 物联网开放平台OneNET通过打造接入平台、能力平台、大数据平台能力满足物联网领域设备连接、协议适配、数据存储、数据安全、大数据分析等平台级服务需求。


MicroPython动手做(26)——物联网之OneNET图2


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 11:12:01

3、注册oneNET平台账号:

打开 https://open.iot.10086.cn/

根据个人情况选择个人注册或者企业注册

MicroPython动手做(26)——物联网之OneNET图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 11:17:22

注册并登陆成功之后,进入NB-loT物联网套件

MicroPython动手做(26)——物联网之OneNET图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 11:21:26

点击添加产品
MicroPython动手做(26)——物联网之OneNET图2

MicroPython动手做(26)——物联网之OneNET图1








回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 11:24:37

填写产品信息和技术参数

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 11:45:44

成功后,这样


06.jpg
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 16:33:55

烧入程序之后,不知哪里出错.......连不上平台




串口输出:




Traceback (most recent call last):                                                         

  File "main.py", line 54, in <module>                                                     

  File "main.py", line 38, in OneNET_setup                                                

  File "umqtt/simple.py", line 99, in connect                                             

MQTTException: 4                                                                           

MicroPython v2.0.1-18-gbe8fbdd-dirty on 2020-04-24; mpython with ESP32  




屏显
MicroPython动手做(26)——物联网之OneNET图1



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 17:24:36

返回OneNET平台,在设备列表里面查看设备状态,设备依旧是“离线”,代表连接设备不成功。

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 17:36:30

后来尝试在多协议接入---MQTT(旧版)上重新添加产品
链接  https://open.iot.10086.cn/develo ... tocol=3&other=1

MicroPython动手做(26)——物联网之OneNET图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 17:47:51

先添加产品,然后再添加设备,方可得到设备ID并显示在线,为连接成功。

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 17:53:06

相关参考使用文档
多协议接入  
https://open.iot.10086.cn/doc/multiprotocol/#多协议接入

MQTT物联网套件
https://open.iot.10086.cn/doc/mqtt/

MicroPython动手做(26)——物联网之OneNET图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 18:01:58

mPython X 实验图形编程

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 18:11:22

输入“开灯”命令。注意要选择字符串格式。

MicroPython动手做(26)——物联网之OneNET图2

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 18:20:47

OneNET平台控制远程RGB灯

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 19:32:07

mPython X 实验图形编程

MicroPython动手做(26)——物联网之OneNET图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2020-6-1 19:37:57

在电脑查看掌控板实时的光线值

MicroPython动手做(26)——物联网之OneNET图2
MicroPython动手做(26)——物联网之OneNET图1






回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail