---
title: IoTのためのWiki Bot in Python
tags:  #iot #pukiwiki #bot computing  
author: [takashi yamanoue](https://www.docswell.com/user/8713651)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KJ4V81WQE1.jpg?width=480
description: 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をスマート農業に利用することを検討している.
published: March 03, 25
canonical: https://www.docswell.com/s/8713651/5MX9MJ-2025-03-03-154605
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KJ4V81WQE1.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE132GYLJG.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GEWPRKGQJ2.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47ZKRZL373.jpg)

1. はじめに 1/2
• IoT利用拡大
• 昨年、Pico Bot
– Wiki IoT/Bot ComputingのEdge
システム(Wiki Bot)
– Wiki Bot として安価な
Raspberry Pi Pico W を利用
• 今年、Raspberry Pi Pico
-&gt; Raspberry Pi
(Java-&gt;)Micro Python -&gt; Python
この写真 の作成者 不明な作成者 は CC BYSA-NC のライセンスを許諾されています


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ6QRZWZJV.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ5R8WM974.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/9E2DKQ95ER.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/D7Y2NW467M.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VEN8X961J8.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/Y79K82LY73.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/G78R85XKED.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/L7LKRY8PER.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EM2RN62EW.jpg)

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


# Page. 14

![Page Image](https://bcdn.docswell.com/page/PERMRDP579.jpg)

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


# Page. 15

![Page Image](https://bcdn.docswell.com/page/P7XVR13XJX.jpg)

4. Pi Bot
4.2 Pi Botのスクリプト（その１）
• Pi Bot
– PukiWikiページに書かれたスクリプトを繰り返し実行
• スクリプトの中身
– 現URIと、そのサーバに障害が発生した場合のURI
– 実行BotのID と、そのBotに障害が発生した場合のBot (未
実装)
– Botがこのページを読む間隔 … command: set
read_interval=&lt;ミリ秒&gt;
– Botがこのページを実行する間隔 … command: set
exec_interval=&lt;ミリ秒&gt;
– Bot がこのページに実行結果を書く間隔
– 実行結果の最大行数 … command: set report_length=&lt;行
数&gt;


# Page. 16

![Page Image](https://bcdn.docswell.com/page/37KQR2Y97D.jpg)

4. Pi Bot
4.2 Pi Botのスクリプト（その２）
• スクリプトの中身（続き）
– Python プログラムの記述
• command: py &lt;プログラム名&gt; … command:
end &lt;プログラム名&gt;
• この間の行に、py: &lt;MicroPythonのプログラム
の1行&gt;
– Python プログラムの実行
• command: run &lt;プログラム名&gt;
– スクリプトと実行結果の切れ目
• result:


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LJ3P849975.jpg)

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


# Page. 18

![Page Image](https://bcdn.docswell.com/page/8JDLMQG87G.jpg)

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


# Page. 19

![Page Image](https://bcdn.docswell.com/page/VEP2RL3WE8.jpg)

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


# Page. 20

![Page Image](https://bcdn.docswell.com/page/27VDRQ497Q.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/5JGYMW14JL.jpg)

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


# Page. 22

![Page Image](https://bcdn.docswell.com/page/47QMR3DREP.jpg)

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


# Page. 23

![Page Image](https://bcdn.docswell.com/page/KE4V81ZQ71.jpg)

利用例… スマート農業？


# Page. 24

![Page Image](https://bcdn.docswell.com/page/L7132GRLEG.jpg)



# Page. 25

![Page Image](https://bcdn.docswell.com/page/G7WPRK1QE2.jpg)

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


# Page. 26

![Page Image](https://bcdn.docswell.com/page/4JZKRZP3J3.jpg)

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


# Page. 27

![Page Image](https://bcdn.docswell.com/page/YE6QRZMZEV.jpg)

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


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GE5R8WZ9J4.jpg)

• 先のページ
の下の方


# Page. 29

![Page Image](https://bcdn.docswell.com/page/972DKQR57R.jpg)

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


# Page. 30

![Page Image](https://bcdn.docswell.com/page/DJY2NWD6JM.jpg)

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


# Page. 31

![Page Image](https://bcdn.docswell.com/page/V7N8X9N1E8.jpg)

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


# Page. 32

![Page Image](https://bcdn.docswell.com/page/YJ9K82RYJ3.jpg)

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


# Page. 33

![Page Image](https://bcdn.docswell.com/page/GJ8R85WK7D.jpg)

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


# Page. 34

![Page Image](https://bcdn.docswell.com/page/LJLKRYNP7R.jpg)

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


# Page. 35

![Page Image](https://bcdn.docswell.com/page/47M2RNX27W.jpg)

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


# Page. 36

![Page Image](https://bcdn.docswell.com/page/P7RMRDN5J9.jpg)

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


# Page. 37

![Page Image](https://bcdn.docswell.com/page/PJXVR1NXEX.jpg)

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


# Page. 38

![Page Image](https://bcdn.docswell.com/page/3JKQR2N9JD.jpg)

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


# Page. 39

![Page Image](https://bcdn.docswell.com/page/LE3P84V9J5.jpg)

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


# Page. 40

![Page Image](https://bcdn.docswell.com/page/8EDLMQ88JG.jpg)

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


# Page. 41

![Page Image](https://bcdn.docswell.com/page/V7P2RL8W78.jpg)

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


# Page. 42

![Page Image](https://bcdn.docswell.com/page/2JVDRQN9JQ.jpg)

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


# Page. 43

![Page Image](https://bcdn.docswell.com/page/5EGYMWK4EL.jpg)

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


