VNC ViewerでRaspberry Piに繋ぐときCannot currently show the dekstop
現象
VNC ViewerでRaspberry Piにリモートデスクトップ接続をしようとした際に、Cannot currently show the dekstopと表示され、画面が表示されない。
また、HDMIケーブルを接続してラズパイを起動するとVNC接続はできます。ラズパイ起動後にHDMIを挿しても、VNCは繋がりません。
IoTの現場など本番環境に設置する際は、常にHDMI接続しているわけではないので困りますよね。自動起動にしてあるNode-REDなどはブラウザからアクセスできており動いていることが確認できるので、ラズパイが起動しているのは判っている。
環境
・VNC Viewer
・OSは、2019-06-20-raspbian-buster.img
・GrovePi+
・Raspberry Pi 3 Model B+
解決方法
HDMI接続をすることなくVNCで画面を出すにはラズパイをデスクトップモード(サービスモード)で起動する必要があります。HDMIを繋いだ時だけVNC接続できるのはこれが原因のようです。デスクトップモードで起動するには、config.txtで解像度を指定します。そのため、GUIのコンフィグツールで指定するか、/boot/config.txtを編集します。
sudo raspi-config
でVNCを有効にします。
その後、
sudo nano /boot/config.txt
でconfig.txtを編集します。今回は、
#hdmi_force_hotplug=1
をコメントアウトして
hdmi_force_hotplug=1
のように編集しました。
なお、デスクトップモードで起動しない場合は、Virtual modeにする必要があり、この場合はコマンドラインからvncserverを起動しないといけないのでなんか面倒な気がします。もしかして、Virtual modeだとRaspberry Piへの負荷が低いのかな??
参考
Node.jsのバージョンやNode-REDのバージョンを指定してRaspberry Piにインストールする
概要
Raspberry PiでNode-REDを利用していると、インストールしているカスタムノードの都合でNode.jsやNode-REDのバージョンを固定してインストールしたいってことがあります。
そんなときのやり方を紹介します。
そもそもインストールがどうなっているのか
公式サイトを見てみます。Node-RED日本ユーザー会⇒ドキュメント⇒Getting Started⇒Raspberry Pi のページにはこう書いてあります。
https://nodered.jp/docs/getting-started/raspberrypi#node-redをインストールする
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
これは、GitHub上のnode-redのlinux-installersリポジトリにある、devディレクトリのupdate-nodejs-and-noderedというファイルを取得して、実行するというコマンドです。
このコマンドの中にNode.jsとNode-REDのバージョン指定がされています。ファイルの全容はここで確認できます。執筆時点では、177行目と212行目と224行目にNode.jsのインストールコマンドが、259~263行目にNode-REDのインストールコマンドがあります。
Node.jsのインストールコマンドはaptコマンドで
sudo apt install -y nodejs
Node-REDのインストールコマンドはnpm iコマンドで
npm i -g --unsafe-perm --no-progress node-red@latest
となっていますので、ここにそれぞれバージョンを指定するコマンドに変更します。なお、上記はコマンド前後のsudoやifを除いて抜粋してありますので、それぞれのコマンド行を見て、必要な箇所だけ変更しましょう。
aptでのバージョン指定
aptコマンドのバージョンの指定の仕方はapt install 【パッケージ名】=【バージョン名】のように、イコールでバージョンを付けます。
どんなバージョンがあるのかの調べ方はapt list -a 【パッケージ名】です。
pi@raspberrypi:~ $ apt list -a nodejs 一覧表示... 完了 nodejs/不明 10.18.1-1nodesource1 armhf [10.17.0-1nodesource1 からアップグレード可] nodejs/now 10.17.0-1nodesource1 armhf [インストール済み、10.18.1-1nodesource1 にアップグレード可] nodejs/stable 10.15.2~dfsg-2+rpi1 armh
バージョンなので 12.14.1 のような数字なのかと思いきや10.18.1-1nodesource1のような長い名称がバージョン名となっています。
sudo apt install -y nodejs=10.18.1-1nodesource1
のように変更すれば指定のバージョンでインストールできます。
なお、apt-cache showpkg 【パッケージ名】でもインストールできるバージョンの一覧を表示できます。
pi@raspberrypi:~ $ apt-cache showpkg nodejs Package: nodejs Versions: 10.18.1-1nodesource1 (/var/lib/apt/lists/deb.nodesource.com_node%5f10.x_dists_buster_main_binary-armhf_Packages) Description Language: File: /var/lib/apt/lists/deb.nodesource.com_node%5f10.x_dists_buster_main_binary-armhf_Packages MD5: 964493985d4a02c9abd7e062f9234325 Description Language: File: /var/lib/dpkg/status MD5: 964493985d4a02c9abd7e062f9234325 10.17.0-1nodesource1 (/var/lib/dpkg/status) Description Language: File: /var/lib/apt/lists/deb.nodesource.com_node%5f10.x_dists_buster_main_binary-armhf_Packages MD5: 964493985d4a02c9abd7e062f9234325 Description Language: File: /var/lib/dpkg/status MD5: 964493985d4a02c9abd7e062f9234325 10.15.2~dfsg-2+rpi1 (/var/lib/apt/lists/raspbian.raspberrypi.org_raspbian_dists_buster_main_binary-armhf_Packages) Description Language: File: /var/lib/apt/lists/raspbian.raspberrypi.org_raspbian_dists_buster_main_binary-armhf_Packages MD5: 0d0bbaed314d7d26588d112ee4ede074 (以下長いので略)
ちなみに、パッケージの詳細を表示するコマンドはapt show -a 【パッケージ名】です。
pi@raspberrypi:~ $ apt show -a nodejs Package: nodejs Version: 10.17.0-1nodesource1 Priority: optional Section: web Maintainer: Chris Lea <chl@nodesource.com> Installed-Size: 72.5 MB Provides: nodejs-dev, nodejs-legacy, npm Depends: libc6 (>= 2.17), libgcc1 (>= 1:3.5), libstdc++6 (>= 4.9), python-minima l, ca-certificates Conflicts: nodejs-dev, nodejs-legacy, npm Replaces: nodejs-dev (<= 0.8.22), nodejs-legacy, npm (<= 1.2.14) Homepage: https://nodejs.org Download-Size: 14.2 MB APT-Manual-Installed: yes APT-Sources: https://deb.nodesource.com/node_10.x buster/main armhf Packages Description: Node.js event-based server-side javascript engine Node.js is similar in design to and influenced by systems like Ruby's Event Machine or Python's Twisted. . It takes the event model a bit further - it presents the event loop as a language construct instead of as a library. . Node.js is bundled with several useful libraries to handle server tasks : System, Events, Standard I/O, Modules, Timers, Child Processes, POSIX, HTTP, Multipart Parsing, TCP, DNS, Assert, Path, URL, Query Strings. Package: nodejs Version: 10.15.2~dfsg-2+rpi1 Priority: optional Section: javascript Maintainer: Debian Javascript Maintainers <pkg-javascript-devel@lists.alioth.deb ian.org> Installed-Size: 153 kB Depends: libatomic1 (>= 4.8), libc-ares2 (>= 1.7.0), libc6 (>= 2.4), libgcc1 (>= 1:3.0), libicu63 (>= 63.1-1~), libnghttp2-14 (>= 1.3.0), libnode64 (= 10.15.2~d fsg-2+rpi1), libssl1.1 (>= 1.1.0), libstdc++6 (>= 4.1.1), libuv1 (>= 1.20.0~), z lib1g (>= 1:1.1.4) Recommends: ca-certificates, nodejs-doc Suggests: npm Conflicts: nodejs-legacy Replaces: nodejs-legacy Homepage: http://nodejs.org/ Download-Size: 86.5 kB APT-Sources: http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages Description: evented I/O for V8 javascript - runtime executable Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. . Node.js is bundled with several useful libraries to handle server tasks: . System, Events, Standard I/O, Modules, Timers, Child Processes, POSIX, HTTP, Multipart Parsing, TCP, DNS, Assert, Path, URL, Query Strings.
npm i コマンドのバージョン指定
npmでのバージョン指定はnpm i 【パッケージ名】@【バージョン名】です。
バージョンの検索方法は、npmリポジトリのNode-REDのページを参照します。
ページを開くと、上部にタブが Readme, Explorer, Dependencies, Dependents, Releases と並んでいますので、この中の Releases タブをクリックすると、バージョンの一覧が表示されます。
npm i -g --unsafe-perm --no-progress node-red@0.20.7
のようにインストール対象のバージョンを指定します。
インストールスクリプトの変更
インストールコマンドは、
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
のようにスクリプトの取得と実行を同時に行うコマンドになっていますので、スクリプトファイルをダウンロード⇒ファイル変更⇒ファイル実行の順で行います。
pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered
で、まずはファイルを取得します。
pi@raspberrypi:~ $ nano update-nodejs-and-nodered
で、ファイルの編集をします。エディタはviでもnanoでもいいですが、nanoが便利なの。
pi@raspberrypi:~ $ sh update-nodejs-and-nodered
で、スクリプトの実行をします。
参考
「Node-REDでデバッグするための開発環境」で登壇しました
Node-RED UG勉強会 2019 年末LTパーティで登壇しました
去年いろいろな勉強会に参加しているなかで、今年はどこかで登壇したいなーなんて思っていたら、仕事のご縁でNode-RED UG勉強会 Vol.9に突然登壇することになりました。その時の懇親会でカスタムノードのデバッグの話になり、皆さん結構同じこと考えてるなーと感じたので、この時(=Vol.9) "次は自分の名前で登壇しよう"と内心決意。
機会に恵まれました。ありがとうございます。
【好評につき増席!】Node-RED UG勉強会 2019 年末LTパーティ - connpass
自分の発表の概要
Node-REDでカスタムノードを開発しているときに、実際に自分が書いたノードのコードや、コアノードの動作をステップ実行したい時ってありますよね。そんなときのHow-toをLTしました。
Tweetまとめ
いつも自分が作ったノードのリファクタをやろうとして、やり方忘れて挫折するのでデバッグ話たすかる… #noderedjp
— 菅原のびすけ (@n0bisuke) 2019年11月29日
Node-Redをステップ実行できる。おお! #noderedjp
— 山添 知久(zoe)@IoT Engineer (@zoe6120) 2019年11月29日
Node-REDのデバッグノードを使う話ではなく、カスタムノード開発するときにブレークポイントで止めてデバッグする話! by Visual Studio Code #noderedjp #nodered #vscode
— dz づ (@dz_) 2019年11月29日
step実行すごい! #noderedjp
— ざっきー@野良ハック (@Zakkiea) 2019年11月29日
Node-REDでステップトレースできるんだとhttps://t.co/kFJteQY1v2
— Aloha_Yos (@Aloha_Yos) 2019年11月29日
#noderedjp
と反応も上々なのかなと。
Node-REDは開発レスに思えるけど
実際はfunctionノードにコードが書けたり、カスタムノードを作って機能拡張できたりします。柔軟で手軽な拡張性を持っている点は、他のビジュアルプログラミングツールと比べると魅力のひとつです。
ひとくちにNode-REDと言っても、それを使う人もいれば、作る(拡張する)人が居たり、いろいろな関わり方がある所がいいですよね!
最後に
LTなのに8分ぐらい喋ってました・・・申し訳ないですm(_ _)m