以前、Node-REDから”node-red-node-email”というライブラリを使ってメールを送信する方法を確認しました。
Node-REDからメールを送信する|デジタルライト(Digital-light.jp)
今回は、IO-DATAのネットワークカメラTS-NS410Wが撮影したスナップショット画像データを添付してメールで送信する方法を紹介します。
IO-DATAネットワークカメラTS-NS410Wとは?

↑ 自分で用意した三脚に取り付けています。
TS-NS410Wは、映像が第三者のサーバーを経由しない安心・安全なネットワークカメラです。
AIと動作/人感/音/気温/湿度の5つの検知機能を搭載しており、カメラの向こう側を正確に検知し、変化があればすぐに気づくことができます。
SONY製イメージセンサー「STARVIS IMX327」を搭載しており、夜間撮影でもカラーで綺麗な映像を実現しています。
他の電波を発する機器からの干渉を受けにくい、Wi-Fi 5の5GHz帯にも対応しており、安定したカメラ映像を送ることができます。
また、APIの公開を行っておりますので、お客様のシステムに組み込むことが可能です。
と、上記説明の通り、IO-DATAが昨年(2022年)に発売したネットワークカメラなのですが、同社の従来品と比べ各種センサーやAI機能、ONVIFなどの外部システム連携機能が充実し、この製品と【何か】をつなげようと思う人にはとても魅力的な製品になりました。
この値段でこの性能は本当にすごいと思います。
↓ 詳細な性能はこちらの 「動画で紹介byアイオーレビュー隊」さんの動画で解説されています。
Node-REDからTS-NS410Wのスナップショット画像をメールで送信する
TS-NS410Wは単体でも画像をメール送信する機能がついておりますが、Node-REDと組み合わせることで、他のIoTデバイスでなにかを検知したときにTS-NS410Wの画像をメール送信するといったことに使うこともできます。
フローはこの様になります。

↓ フロー
[{"id":"c52181ba3d2b7fbc","type":"e-mail","z":"8c84270ba1276cb0","server":"","port":"465","secure":true,"tls":true,"name":"","dname":"メール","x":590,"y":260,"wires":[]},{"id":"a1739028afd4247b","type":"template","z":"8c84270ba1276cb0","name":"","field":"description","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"ご連絡\n現在の日時: {{payload}} ","output":"str","x":280,"y":200,"wires":[["4a5d7213f8d2d589"]]},{"id":"4a5d7213f8d2d589","type":"http request","z":"8c84270ba1276cb0","name":"SNAP-SHOT","method":"GET","ret":"bin","paytoqs":"ignore","url":"http://IP_ADDRESS/snapshot.jpg","tls":"","persist":false,"proxy":"","authType":"digest","senderr":false,"x":370,"y":260,"wires":[["33720244dbf5987b","c52181ba3d2b7fbc","cff21396ba6aa065"]]},{"id":"33720244dbf5987b","type":"debug","z":"8c84270ba1276cb0","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":200,"wires":[]},{"id":"cff21396ba6aa065","type":"base64","z":"8c84270ba1276cb0","name":"","action":"","property":"payload","x":420,"y":340,"wires":[["9c5c1ad2550364c8"]]},{"id":"9c5c1ad2550364c8","type":"image","z":"8c84270ba1276cb0","name":"","width":"500","data":"payload","dataType":"msg","thumbnail":false,"active":true,"pass":false,"outputs":0,"x":620,"y":340,"wires":[]},{"id":"6e77c8f9f1b209ee","type":"change","z":"8c84270ba1276cb0","name":"日時変換","rules":[{"t":"set","p":"payload","pt":"msg","to":"$fromMillis($millis(),'[Y0001]年[M01]月[D01]日-[H01]:[m01]:[s01]','+0900')","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":220,"y":140,"wires":[["a1739028afd4247b"]]},{"id":"fea508b2743b7721","type":"inject","z":"8c84270ba1276cb0","name":"送信","props":[{"p":"payload"},{"p":"filename","v":"image.jpg","vt":"str"},{"p":"description","v":"テスト","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":60,"wires":[["6e77c8f9f1b209ee"]]}]
下記サイトを参考にさせていただきました。
Node-RED の JSONata で日付と時間をうまく扱える Tips – Qiita
Node-REDのフロー上に画像を表示する方法 – uepon日々の備忘録
フローの解説

メールで送信するときに必要なデータはこちらで設定。

タイムスタンプを日時に変換する処理。
$fromMillis($millis(),'[Y0001]年[M01]月[D01]日-[H01]:[m01]:[s01]','+0900')

メール本文はこのtemplateノードで設定します。

http requestノードにはネットワークにあるTS-NS410Wにアクセスします。スナップショットを取得するにはdigest認証が必要です。

こちらがメール送信ノード。

フロー上で画像を確認するには、base64ノードでバッファからBase64に変換してimage.previewノードに送信。
実行

実行するとこのように出力されます。

メールにはスナップショット画像が添付ファイルとして受け取ることができます。
まとめ
Node-REDからメール送信することで、その他のIoTデバイスとネットワークカメラを組み合わせてアプリケーションを作ることができます。