ブログだった何か

ジーナちゃん専門ブログ

Raspberry Pi 3:botを回す crontab編

Raspberry Pi3でbotを回してみます。
今回は1時間毎にランダムにSlackで「んあー」するbotを入れてみます。

f:id:djtaimi:20170131001845p:plain

実行ファイルである「tweet.py」を定期的に起動するため、crontabを使います。


Raspberry Pi3のターミナルを使用。
crontab -e でcrontabの編集画面に映ります。

$sudo crontab -e


「crontab -eは使うな」というエントリをいくつか見ました。
間違えて「crontab -r」と打つとリセットされてしまうからだそうです。
とりあえず「crontabe」と打てばできるように、エイリアスを作ります。

$alias crontabe='sudo crontab -e'


これで「crontabe」と打てば編集画面に入れます。
ゴチャゴチャ出てきますが、一番下に追記していくだけです。
フォーマットは以下のとおりです。

分 時間 日 月 曜日 実行コマンド


上記に数字を入れていきます。
「曜日」は0と7を日曜日として、月〜土が1〜6にあたります。
例えば平日の1時間毎に「python3 /home/pi/nnabot/tweet.py」を実行する場合ですと

0 * * * 1-5 python3 /home/pi/slackbot/tweet.py

になります。
指定方法はシンプルで、30分毎で刻む場合は*/30、10分から20分まで2分毎の場合は10-20/3など。時間や月日、曜日でも同じです。
(上の例では曜日が1-5→月曜日〜金曜日までが指定されています)


今回は毎時30分ごとに投稿させたいので、このようになります。

*/30 * * * * python3 /home/pi/slackbot/tweet.py


ところが実行されません。
python3の場所(/usr/bin/)を書いてもう一度…

*/30 * * * * /usr/bin/python3 /home/pi/nnabot/tweet.py


が…ダメっ…


どうやらプログラム内で指定しているファイルの相対パスも書き直さなければならないようです。
cronを絶対パスで書くのは全然構いませんが、中身まで絶対パスで書き直すのは嫌です。


そこで色々試してみて…cdでプログラムのフォルダまで移動してから、実行する方法に落ち着きました。

*/30 * * * * cd /home/pi/nnabot/tweet.py;python3 tweet.py

f:id:djtaimi:20170131001916p:plain

とりあえずこれで動かすことにします。

Raspberry Pi3 Model B購入&初期設定

botを回すスペースがなくなってきたので、Raspberry Piを買いました。

0.必要だったものとか

f:id:djtaimi:20170128235618j:plain

Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab(5,780円)
本体+ケースなど。
とりあえずケースがあれば十分です。

東芝 Toshiba 超高速U3 4K対応 microSDHC 32GB(1,780円)
microSDカード。
おすすめ商品によく出てくるTranscend製品は、相性が悪いらしいのでパス。
いざというときに見つからないSDカードのアダプタ付き。

GCF318S-0530(1,980円)
5V 3AのACアダプタ。安定して運用するために必須。

その他
USB接続のキーボードとマウス
HDMIケーブル
HDMI接続に対応したモニタ

言うまでもなく、OSファイル作成のためにPCが必要です。
SDカードスロットがない端末ですと、カードリーダーが別途必要になります。
導入からリモート操作までMacbook Pro(OS X 10.11.6 El Capitan)で行っています。


1.SDカードのフォーマット

SDカードを接続し、「ディスクユーティリティ」を起動。
フォーマットタイプはMS-DOS(FAT)を選択。
「消去」でフォーマットし、「アンマウント」でマウントを解除しておきます。

f:id:djtaimi:20170128235727j:plain


2.OSファイルのダウンロード&展開

OSをインストール。
raspbianが有名みたいなので、早速ダウンロードしました。
https://www.raspberrypi.org/downloads/raspbian/

フルバージョンと、デスクトップや多くのアプリケーションが省かれたlite版があります。
lite版で十分な気もしますが、せっかくなのでフルバージョンをダウンロードしています。
ドチャクソ時間がかかるので、気長に待ちます。

ダウンロードしたzipファイルのファイル名(拡張子含めて)をコピー。

2017-01-11-raspbian-jessie.zip


ユーザーフォルダにzipファイルを移動し、tar -xfコマンドで展開。
ファイル名はさっきコピーしたものをそのまま貼ります。

$ tar -xf 2017-01-11-raspbian-jessie.zip

「2017-01-11-raspbian-jessie.img」が生成されると思います。


3.SDカードへ書き込み

diskutil listコマンドで、SDカードのパスを確認。

$ diskutil list


f:id:djtaimi:20170128235859j:plain

/dev/disk2 がそれみたいです。


先ほど解凍して出てきたimgのファイル名を(拡張子含めて」コピー。

2017-01-11-raspbian-jessie.img


「dd」コマンドで、SDカードにimgファイルを書き込み。

$ sudo dd bs=1m if=2017-01-11-raspbian-jessie.img of=/dev/rdisk2

「bs=1m」はブロックサイズの指定、「if=2017-01-11-raspbian-jessie.img」は先ほど解凍したファイル名、
「of=/dev/disk2」は「diskutil list」で調べたパスを表します。
disk2で書き込んだので40分ぐらい待たされました。
パスは間違えないように注意してください。


f:id:djtaimi:20170129000002j:plain
これでインストール完了。


4.raspberry piの起動&初期設定

raspberry piにマウスとキーボード、HDMIケーブルを接続。
インストールしたSDカードを挿して、ACアダプタを接続すれば起動します。
少し時間がかかりますが、画面が映れば成功。

f:id:djtaimi:20170129000520j:plain

画面が映らない場合は、電源を抜いてSDカードを挿し直します。
画面が映らず、赤ランプしか点灯していない場合は、インストールに失敗しています。

これからのコマンド操作は、特に記載がない限りraspberry piで行います。

起動したらまず、パッケージを更新しておきます。
左上にターミナルなアイコンがあるので、すぐにわかるかと思います。

$ sudo apt-get update
$ sudo apt-get upgrade


5.ssh接続

SSHはリモート接続でよく用いられるプロトコルです。
Raspbianは昨年11月のアップデートより、sshの設定がデフォルトで無効になりました。
bootフォルダに「ssh」という空ファイルを作成してから起動すれば、以降sshが常時有効になるそうです。
bootフォルダはルートにあります。

$ sudo touch /boot/ssh

と入力。
ルートの「boot」ディレクトリにsshという空ファイルが作成されます。
そのまま再起動し、「パスワードが初期状態のままです」という感じの警告が表示されれば導入完了。

これってわざわざマウスキーボードとか繋がなくても、PCであらかじめ追加しとけばいいんじゃないかな…と思っていますが試していません。

次にipを設定しましょう。

$ ifconfig

IPアドレスを確認し、macのターミナルで

$ ssh pi@192.168.0.0 ←ifconfigで調べたIPアドレス

を入力。
初接続で警告が出るので、Yesを選択で完了。
以降、macで上記のsshコマンドを使用すれば、raspberry piの遠隔操作ができます。


6.VNC接続

GUI操作がしたくて画面を見たくなることがあると思うので、
VNC(Virtual Network Computing)を用いて、macのfinderからraspberry piの画面を表示できるようにします。
tightvncserverを用います。

$ sudo apt-get install tightvncserver


インストールが終わったら起動します。
初回起動時はパスワードの設定をします。(アクセスするときに必要)

$ tightvncserver


もう一回起動し、以下のような表示になれば成功です。

pi@raspberrypi:~ $ tightvncserver

New 'X' desktop is raspberrypi:1

Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:1.log


MacのFinderを開き、command+kを押して「サーバへ接続」画面を開きます。
アドレスに「vnc://さっき調べたipアドレス:5901」を入力し、「接続」を押します。

f:id:djtaimi:20170129094032j:plain


パスワードを入力し、無事に表示されれば成功です。

f:id:djtaimi:20170129094609j:plain


もう一度tightvncserverを実行すると、2つめの画面が表示できるようになります。

pi@raspberrypi:~ $ tightvncserver

New 'X' desktop is raspberrypi:2

Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:2.log

アドレスはさっき「:5901」だったのが1増えて「:5902」になります。
複数の画面展開もできると思います。

画面を消すには「-kill」オプションを使います。
「:2」で2つ目の画面が消せます。

$ tightvncserver -kill :2


7.sambaの導入

このままではファイルのやりとりが非常に面倒なので、sambaを用いてmacのfinderから開けるようにします。
まずはsambaをインストールします。

$ sudo apt-get install samba


nanoで「/etc/samba/smb.conf」を編集します。

$ sudo nano /etc/samba/smb.conf


ファイルの最後に以下を追記します。

[raspi]
path = /
read only = No
guest ok = No
force user = pi


command+o→Enterで上書き保存した後、command+xで終了できます。


次に、ユーザーを追加します。

$ sudo smbpasswd -a pi


パスワードの設定をすれば、piとしてログインできるようになります。
あとはvncと同じです。
Finderからcommand+kを押して、アドレスに「smb://IPアドレス」を入力。
先ほど設定したユーザー名(pi)とパスワードを入力すれば、入れるようになります。

f:id:djtaimi:20170129101752j:plain

気軽にrootに繋げちゃうのも問題だと思うので、
smb.confで追記した「path」を「/home/pi」にした方がいいかもです。


8.IPアドレスの固定

再起動時でも同じIPアドレスで接続できるようにします。
nanoで「/etc/dhcpcd.conf」ファイルを編集します。

$ sudo nano /etc/dhcpcd.conf


ファイルの最後に以下を追記します。

interface wlan0
static ip_address=192.168.0.0 ←ifconfgで調べたIPアドレス
static routers=192.168.0.0 ←ルーターIPアドレス
static domain_name_servers=192.168.0.0 ←DNSアドレス


IPアドレスMac環境設定の「ネットワーク」→「詳細」から確認できます。

f:id:djtaimi:20170129103359p:plain


これでようやく遊べるようになりました。

9.参考になったサイトなど

qiita.com

vivibit.net

www.8yazaki.jp

qiita.com

IIDX:SINOBUZ 3

■中伝

One More Lovely(A)
four pieces of heaven(A)
Dynamite(A)
Flashes(A)

待望(?)のFlashesとDynamiteが降臨。
でも思ってた段位とちょっと違った…。
Dynamiteが割とマジで空気。増えも減りもしない。いてもいなくても変わらない…。
Flashesだけ頑張れば取れる。

てかfour pieces of heavenなんなんだよオマエ。空気かと思ってたのにドチャクソ難しい。

ニューダンガンロンパV3:『絶望のダンジョン モノクマの試練』クリア

f:id:djtaimi:20170119001507j:plain

『絶望のダンジョン モノクマの試練』クリアしました。
大味ですが育成が短時間で終わるので、ついつい色んなキャラで遊びたくなってしまう素敵なモードだと思います。

続きを読む

ニューダンガンロンパV3: ラブホイベント

V3はクリア後のおまけが充実しています。
カクレモノクマや裏ルート探索などのやり込み要素も含めると、かなりのボリュームです。
2は100時間以上遊んだのですが、今作はどうなることやら。


f:id:djtaimi:20170117122754j:plainどれから遊べばいいのかな?
ゴン太バカだからわからないよ!


となりがちなので、1つずつ触れていこうかと思います。

続きを読む

ニューダンガンロンパV3: 「絶望のデスロード」の秘密

f:id:djtaimi:20170115230513j:plain
ニューダンガンロンパV3』では、最序盤から「絶望のデスロード」という横スクロールACTのミニゲームがプレイできます。
あまりにも理不尽な難度を誇り、絶対にクリアできないように見えますが、「理論上」はクリア可能だそうです。

先に言ってしまうと、クリアしてもバッドエンドになってしまうのですが、
クリア特典として、モノパッドのテーマとモノクマメダルx100を貰えます。

正当な手段ではないですが、一応簡単にクリアする方法があります。
後半のネタバレを含むので注意してください。

続きを読む

INSIDE

f:id:djtaimi:20170108103314j:plain

『INSIDE』クリア。
プレイ時間は4時間。

LIMBO』はパズルが「死んで覚えてちょ」みたいな死にゲーありきで、まるで死ぬことを想定しているような演出の下品な見せ方に、どうなの?と思いながらプレイしていましたが、今回はクリアまで楽しくいけました。

「考察」と言う楽しみ方はゲームを深く理解するために必要ですが、ゲーム外の知識と結び付けられることで、ゲームそのものから遠ざかる危険性もあります。
その危険性を回避したいのならば、舞台からゲームを構築するのではなく、ゲームをさせるために舞台を構築する必要があります。
開発側がプレイヤーを誘導するような仕掛けができてしまう時もありますが、世界観と一致さえすれば気になりません。(水中の敵を引きつけるために、あたかもそうさせるような鎖を設置している箇所など)
むしろ世界観と仕掛けが一致することで、余計な知識に依存しない、自身のゲームプレイと結びついた「考察」に漬かることができるのではないかと思います。
ショッキングな結末(2種類ある)に目が向きがちな本作ですが、遊んで楽しい仕掛けが詰まっているのにも注目したいところです。

LIMBO』は、含みのある世界観と、回転ノコギリが迫ってくるような舞台設計が分離していたように思えます。
その曖昧なバランスは、独特の雰囲気に浸ることはできますが、ゲーム自体が死にゲーの域を脱することができませんでした。
『INSIDE』が単なる考察ゲーにとどまらぬ豊かな面白さを発揮しており、死に方しか思い出せないゲームから進化しているのは確かです。