Skip to content

Instantly share code, notes, and snippets.

@asaga
Created May 9, 2016 10:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asaga/adeb89dc3df81581a1e75f8a393a7fc9 to your computer and use it in GitHub Desktop.
Save asaga/adeb89dc3df81581a1e75f8a393a7fc9 to your computer and use it in GitHub Desktop.
#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