ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2016年6月25日土曜日

pybeaconを使ってみる

pybeaconを使ってみる

今、はやり?のeddystoneをRaspberry PI3でやってみようかと思った次第です。。

1.Pybeaconをダウンロードし、解凍

$ wget https://pypi.python.org/pypi/PyBeacon/
$ unzip mastar.zip

2. bluzとbluez-hcidumpをインストール

$ sudo apt-get install bluez bluez-hcidump

3. PyBeaconのインストール

$ cd PyBeacon-master
$ sudo pip3 install PyBeacon

4. PyBeaconの実行

1. URLを送りたいので以下を使って送りたいURLを短縮する。

    https://goo.gl/

$ PyBeacon -u https://goo.gl/Aq18zF

でも実行できるがURLを切り替えたいのPythonで実行

#! /usr/bin/python3

import subprocess
import time

def main():
    cmd = "PyBeacon -u "
    url = ""
    counter = 0
    check = subprocess.check_output(cmd + url, shell=True, universal_newlines=True)

    while True:
        counter += 1
        url = ""
        if counter == 5:
            url = "https://goo.gl/Aq18zF"
        elif counter == 10:
            url = "https://goo.gl/epjq13"
            counter = 0

        if url != "":
            print(cmd+url)
            check = subprocess.check_output(cmd + url, shell=True, universal_newlines=True)
        time.sleep(1.0)

if __name__ == "__main__":
    main()

5. Ghomeの設定

設定→プライバシー→フィジカルウェブをONすると、
Raspberry PI3からアドバタイジングされたURLを受け取ることが可能。

2016年6月11日土曜日

wiringPiをpythonから呼び出す。

wiringPiをpythonから呼び出す。

Raspberry PI3のGPIOを制御するにはwiringpi2を使ったほうがよいらしいので、試してみました。

1.wiringpi2のインストール

$ sudo apt-get update
$ sudo apt-get install python3-dev python3-pip
$ sudo pip3 install wiringpi2

2.wiringPi2-Pythonのインストール

$ git clone https://github.com/Gadgetoid/WiringPi2-Python.git
cd WiringPi2-Python
$ sudo python3 setup.py install

3.動作確認

$ sudo python3
>> import wiringpi2

以下のエラーがでた。

Traceback (most recent call last):
  File "/home/rpi3/Work/WiringPi2-Python/wiringpi2.py", line 18, in swig_import_helper
    fp, pathname, description = imp.find_module('_wiringpi2', [dirname(__file__)])
  File "/usr/lib/python3.5/imp.py", line 296, in find_module
    raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_wiringpi2'

解決方法

wiringpi_wrap.cを修正する必要があるらしい。

$ vi wiringpi_wrap.c
PyString_FromStringAndSize(x, len) PyUnicode_FromStringAndSize(x, len)を追加

追加する場所は以下の「+」のところです。

 #define PyString_FromString(x) PyUnicode_FromString(x)
+#define PyString_FromStringAndSize(x, len) PyUnicode_FromStringAndSize(x, len)
#define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)

再度、インストールし、実行することでうまくいきました。
結構、調べてるとpython2.xとpython3.xでだいぶ違う。。。

$ sudo python3 setup.py install
$ sudo python3
>> import wiringpi2
エラーがでなくなった!
>> wiringpi2.piBoardRev()

これでpythonからGPIOが制御できるようになったので少し遊んでみようかと思います。

2016年6月5日日曜日

Python3ではmysql-pythonが使えない

Python3ではmysql-pythonが使えない

Python3ではMysql-pythonが使えないということで
mysqlclientとmysql-connector-phythonを導入する必要があるということ。

$ sudo pip3 install mysqlclient
$ sudo pip3 install --upgrade pip

試しに以下のようにMySQLでデータベースを用意する。

$ mysql -u root -p
mysql> create database list;
mysql> create table list.personal(id int, name varchar(20));
mysql> show tables from list;
+----------------+
| Tables_in_list |
+----------------+
| personal       |
+----------------+
mysql> insert into list.personal(id,name) values(1,'Satoh');
mysql> select * from list.personal;
+------+-------+
| id   | name  |
+------+-------+
|    1 | Satoh |
+------+-------+
定義は省略できるので、以下でもOK.
mysql> insert into list.personal values(2,'Kondo');

以下のコード(dbsample.py)を作成し、データベースの読み出しと追加ができた。

python3 dbsample.py
#!/usr/bin/python3

import MySQLdb
def showUser():

    connector = MySQLdb.connect(
            user='root',
            passwd='mysql',
            host='localhost',
            db='list',
            charset="utf8")

    cursor = connector.cursor()

    # read
    cursor.execute("select * from personal")

    for row in cursor.fetchall():
        print("ID:" + str(row[0]) + "  NAME:" + row[1])

    # insert
    sql = u"insert into list.personal values(3,'Abe')"
    cursor.execute(sql)
    connector.commit()

    # read
    cursor.execute("select * from personal")

    for row in cursor.fetchall():
        print("ID:" + str(row[0]) + "  NAME:" + row[1])

    cursor.close
    connector.close

参考
http://note.kurodigi.com/python3-mysql/

Python - if name == ‘main‘: の意味に関しては以下が参考になった。
http://azuuun-memorandum.hatenablog.com/entry/2015/05/09/002549