環境のレポートをLINEに定時通報する装置

【1】LINEへデータを送るための各種の設定           (2025年5月 by Tokio Yamada)

(1) LINE公式アカウントとアセストークンの獲得について
 この端末(SLO)は、
温度・湿度・気圧の環境情報を計測し、設定している時間に自動でLINEへ送信します。従来、LINEへの通信は「LINE Notify」というものが有りましたが、これは2025年3月31日でサービスが終了しました。このような、端末から個人のアカウントに対してメッセージを送るということは、従来から有る「LINE公式アカウント」に統合されて、資源の効率化をはかり、長期に運用していくということになったようです。私は「LINE Notify」を利用していましたが、これを機にLINE公式アカウントへ移行しました。
 したがってまずこのLINE通信を利用するに当たっては、
「LINE公式アカウント」の獲得と、獲得したアカウントに対する端末からのデータ送信に必要な「チャンネルアクセストークン(長期)」の取得をまずは実行してください。ご自分のLINE公式アカウントを開設すると、スマホの場合、開設時に、ご自分が設定したアカウント名称が、スマホに現れます(右図の上方、ぼかし部)。

 これらについての情報は、「LINE公式アカウント」 「チャンネルアクセストークン」をキーワードに WEBで検索すると数多くヒットしますので、詳しい解説を見る事ができます。
 ただ、注意点として、「チャンネルアクセストークン」も区別があり、種類によって有効期限が異なりますので、長期のチャネルアクセストークン(無期限)を取得して下さい。このトークンであれば、安心してこの通信を長期にわたって運用していけます。このチャンネルアクセストークンの文字列はとても長いです。私の場合は、172文字もありました。しっかりコピーして、別途のファイルにメモとして記録しておいてください。
 無料で送信できるメッセージは、
月に200通までです。それを超える送信をしたい場合は有償となります。無償で運用している時に、制限を超えるメッセージを送出すると、送出そのものは実行できますが、先方には届きません。ただし、月が変わると、また200通の資格が得られますので、また、送ることができるようになります。たとえば、上図のスマホ画面のように「定時通報」で、1日に4通を、自分のアカウントだけに送っている場合は、最大で月に 31x 4 = 124通 となり、まったく問題なく運用して行けます。一つのメッセージを3箇所に送出するようにLINE公式アカウントで設定すると、1メッセージのカウントは、3となり、月換算では200を超えますので、ご注意ください。上の図は、自分のアカウントのみに、1日に4通(6時間おき)、送っている様子です。

(2) 重要データ(SSID, Pass Word, Token) の登録
 この端末(SLO)は、コントローラに「Raspberry Pi Pico W」を使っています。インターネットへの通信は WiFi を経由して行います。WiFi に接続するための SSID や Pass Word 、それに LINEに送出するときに必要なチャンネルアクセストークンなどをこの端末に登録する必要があります。一般的にはスケッチ(ソースコード)に書き込んでいますが、この端末では、コンパイルしたりしなくても、どなたでも
すぐに使えるようにするために、Flashにファイルとして保存します。その用途に使用するための Windowsパソコンで使用できる、シリアル通信による設定用アプリを制作いたしました。ここからそれをセットアップするファイルをダウンロードして下さい。ZIPファイルです。
 この ZIPファイルを解凍してください。解凍すると「SetupSLOE」 というフォルダが現れます。フォルダの中には、setup.exe と SetupSLOE.msi という二つのファイルが現れます。インストールするには、この setup.exe をSetupSLOE.msi がある場所でダブルクリックして起動してください。実行後、ディスクトップにショートカットが作られていますので、管理できる所に保管してください。起動すると下図の初期画面が現れます。

端末(SLO)のラズパイPicoWのUSBとパソコンのUSBを接続します(左中図・参照)。接続する時に、
先に端末のSETボタン()を押しながらパソコンに接続し、そのままSETボタンを押し続けて下さい。やや面倒ですが重要項目ですので、そのようにしています。端末の表示器「重要データの編集モードです。PCのアプリを起動してください」と表示(左中図) されましたら、SETボタンを離して良いです。つまり、端末の電源が投入される時、SETスイッチが5秒以上押されていたら、端末の編集モードに入るようにしています。もし、別のメッセージが出たら、この「重要データの編集モード」に入り損ねたので、USBを抜いて、再度、SETボタンを押したまま USBへ挿入し、下図のメッセージが出るまで SETボタンを押し続けて下さい。
 次に、アプリのPORTのドロップダウンリストから端末が接続されているポートを選択します。どのポートが端末であるかは、デバイスマネージャーなどで確認しておいて下さい。または、端末を接続する前のドロップダウンリストに、接続した後に追加されたポートがあれば、それがそのPORTになります。
 PORTでその端末のCOMを選択して「接続」ボタンをクリックするとアプリ右上の通信モニターが
「COMM ON」となり、明るい緑となります(左下図・参照) ので、重要データの通信モードに接続されたことが確認できます。

 まずは「基本設定」です。ここで
「WiFiのSSID」「Pass Word」「LINEのチャンネルアクセストークン(長期)」を記入してください。各テキストボックスの上で右クリックすると「貼り付け」のメニューが出ますので、別途、保存していたものをコピーして張り付けると良いと思います。
全項目を記入されたら、
「端末への書き込み」ボタンをクリックして書き込みます。これで基本設定は完了しました。後のために、この内容を「名前を付けて保存」ボタンでパソコン内に保存(例:secrets.dat)しましょう。拡張子は「.dat」としています。ご自分に分かり易い名前を付けて保存してください。この保存したものは「ファイルを読み出す」ボタンで読み出すこともできますし、また「端末から読み込み」ボタンで読み出したものを「ファイルとテキスト群の照合」ボタンでベリファイすることもできます。

 次に、基本設定の下は「定時通報の設定」です。アプリ画面の【例1】【例2】の説明の様に(クリックで拡大表示) 設定はシンプルです。スピンボタンの増加・減少ボタンを操作して、所要の値にしてください。最後に「端末への書き込み」ボタンで端末に設定します。今、端末に設定しているものを「端末から読み込み」ボタンで読み込み・表示しますと確認もできます。なお、この「定時通報の設定」は、端末を実際に稼働している時に、アプリを使わず、端末の下部にある[ SET・⇧・⇩ ]の、3つのボタンでも変更できます。この操作の詳細は後述します。
 以上で、設定は終了です。USBを抜いて電源を入れ直せば、稼働状態に移ります。なお、この端末の特徴としては、どの項目に対しても
「決してあきらめない」という事で、どこまでも再試行(Retry)をします。例えば、WiFiのパスワードが間違っていたとしても永久に再試行を繰り返します。その場合は、この「重要データの編集モード」で、再確認をお願いします。ただ2~3回の再試行は、やった方が良いと思います。この再試行(Retry)は、時刻の取得やLINEへの送出についても同様です。問題があっても繰り返し再試行します。再試行が限度を超えると、端末そのものを再起動して、始めから作業を進めるようになっています。例えばLINEで送出を失敗して、端末が再起動された場合でも、その失敗フラグをFlashに記録していますから、LINEの送出が完了するまで再試行します。

 さて、「WiFiのSSID」「Pass Word」についてですが、パソコンでは問題なく使えていても、
ラズパイ Pico W では使えない場合があります。例えば、日本語文字が一部に使われていたり、Pass Wardに特殊文字(セミコロン ; $ ^* )が使われていると WiFiに接続できないことがあります。文字数については問題ありませんが、文字そのものは平易な英数字であることが望まれますので、もし問題がありましたら、これを参考にして変更して見てください。パソコンやタブレット・スマホなどの情報機器では、SSID, Pass Word の処理は本格的ですが、Raspberry Pi Pico W では対応していないこともあります。


【2】各動作の画面と操作について

(1) WiFi への接続
 電源が入ると、まず、左側の画面が表示されます。20秒待機し、接続できなかったら、右側の画面を表示して、端末そのものを再起動します。調子の良い時は、直ぐに接続されますが、どういう訳か調子の悪い時は、2~3回再起動することもありますので待ってみて下さい。もし、SSID や Pass Wordが違っていれば、永久にこれを繰り返します。その場合は、上記の「重要データ編集」で再確認してください。また、【1】の章の最後に記入している「ラズパイ Pico W では使えない場合があります」についてもチェックして見てください。私は、そういうアクセスポイントに一度、出会いました。

(2) 時刻の取得
 WiFiの接続が完了すると、この時刻の取得に入ります。一般的なSNTPサイトを5箇所登録しています。通常は直ぐに取得できますが、ウマク行かない場合は、次のサイトにアクセスします。この5個のサイトを全て試してもダメな場合は、端末そのものを再起動し、また、上記のWiFiの接続から、順次、この時刻の取得に来ます。いずれにしても、この(1),(2)を通過しないと本番には入れません。この過程は、電源投入後の初回の時刻の取得です。ラズパイPicoWの内臓の時計である RTCは、専用のものに比較すれば、それほど精度は宜しくないので、時々、校正する必要があります。そのために以下の2点の動作が組み込まれています。

1. 自動による1日に1回の時刻の取得(校正)
 校正のため内部で0時12分に時刻の取得をしています。半端な時刻は、サイトの輻輳を避けるためです。
2. 手動による時刻の取得
 稼働中に
DOWN(⇩)のスイッチを2秒以上押すと、直ちに時刻の取得動作を実行して校正します。

(3) LINEへのメッセージ送出
 この動作に入るのには3つの要因があります。いずれかの条件により、メッセージをLINEに送出します。
1. 手動による送出
 
UP(⇧)のスイッチを2秒以上押すと、直ちにメッセージを送出します。
2. 定時通報の条件成立による送出
 「起点時間の設定」と「間隔の設定」で決まる時間に、自動的にLINEに送出
  します。
3. 再送出フラグによる送出
  色んな要因により、LINEの送出が失敗した時は、
Flashメモリにその状況を書き込み、端末そのものを再起動します。再起動されて上記の(1),(2)を再実行した後、そのFlashメモリを読み込み、前回、送出が失敗していたら、このフラグによって再送出を試みます。送出が完了しない限り、このフラグはクリアされませんから、諦めずに再送出を繰り返します。

 左図の下は、無料のLINE送出は、200通までですが、そのリミットに達した時に送られてくるメッセージを表示しています。このメッセージが出たら、送ったものは送り先には届いていません。月が変わるまで待つか、有料に切り替えるしかありません。

(4) 定時通報の設定
 稼働中に
SETスイッチ()を5秒以上押すと、定時通報のTmStartとTmIntevalの編集モードに入ります。
 最初は、()「起点時間の設定」で、現に設定されている数値が表示されます。
UPスイッチで5ステップずつ数値が増えていきます。初めはゆっくりですが、長く押していると速くなります。DOWNスイッチで5ステップずつ数値が減っていきます。初めはゆっくりですが、長く押していると速くなるのは同じてす。目的とする数値になったら、次の「間隔の設定」に入るためにSETスイッチ()を2秒以上押して下さい。この間隔時間も、現に設定されている数値が表示()されます。これも上記と同様のやり方で変更できます。これらの設定が完了したら、SETスイッチ()を2秒以上押すと、これらの数値を端末に登録するか、または廃棄するかの選択画面()となります。UPスイッチが登録る、DPWNスイッチが廃棄するになります。単に確認するためだけであれば、DOWNスイッチを押せばOK()です。編集した数値を端末に登録する場合は、UPスイッチを押すとの表示となり、端末に保存されます。

(5) 通常の稼働中の表示

通常の稼働中は左図の表示をしています。
つまり、リアルタイムで現在の日付・時分秒を表示し、さらに温度・湿度・気圧を表示しています。

これらの情報は、常に測定しているので、「LINEへのメッセージ送出」の要因に、これらの変化を取り入れれば、
環境変化の警報機を構成することが可能ですので、是非、挑戦してみてください。少々スケッチ(ソース)を変更し再コンパイルする必要はありますが、可能です。



【3】開発環境とスケッチおよびハードウェア

(1) 開発環境とスケッチ

 Arduino-IDE 2.3.3 を利用させていただいております。
スケッチは、SendingLineOfficial7.ino, LGFX_ST7735.h, WR_FileSystem.h, WiFi_Ntp_Line.h の4つのファイルに分かれています。一つのファイルにまとめることもできますが、返って見通しが悪くなってしまうので、大方の機能別に'.h'ファイルとして分けました。この4つのファイルは、SendingLineOfficial7.ino と同じフォルダーに入れて下さい。すべてのスケッチ群を「SendingLineOfficial7」フォルダに入れて、
ここに置いております。


メニュー・ツールで・・・
  1. ボード:Raspberry Pi Pico W
  2. ポート:"COMx"(接続されているポート)
 
 3. Flash size:"2MB (Sketch:1984KB, FS:64KB)"
・・・ の設定をして下さい。
File System(FS)は、64KBも必要ないのですが、File Systemの最小の選択肢がこれなので止むを得ないです。
この設定(3)を忘れると、コンパイルはできますが動作しませんので注意の事(クリックで図は拡大表示)。
スケッチ内でmain 以外のファイルは#include されていますので、Arduino-IDE のエディタには、タブとして全て表示されます。上図はその様子です。

 ダウンロードファイルに含まれていますが、main部だけ下記に示します。


(2) ハードウェア

 下図は稼働している端末(SLO)の写真で、右は回路図(クリックで拡大)です。

使用部品のリスト
・ Raspberry Pi Pico W
・ ST7735S 1.8インチ フルカラー128×160 TFT LCDディスプレイモジュール
・ BME-280 高精度大気圧・温度・湿度センサー基板
   上記の3点は Amazonや他から購入できます。
・ LEDライト 3mm,、抵抗330Ω、,タクトスイッチ x 3、セラミックコンデンサ 10μF、
            DC5V用ソケット プラグ外径:5.5mm,内径:2.1mm、スペーサ x 4

この端末(SLO)は、
ここにて、フル実装版(動作確認済み)と簡易実装基板版としてご提供致しています。
なお、端末のデータを出荷状態に戻すには、電源投入時にSET, ⇧, ⇩ のスイッチ3点を同時に5秒間押し続けます。WiFi SSID, Pass Word, Token, TmStart, TmInteval などが初期化されます。その後、重要データ編集モードに移行します。全くのデータの初期化ですので面倒にしています。

WiFi さえ有れば、現場の環境(温度・湿度・気圧)の報告を定期的に入手することができます。少し、ファームウェアを改造すれば、例えば気温が設定値を超えた時や、または下がった時にLINEにメッセージを送出する警報機とすることもできます。よろしければ御活用ください。

汎用製品通販のページへ      USB-IOのページに戻 る        TOPへ