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節點進行時區設置,還沒來得及嘗試,不知道是不是一本正經地胡說八道。

浙公網安備 33010602011771號