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. 应用案例 | Blink 有何特别之处?菜鸟供应链场景最佳实践
  2. html中响应式字体怎么写,如何实现网页中字体响应式
  3. gdb 跟踪调试命令整理
  4. 在未来给我们看病的将是医疗机器人?
  5. 文件系统及程序的限制关系: ulimit
  6. MemoryInjector 无痕注入
  7. Xcode里-ObjC, -all_load, -force_load
  8. linux下ppp拨号无线上网
  9. 本机找不到workstation 和 Computer Browser服务
  10. 零起点英语_【零起点英语】第154讲:Large Feet 大脚丫
  11. vue中生成二维码(中间带logo)
  12. 线性代数之 矩阵的迹
  13. 【教程:利用Axure快速原型工具制作电影信息网站】——小白也会,傻瓜式做法,简易快速!!!可应对(毕业)课程设计喔!!
  14. 八大资管业务类型汇总
  15. WPF3D图片轮播效果
  16. 区块宝周报:区块链一周大事排行榜10.16
  17. 计算机网络-无线网络
  18. 银联商务MISPOS接口开发demo 需要调用POSINF.DLL
  19. editplus中文乱码问题解决
  20. Schatten-p

热门文章

  1. 《现代密码学》第一章——经典密码学介绍
  2. 化工原理物性参数_化工原理课程设计(修订版)..docx
  3. stem案例幼儿园需求
  4. Java下载模板文件(Excel demo)
  5. vue ElementUI 表格筛选框的高度设置,超出一定高度,显示滚动条
  6. 2021极术通讯-中国顶尖技术团队访谈录(抖音/阿里/腾讯/OPPO)
  7. Java基础(12)Scanner类、String类
  8. 帮过网:选调生一年可以考几次
  9. elasicsearch suggest用法
  10. python解决摩尔斯电码