LiLz GaugeのAPIでは計測した値を取得し、自社システムへ取り込む形で加工をすることができます。
この記事では実装例として、Powershell スクリプト(.ps1)を利用した連携例を紹介します。
実行内容
以下を実行するサンプルコードを本記事では公開しています。
- 現在時間(now)から24時間以内の測定データを取得
- csvファイルへ変換
- 変換したcsvファイルを特定のでディレクトリへ移動
実行環境
- WIN10以上
- Powershellがインストールされている端末
サンプルコード
#PowerShell
# 現在の時間を取得
$now = Get-Date
# 時刻をJSTに設定
$jst = [System.TimeZoneInfo]::FindSystemTimeZoneById("Tokyo Standard Time")
# 時刻をJSTに変換
$nowJST = [System.TimeZoneInfo]::ConvertTime($now, $jst)
# 日付のFormatを定義
$dateFormat = 'yyyy-MM-ddTHH:mm:sszzz'
$nowJSTFormatted = $nowJST.ToString($dateFormat)
# 開始時間を設定
$fromDate = $nowJST.Date.AddDays(0)
$fromDatetime = [System.TimeZoneInfo]::ConvertTimeToUtc($fromDate, $jst).ToString("yyyy-MM-ddTHH:mm:ss+00:00")
# 終了時間を設定
$untilDate = $nowJST.Date.AddDays(1)
$untilDatetime = [System.TimeZoneInfo]::ConvertTimeToUtc($untilDate, $jst).ToString("yyyy-MM-ddTHH:mm:ss+00:00")
# 利用するAPIのエンドポイントを指定
$apiEndpoint = "https://lilz.io/lilzgauge/api/measurements/v3"
# APIアクセストークンを指定
## アクセストークンの取得方法:https://support.lilz.jp/hc/ja/articles/4409852935449
$authToken = "XXXXXX"
# パラメーターを指定
## APIの引数に必要なidの取得方法:https://support.lilz.jp/hc/ja/articles/8190547977241
$direction = "ascending"
$managementUnitId = "XXXXXXX"
$pageSize = 100
# API Requestを実行
$headers = @{
"accept" = "application/json"
"Authentication-Token" = $authToken
}
$queryParams = @{
direction = $direction
from_datetime = $fromDatetime
management_unit_id = $managementUnitId
page_size = $pageSize
until_datetime = $untilDatetime
}
$response = Invoke-RestMethod -Uri $apiEndpoint -Headers $headers -Body $queryParams -Method Get
# CSVへ日付(datetime), 計器名(gauge.name), 測定値(value), 単位(unit)を格納
$csvData = $response.records |
Select-Object datetime, @{Name='name'; Expression={$_.gauge.name}}, value, unit |
ConvertTo-Csv -NoTypeInformation
# CSVファイルを移動するフォルダパスを指定
$outputDir = "C:\Users\XXXX\XXXX"
# ファイル名"LiLz Gauge output yyyyMMdd-HHmmss"と指定
$outputFilename = "LiLz Gauge output $(Get-Date -Format 'yyyyMMdd-HHmmss').csv"
# ファイルを移動
$outputPath = Join-Path -Path $outputDir -ChildPath $outputFilename
$csvData | Out-File -Encoding utf8 $outputPath
実行手順
1. サンプルコードをコピーしメモ帳等のテキストエディタへ張り付けます
2. サンプルコード上で"XXXXXX"と記載があるAPIアクセストークン、managementUnitIdを取得し、設定します。
3. 計測データをまとめたCSVファイルの出力先のパスを任意のものに設定します。
パスの取得方法についてはこちらの記事をご確認ください(外部サイトとなります)。
4. ファイルの拡張子を「.ps1」として保存します。
5. Powershellを起動し、上記の.ps1ファイルを格納したディレクトリでファイル名を指定して実行します。
6. 指定したフォルダにCSVファイルが出力されていれば成功です。
※PowerShellのスクリプトファイル(.ps1)が実行できない場合
5.のファイル実行時に下記のようなエラーが表示され、スクリプトが実行できない場合は、PowerShellの実行ポリシーの変更もしくは現在のセッションやファイル実行時のみ適用されるポリシーを設定することでスクリプトの実行が可能になります。
ここでは「現在のセッションに異なるポリシーを設定する」場合と、「ファイル実行時にポリシーを設定する」場合を紹介します。その他の設定方法はMicrosoftのドキュメントを参考にしてください。
参考)実行ポリシーについて - PowerShell | Microsoft Learn
-
現在のセッションに異なるポリシーを設定する【PowerShell】
PowerShellを起動し、以下のコマンドでポリシーを指定します。PowerShellを終了した場合などは新しいセッションが開始されるので再度指定する必要があります。
「RemoteSigned」は、ローカルスクリプトおよびリモートの署名済みスクリプトを許可するポリシーです。他に「Unrestricted」(すべてのスクリプトを許可)、「AllSigned」(署名済みスクリプトのみ許可)などがあります。
下記コマンド実行後、ファイル(.ps1)のパスを指定して実行します。powershell.exe -ExecutionPolicy RemoteSigned
-
ファイル実行時にポリシーを設定する【コマンドプロンプト】
コマンドプロンプトでPowerShell を呼び出す際に引数でポリシーを指定します。ファイルパスを指定してファイルの実行も同時に行います。ファイル実行の都度指定します。powershell -ExecutionPolicy RemoteSigned <ファイルパス>