【万物物联】Siri+快捷指令+onenet控制掌控板

【万物物联】Siri+快捷指令+onenet控制掌控板

一、前言

最近在和学生准备一场比赛,其中一个功能需要手机语音助手来控制掌控板开关灯,那么如何实现Siri和掌控板之间的通讯呢?看了铁熊的一篇文章:【掌控板教程 | 学会掌控板 + Siri 语音控制,只要半小时!】看了教程后直接被劝退!这让初中生实现起来也不切实际啊,有没有更加便捷的方法呢?
百度了一下,最终在一篇文章:【“玩板”+siri+快捷指令+XCC3200(MQTT)来控制】中找到了方法,那就是通过苹果系统中的快捷指令来实现。好了,废话不多说,就让我们开始本次的教程吧。

二、准备阶段

2.1 注册onenet账号

首先打开onenet物联网平台,点击右上角的注册按钮,来到注册界面,开启注册。(我这里已经注册过了,就不再一一描述了)

在这里插入图片描述注册完毕后,我们登录我们的账号,点击右上角的控制台按钮。

选择切换至旧版。(因为数据与旧版不互通,管理产品历史请返回旧版开发者中心)
在这里插入图片描述
进入旧版后,选择多协议接入。

在MQTT旧版下,选择添加产品。
在这里插入图片描述
新建我們的产品(名称、行业、类别…等)
在这里插入图片描述
添加产品成功后,开始给我们的产品添加设备。

选择添加设备按钮

填写好设备相关信息(设备名、鉴权信息等这些信息不唯一。)后点击添加。

这时候出现一个刚我们刚才新建的设备。(可以看到这个设备是处于离线状态。)然后我们点击详细进行apikey值的配置


选择添加APIKey(這個只隨便填寫)

这个时候我们需要记一下【设备ID,APIKey的值】以及该产品的产品ID值,后面会用到。

2.2 创建快捷指令

打开快捷指令APP,点击上方的加号,开始添加我们的快捷指令。

点击网页组件。

选择获取URL网页内容

填写我们需要请求的网页地址及相关信息。

1 “获取URL内容”:http:api.hecoluds.com/cmds?device_id=xxxxxxxxxx
填写的是设备ID
2 “方式”:POST 请求方式
3 头部:“api-key” ,“xxxxxxxxxxxxxxxx”在MQTT服务器上信息APIKey
4 请求体JSON:这里的内容就是掌控板里面接收到判断输出的信息,比如"speed,1"  功能打开灯。"speed,0"  功能关闭灯


配置好后,给我们的指令命名【开灯】

这样就创建好了一个快捷指令,复制这个指令把它重新命名【关灯】,json中的值由原来的1变成0即可。

三、程序编写

打开mpython,添加onenet扩展,然后进行程序的编写。
这里的设备ID、产品ID、产品APikey都是我们之前需要记得。
在这里插入图片描述

from mpython import *

import network

my_wifi = wifi()

my_wifi.connectWiFi('Erised', 'yiruosi88')

import ntptime

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('408137', '183.230.40.39', 6002, '692155207', 'CoOilgoe0bL3oACmQqFj8VZPgB8=', 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 json

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

import ujson

import time

def OneNET_recv(_msg):
    global x, j, i, p_state, y_state, w1, t_state, w2, h_sate, w3, o_state, tempoure, my_dict, temp
    my_dict = ujson.loads(_msg)
    temp = my_dict.get('speed')
    print(temp)
    if temp == 0:
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
    elif temp == 1:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
ntptime.settime(8, "time.windows.com")
OneNET_setup()
_iot.publish('$dp', pubdata({'speed':1}))
while True:
    pass


四、功能演示

Siri+快捷指令+onenet控制掌控板

五、总结

通过本次教程我们就可以简单的实现siri控制掌控板啦,当然也可以是其他连网设备。期待读者等多的项目创新,更多教程请浏览我的个人博客:www.hockel.club

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: STM32和ESP8266是目前比较常用的物联网设备,可以实现对传感器的数据采集、处理和传输。如果要将其接入到OneNET平台上,需要以下步骤: 1. 准备硬件:需要一块STM32开发和一块ESP8266模块,以及一个温湿度传感器。 2. 搭建开发环境:使用Keil等集成开发环境进行代码编写和调试。开发环境需要支持STM32的C语言编程。 3. 编写程序:首先要实现STM32与温湿度传感器之间的通信,采集数据并监测数据的变化。然后再使用STM32和ESP8266之间的串口通信,将数据发送到OneNET平台。 4. 配置OneNET平台:打开OneNET官网,注册帐号并创建设备模,将上传的数据添加到设备模中。配置好硬件设备所属的产品和数据流,获取设备的Key和Topic。 5. 实现数据上传:使用AT指令控制ESP8266与OneNET服务器进行通信,将采集的数据上传到设备模中。 总之,需要通过串口通信实现stm32和esp8266之间的数据传输和控制,然后通过AT指令控制esp8266连接OneNET云平台并上传数据。需要充分理解OneNET平台的产品和设备模、数据流等概念,并具备一定的开发经验和编程能力。 ### 回答2: 在将STM32与ESP8266联合使用来接入onenet云平台中,需要遵循以下步骤。 第一步,选择合适的传感器来测量温湿度。通常可选择DHT11或DHT22等温湿度传感器。 第二步,在STM32上连接传感器,通过ADC模块读取传感器测得的温湿度数据,并将数据存储在内存中。 第三步,通过STM32和ESP8266进行串口通信,将读取到的温湿度数据传输给ESP8266。 第四步,通过AT指令将数据通过ESP8266连接到onenet云平台。需要注意的是,需要在onenet平台中创建数据流,并获取到数据流ID、设备ID、以及密钥等信息。 第五步,将数据通过HTTP POST方式发送到onenet平台,实现数据上传。 最后,进行数据接入验证。可通过在onenet平台上查看数据流图表来确认数据是否上传成功。 总而言之,将STM32与ESP8266联合使用来接入onenet温湿度,需要通过温湿度传感器获取数据,通过STM32和ESP8266进行串口通信,并借助AT指令将数据上传到onenet平台。务必进行数据接入验证,以确保数据上传成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值