別棟備忘録4

*

PythonからxmlrpcでWordPressへ投稿

      2015/12/04

Arduino → Python → xmlrpc → WordPressの作例備忘録。
こちらの記事で書き留めたArduinoで取得した圧力や温度をWordPressの記事として書き留める。
Pythonは2.7を使用
Pyserialをインストールする
無論、どこかのサーバーを借りてデータベースやWordPressは別途準備しておく。

今回は固定ページを修正更新していく形を想定。
あらかじめ投稿用の固定ページを一つ作成、公開し、アドレスからpage_idを調べておくと吉。
何とか.py というファイルを新規に作成。右クリックしてEdit With IDLE
IDLE.png
・Python のコード

import serial
ser = serial.Serial(4, 9600,timeout=5)
print ser.portstr
LineData = ser.readline()
print LineData
import datetime
d = datetime.datetime.today()
print d
#calc
tmp = round(float(LineData[13:17]),1)
press = round(float(LineData[35:39])/10,1)
print tmp
print press
#save
f = open( “c://test/tmp.txt”, “a” )
f.write(”’%s,%s,%s,%s,%s,%s,%s
”’% (d.year,d.month,d.day,d.hour,d.minute,tmp,press)
)
f.close()
#web_post
import xmlrpclib
username =”userを入れる
password =”passwordを入れる
url=”http://urlを入れる/xmlrpc.php”
server = xmlrpclib.ServerProxy(url)
content = {}
content[‘post_title’] = “部屋の状況”
content[‘post_content’] = u”’
<p><span style=”color:#00b050; font-family:MS ゴシック; font-size:18pt”><strong>お部屋の物理量
</strong></span></p><p><span style=”font-family:MS ゴシック”>  熱運動の激しさ: <span style=”font-size:22pt”><strong>%s + 273.15 K</strong></span>
</span></p><p><span style=”font-family:MS ゴシック”>  壁が受ける圧力: <span style=”font-size:22pt”><strong>%s kPa</strong></span>
</span></p><p><span style=”font-family:MS ゴシック”>                %s/%s/%s %s:%s 現在</p>
”’ % (tmp,press,d.year,d.month,d.day,d.hour,d.minute)
content[‘post_type’] = “page”
content[‘post_status’] = “publish”
blog_id=1
post_id=ページ番号を入れる
a=server.wp.editPost(blog_id,username,password,post_id,content)
print a;
#raw_input()

pyファイルのダウンロードはこちらから

データが記録される c://test/tmp.txt に対応するファイルはあらかじめ作成しておく。
F5キーを押して実行

sch.png
trueが返ってきたら成功。
タスクスケジューラーで 「何とか.py」を定期的に実行することで、webに情報を自動公開することが可能。
task.png
Webページで確認
https://bibo.capture.jp/?page_id=4
wpcap.png
・FAQ(よくある質問)・

Q.上手くいきません。エラーが出ます。

A.Wordpressのユーザーに編集者以上の権限がありますか?

Q.権限は、ありまぁす。

A.ser = serial.Serial(4, 9600,timeout=5)はArduinoがCOM5ポートに繋がっているときの設定です。COM4ならA.ser = serial.Serial(3, 9600,timeout=5)です。

Q.それも確認済みです。データは保存されますが、投稿されません。

A.プロキシサーバーを経由してインターネットに接続している場合には、これでは繋がりません。別途記述が必要です。後日紹介します。

Q.気象に関する気温や気圧を公表することは気象業務法等の法令に抵触しませんか?

A.今回公になっているのは分子運動の激しさと壁の圧力の各物理量です。
zettaionndo.pngに代入して愉しみましょう。

 - Arduino+Processing, Python