Type2625 JSON Printer

少し前にTRNSYS Type65を改良してJSON形式の出力機能を試作しました。

しばらく試してみましたが、使っていると出力するJSON形式をあれこれ調整したくなります。具体的には、

  • タイムステップはHourじゃなくて日付時刻で出力したい。
  • 数字は指数表記、十進表記を切換えたい。
  • 設定用のプラグインも用意したい。

などなど。ところがこれらの機能拡張のためにParameterを増やすと、既存のType65と互換性がなくなっってしまいます。

Type2625 JSON Printer

上記のような理由で新しく専用のコンポーネントを作り直すことにしました。

主な機能は次の通りです。

  • JSON,CSV形式の両方に対応
  • タイムステップは通常のHour(通し時間)と日付時刻に対応
  • 指数表記、十進表記に対応

インストールするとSimulation StudioのDirect Access Toolbarに「JSON Printer」のフォルダが追加されます。使い方はType25 Printerとほぼ同じです。

TRNSYS Type2625 JSON Printer

JSON,CSVの切替

パラメーターでJSON,CSVの出力を切換えられるようにしてあります。出力例を以下に示します。

JSON形式

タイムステップ0.25h(15分)ステップで3ステップ分抜粋したのが下のデータです。日付時刻と値が一目で分ります。

{
    "1995-01-01T00:00:00.000":{
        "DryBulb":0.000000,
        "DewPoint":0.000000,
        "RH":0.000000,
        "TI":0.000000
    },
    "1995-01-01T00:15:00.000":{
        "DryBulb":21.250000,
        "DewPoint":18.350000,
        "RH":83.125000,
        "TI":0.000000
    },
    "1995-01-01T00:30:00.000":{
        "DryBulb":21.150000,
        "DewPoint":18.250000,
        "RH":83.375000,
        "TI":0.000000
    },

CSV形式

こちらも3ステップ分の抜粋です。日付時刻、十進表記で読みやすくなっています。

TIME,	DryBulb,	DewPoint,	RH,	TI,
1995/01/01 00:00:00,  0.000000,  0.000000,  0.000000,  0.000000,
1995/01/01 00:15:00,  21.250000,  18.350000,  83.125000,  0.000000,
1995/01/01 00:30:00,  21.150000,  18.250000,  83.375000,  0.000000,

このCSV形式はExcelでそのまま開けます。下の画像のように日付時刻も含めて、すっきりした形式で読み込まれます。

パラメーターの設定で、通常の指数表記にも切換えられるようにしてあります。

TIME,	DryBulb,	DewPoint,	RH,	TI,
+0.0000000000000000E+00,  +0.0000000000000000E+00,  +0.0000000000000000E+00,  +0.0000000000000000E+00,  +0.0000000000000000E+00,
+2.5000000000000000E-01,  +2.1250000000000000E+01,  +1.8349999999999998E+01,  +8.3125000000000000E+01,  +0.0000000000000000E+00,
+5.0000000000000000E-01,  +2.1149999999999999E+01,  +1.8250000000000000E+01,  +8.3375000000000000E+01,  +0.0000000000000000E+00,

JSON Printer Plug-in

JSON Printer用に専用のプラグインを用意しました。ファイル形式と日付時刻、値の形式を切換えられるようにしてあります。

設定に合わせて出力例も表示して、形式を確認できるようしてあります。(注:確認用のサンプルです。計算が実行されるまでどのようなデータがくるのか分らないので、実際の出力とは異なります。)

TRNSYS Type2625 JSON Printer Plugi-in

JSONの読み込み例

JSON形式のファイルは標準的なフォーマットです。簡単なプログラムで読み込み展開できます。

以下はPython、Pandas、Matplotを使ってデータ読み込み、日平均やグラフを描いた例です。

JSONの読み込みと日平均

Pandasでデータを読み込んで日平均を計算する処理ですが、ご覧のようにたったの3行です。

import pandas as pd
df = pd.read_json(r"WeatherData_single.json", orient='index')
df.resample('d').mean()#日平均

実行例

読み込んだデータでグラフを描く

つづいて、読み込んだデータをmatplotを使ってグラフを描く例です。

import matplotlib.pyplot as plt
df.plot(subplots=True, layout=(2,2)) #4項目すべて2x2のレイアウトでプロット

特定のデータだけ指定してグラフを描く場合はこんな感じ。

df['DryBulb'].plot() #1項目だけ抽出してプロット

まとめ

JSON形式のファイルはプログラムで扱うのが非常に簡単です。シンプルなCSV形式にも対応しています。

このType2625 JSON Printerは日本語サプリメントで配布予定です。

動作環境

以下の環境で動作を確認しています。

  • Windows10 Pro(64bit, 21H1)
  • TRNSYS18.04.0000(64bit)
  • Microsoft Visual Studio Professional 2019
  • Python:Anaconda3 2021.05(Python 3.8.8 64-bit)
Pocket

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です