本記事のポイント

NEQTO Consoleには、標準でデバイスの一括登録を行う機能が備わっています。この際、APIを利用することでデバイス名称の自動採番などカスタマイズが可能です。

本記事では、APIを利用したカスタマイズ方法を紹介します。



1. はじめに

NEQTO Consoleは、一括登録するデータをCSVでご用意いただければ、標準でデバイスを一括登録が可能です。
また、デバイス登録後のノード登録も同様にCSVで一括登録が可能です。

今回は、一括登録用CSVの準備やデバイスおよびノード登録作業を省きたいという方向けに、デバイス名やノード名を自動で生成し、デバイス登録とノード登録を同時にする方法を紹介します。

この方法は一括登録のみならず、例えば製品にシリアルIDとプロダクトキーを印刷したQRコードを貼り付けている場合、QRコードを読み込んだらデバイス、ノードを自動登録する方法にも応用ができます。

2. 利用するAPIについて

今回は、NEQTO Bridgeの一括登録を行います。NEQTO BridgeのシリアルIDとプロダクトキーの一覧が書かれたCSVを用意し、備考には「説明01、説明02、…」、ノードの名前には「お店01、お店02、・・・」といったルールで一括登録をします。

今回利用するAPIは、以下の通りです。

3. 実装例

3.1 環境


  • MacOS 12
  • Python 3.8
  • サードパーティライブラリー
    • requests==2.27.1

3.2 サンプルコード


このスクリプトでは、登録するNEQTO BridgeのシリアルIDとプロダクトキーが書かれたCSVから処理を行います。事前に、ノードを登録する際に必要なグループやテンプレートを設定する必要があります。

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」に変更してください。

settings.py
COMPANY_CODE = "企業コードを入力"
EMAIL = "メールアドレスを入力"
PASSWORD = "パスワードを入力"
GROUP_ID = "グループIDを入力"
TEMPLATE_ID = "テンプレートIDを入力"

「企業コード」、「メールアドレス」、「パスワード」はNEQTO Consoleにサインインする際に使用する情報を入力してください。

NEQTOコンソールのログイン画面

グループID、テンプレートIDについては、ブログ「NEQTO リージョンAPIを使って、コマンドラインからスクリプトの操作をする方法」を参照してください。


3.3 登録結果


デバイス登録の結果

デバイス登録の結果画面

※シリアルIDは、ダミーです。

ノード登録の結果

ノード登録の結果画面

4. まとめ

一括登録する方法について、紹介しました。
スクリプトを変更することで、任意の名前や登録先を変えることもできるようになり、さまざまなカスタマイズができるようになります。お困りの方はぜひお試しください。