地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

今、ツイッターって何色?(ラズパイ活用#2)

トレンドの色を解析してツイートするところまで完成。

bwgift.hatenadiary.jp

 

残るは2つ

  1. 定期実行
    ただし、python3の仮想環境上で実行すること。
  2. メンテナンス
    メンテのために割り当てたれたIPを自動通告いてくれること。

これだけ実現できれば、刻々と変わる色模様を見ることができそう。というわけでまずは・・・

 

定期実行

ゴールは、cronで3時間毎実行するように登録すること。まずは、仮想環境上で実行する必要がある。shellで実行できれば大丈夫だろう、やってみる。

「仮想環境に入り → プログラム実行 → 終わり」

#!/bin/bash

/home/pi/・・・/bin/activate

cd 実行ディレクト

python myprogram.py

 

と言う具合だ。珍しく一発で成功。念の為、実行ディレクトリはテストを行っている作業ディレクトリと一緒にした。後は、crontab -eで実行登録してお終い。

 

メンテナンス

メールって意外と面倒くさかったので、今回は pushbullet を使った。pushbulletは無料だと機能制限あるけれども十分便利。便利だけど消えていきそうな気もしてドキドキもしてるけれども・・・。

 pip install pushbullet.py

でライブラリを入れておく。Tokenの取り方とか概要は例えば以下のサイトを参照。

hideack.hatenablog.com

 

後は、ipを通知するだけ。

import netifaces
import time

from pushbullet import Pushbullet
pb = Pushbullet('********************************')

time.sleep(180)

title = "My Rasberry PI"

try:
    wlan0_myip = netifaces.ifaddresses('wlan0')[netifaces.AF_INET][0]['addr']
except:
    wlan0_myip = 'No detected'

try:
    eth0_myip = netifaces.ifaddresses('eth0')[netifaces.AF_INET][0]['addr']
except:
    eth0_myip = 'No detected'

myip='wlan0:[' + wlan0_myip + '] eth0:[' + eth0_myip +']'
push = pb.push_note(title, myip)

 

悩んだのが2つsocketモジュールでは127.0.0.1が返ってきて役に立たない。そこで

、netifacesを利用した。ラズパイ3B+だと、wlan0, eth0 だけだから、決め打ちで調べて pushbullet に通知すればOK。

後は、crontab -e でスタートアップ時に実行するようにすればいいだけ。ただし、ネットワークは立ち上がる時間差がるから起動して3分後に実行するようにした。ネット接続を発見するまでループさせて待つ、という手もあるんだろうけれども、またの機会にでも考えてみようっと。

 

www.whyit.work

 

これで、再起動し動作を確認できた。

少しずつ上達できた・・・のかな。