開発ブログ

第15回 パペロでフォルダの監視をしてみた

投稿日時:2019年3月25日 09:03

こんにちは。ピャペロンです!
今回はパペロでフォルダの監視をしてみよう!

あらかじめパペロシミュレーターを動かす環境を整えておこう。第2回 Windowsからパペロシミュレーターを動かしてみた
※実機のパペロがないとパペロでのフォルダ監視はできません。動作未確認ですがスクリプトを実行する環境のフォルダを監視してパペロに命令を送ることはできると思います。

使用するソフト
・Windows 10
・テキストエディタ(Visual Studio Code
・Google Chrome
・Python 3.6.6 ※実機で動かす場合はPython 3.4で開発しないと動作しない可能性があります。

参考
opkgでパッケージをインストールできるようになりました | PaPeRo i [非公式] Developer Forum
ファイルの更新をきっかけにコマンド実行 (python編) – Qiita


監視するフォルダが変更されると関数実行
中央ボタンで終了
このような動きを実現してみよう

パペロ実機にpythonをインストール
opkgでパッケージをインストールできるようになりました | PaPeRo i [非公式] Developer Forum
を参考にpython3をインストールしたら[python3 -m pip install watchdog]でwatchdogモジュールをインストールする。

  1. from logging import basicConfig, DEBUG, getLogger
  2. basicConfig(level=DEBUG)
  3. logger = getLogger(__name__)
  4. import sys
  5. import pypapero
  6. import time
  7. from watchdog.observers import Observer
  8. from watchdog.events import FileSystemEventHandler
  9. class Watch_Handler(FileSystemEventHandler):
  10.     def on_moved(self, event): #ファイルが移動したら
  11.         print("on_moved")
  12.     def on_created(self, event): #ファイルが作成されたら
  13.         print("on_created")
  14.     def on_deleted(self, event): #ファイルが削除されたら
  15.         print("on_deleted")
  16.     def on_modified(self, event): #ファイルが変更されたら
  17.         print("on_modified")
  18. class Watch_Papero(pypapero.Papero):
  19.     def __init__(self, simulator_id, robot_name, arg_ws_server_addr):
  20.         self.end = False
  21.         self.watch_path = "/Extension/tmp/" #監視するフォルダ
  22.         return super().__init__(simulator_id, robot_name, arg_ws_server_addr)
  23. def send_event_message(msg): #イベントメッセージを処理
  24.     if msg[0]["Name"] == "detectButton" and msg[0]["Status"] == "C": #中央ボタンが押されたら
  25.         papero.send_stop_speech()
  26.         time.sleep(0.5)
  27.         papero.send_start_speech("おやすみなさい")
  28.         papero.papero_cleanup()
  29.         papero.end = True
  30.     elif msg[0]["Name"] == "detectButton" and msg[0]["Status"] == "L":
  31.         pass
  32. if __name__ == "__main__":
  33.     simulator_id, robot_name, ws_server_addr = None, None, "ws://127.0.0.1:8088/papero"
  34.     while True:
  35.         papero = Watch_Papero(simulator_id, robot_name, ws_server_addr)
  36.         if papero.errOccurred == 0:
  37.             break
  38.         time.sleep(10)
  39.     watch = Watch_Handler() #イベントハンドラ生成
  40.     observer = Observer() #監視者の生成
  41.     observer.daemon = True
  42.     observer.schedule(watch, papero.watch_path) #イベントハンドラと監視対象の設定
  43.     observer.start() #監視スタート
  44.     papero.send_start_speech("起動が完了しました")
  45.     
  46.     while not papero.end:
  47.         message = papero.papero_robot_message_recv(None)
  48.         send_event_message(message)

監視対象フォルダにファイルを作成して、変更、削除してみよう。
設定した関数が実行されていれば成功だ!
 


0

最新開発ブログ一覧  (一覧で確認
2020年8月19日 14:08
開発ブログ
第30回 パペロで赤外線アレイセンサを動かしてみよう!【中編:顔の表面温度を測ってみよう】
by 管理者
2020年7月22日 16:07
開発ブログ
第29回 パペロで赤外線アレイセンサを動かしてみよう!【前編:簡易サーモグラフィを作ろう】
by 管理者
2019年11月20日 17:11
開発ブログ
第28回 パペロでJulius4.5を実行してみた
by 管理者
2019年11月13日 09:11
開発ブログ
第27回 JuliusをPaPeRoi向けにクロスコンパイルしてみた
by 管理者
2019年9月19日 17:09
開発ブログ
第26回Linaro Toolchainでクロスコンパイルしてみた
by 管理者

コメントは受け付けていません。