1. はじめに
NEQTO Consoleは、一括登録するデータをCSVでご用意いただければ、標準でデバイスを一括登録が可能です。
また、デバイス登録後のノード登録も同様にCSVで一括登録が可能です。
今回は、一括登録用CSVの準備やデバイスおよびノード登録作業を省きたいという方向けに、デバイス名やノード名を自動で生成し、デバイス登録とノード登録を同時にする方法を紹介します。
この方法は一括登録のみならず、例えば製品にシリアルIDとプロダクトキーを印刷したQRコードを貼り付けている場合、QRコードを読み込んだらデバイス、ノードを自動登録する方法にも応用ができます。
2. 利用するAPIについて
今回は、NEQTO Bridgeの一括登録を行います。NEQTO BridgeのシリアルIDとプロダクトキーの一覧が書かれたCSVを用意し、備考には「説明01、説明02、…」、ノードの名前には「お店01、お店02、・・・」といったルールで一括登録をします。
今回利用するAPIは、以下の通りです。
- 認証API
- グローバルAPI
- デバイス登録: NEQTO API Docs
- APリージョンAPI
- ノード登録: NEQTO API Docs
3. 実装例
3.1 環境
- MacOS 12
- Python 3.8
- サードパーティライブラリー
- requests==2.27.1
3.2 サンプルコード
このスクリプトでは、登録するNEQTO BridgeのシリアルIDとプロダクトキーが書かれたCSVから処理を行います。事前に、ノードを登録する際に必要なグループやテンプレートを設定する必要があります。
sample.csv
serial_id,product_key
001,ABC
002,DEF
registration.py
import csv
import requests
import settings
def get_token():
auth = requests.post(
'https://auth.neqto.com/account/api-token-auth',
json={'company_code': settings.COMPANY_CODE, 'email': settings.EMAIL, 'password': settings.PASSWORD}
)
data = auth.json()
return data['token']
def register_device(token, serial_id, product_key, note):
url = 'https://global.neqto.com/devices'
payload = {
'is_with_license': True,
'license_type': 'normal_bridge',
'device_type': 'bridge',
'serial_id': serial_id,
'product_key': product_key,
'note': note,
}
headers = {
'Authorization': f'JWT {token}'
}
res = requests.post(url, json=payload, headers=headers)
data = res.json()
return data['serial_id']
def register_node(token, serial_id, name):
url = 'https://asia-pacific-1.neqto.com/groups/{groups_group_id}/nodes'.format(
groups_group_id=settings.GROUP_ID
)
payload = {
'name': name,
'note': 'normal_bridge',
'template': settings.TEMPLATE_ID,
'serial_id': serial_id,
}
headers = {
'Authorization': f'JWT {token}'
}
requests.post(url, json=payload, headers=headers)
def get_from_csv(filename):
with open(filename, 'r') as f:
reader = csv.DictReader(f)
return list(reader)
if __name__ == '__main__':
token = get_token()
device_list = get_from_csv('sample.csv')
for index, device in enumerate(device_list, start=1):
device_name = 'お店{device_number:02d}'.format(device_number=index)
note = '説明{device_number:02d}'.format(device_number=index)
serial_id = register_device(token, device['serial_id'], device['product_key'], note)
register_node(token, serial_id, device_name)
コードサンプル内のlicense_typeはプロフェッショナルライセンスを使用する場合を想定し、「normal_bridge」としています。 トライアルライセンスをご使用の場合は「trial_bridge」に変更してください。
COMPANY_CODE = "企業コードを入力"
EMAIL = "メールアドレスを入力"
PASSWORD = "パスワードを入力"
GROUP_ID = "グループIDを入力"
TEMPLATE_ID = "テンプレートIDを入力"
「企業コード」、「メールアドレス」、「パスワード」はNEQTO Consoleにサインインする際に使用する情報を入力してください。
グループID、テンプレートIDについては、ブログ「NEQTO リージョンAPIを使って、コマンドラインからスクリプトの操作をする方法」を参照してください。
3.3 登録結果
デバイス登録の結果
※シリアルIDは、ダミーです。
ノード登録の結果
4. まとめ
一括登録する方法について、紹介しました。
スクリプトを変更することで、任意の名前や登録先を変えることもできるようになり、さまざまなカスタマイズができるようになります。お困りの方はぜひお試しください。