电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用涂鸦云SDK构建的假期旅行开源

使用涂鸦云SDK构建的假期旅行开源

2022-11-01 | zip | 0.24 MB | 次下载 | 免费

资料介绍

描述

概述

每当我因工作和学习而感到压力时,假期真的是让我兴奋的地方。假日季节通常被认为是从 11 月下旬到 1 月初。为什么不游览这座城市或参观新的地方,看看该镇提供的所有亮点。由于旅行的速度,我们在探索所有地方时经常会错过一些着名的目的地,慢慢地详细描述赛道上的所有地标(有时也是不可预测的天气)。所以我想到的是一个简单的解决方案来解决这个问题。Holidays Traveler 设备旨在按照您的步调穿越地标,只需将其连接到网络即可。

设备将根据 IP 地址、天气更新和附近的著名地点和简要摘要自动检测位置,并将这些更新通过电子邮件和短信发送到我们的手机上,让观光更有趣。

功能性

该设备是使用涂鸦云 SDK构建的,这个涂鸦项目用例可以帮助开发人员为旅游业思考和创新——尤其是在营销您的产品或其他方面。想象一下这样的创新用例——当用户到达特定位置时向他们发送警报,并建议他们参观著名的公园、餐馆、建筑物等。

Tuya到底是什么?

涂鸦智能是一个全球物联网开发平台,构建互连标准,以桥接品牌、OEM、开发商和零售连锁店在广泛的智能设备和行业中的智能需求。

涂鸦基于全球公有云,通过提供硬件开发工具、整合公有云服务、提供智能业务开发平台,连接不同的智能场景和智能设备。

先决条件

$ pip install tuya-iot-py-sdk

设置涂鸦云账号和项目:

注册后,您将前往仪表板。从那里,转到“云”并创建一个插入以下信息的项目。

poYBAGNgfReASUsvAAGmmqHCpYI249.png
 

授权所需的 API(我们将需要天气、位置、电子邮件和 SMS API)

 
 
 
pYYBAGNgfRqAXui6AAIFVp6FvO8908.png
 
1 / 2
 

涂鸦云 API

最重要的是,您需要 ACCESS_ID 和 ACCESS_KEY 才能使用 API

poYBAGNgfR2AaPC9AACAf5fZR5Q860.png
 
from tuya_connector import (
TuyaOpenAPI
)
ACCESS_ID = "*************123"
ACCESS_KEY = "*************56565"
API_ENDPOINT = "https://openapi.tuyain.com"

# Project configuration
USERNAME = 'youremail@mail.com'  # email address or phone number
PASSWORD = 'yourpassword'

# Initialization of tuya openapi
openapi = TuyaOpenAPI(ENDPOINT, ACCESS_ID, ACCESS_KEY, AuthType.CUSTOM)
print(openapi.connect(USERNAME, PASSWORD))

如果一切正确,您将不会收到错误代码,并且可以继续执行其他步骤。我们将需要我们的位置数据来使用涂鸦天气 API,因此我们将首先获取我们的 IP 地址,然后使用涂鸦 LBS 服务 API 找出我们的坐标。获得地理坐标后,我们将使用 Wikipedia API 搜索地标和摘要。

# Device IP
url = 'http://ipinfo.io/json'
response = urlopen(url)
data = json.load(response)
IP = data[ 'ip' ]

# Get location of device through IP
location = openapi.get(f'/v1.0/iot-03/locations/ip?ip={IP}')
print(location)
location = location[ 'result' ]
latitude, longitude = location[ 'latitude' ], location[ 'longitude' ]

现在我们将使用天气 API 获取我们所在位置的天气数据

weather_url = f'/v2.0/iot-03/weather/current?lat={latitude}&lon={longitude}'
weather = openapi.get(weather_url)
condition = weather['result']['current_weather']['condition']
air_quality = weather['result']['air_quality']['aqi']
print(condition, air_quality)

现在我们将构建消息,但在此之前让我们探索涂鸦短信和电子邮件 API,

sent = openapi.post("/v1.0/iot-03/messages/mails/actions/push", dict({  "to_address": "hello@gmail.com",
  "template_id": "MAIL_1624531323",
  "reply_to_address": "hi@gmail.com"}))

上面是请求参数, 1. template_id:是邮件模板的ID。涂鸦提供默认设置,您也可以创建自己的。公共默认模板,MAIL_1624531323, MAIL_1624531338

2. reply_to_address:表示用户将发送回复的地址。

我们将根据我们的项目创建一个新的电子邮件模板,您可以直接从涂鸦云 API 浏览器中制作它https://iot.tuya.com/cloud/explorer

{
  "name": "Don't Miss These Places Traveller!",
  "title": "Hello!",
  "sender_name": "Jimmy",
  "content": "Hey! We found some amazing places near you, ${landmarks}. Today's weather is ${condition} and AQI is ${aqi}.",
  "type": 2,
  "remark": "This email is for tourists to get aware of nearby landmarks based upon their locations"
}

第一个字符串是请求参数。字典是为了内容。

  • name是您的模板的名称。
  • content代表消息内容。
  • type用于消息的类型 - 验证码、通知或促销。我一直把它作为促销(2)

成功信息应该是这样的,

pYYBAGNgfSCAGWP9AAG-iy5nid8508.png
 
{
  "result": {
    "template_id": "MAIL_9584653696"
  },
  "success": true,
  "t": 1640579722731
}

保存 template_id,我们将需要它进行进一步的步骤。请注意,在审核并允许之前,您将无法使用此模板。别担心,这个过程将需要不到 2 个工作日。

短信模板也一样,直接在涂鸦云API浏览器

poYBAGNgfSOAZmTWAAIDki_Yi-4334.png
 

初始测试对模板有好处,请参阅下面的 SMS 和电子邮件的外观

pYYBAGNgfSWAMMPGAABigKnWPi8523.png
 
poYBAGNgfSqALv3dAADznpaQ8D4037.jpg
 

准备好两个模板后,让我们跳到我们的代码。

landmarks = wikipedia.geosearch(lat, lon, results=2)
landmarksListToStr = ' '.join(map(str, landmarks))

params = {
    "landmarks": landmarksListToStr,
    "condition": condition,
    "aqi": air_quality
}

payload_json = json.dumps(params)
print(payload_json)

email_sent = openapi.post("/v1.0/iot-03/messages/mails/actions/push", dict({"to_address": "gadecito@ryteto.me",
                                                                            "template_id": "MAIL_9584653696",
                                                                            "template_param": payload_json,
                                                                            "reply_to_address": ""
                                                                            }))

print(email_sent)

在代码部分中找到完整的代码。在联网的 Raspberry Pi 设备上运行程序并随身携带(使用按钮等触发机制来防止收件箱填满)

连接按钮后,在脚本中使用以下代码

import RPi.GPIO as GPIO
import time
from tuya_iot import (
    TuyaOpenAPI,
    AuthType,
)
from urllib.request import urlopen
import json
import wikipedia

url = 'http://ipinfo.io/json'
# Cloud project authorization info
ACCESS_ID = 'ecnthtncb7d2tpmuzlzs'
ACCESS_KEY = 'b75ce52xxxxxxxxxxxxxxxxxx'

# Select an endpoint base on your project availability zone
# For more info: https://developer.tuya.com/en/docs/iot/api-request?id=Ka4a8uuo1j4t4
ENDPOINT = "https://openapi.tuyain.com"

# Project configuration for authorized account
USERNAME = 'test1@gmail.com'  # email address or phone number
PASSWORD = 'Job894455'

SMS_TEMPLATE_ID = "SMS_2460072921"  # SMS template ID
EMAIl_TEMPLATE_ID = "MAIL_9584653696"  # Email template ID

# Initialization of tuya openapi
openapi = TuyaOpenAPI(ENDPOINT, ACCESS_ID, ACCESS_KEY, AuthType.CUSTOM)
print(openapi.connect(USERNAME, PASSWORD))

# Setup the Pin with Internal pullups enabled and PIN in reading mode. 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_UP)

# Add our function to execute when the button pressed event happens 
GPIO.add_event_detect(18, GPIO.FALLING, callback = SendMsg, bouncetime = 2000)

def SendMsg():
    response = urlopen(url)
    data = json.load(response)
    print(data)
    IP = data['ip']

    # Get location of device through IP
    location = openapi.get(f'/v1.0/iot-03/locations/ip?ip={IP}')
    print(location)
    location = location['result']
    latitude, longitude = location['latitude'], location['longitude']

    landmarks = wikipedia.geosearch(latitude, longitude, results=5)
    landmarksListToStr = ' '.join(map(str, landmarks))

    # get weather based on geo location
    weather_url = f'/v2.0/iot-03/weather/current?lat={latitude}&lon={longitude}'
    weather = openapi.get(weather_url)
    print(weather)
    condition = weather['result']['current_weather']['condition']
    air_quality = weather['result']['air_quality']['aqi']
    print(condition, air_quality)

    params = {
        "landmarks": landmarksListToStr,
        "condition": condition,
        "aqi": air_quality
    }

    payload_json = json.dumps(params)
    print(payload_json)

    email_sent = openapi.post("/v1.0/iot-03/messages/mails/actions/push", dict({"to_address": "gadecito@ryteto.me",
                                                                                "template_id": "MAIL_9584653696",
                                                                                "template_param": payload_json,
                                                                                "reply_to_addr}))

    sms_sent = openapi.post("/v1.0/iot-03/messages/sms/actions/push", dict({"country_code": "91",
                                                                            "phone": "748000000",
                                                                            "template_id": "SMS_2460072921",
                                                                            "template_param": payload_json,
                                                                            "sign_name": ""
                                                                            }))

    print(email_sent)
    print(sms_sent)                                                                  }))

    sms_sent = openapi.post("/v1.0/iot-03/messages/sms/actions/push", dict({"country_code": "91",
                                                                            "phone": "748000000",
                                                                            "template_id": "SMS_2460072921",
                                                                            "template_param": payload_json,
                                                                            "sign_name": ""
                                                                            }))

    print(email_sent)
    print(sms_sent)

未来的步骤:

为什么不加入涂鸦云,为您的下一个 SMS 和 EMAIL 通知智能项目使用云 API 进行创新。几乎所有这些 API 都以几乎相同的方式使用。请求参数和包含所有所需内容的字典。文档非常易于遵循。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1elmo直线电机驱动调试细则
  2. 4.76 MB   |  9次下载  |  6 积分
  3. 2GB 4706.17-2010 家用和类似用途电器的安全电动机-压缩机的特殊要求
  4. 3.47 MB   |  6次下载  |  1 积分
  5. 3WIFI智能音箱原理图完整版
  6. 0.09 MB   |  5次下载  |  10 积分
  7. 4GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
  8. 7.43 MB   |  3次下载  |  1 积分
  9. 5ADL-GPIB IEEE 488命令集函数参考手册
  10. 0.67 MB   |  2次下载  |  5 积分
  11. 6H10-T108KYG/5M数据表
  12. 0.73 MB   |  2次下载  |  免费
  13. 748V三相逆变器电路图
  14. 0.54 MB   |  1次下载  |  5 积分
  15. 8如何使用C2000 CLB实现Traction Inverter应用中的PWM输出保护功能
  16. 1.32 MB   |  1次下载  |  免费

本月

  1. 1新概念模拟电路第四册信号处理电路电子书免费下载
  2. 10.69 MB  |  53次下载  |  免费
  3. 2800VA纯正弦波逆变器的参考设计
  4. 2.96MB   |  22次下载  |  免费
  5. 3SW6308V原理图设计指南
  6. 0.75 MB   |  15次下载  |  1 积分
  7. 4SW6308V三口多协议升降压移动电源SOC中文手册
  8. 1.61 MB   |  14次下载  |  1 积分
  9. 5纯电动汽⻋的主要部件及⼯作原理
  10. 5.76 MB   |  13次下载  |  5 积分
  11. 6新概念模拟电路(电子版全集)
  12. 29.33 MB   |  11次下载  |  免费
  13. 7GP328和GP88S对讲机的维修实列资料合集免费下载
  14. 0.03 MB   |  10次下载  |  10 积分
  15. 8SW6308V寄存器手册
  16. 1.08 MB   |  10次下载  |  1 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935115次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191366次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183329次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73805次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65985次下载  |  10 积分