当咕咕机遇上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

    建几个定时任务

    0_1504235849516_node-red.jpg

    一言

    一言API

    通过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请求到后台就行啦
    0_1504236584915_node-red1.jpg
    生成的前端页面
    0_1504236629618_node-red2.jpg
    这样,打开这个UI的网站,就能远程打印啦

    效果

    1_1504236820535_node-red3.jpg 0_1504236820535_node-red4.jpg



  • 棒棒哒 👍
    这个让我想起了之前有个歪果小哥做了一个焚毁川普同学的 twitter 言论的小玩意,
    大概就是用一个后台去实时获取 twitter 上川普的新言论,然后发送给一台小打印机打印出来,再关联控制一个机械手臂去夹取这张纸条,并放到火上烧掉🔥

    好像就是这个😂



  • @librae 下午看了下create node,简单封装了个节点,能直接打印字符啦,不用掉后台了,打印图片的话,需要个插件,还需要本地安装,有点麻烦了。 我先看看这个能不能上传npm1_1504274859195_guguji node-red.jpg 0_1504274859195_gugjiji.jpg



  • @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.xLTS版本。不过我们可以先切到一个 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🐮 的了,祝用得愉快~


Log in to reply
 

Looks like your connection to NodeBB was lost, please wait while we try to reconnect.