IoTのためのWiki Bot in Python

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をスマート農業に利用することを検討している.

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

IoTのためのWiki Bot in Python 山之上卓,上野貴弘1, 天満誠也 福山大学 IPSJ IOT 68, No.54, 3/5, 2025, @奄美大島アマホームPLAZA

2.

目次 • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに

3.

1. はじめに 1/2 • Wiki IoT/Bot Computing – 一種の並列計算機構 – 演算装置群….Wiki Bot (Pico Bot) • IoTのエッジ端末, Raspberry Pi Pico を使って作成 – 記憶装置はインターネット上に分散配置されたWiki ページ • プログラムもデータもここに格納

4.

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 のライセンスを許諾されています

5.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに

6.

2. Wiki Iot/Bot Computing (1/2)

7.

2. Wiki Iot/Bot Computing (2/2)

8.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに

9.

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 を利用

10.

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を取得

11.

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

12.

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): …現在アクセスしているページの中で指定した添付ファイルを削除 –

13.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに

14.

4. Pi Bot 4.1 GUI • GUI – 初期Wikiページ – PukiWiki Admin password – 初期 read interval – 初期 exec interval – 初期 report length – Script – 実行結果

15.

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=<行 数>

16.

4. Pi Bot 4.2 Pi Botのスクリプト(その2) • スクリプトの中身(続き) – Python プログラムの記述 • command: py <プログラム名> … command: end <プログラム名> • この間の行に、py: <MicroPythonのプログラム の1行> – Python プログラムの実行 • command: run <プログラム名> – スクリプトと実行結果の切れ目 • result:

17.

4. Pi Bot 4.2 Pi Botのスクリプト(その3) (新… 論文提出後。 Javaのversionにはあり) … 次に読むページの変更 その1(<hour>) set pageName=“h<hour>”

18.

4. Pi Bot 4.2 Pi Botのスクリプト(その4) (新… 論文提出後, Javaのversionにはあり) … 次に読むページの変更 その1(<day>) set pageName=“d<day>”

19.

4. Pi Bot 4.2 Pi Botのスクリプト(その5) • (新… 論文提出後, Javaのversionにはあ り) Class ページの挿入 include <URI-1> or <URI-2> …

20.

4. Pi Bot 4.3 Exec関数を使ったPython コードの実行 • Python のexec関数でWikiのpython のプログラムをRaspberry Piで実行 • Wiki 上のPython プログラムで使え る関数 – 日時獲得、バッファクリア、行を書き込 み、バッファをWikiに書き込み

21.

4. Pi Bot 4.3 Exec関数を使ったPython コードの実行 • (新) Wikiページの 添付ファイルのリスト獲得、 添付ファイルの削除、 Wikiページにファイルの添付

22.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pi Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに

23.

利用例… スマート農業?

25.

• 遠隔地に ある温室 にWiki Botを設置 • 最初は Wi-Fiの中 継で接続

26.

• Wi-Fi HaLow に移行 (2025 2/25)

27.

• Wikiのスクリプト 例:Wiki Bot 2… カメラ

28.

• 先のページ の下の方

29.

• 17_00.jpgを クリックすると

30.

• Wiki Bot 1で 採取した データ

31.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 利用例 • 6. 関連研究 • 7. おわりに

32.

6. 関連研究 • Obniz – 実行プログラムの場所:自分のPC, Java Script vs. Pico Bot … PukiWiki のMicroPython など – 実行場所:自分のPC Vs. Pico Bot … Raspberry Pi Pico W • MQTT – IoTのための標準的な通信プロトコル – Wikiページの読み書きやWikiページ上のプログラムの実行などの プロトコルではない。

33.

6. 関連研究 • Selenium – Web Scraping の標準的なライブラリ。 – Webブラウザの利用を前提 – Wiki Bot はSeleniumを使わないことで軽量化を図っている

34.

目次 • 何を作ったか? …Pico Bot • 1. はじめに • 2. Wiki Iot/Bot Computing • 3. Pico Wiki Driver • 4. Pico Bot • 5. 開発中の障害 • 6. 関連研究 • 7. おわりに

35.

6. おわりに (1/2) • 昨年のPico BotをRaspberry Pi で利用可能にした。 • 添付ファイルOK • 以前のJava versionでできていたことのうち、 クラスページのinclude 時間や日付によるWikiページの制御 を復活。

36.

6. おわりに (2/2) • もしかしたらhttps もOK? • 今後 – 閲覧制限、編集制限 – セキュリティ

37.

• Wiki Botができること(1/3)。 – BotはWikiに書かれたスクリプトを定期的に実行 – スクリプト内に、Wiki Botで実行されるPythonのプログラムを埋め 込み可。これをWiki Pythonと呼ぶことにします – Wiki BotはWikiに実行結果を書き込み可 – Wiki Bot を実行しているRaspberry Pi に格納された画像などの データをUploadして、Wikiページの添付ファイルとして、Wiki ページ に格納可能

38.

• Wiki Botができること(2/3) – Wiki ページの添付ファイルのリストをWiki Python が入手可能 – Wiki ページの添付ファイルをWiki Python が削除可能 – Wiki Bot のGUIで、最初に実行するWikiページを設定可能。そのと きのWikiサーバのPukiWikiのadmin passを設定可能 – Wiki Bot の起動時のオプションにより、保存された最初に実行する Wikiページなどの情報を元に、自動起動可能

39.

• Wiki Botができること(3/3) – 次に実行するオブジェクトページの変更 … set nextPage= “…” – オブジェクトページ<hour> , <day>の置き換え – Class ページの挿入。include • 記述量の削減, • オブジェクト指向… class hierarchy

40.

⚫ PukiWikiへのファイルのUpload機能。 ⚫ Qiita Python のプログラムでPukiWiki にファイルを Upload: https://qiita.com/takashiyamanoue/items/3d8a33 d53eae880a97b5 (ハートマークのクリック、よろしくお願いいたします)

41.

• Qiita Wiki Bot in Python 202501 https://qiita.com/takashiyamanoue/items/eb202e3a5b4355 0d9b15 – (ハートマークのクリック、よろしくお願いいたします)

42.

謝辞 • • • • • PukiWikiの関係者の皆様 数多くの公開情報 福山大学研究プロジェクト 福山大学生物化学科の関係者の皆様 科研費 基盤研究(C)21K11858

43.

ちょっと宣伝 • 2025年度、前期・後期に、CGの世界的権威の西田友是先生 の講義。聴講制度で聴講可能。 – 申込期限は前期3/31、後期8/31