pdf-icon

Unit AMeter Home Assistant 統合

Unit AMeter はリアルタイムの電流監視用の電流計です。内部には 16 ビット ADC コンバータ ADS1115 を採用しており、I2C (0x48) 経由で通信します。

注意
Unit VMeter は単体のセンサプラットフォームであるため、Home Assistant に統合するには Atom 系列、Stamp系列、Stick 系列、Core/Basic 系列などのホストデバイスが別途必要です

ESPHome から ADS1115 の最新設定を入手してください

センサーの設定

ESPHome の設定で I²C コンポーネントを有効にする必要があります:

yaml
1 2 3 4 5
# Example configuration entry for ESP32
i2c:
  sda: GPIOXX
  scl: GPIOXX
  scan: true

ここで指定する GPIO ピンは使用するホストデバイスによって異なります。例えば Atom Lite をホストとする場合:

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

Unit AMeter の設定例

  • まず基本コンポーネント ADS1115 を設定します
yaml
1 2 3 4 5 6 7 8 9 10 11
ads1115:
  - address: 0x48

sensor:
  - platform: ads1115
    multiplexer: "A0_A1"
    gain: 0.256
    sample_rate: 128
    name: "Unit AMeter A0_A1 Ref"
    id: diff
    update_interval: 10s
ヒント
Unit AMeter は AIN0AIN1 の 2 チャネルのみを使用するため、multiplexer は最大で 3 つ使用できます: "A0_A1""A0_GND""A1_GND"。電流測定では A0_A1 のみが使用されます。
  • 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
i2c_device:
  id: eeprom
  address: 0x51

sensor:
  # Previous ads1115 declarations
  ...
  - platform: template
    name: "Input Current"
    id: input_cur
    unit_of_measurement: "A"
    icon: "mdi:current-dc"
    accuracy_decimals: 2
    update_interval: 10s
    lambda: |-
      float d = id(diff).state;

      if (isnan(d)) return NAN;

      const float PRESSURE_COEFF = 0.05f;

      const uint8_t EEPROM_REG = 0xF8;

      uint8_t calib[8];
      uint16_t hope, actual;

      if ( id(eeprom).read_register(EEPROM_REG, calib, 8) != i2c::ERROR_OK ) {
        ESP_LOGD("ameter.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("ameter.sensor", "Factory calibration factor: %f", calibration_ratio);

      float ain = - d / PRESSURE_COEFF;

      ain = ain * calibration_ratio;
    
      return ain;

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 0.256
const uint8_t EEPROM_REG = 0xF8;
ADS1115 Gain EEPROM Data Register Max Input Current (theory)
6.144 0xD0 -
4.096 0xD8 -
2.048 0xE0 -
1.024 0xE8 -
0.512 0xF0 10 A
0.256 0xF8 5 A

推奨される gain 値は 0.256 で、分解能は 0.3mA です。**AIN0 または AIN1 のいずれか一方のみを測定できます**。両方の入力を同時に接続しないでください。

警告
製品の設計上の最適測定範囲は ±4V で、内蔵ヒューズが搭載されています。4A を超える電流はヒューズを作動させる可能性があるため、この範囲外の電流を入力しないでください。また空荷状態を避けてください。EEPROM (0x51) には出荷時の校正パラメータが保存されており、EEPROM への書き込みは行わないでください。校正データが上書きされると測定精度が失われる可能性があります。

Home Assistant へのセンサー追加

ダッシュボードに追加すると、Home Assistant でセンサーデータを確認できます

On This Page