node 控制 树莓派做的天气闹钟

在成都上班,下雨天堵车,迟到的概率会很大。
正好手上有一块树莓派 ,做了一个晴雨闹钟。
下雨天 早上 7:00叫我起床
晴天 早上 7:30叫我起床
将自己喜欢的歌曲放在一个文件夹中,随机播放,防止听腻

以下是代码

const UID = "U785B76FC9"; // 测试用 用户ID,请更换成您自己的用户ID
const KEY = "4r9bergjetiv1tsd"; // 测试用 key,请更换成您自己的 Key
let LOCATION = "双流"; // 除拼音外,还可以使用 v3 id、汉语等形式
let Api = require('./lib/api.js');
let api = new Api(UID, KEY);
let rainRegexp = /雨/;
let exec = require('child_process').exec;let fs = require("fs");
let schedule = require("node-schedule");function alarmClockTime(isRain) {let today = new Date();let Y = today.getFullYear();let M = today.getMonth();let D = today.getDate();let week = today.getDay();if (week === 0 || week === 6) {return new Date(Y, M, D, 9, 30, 0);}if (isRain) {return new Date(Y, M, D, 7, 0, 0);}return new Date(Y, M, D, 7, 30, 0);
}//调用音乐
function playMusic() {let shellStr;let musicArray;try {musicArray = fs.readdirSync("/media/hd/music/alarm/");let fileNmae=musicArray[Math.floor(musicArray.length * Math.random())].replace(/ /g,"\\ ");shellStr = "mplayer /media/hd/music/alarm/" +fileNmae;} catch (err) {shellStr = "mplayer /media/hd/music/qiyue.mp3";}console.log(shellStr);exec(shellStr, function (err, data) {if (err) {console.log(err);return;}console.log("播放完成");})
}function setAlarmClock(time) {schedule.scheduleJob(time, function () {playMusic();});
}/*** 获取天气信息*/
function getWetherInfo() {let getNowWeather = api.getWeather("/weather/now.json", {location: LOCATION});let getNextWeather = api.getWeather("/weather/daily.json", {location: LOCATION});Promise.all([getNowWeather, getNextWeather]).then(function (data) {let nowWeatherText = data[0].results[0].now.text;let dayWeatherText = data[1].results[0].daily[0].text_day;console.log(new Date() + " :" + dayWeatherText);if (rainRegexp.test(nowWeatherText) || rainRegexp.test(dayWeatherText)) {//当天有雨 提前设置闹钟setAlarmClock(alarmClockTime(true));} else {//没有雨 延后设置闹钟setAlarmClock(alarmClockTime());}}).catch(function (err) {console.log(err);setAlarmClock(alarmClockTime(true));});
}schedule.scheduleJob("0 50 6 * * *", function () {getWetherInfo();
});

转载于:https://www.cnblogs.com/getlove/p/7291951.html

node 控制 树莓派做的天气闹钟相关推荐

  1. 利用树莓派制作天气闹钟

    前言 为了能让刚买的树莓派有效的利用起来(避免吃灰),今天分享一下如何用树莓派做天气闹钟. 环境及工具 树莓派3B+.IDE.XShell.FileZilla(FTP文件上传).小音箱. 查询天气 准 ...

  2. 用树莓派做服务器运行博客网页

    文章目录 阅读本文你将了解的知识点: 树莓派做服务器运行Hexo博客网页 1.服务器框架 2.本地Hexo设置 2.1 安装GIT 2.2 安装NodeJs 2.3 安装Hexo 2.4 Hexo生成 ...

  3. 树莓派能做什么_使用树莓派做两轮自平衡车(一)

    为什么要用树莓派做平衡车呢? 原因主要有下面几点: 第一, 我不忍心再让它吃灰了: 第二, 我想学习linux的应用开发: 第三, 我想学习linux的驱动开发: 第四, 树莓派可玩性和可扩展性高: ...

  4. python控制树莓派相机_玩转树莓派-Raspberry,控制单反相机进行可编程摄影

    单反相机具有强大的拍照能力,但内置的控制软件主要面向交互操作,对于长时间摄影(如延时摄影/视频合成/HDR/Focus Stack/多幅拼接等等高级技术)的一些操作不太方便,可以使用树莓派做一个 gP ...

  5. 微信控制树莓派运行python_树莓派笔记07-微信公众号控制树莓派(一)

    微信公众号控制树莓派就是在树莓派上使用itchatmp这个开源的微信公众号接口,这是最简单的使用python调用微信公众号.itchatmp基于tornado框架,支持普通使用.nginx反向代理与w ...

  6. 树莓派系统烧录,连接电脑,电脑远程桌面控制树莓派(树莓派无屏幕,校园网)

    1.系统烧录 本人初学树莓派,没买屏幕,在学校里,用的是校园网,没有路由器,所以没办法直接通过网线连接树莓派和路由器,好让电脑能远程桌面控制树莓派,所以只能用迂回的方法,先让电脑通过ssh连接树莓派, ...

  7. 用舵机控制树莓派摄像头的转动

    最近想实现一下树莓派摄像头的转动功能,在网上查找资料后发现可以用舵机来控制树莓派摄像头的转动. 主要材料: 1.树莓派 X1 2.摄像头模块 X1 3.微型舵机 X2 舵机外观如下: 舵机的控制: 控 ...

  8. python控制摄像头拍照_microbit使用蓝牙控制树莓派摄像头拍照

    1.项目概览 本文旨在实现这样一个功能:用MicroBit配合DFRobot出品的gamePad拓展板通过蓝牙控制树莓派上的摄像头进行拍摄,并可以通过gamePad方向键控制云台.主要涉及的知识点包括 ...

  9. 树莓派笔记15:手机控制树莓派小车

    1 成果展示 花了点时间做了简单的手机控制树莓派小车项目,其实主要是对之前各种学习内容的一个综合利用,也特地抽出时间学习了一下最基本的Android开发.下面的图片是成果的展示,树莓派小车由树莓派.小 ...

最新文章

  1. 如何创建一个用户、授权操作k8s集群的过程?
  2. socket 读取 所有 数据 java_Java Socket 读取服务器端返回数据
  3. mysql 端口time_wait_TIME_WAIT状态全是3306解决办法
  4. kubernetes一次生产故障日记
  5. 暑期作息时间表模板_人民日报给孩子的暑假作息时间表,转给家长!
  6. 用c语言写程序求序数的后缀,用C编写mex程序
  7. http参数自动转换java接口参数设置_Springmvc请求参数类型转换器及原生api代码实例...
  8. python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)
  9. exchange邮箱账号禁用之后 启用方法
  10. Mac OSX 下 mysql 影响关系的问题处理
  11. 文件管理系统源码_【程序源代码】人力资源管理系统
  12. 解决ThinkPad早期笔记本Broadcom博通系列无线网卡Win10掉线、受限、速度慢问题(ThinkPad E530为例)
  13. Log4j2 漏洞检测工具清单
  14. 格物致知诚意正心修身齐家治国平天下是什么意思【转载】
  15. Oracle_Basic_Concept(RolePriviledge)
  16. WebServer·(二)在IDEA中,安装配置Maven并且开发MavenHelloWorld
  17. swift版 关于微信支付的那点事
  18. Pytorch中DistributedSampler()中的随机因素
  19. TC3XX 多核ECU的中断向量表解疑
  20. 数据分析 之 渠道质量分析

热门文章

  1. 2022年长沙市施工员(设备安装)考试练习题及答案
  2. 为什么float范围比long的范围大。
  3. kafka原理和性能分析测试
  4. Unity2017新功能Tilemap地图编辑器的数据拓展和动态生成
  5. 微信小程序获取云服务器数据,微信小程序云开发服务端数据库API 获取集合数据...
  6. easyui menu tree 实现左侧菜单树
  7. 华为OD机试用Python实现 -【士兵过河】| 含思路
  8. php数组删除值为空的元素,PHP实现移除数组中为空或为某值元素的方法
  9. Redis个人总结及代码实现
  10. 物料搬运装置及控制系统设计(CAD+PLC)