1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ジョブのスケジュールとブロードキャスト (Azure CLI)を試してみた

Last updated at Posted at 2024-03-02

試した記事


実行結果

2 つの CLI セッションを準備する

  • az extension add コマンドを実行し、Azure CLI 用の Microsoft Azure IoT 拡張機能が CLI シェルにインストールする
$ az extension add --name azure-iot
Default enabled including preview versions for extension installation now. Disabled in May 2024. Use '--allow-preview true' to enable it specifically if needed. Use '--allow-preview false' to install stable version only. 
Extension 'azure-iot' 0.21.5 is already installed.
$

デバイスを作成してシミュレートする

  • az iot hub device-identity create コマンドを実行し、シミュレートするデバイスのデバイス ID を作成する。

リソースグループを指定しないといけない模様

$ az iot hub device-identity create --device-id 20240301device --hub-name 20240301-IoThub
Unable to find IoT Hub: 20240301-IoThub in resource group: rg-aml-us-001
$

実行しているaz cliのドキュメントでリソースグループを指定する方法があるか確認

az iot hub device-identity create --device-id
                                  [--am {shared_private_key, x509_ca, x509_thumbprint}]
                                  [--auth-type {key, login}]
                                  [--device-scope]
                                  [--edge-enabled {false, true}]
                                  [--hub-name]
                                  [--login]
                                  [--od]
                                  [--pk]
                                  [--primary-thumbprint]
                                  [--resource-group]
                                  [--secondary-key]
                                  [--secondary-thumbprint]
                                  [--sta {disabled, enabled}]
                                  [--star]
                                  [--valid-days]

引数に--resource-groupがあるのでこれを指定して再度実行し、問題なく実行できた。

$ az iot hub device-identity create --device-id 20240301device --hub-name 20240301-IoThub --resource-group rg-us-001
{
  "authentication": {
    "symmetricKey": {
      "primaryKey": "<見せられないよ>",
      "secondaryKey": "<見せられないよ>"
    },
    "type": "sas",
    "x509Thumbprint": {
      "primaryThumbprint": null,
      "secondaryThumbprint": null
    }
  },
  "capabilities": {
    "iotEdge": false
  },
  "cloudToDeviceMessageCount": 0,
  "connectionState": "Disconnected",
  "connectionStateUpdatedTime": "0001-01-01T00:00:00+00:00",
  "deviceId": "20240301device",
  "deviceScope": null,
  "etag": "OTQ2NDI5Mzg2",
  "generationId": "638448673261732809",
  "lastActivityTime": "0001-01-01T00:00:00+00:00",
  "parentScopes": null,
  "status": "enabled",
  "statusReason": null,
  "statusUpdatedTime": "0001-01-01T00:00:00+00:00"
}
$

Azure Portalからも確認できる

image.png


  • az iot device simulate コマンドを実行し、デバイスをシミュレートする。


こちらもリソースグループを指定しないとダメそうなので指定して実行すると3秒おきに100回device-to-cloud メッセージを送る。progresssが100になる前に次の実行を行う。

$ az iot device simulate --device-id 20240301device --hub-name 20240301-IoThub --resource-group rg-us-001 --method-response-code 201 --method-response-payload '{"result":"Direct method successful"}'
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Device simulation in progress: 100%|###########################################| 100/100 [05:34<00:00,  3.34s/it]
$

ダイレクト メソッドを呼び出すようにジョブをスケジュールする

意味不明なエラーが発生し、正常に終了しない。

$ az iot hub job create --hub-name 20240301-IoThub --job-id job01 --res
ource-group rg-us-001 --job-type scheduleDeviceMethod --method-name 20240301Me
thod1 --method-payload 'null' --query-condition "deviceId = '20240301device'"
{'Message': 'ErrorCode:IotHubFormatError;cannot decode job request json format', 'ExceptionMessage': 'Tracking ID:403C7217E18443C4BDD6A68C61C805D4-G2:-TimeStamp:2024-03-02T14:01:10.976283713+00:00'}

GWV2になってるのが影響している気がする。


REST API で実行してみる

認証にはSASトークンを使用

$ az iot hub generate-sas-token -n 20240301-IoThub --resource-group rg-us-001
[Warning] This output may compromise security by showing the following secrets: sas. Learn more at: https://go.microsoft.com/fwlink/?linkid=2258669
{
  "sas": "<見せられないよ>"
}

Postmanを使って実行したが、同じエラーが発生

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?