このガイドでは、Unit VMeter 電圧センサーを Home Assistant に連携させるための設定方法と実践手順について説明します。
Unit VMeter は単体のセンサーモジュールです。Home Assistant へ統合するには、別途メインコントローラー(Atom シリーズ、Stamp シリーズ、Stick シリーズ、Core/Basic シリーズなど)が必要です。
# 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 設定例:
まず基本コンポーネント ADS1115 を設定します:
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: 10sAIN0 と AIN1 の 2 つのみです。そのため使用できる multiplexer は最大 3 種類:"A0_A1"、"A0_GND"、"A1_GND" となります。電圧測定には A0_A1 のみが電圧計算に使用されます。EEPROM から校正パラメーターを読み取り、Template センサーを組み合わせてカスタムデータを作成します:
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;EEPROM を読み取る際は、ADS1115 に設定した gain の値に応じて、lambda 式内の EEPROM_REG 読み取りアドレスを変更してください:
// 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.256、0.512、1.024 です。16V 以下の電圧測定時の分解能は 1mV、16V 以上では 7.9mV となります。測定対象の電圧に応じて最適な gain 値を選択し、EEPROM から適切な校正パラメーターを読み取ってください。測定精度を確保するため、**AIN0 または AIN1 のいずれか一方のみ使用してください**。両チャンネル同時に電圧入力を接続しないでください。
Dashboard に追加すると、Home Assistant でセンサーデータを確認できます。