Created
May 9, 2016 10:06
-
-
Save asaga/adeb89dc3df81581a1e75f8a393a7fc9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#coding: utf-8 | |
# spi, time ライブラリをインポート | |
import spidev | |
import time | |
# センサーデータのJSON化のためにインポート | |
import json | |
from datetime import datetime | |
# HTTPリクエスト生成のためにインポート | |
import requests | |
# SpiDev オブジェクトのインスタンスを生成 | |
spi = spidev.SpiDev() | |
# ポート0、デバイス0のSPI をオープン | |
spi.open(0, 0) | |
# 最大クロックスピードを1MHz に設定 | |
spi.max_speed_hz=1000000 | |
# 1 ワードあたり8ビットに設定 | |
spi.bits_per_word=8 | |
# ダミーデータを設定(1111 1111) | |
dummy = 0xff | |
# スタートビットを設定(0100 0111) | |
start = 0x47 | |
# シングルエンドモードを設定 (0010 0000) | |
sgl = 0x20 | |
# ch0 を選択(0000 0000) | |
ch0 = 0x00 | |
# ch1 を選択(0001 0000) | |
ch1 = 0x10 | |
# MSB ファーストモードを選択(0000 1000) | |
msbf = 0x08 | |
# IC からデータを取得する関数を定義 | |
def measure(ch): | |
# SPI インターフェイスでデータの送受信を行う | |
ad = spi.xfer2( [ (start + sgl + ch + msbf), dummy ] ) | |
# | |
val = ((ad[0] & 0x03) << 8) + ad[1] | |
# 受信した2バイトのデータを10 ビットデータにまとめる | |
voltage = ( val * 3.3 ) / 1023 | |
# 結果を返す | |
return val, voltage | |
# 例外を検して終了 | |
try: | |
# 無限ループ | |
while 1: | |
# 関数を呼び出してch1 のデータを取得 | |
ch1_val, ch1_voltage = measure(ch1) | |
# kintoneへの送信 | |
headers = {'X-Cybozu-API-Token': 'APIトークン', 'Content-Type': 'application/json'} | |
data = {"time_sensor": {'value': datetime.now().strftime('%Y-%m-%dT%H:%M:%S+09:00')}, "ID": {'value': "id000"}, "brightness": {'value': ch1_val}} | |
payload = {'app': アプリID, 'record': data } | |
r = requests.post('https://サブドメイン.cybozu.com/k/v1/record.json', data=json.dumps(payload), headers=headers) | |
print(payload) | |
print(r.text) | |
# 3秒待つ | |
time.sleep(3) | |
# キーボード例外を検出 | |
except KeyboardInterrupt: | |
# 何も処理をしない | |
pass | |
# SPI を開放 | |
spi.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment