概要
RS-232C出力のバーコードリーダーをAPBLE001-RSを使用してRaspberry Pi 4に接続します。
バーコードリーダーで読み込んだISBNコードをPythonスクリプトでkintoneへ送信する手順を説明します。
kintoneはクラウド上にデータを置いてオリジナルのシステムを構成し、ブラウザやスマホアプリで操作することが直感的にできるサイボウズ社のサービスです。自社でIoT用のサーバやアプリを用意するコストや手間を考えた時に、導入のためのしきいを下げる選択肢の一つとなり得ます。
また今回説明で使用致しますAPBLE001-RSは、以下のリンクからご購入いただけます。
Kintoneでのバーコードアプリ作成
バーコードのISBNコード13文字と、その日時を記録するアプリを例として作成します。
新しいアプリを作成し、タイトルをバーコードにします。フォームのタブから文字列と日時をドラッグして、それぞれ名前をISBNコードと日時にします。
文字列の方は、フィールド名をISBNコード、文字数は13文字、フィールドコードはcodeに設定します。
設定タブからAPIトークンを選択します。
APIトークンを生成し、レコード追加の権限を付与します。トークンの文字列はPythonスクリプトの方で使用するのでコピーしておいてください。
アプリ番号
アプリを選択し、ブラウザのURLのところを見ると
subdomain.cycybozu.com/k/9/
のように書かれていると思います。その最後の部分の数値(上記例では9)がアプリの番号です。これも、Pythonスクリプトで使用するためメモして置いてください。
ソースコード
初期設定
まずRaspberry pi 4のPython環境をリンクの手順を参照して設定してください。追加でkintoneでデータを送信するために、requestsモジュールを以下のコマンドを打ち込んでインストールしてください。
sudo pip3 install requests
以下に、バーコードリーダが読み取ったISBNコードをkintoneへ送信するPythonスクリプトを示します。Kintoneのサブドメインとアプリ番号、APIトークンを適切なものに置き換えてください。
# coding: utf-8
import requests
import serial
SUBDOMAIN = "yoursubdomain" # kintoneのサブドメイン({subdomain}.cybozu.com)
APP_ID = "9" # アプリ番号
API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ISBN_CODE_LENGTH = 13 + 2 # 改行コード分2文字追加
SERIALPORT = '/dev/ttyAPBLE'
def openser():
try:
ser = serial.Serial(port = SERIALPORT, baudrate='9600',
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,timeout=0.5)
except Exception as e:
print(e)
return ser
# kintoneへのPOST
def registToKintone(subdomain, apiToken, dic_data):
url = "https://" + subdomain + ".cybozu.com/k/v1/record.json"
headers = {"X-Cybozu-API-Token": apiToken,
"Content-Type": "application/json"}
response = requests.post(url, json=dic_data, headers=headers)
return response
def kt_main(code):
ISBNcode = {}
ISBNcode["value"] = code
record = {}
record["code"] = ISBNcode
dic_data = {'app': APP_ID, 'record': (record)}
registToKintone(SUBDOMAIN,API_TOKEN,dic_data)
if __name__=='__main__':
ser = openser()
while True:
line = ser.readline()
if len(line)==ISBN_CODE_LENGTH:
code = line.decode()
kt_main(code.rstrip('\r\n'))
else:
if line !=b'':
print(line)
APBLE001-RSとバーコードリーダの接続
アプリを実行した様子
python3 barcodeKintone.py
上記コマンドで、スクリプトを実行し、バーコードリーダでコードを読み取ると、以下のようにクラウド上のkintoneのアプリにデータが反映されます。これは、PCのブラウザやスマホのアプリから確認できます。