当咕咕机遇上node-red
-
前些天网上看到了这个咕咕机,看起开很有趣,就搞了台玩玩,昨天刚到,也就是上手简单玩了一天
9.02更新
现在可以不用node.js后台(有关node后台的可以直接无视啦,直接看下方的示例吧),直接调用现成的节点(右上角manage palette搜索momobirdtext)就行啦,但现在还只能打印字符
示例: https://goiot.cc/shenyu1996/gugujishow
玩法思路
通过node.js后台包装官方的API,通过node-red平台建立定时任务,请求node.js后台,打印机打印内容
官方API
官方APP就不多说了,总之很方便,一键打印APP里各种内容,还有很多网友分享的,总之很丰富。
很多模板也很有用,但这些以后再说啦~当然我的感兴趣的重点是官方的打印API啦,发了封邮件40分钟就回了,很顺利拿到了appkey
虽然NPM上也有一些别人写的封装API,但看了看官方的文档,一个就仨接口,干脆自己撸算了,直接写在了koa里做个后台
github.memobird-api (具体使用方法都写在README了)其实这个后台API理论上是可以直接封装个node-red的节点的,主要我也是才接触这平台,自定义节点还不太了解,而且单独写个后台也能用其他方式调用的啦,以后深入学习了可以尝试下,或者哪个大佬可以试下
主角node-red
示例: https://goiot.cc/shenyu1996/gugujishow
建几个定时任务
一言
通过inject,建立定时任务,会定时触发后面的get请求,然后处理好返回的数据,然后发送post请求到我的后台服务器
这里function模块处理返回的数据,然后post请求到我的后台服务器
天气预报
和风天气API(注册个账户就能免费申请)
这个也是一样啦,inject设定两个固定时间的触发,处理好请求地址,获取数据,处理发送给后台的数据inject中填入需要查询的城市,因为平台的时区问题,实际上是7:45和13:00触发,然后function模块中填入申请的key,后面的http模块中填入运行上方node后台的服务器地址
其他任务
当然还有很多有趣的模块,email模块尝试了下163总有些小问题,还有twitter,facebook的社交模块,还发现个微博的订阅后台,可以尝试着玩玩
既然是node-red,重点还是硬件的接入啦,可惜我手上没这些东西啦 ゚(T_T)
UI部分
node-red还带一个ui界面
两条简单的流程图,text输入后触发post请求到后台就行啦
生成的前端页面
这样,打开这个UI的网站,就能远程打印啦效果
-
棒棒哒 👍
这个让我想起了之前有个歪果小哥做了一个焚毁川普同学的 twitter 言论的小玩意,
大概就是用一个后台去实时获取 twitter 上川普的新言论,然后发送给一台小打印机打印出来,再关联控制一个机械手臂去夹取这张纸条,并放到火上烧掉🔥好像就是这个😂
-
@librae 下午看了下create node,简单封装了个节点,能直接打印字符啦,不用掉后台了,打印图片的话,需要个插件,还需要本地安装,有点麻烦了。 我先看看这个能不能上传npm
-
@shenyu1996 可以的,node-red社区的npm包同步规则是只要命名为node-red-contrib-*,记得好像是十分钟从npm服务器同步一次,就可以在节点管理面板中直接安装了
-
@librae https://flows.nodered.org/node/node-red-contrib-memobirdtext
可以搜索到了,但有点小问题呀。
我自己的windows平台上的17.5版本可以正常deploy并运行
但在你们平台上安装后,deploy会出现会提示缺少节点类型,刷新页面后节点在左侧板直接消失了,安装节点里面虽然还能看到,不过节点颜色也不显示了
是我写的有问题么 https://github.com/summerscar/node-red-contrib-memobirdtext
-
@shenyu1996 👍
我看了一下 memobirdtext 节点的实现,里面用到了 async,根据 node.green 的表格,async 在 es2017 的支持需要 node 版本 > 7.x,而目前 Go.IoT 上用于启动 Node-RED 的线上环境还在 Node v6 LTS 的版本上,所以会出现注册节点失败的情况。猜测你的 windows 环境中 node 的版本应该是 > 7.x 的,所以顺利注册成功。可以参考你的启动日志。
Welcome to Node-RED =================== 2 Sep 04:44:13 - [info] Node-RED version: v0.17.5 2 Sep 04:44:13 - [info] Node.js version: v6.10.0 2 Sep 04:44:13 - [info] Linux 3.19.0-25-generic x64 LE 2 Sep 04:44:13 - [info] Loading palette nodes 2 Sep 04:44:14 - [info] Dashboard version 2.4.3 started at /ui 2 Sep 04:44:15 - [warn] ------------------------------------------------------ 2 Sep 04:44:15 - [warn] [memobirdtext] SyntaxError: Unexpected token ( 2 Sep 04:44:15 - [warn] ------------------------------------------------------
按 Node.js 的发布计划,到今年10月会确定一个
8.x
的LTS
版本。不过我们可以先切到一个8.x
上线运行,估计问题也不大。Release LTS Status Codename Active LTS Start Maintenance Start Maintenance End v0.10.x End-of-Life - - 2015-10-01 2016-10-31 v0.12.x End-of-Life - - 2016-04-01 2016-12-31 4.x Maintenance Argon 2015-10-01 2017-04-01 April 2018 5.x No LTS 6.x Active Boron 2016-10-18 April 2018 April 2019 7.x No LTS 8.x Pending Carbon October 2017 April 2019 December 2019 9.x No LTS 10.x Pending Pending October 2018 April 2020 April 2021
-
哦 这样啊 js的版本我都搞不清了,之前接触了koa2用了asycn ,有点上瘾了
我这边node是最新的,昨天写这个节点用npm link命令,莫名其妙把npm搞崩了,然后直接装了最新版
还有这个node-red的版本和npm上的版本同步时间大概多久? 发布后到是很快被收录了,后来改动了一下,但Node-red这边
搜到的版本还是第一次收录时的版本
最后 感谢大佬的技术支持哈 @librae
-
新发布节点的同步,这个问题我当时特意向 Node-RED 作者请教过,下面是他给的回复:
from Dave C-J (author of Node-RED)
Hi
as soon as it's on flows.nodered.org then the palette manager can find it. - so yes it;s there already.
flows.nodered.org should update every 10 minutes or so - but does occasionally miss something. If that happens you can log into flows.nodered.org (top right) and then hit the request refresh link - which will force it to go look in the next time round.另外关于node版本的管理,可以使用 n - https://github.com/tj/n,一个简洁到酷的工具。
如果是 npm 玩崩了的话,是不是可能和 win 自己的环境有关系,原谅我把锅直接扔给了 win 😛
-
ok 搞回了ES6可以用了,node-red那边版本也刷新了
-
@librae 我记得n模块好像linux才能用,虽然linux各种命令行很炫酷,但我水平还差远了 23333
-
@shenyu1996 你这已经很犀利啦,这么快就玩得66🐮 的了,祝用得愉快~
-
This post is deleted!
-
This post is deleted!
-
interval 里的定时功能无法使用,怎么解决额,各位大神们,求教
-
@jdeal said in 当咕咕机遇上node-red:
interval 里的定时功能无法使用,怎么解决额,各位大神们,求教
这个不是无法用哦,需要注意一下时区的问题,参考
https://bb.goiot.cc/topic/28/inject在specific-time时无法触发-已解决