Конфигурация WB-MAP12E для Home Assistant

как сделать чтобы когда тока нет писало просто 0, а не 21 990 232,0
мой конфиг такой, подскажите что надо еще добавить

    - name: "s44_curr_power_in3"
      scan_interval: 5
      unique_id: 's44_curr_power_in3'
      slave: 44 # <- Device address
      address: 13056 # <- Register address
      input_type: input
      data_type: uint32
      scale: 0.00512
      precision: 0
      slave_count: 3
      device_class: energy

Добрый день.
Значение в указанном регистре - s32. То есть - надо его и описывать как знаковое, старший бит - это знак получаемой величины.

1 лайк

поменял на data_type: int32 ничего не изменилось, про бит не очень понял что надо поменять в конфиге ?

Вам нужно читать значение из регистра как знаковое.
То есть имеющее как отрицательные значения так и положительные.
Осторожно предположу что в нотации HA это int32 - рекомендую уточнить в его документации, так как не являюсь специалистом в этом ПО.

ну так я же написал что попробовал и ничего не изменилось
по документации
int32 это 32 bit signed integer (2 registers holds 1 value).
исходя из документации может нужно установить swap ?

swap list (Optional, default: none)
Swap the order of bytes/words
byte
Swap bytes AB → BA.
word
Swap word ABCD → CDAB,
word_byte
Swap word ABCD → DCBA,

Так…
Прочитайте пожалуйста значения из самого прибора. Вот как он отвечает, покажите пожалуйста ответ. Проверим, корректный ли он.

1 лайк

как понять прочитать из самого прибора это как ?
я же вроде из него и читаю

Вот так: Утилита «modbus_client» — Wiren Board
Есть похожая тема: Получаю некорректные данные WB-MAP3E по Modbus ssh/homeassistant - #40 от пользователя Djstrayk
Чтобы было видно именно байты которые приходят в ответ.
Таким образом думаю убедиться что сам измеритель отдает верные значения.
По поводу их конвертации в стороннем ПО в верное представление - если смогу помогу. Я не специалист в Home Assistent, это ПО разрабатывается не нашей компанией.

1 лайк

так я просто ошибся у меня еще есть показатели тока в которых я как раз и поставил int32, сделал тоже самое для мощности и наконец увидел заветный 0, вопрос закрыт!

Ну, отлично, рад.

1 лайк