Unit VMeter Home Assistant 連携ガイド

このガイドでは、Unit VMeter 電圧センサーを Home Assistant に連携させるための設定方法と実践手順について説明します。

1. 準備

環境準備

  1. Home Assistant 公式ドキュメント を参照して Home Assistant をインストールします。
  2. ESPHome 公式ドキュメント を参照して ESPHome Device Builder アドオンをインストールします。
  3. 次の資料を参照します:

ハードウェア製品

  • Unit VMeter
  • 互換性のあるコントローラー(Atom、Stamp、Stick、Core、Basic シリーズなど)
注意
Unit VMeter を Home Assistant に統合するには、互換性のあるコントローラーが必要です。プロジェクトに応じてコントローラーとインターフェースピンを選択してください。

2. 設定の変更

  1. ESPHome の設定で I²C コンポーネントを有効にする必要があります:
    # Example configuration entry for ESP32
    i2c:
      sda: GPIOXX
      scl: GPIOXX
      scan: true

GPIO ピン番号は使用するメインコントローラーによって異なります。たとえば Atom Lite をメインコントローラーとして使用する場合:

# I2C Bus on Grove Port (HY2.0-4P)
i2c:
  sda: GPIO26
  scl: GPIO32

Unit VMeter 設定例:

  1. まず基本コンポーネント ADS1115 を設定します:

    yaml
    1 2 3 4 5 6 7 8 9 10 11
    ads1115:
      - address: 0x49
    
    sensor:
      - platform: ads1115
        multiplexer: "A0_A1"
        gain: 1.024
        sample_rate: 128
        name: "Unit VMeter A0_A1 Ref"
        id: diff
        update_interval: 10s
ヒント
Unit VMeter が使用するチャンネルは AIN0AIN1 の 2 つのみです。そのため使用できる multiplexer は最大 3 種類:"A0_A1""A0_GND""A1_GND" となります。電圧測定には A0_A1 のみが電圧計算に使用されます。
  1. EEPROM から校正パラメーターを読み取り、Template センサーを組み合わせてカスタムデータを作成します:

    yaml
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
    i2c_device:
      id: eeprom
      address: 0x53
    
    sensor:
      # Previous ads1115 declarations
      ...
      - platform: template
        name: "Input Voltage"
        id: input_volt
        unit_of_measurement: "V"
        icon: "mdi:flash"
        accuracy_decimals: 2
        update_interval: 10s
        lambda: |-
    
          float d = id(diff).state;
    
          if (isnan(d)) return NAN;
    
          const float PRESSURE_COEFF = 0.015918958f;
    
          // Remember to change the 'EEPROM_REG' if you changed the 'gain'
          const uint8_t EEPROM_REG = 0xE8;
    
          uint8_t calib[8];
          uint16_t hope, actual;
    
          // Read EEPROM
          if ( id(eeprom).read_register(EEPROM_REG, calib, 8) != i2c::ERROR_OK ) {
            ESP_LOGD("vmeter.sensor", "Failed to read from EEPROM..");
            return NAN;
          }
    
          uint8_t xor_result = 0x00;
    
          for (uint8_t i = 0; i < 5; i++) {
              xor_result ^= calib[i];
          }
    
          if (xor_result != calib[5]) {
            return NAN;
          }
    
          hope   = (calib[1] << 8) | calib[2];
          actual = (calib[3] << 8) | calib[4];
    
          float calibration_ratio = (float)hope / actual;
    
          ESP_LOGD("vmeter.sensor", "Factory calibration factor: %f", calibration_ratio);
    
          float vin = - d / PRESSURE_COEFF;
          vin = vin * calibration_ratio;
    
          return vin;
  2. EEPROM を読み取る際は、ADS1115 に設定した gain の値に応じて、lambda 式内の EEPROM_REG 読み取りアドレスを変更してください:

    c++
    1 2 3 4
    // In lambda expression
    // remember to change the 'EEPROM_REG' if you changed the 'gain'
    // for an example, when 'gain' is 1.024
    const uint8_t EEPROM_REG = 0xE8;
ADS1115 Gain EEPROM Data Register Max Input Voltage (theory)
6.144 0xD0 -
4.096 0xD8 -
2.048 0xE0 -
1.024 0xE8 64 V
0.512 0xF0 32 V
0.256 0xF8 16 V

推奨する gain 値は 0.2560.5121.024 です。16V 以下の電圧測定時の分解能は 1mV、16V 以上では 7.9mV となります。測定対象の電圧に応じて最適な gain 値を選択し、EEPROM から適切な校正パラメーターを読み取ってください。測定精度を確保するため、**AIN0 または AIN1 のいずれか一方のみ使用してください**。両チャンネル同時に電圧入力を接続しないでください。

警告
本製品の最適測定範囲は ±36V です。この範囲を超える電圧を入力しないでください。デバイスが損傷する恐れがあります。また、EEPROM(0x53)には出荷時に校正パラメーターが書き込まれています。EEPROM への書き込み操作は行わないでください。校正データが上書きされ、測定結果が不正確になる可能性があります。

3. 使用開始

Dashboard に追加すると、Home Assistant でセンサーデータを確認できます。

4. 関連動画

Page Tools
PDF
On This Page