pdf-icon

Unit VMeter Home Assistant 連携ガイド

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

必要なもの

ご注意

Unit VMeter は単体のセンサーモジュールです。Home Assistant へ統合するには、別途メインコントローラー(Atom シリーズ、Stamp シリーズ、Stick シリーズ、Core/Basic シリーズなど)が必要です。

設定の変更

  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 への書き込み操作は行わないでください。校正データが上書きされ、測定結果が不正確になる可能性があります。

使い方

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

関連動画

On This Page