Nodered学习记录-时间戳和时区设置

昨天刷到个博主,跟着她的教程开始实践。
Node-red的基础使用——inject/debug/function的使用(1)
Node-red的基础使用——cronplus节点的使用(2)
通过(1)大致理解了node-red里面的信息传递,以及javaScript写的function,虽说部分细节不甚明了,但不妨碍拿来用。
到了(2)时,首先遇到的是cronplus节点需要额外安装。
查了下node-red-contrib-cron-plus 2.1.0应该比较契合。
但在安装时,又出现了一直卡住无法安装的情况,看样子像是网络问题。于是检索了一下,又说是NPM源的问题。
执行换源操作后,顺利安装成功。
方法如下:Node-red节点安装换源
然后配置了这样的程序,用来在dashboard上显示当前时间。

cronplus节点,让它每秒输出一次时间戳

Function节点设置,主要功能见注释,详细说明见Node-red的基础使用——inject/debug/function的使用(1)评论区。

Debug节点设置,在控制台输出内容

文本显示,用来在dashboard上显示

结果

显示发现时间不对。

初步判断可能是时区错误,然后搜寻解决方法。
先查看主机系统时区和时间。

$ cat /etc/timezone 
Asia/Shanghai
$ date
2024年 09月 10日 星期二 09:30:27 CST

都是OK的。
进入docker

$ sudo docker exec -it mynodered bash

然后再看时间和时区。

$ cat /etc/timezone
cat: can't open '/etc/timezone': No such file or directory
$ date
Tue Sep 10 01:33:02 UTC 2024

发现时间不对,timezone没权限。
再次退出,用root用户进/

$ sudo docker exec -u root -it mynodered bash
5a7772b55fa0:/usr/src/node-red# 
# cat /etc/timezone
cat: can't open '/etc/timezone': No such file or directory

没有看到时区配置。
于是,参照AI的意见,在容器内执行

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

创建一个指向/usr/share/zoneinfo/Asia/Shanghai的符号链接。
然后,退出容器。
重启容器

$ sudo docker restart mynodered
mynodered

于是,我们可以看到正确的时间了。

除了这个方案,AI还提示了通过node-red的timezone节点进行时区设置,还没来得及尝试,不知道是不是一本正经地胡说八道。

posted @ 2024-09-10 09:47  科里布  阅读(134)  评论(0编辑  收藏  举报