はじめに
実はこの記事を書くのは2回目なのでまた同じことを書くのは本当に嫌なので
飛ばし飛ばし書きます.Safariが固まってウィンドウ消してまた書こうと思ったらプライベートブラウズしてたから
データがすべて消え去りました.
とてもつらい
アジェンダ
- 室温管理
- Lチカ・Lピカ
- 赤外線リモコン化
室温管理
買ったもの
http://akizukidenshi.com/catalog/g/gM-09024/akizukidenshi.com
回路
なにをしたか
設定などはいろんなサイトで探すとあると思うので探してください.
本来なら書いてたんですが,2回目を書く気が起こらないです.ごめんなさい
雑で申し訳ないがこんな感じ.
またもや我ら「らりょす教」の id:raryosu 教祖が写り込んでますね.
簡単に説明すると自分が「室温」というキーワードを含んだツイートをすると
ラズパイで動いているPython + Tweepy(TwitterStreamingAPI)が条件分岐で拾って
現在の室温を取得してツイートする!といった形
プログラム
#!/usr/bin/env python3 # coding: utf-8 from tweepy.streaming import StreamListener, Stream from tweepy.auth import OAuthHandler from tweepy.api import API from datetime import timedelta , datetime import os def get_oauth(): consumer_key = "************************" consumer_secret = "************************" access_key = "************************" access_secret = "************************" auth = OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) return auth def tweet_temperature(api): f = open("/sys/bus/w1/devices/28-00000723a709/w1_slave" , "r") degree = str(float(int(f.read().split("t=")[1]) / 1000 - 9))[:6] tweet_str = datetime.now().strftime("%Y/%m/%d %H時%M分%S秒") + "現在の室温は" + str(degree) + "℃です!" api.update_status(status = tweet_str) class AbstractedlyListener(StreamListener): def on_status(self, status): if '室温' in status.text and status.source != '室温ツイートするやつ': tweet_temperature(api) if __name__ == '__main__': auth = get_oauth() api = API(auth) stream = Stream(auth, AbstractedlyListener(), secure=True) stream.filter(follow=['1137201750']) stream.userstream()
Lチカ・Lピカ
https://twitter.com/nnsnodnb/status/711600897059491840
https://twitter.com/nnsnodnb/status/711601605083156480
https://twitter.com/nnsnodnb/status/711603460106362881
1つ目のツイートでよくわからん!って言ったことは以下コマンドを実行することで解決できました.
$ sudo rpi-update
買ったもの
ラズパイ + ケース + ブレッドボード + ジャンパーコード + 抵抗は省略
回路
100Ω x1
なにをしたか
だいたいこんな感じなのをTwitterで指定した特定ユーザがツイートしたらLピカさせるといった話
さっきと図は変わらないので省略
プログラム
#!/usr/bin/env python3 # coding: utf-8 from tweepy.streaming import StreamListener, Stream from tweepy.auth import OAuthHandler from tweepy.api import API import RPi.GPIO as GPIO import time def led_short(): GPIO.setmode(GPIO.BCM) GPIO.setup(24, GPIO.OUT) GPIO.output(24, GPIO.HIGH) time.sleep(0.3) GPIO.output(24, GPIO.LOW) GPIO.cleanup() time.sleep(1) def led_long(): GPIO.setmode(GPIO.BCM) GPIO.setup(24, GPIO.OUT) GPIO.output(24, GPIO.HIGH) time.sleep(0.9) GPIO.output(24, GPIO.LOW) GPIO.cleanup() time.sleep(1) def high(): # T(ー) led_long() # W(・ーー) led_short() led_long() led_long() # E(・) for i in range(2): led_short() # T(ー) led_long() def get_oauth(): consumer_key = "************************" consumer_secret = "************************" access_key = "************************" access_secret = "************************" auth = OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) return auth class AbstractedlyListener(StreamListener): def on_status(self, status): if (status.author.screen_name == 'LoveLive_staff' or status.author.screen_name == 'lovelive_SIF'): led.high() if __name__ == '__main__': auth = get_oauth() api = API(auth) stream = Stream(auth, AbstractedlyListener(), secure=True) stream.filter(follow=['347849994', '1346933186']) stream.userstream()
赤外線リモコン化
買ったもの
以下同文
回路
100Ω x1
なにをしたか
「なにをしたか」というより「なにをしたいか」に繋がるんですが,ビジョンとしては,
今までのようにTwitterに「エアコン起動」とかツイートして制御するようにしても良いんですが,
Streamingがよくしらない間にダウンしてたりするのでiOSアプリでも作ってラズパイのWebサーバにPOSTして制御でもしようかな?って思っています.
iOSアプリは実際にリリースとかはできないんですが,実機ビルドしてなんとか使えそうなのでそれのほうが良いかなぁ?っていう感じです.内容としては「AFNetworking3.xを使ってPHPにPOSTして上げる」と言ったモノ
入社前課題で予習はしているのですぐにできそうなので暇ができたらやろうかと思います.
最後に
これはさっきと同じようなことをちゃんと書こうと思います.
覚えている限り
ラズパイで電子工作をするほかは,Nginxを入れてWebサーバ構築したり,Samba入れてNASサーバ構築したり...
Sambaはなすくん(id:nascola)の記事がわかりやすかったです
あと,全く関係のない話.
先日,無事に無落単ストレートで高専卒業することができました!!
https://twitter.com/nnsnodnb/status/710671093703450624
それに伴い,このブログ名をどうにかしたいなぁって考えてます.
なのでいい案があれば教えてくださると幸いです.最悪このままでもいいんですけどね!