527 Views
March 03, 25
スライド概要
Wiki Bot は, Wikiページ に書かれたスクリプトを定期的に読み込み, それに従って動作し, 実行結果をWiki ページに書き戻すものである. Wiki Bot にセンサやアクチュエータを接続することにより, Wiki Bot はIoTのエッジデバイスとしての役割を果たす. 昨年発表したPico Wiki Driver は Raspberry Pi Pico W (Pico W)で使うことができる PukiWiki の API であり, Pico BotはPico Wiki Driver を使って作成した Wiki Bot である. しかしながら, Raspberry Pi Pico WのRAMは256KByteしかなく, Pico Wiki Driverは少し動作させるとすぐにメモリが足りなくなり止まっていた. そこで, より大きなメモリを持つRaspberry Pi で Bot が使えるように, MicroPyhton で書かれていたPico Bot のプログラムをPython に書き換えた. これによりPico Botより長期間動作できるようになった. また, Raspberry Pi で獲得された画像ファイルなどをWikiのページにUploadすることもできるようになった. 現在, このWiki Botをスマート農業に利用することを検討している.
IoTのためのWiki Bot in Python 山之上卓,上野貴弘1, 天満誠也 福山大学 IPSJ IOT 68, No.54, 3/5, 2025, @奄美大島アマホームPLAZA
目次 • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに
1. はじめに 1/2 • Wiki IoT/Bot Computing – 一種の並列計算機構 – 演算装置群….Wiki Bot (Pico Bot) • IoTのエッジ端末, Raspberry Pi Pico を使って作成 – 記憶装置はインターネット上に分散配置されたWiki ページ • プログラムもデータもここに格納
1. はじめに 1/2 • IoT利用拡大 • 昨年、Pico Bot – Wiki IoT/Bot ComputingのEdge システム(Wiki Bot) – Wiki Bot として安価な Raspberry Pi Pico W を利用 • 今年、Raspberry Pi Pico -> Raspberry Pi (Java->)Micro Python -> Python この写真 の作成者 不明な作成者 は CC BYSA-NC のライセンスを許諾されています
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに
2. Wiki Iot/Bot Computing (1/2)
2. Wiki Iot/Bot Computing (2/2)
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに
3. Pico Wiki Driver • Pi Bot – Pi WでPuki Wikiのページを読む – そこに書かれたスクリプトに従って動作 – 動作結果を元のPuki Wiki のページに書き戻す. • Pico Wiki Driver (class pico_wiki_driver) – PythonでPuki Wiki のページの読み書きを行うAPI – Pi BotはPico Wiki Driver を利用
3. Pico Wiki Driver • 独自にHTMLのパーサーを作成・利用 (自分で作らなくてもSeleniumがあることはもちろん知ってますが…) • class pico_wiki_driver – def __init__(self,url,page): … オブジェクトの作成 – def set_url(self,url): … アクセスするページのURLを設定 – def set_page(self,page): … アクセスするページを設定 – def get_url(self): … 現在オブジェクトがアクセスしているURLを取得
3. Pico Wiki Driver – def get_html(self): … 現在アクセスしているページのHTMLを取得 – def get_wiki_page(self): …現在アクセスしてページの, Wiki の部分(HTML)を取得… CRUDのR – def replace_wiki_page(self,new_body): …現在アクセスしているページのWiki のソースを, 新しい Wiki のソース(new_body) で置き換える…. CRUDのUとD – def get_wiki_source(self): …現在アクセスしているページのWiki のソースを取得する…. CRUDのR
3. Pico Wiki Driver – (新) – def upload_file(self, file_dir, file_name, pass_word): … 現在アクセスしているPukiWikiのページにファイルをupload – def get_attachment_list(self): …現在アクセスしてページの添付ファイルのリストを獲得 – def delete_attachment(self,attach_name, pass_word): …現在アクセスしているページの中で指定した添付ファイルを削除 –
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに
4. Pi Bot 4.1 GUI • GUI – 初期Wikiページ – PukiWiki Admin password – 初期 read interval – 初期 exec interval – 初期 report length – Script – 実行結果
4. Pi Bot 4.2 Pi Botのスクリプト(その1) • Pi Bot – PukiWikiページに書かれたスクリプトを繰り返し実行 • スクリプトの中身 – 現URIと、そのサーバに障害が発生した場合のURI – 実行BotのID と、そのBotに障害が発生した場合のBot (未 実装) – Botがこのページを読む間隔 … command: set read_interval=<ミリ秒> – Botがこのページを実行する間隔 … command: set exec_interval=<ミリ秒> – Bot がこのページに実行結果を書く間隔 – 実行結果の最大行数 … command: set report_length=<行 数>
4. Pi Bot 4.2 Pi Botのスクリプト(その2) • スクリプトの中身(続き) – Python プログラムの記述 • command: py <プログラム名> … command: end <プログラム名> • この間の行に、py: <MicroPythonのプログラム の1行> – Python プログラムの実行 • command: run <プログラム名> – スクリプトと実行結果の切れ目 • result:
4. Pi Bot 4.2 Pi Botのスクリプト(その3) (新… 論文提出後。 Javaのversionにはあり) … 次に読むページの変更 その1(<hour>) set pageName=“h<hour>”
4. Pi Bot 4.2 Pi Botのスクリプト(その4) (新… 論文提出後, Javaのversionにはあり) … 次に読むページの変更 その1(<day>) set pageName=“d<day>”
4. Pi Bot 4.2 Pi Botのスクリプト(その5) • (新… 論文提出後, Javaのversionにはあ り) Class ページの挿入 include <URI-1> or <URI-2> …
4. Pi Bot 4.3 Exec関数を使ったPython コードの実行 • Python のexec関数でWikiのpython のプログラムをRaspberry Piで実行 • Wiki 上のPython プログラムで使え る関数 – 日時獲得、バッファクリア、行を書き込 み、バッファをWikiに書き込み
4. Pi Bot 4.3 Exec関数を使ったPython コードの実行 • (新) Wikiページの 添付ファイルのリスト獲得、 添付ファイルの削除、 Wikiページにファイルの添付
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに
利用例… スマート農業?
• 遠隔地に ある温室 にWiki Botを設置 • 最初は Wi-Fiの中 継で接続
• Wi-Fi HaLow に移行 (2025 2/25)
• Wikiのスクリプト 例:Wiki Bot 2… カメラ
• 先のページ の下の方
• 17_00.jpgを クリックすると
• Wiki Bot 1で 採取した データ
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに
6. 関連研究 • Obniz – 実行プログラムの場所:自分のPC, Java Script vs. Pico Bot … PukiWiki のMicroPython など – 実行場所:自分のPC Vs. Pico Bot … Raspberry Pi Pico W • MQTT – IoTのための標準的な通信プロトコル – Wikiページの読み書きやWikiページ上のプログラムの実行などの プロトコルではない。
6. 関連研究 • Selenium – Web Scraping の標準的なライブラリ。 – Webブラウザの利用を前提 – Wiki Bot はSeleniumを使わないことで軽量化を図っている
目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに
6. おわりに (1/2) • 昨年のPico BotをRaspberry Pi で利用可能にした。 • 添付ファイルOK • 以前のJava versionでできていたことのうち、 クラスページのinclude 時間や日付によるWikiページの制御 を復活。
6. おわりに (2/2) • もしかしたらhttps もOK? • 今後 – 閲覧制限、編集制限 – セキュリティ
• Wiki Botができること(1/3)。 – BotはWikiに書かれたスクリプトを定期的に実行 – スクリプト内に、Wiki Botで実行されるPythonのプログラムを埋め 込み可。これをWiki Pythonと呼ぶことにします – Wiki BotはWikiに実行結果を書き込み可 – Wiki Bot を実行しているRaspberry Pi に格納された画像などの データをUploadして、Wikiページの添付ファイルとして、Wiki ページ に格納可能
• Wiki Botができること(2/3) – Wiki ページの添付ファイルのリストをWiki Python が入手可能 – Wiki ページの添付ファイルをWiki Python が削除可能 – Wiki Bot のGUIで、最初に実行するWikiページを設定可能。そのと きのWikiサーバのPukiWikiのadmin passを設定可能 – Wiki Bot の起動時のオプションにより、保存された最初に実行する Wikiページなどの情報を元に、自動起動可能
• Wiki Botができること(3/3) – 次に実行するオブジェクトページの変更 … set nextPage= “…” – オブジェクトページ<hour> , <day>の置き換え – Class ページの挿入。include • 記述量の削減, • オブジェクト指向… class hierarchy
⚫ PukiWikiへのファイルのUpload機能。 ⚫ Qiita Python のプログラムでPukiWiki にファイルを Upload: https://qiita.com/takashiyamanoue/items/3d8a33 d53eae880a97b5 (ハートマークのクリック、よろしくお願いいたします)
• Qiita Wiki Bot in Python 202501 https://qiita.com/takashiyamanoue/items/eb202e3a5b4355 0d9b15 – (ハートマークのクリック、よろしくお願いいたします)
謝辞 • • • • • PukiWikiの関係者の皆様 数多くの公開情報 福山大学研究プロジェクト 福山大学生物化学科の関係者の皆様 科研費 基盤研究(C)21K11858
ちょっと宣伝 • 2025年度、前期・後期に、CGの世界的権威の西田友是先生 の講義。聴講制度で聴講可能。 – 申込期限は前期3/31、後期8/31