プログラミング素人のArduino

技術屋の末端。プログラミングは専門外。 電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#、ラズパイ始めました。

Anacondaでpythonプログラミング & TeratermでRaspberry Piに転送

先日、Visual StudioPythonを導入したが、予測変換がいまいちだったり、反応が遅いのでAnaconda+Pycharmに変更しました。
まだ、debugのショートカットが"F?"ではありますが、vsでVC#を使っているときぐらいの使い勝手だと思ってます。

pythonIDEも数種類あるようですし、anacondaのようなパッケージもいろいろあると思いますが、私は↓で紹介されていることもありanacondaを使いました。

じつは、先日まで使っていたwin 10 PCが故障したので、いつもとはちがうwin7を使っています。
修理はできそうなので、これはこれで修理が終わったら、ここで報告しようと思う。

まずはインストールですが、ここを参考にすると、問題なくインストールできました。ちなみにWin7(pro 64bit)でも問題なくこれを参照してインストールできました。
www.procrasist.com

次にTwitterをつかうため、python用のライブラリ”tweepy”をインポートします。
Anacondaのプロンプトを立ち上げ、

$pip install tweepy

とします。
f:id:s51517765:20170924121255j:plain

最後に、デバックをしようとすると、インタプリタがないといってくるので、右上の歯車のところからインタプリタを設定します。
f:id:s51517765:20170928230845j:plain

これで、Windows上でAnaconda+Pycharmによるpython環境はできたことになります。

次にpythonのコードを作成したら、ラズパイに転送します。

まず、ラズパイにファイルを転送するためにTeratermを導入します。
↓を参照し、このとおりに進めれば問題ないです。
Raspberry PiをWindowsで操作する(SSH) | S2

ここで、標準インストールがおすすめ(適当にデフォルトのカスタムですすめたら接続できなかった)

あらかじめラズパイのIPは調べておきます。ポートは22に変更します。
ユーザー名とログインパスを入力すると、LT Tatminalが立ち上がり、LAN接続で操作できるようになります。
SSH(リモートデスクトップTeraterm接続)を始めると、パスワードを変更しろといってきます。セキュリティのためです。
そのままでも使えないことはないが

$sudo raspi-config

からパスワードを変更しておきましょう。

Teratermのターミナル画面に.py ファイルをドロップすると転送できます。
f:id:s51517765:20170924121815j:plain
すると、何かErrorらしいものがでました。

ラズパイにtweepyが入っていないためのようです。まずはtweepyをインストールします。

$sudo pip3 instal tweepy

ここでも"sudo" (管理者権限で実行を示す)を入れないとErrorになる。

$ls

で転送した.pyが表示されればOK。

$python3 twitter.py

で実行します。

検索してファイルに書き出す機能とテキストファイルからBot的に一定時間ごとにTweetする機能を作りました。

ちなみに、無限ループにしているので、停止は"Ctrl + c" です。

文字コードWindowsC#で使ったListを流用したかったので、"utf"を明示的に指定しています。
なんか、標準だとshift-jisかなにかで文字化けたので。

# -*- coding: utf-8 -*-
import random
import tweepy
import time
print("start_python!")

CONSUMER_KEY="**********"
CONSUMER_SECRET="**********"
ACCESS_TOKEN="**********"
ACCESS_SECRET="**********"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

def serch():  #関数定義
    keywords = [u'電子工作',u'秋葉原']
    query = 'OR'.join(keywords)
    file = open('serch.txt', 'a', encoding='utf')  # 追記モードでオープン
    for tweet in api.search(q=query, count=20):
        file.write(tweet.user.screen_name)
        file.write("\r\n")
        file.write()
        print("")
    file.close()

def Auto_tweet(): #関数定義
    rand=random.randint(1,109)
    n=0
    file=open('List.txt', 'r', encoding='utf') #UTFを指定する
    tweet="1"
    try:
        while tweet!="":
            tweet = file.readline()
            n=n+1
            if n == rand:
                break
        print(tweet)
        api.update_status(tweet)     #tweet
    except:
       Print("Tweet Error!")

while(True):
    serch()
    Auto_tweet()
    print("Sleep!")
    time.sleep(3600)