|
|
本帖最后由 smlz1213@qq.com 于 2024-11-18 21:58 编辑
使用玩客云linux系统作为小型服务器的同时,led灯 也不能闲着, 所以有了 用作天气预报的想法. 这里仅作为作为玩法的扩展思路, 不讨论代码水平, 抛砖引玉供大家参考, 不涉及详细教程.
思路:
1. 玩客云 面板的led 等可以通过 命令行控制. 灯的颜色有红、绿、蓝 三种, 不同颜色的组合还能组成 紫、粉、白、黄, 这个大家自己去测试。
2. 使用python 天气api 接口 获取 天气信息, 提取关键信息 如: 大雨、晴、其他天气情况,使用 os模块 调用 命令行 更换灯的颜色.
3. 设置定时启动, 每5分钟 启动一次python 脚本, 获取天气情况,更改灯的颜色就可以了.
我使用的灯光判断是孩子建议的:
为什么没有雪天, 因为孩子说 宁波不下雪。哈哈
大雨、中雨、其他雨天:红灯
小雨:黄灯
其他天气: 绿灯
晴天:蓝灯
网络断开: 白灯
LED灯的 使用命令,颜色组合还会得到其他的颜色,自己去尝试. 开了的灯记得关掉 不关掉就变成组合色了.
开启红色
echo 1 > /sys/class/leds/onecloud\:red\:alive/brightness
开启绿色
echo 1 > /sys/class/leds/onecloud\:green\:alive/brightness
开启蓝色
echo 1 > /sys/class/leds/onecloud\:blue\:alive/brightness
开启黄色(组合)
echo 1 > /sys/class/leds/onecloud\:red\:alive/brightness
echo 1 > /sys/class/leds/onecloud\:green\:alive/brightness
关闭红色
echo 0 > /sys/class/leds/onecloud\:red\:alive/brightness
关闭绿色
echo 0 > /sys/class/leds/onecloud\:green\:alive/brightness
关闭蓝色
echo 0 > /sys/class/leds/onecloud\:blue\:alive/brightness
关灯(组合)
echo 0 > /sys/class/leds/onecloud\:red\:alive/brightness
echo 0 > /sys/class/leds/onecloud\:green\:alive/brightness
echo 0 > /sys/class/leds/onecloud\:blue\:alive/brightness
python 代码如下:
python 代码如下:
#pip install requests
#api地址
#url = 'http://t.weather.sojson.com/api/weather/city/城市的代码'
# 城市代码查询 https://blog.csdn.net/qq_42855293/article/details/103864266
import requests ,os, time
url = 'http://t.weather.sojson.com/api/weather/city/101210412'
#网络请求,传入请求api+城市代码
response = requests.get(url)
#将数据以json形式返回,这个d就是返回的json数据
d = response.json()
def off_led():
print("关闭LED")
os.system("echo 0 > /sys/class/leds/onecloud\:red\:alive/brightness")
os.system("echo 0 > /sys/class/leds/onecloud\:green\:alive/brightness")
os.system("echo 0 > /sys/class/leds/onecloud\:blue\:alive/brightness")
time.sleep(2)
def on_led():
print("白色")
os.system("echo 1 > /sys/class/leds/onecloud\:red\:alive/brightness")
os.system("echo 1 > /sys/class/leds/onecloud\:green\:alive/brightness")
os.system("echo 1 > /sys/class/leds/onecloud\:blue\:alive/brightness")
def red_led():
print("红色")
os.system("echo 1 > /sys/class/leds/onecloud\:red\:alive/brightness")
def Yellow_led():
print("黄色")
os.system("echo 1 > /sys/class/leds/onecloud\:red\:alive/brightness")
os.system("echo 1 > /sys/class/leds/onecloud\:green\:alive/brightness")
def blue_led():
print("蓝色")
os.system("echo 1 > /sys/class/leds/onecloud\:blue\:alive/brightness")
def green_led():
print("绿色")
os.system("echo 1 > /sys/class/leds/onecloud\:green\:alive/brightness")
# 灯光循环一遍后关闭LED
off_led()
time.sleep(1)
red_led()
time.sleep(1)
off_led()
Yellow_led()
off_led()
time.sleep(1)
blue_led()
time.sleep(1)
green_led()
time.sleep(1)
off_led()
time.sleep(2)
#当返回状态码为200,输出天气状况
if(d['status'] == 200):
print("城市:", d["cityInfo"]["parent"], d["cityInfo"]["city"])
print("时间:", d["time"], d["data"]["forecast"][0]["week"])
print("温度:", d["data"]["forecast"][0]["high"], d["data"]["forecast"][0]["low"])
print("天气:", d["data"]["forecast"][0]["type"])
print("------")
weather_condition = d["data"]["forecast"][0]["type"]
if "雨" in weather_condition:
if "小雨" in weather_condition:
print("小雨")
Yellow_led()
else:
print("中雨,大雨,其他雨")
red_led()
elif "晴" in weather_condition:
print("晴")
blue_led()
else:
print("其他天气")
green_led()
else:
print("网络故障")
on_led()
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|