Acesso aos consumos do Kaifa MA109H monifasico

Boa Tarde
Mais uma vez obrigado.

Boa tarde, pequena actualização (a condizer com o progresso).

A e-redes foi lá instalar o chicote e supostamente activar a porta HAN. Não sem incidentes: tiveram que lá ir duas vezes. A primeira coisa que disse o sujeito foi que não tinha o cabo para aquele contador ??? Acabou por deixar o contador aberto até ter voltado dois dias depois com o cabo e finalmente selou o contador.
Acabei por encontrar varias secções de cabo telefónico caído no chão e após algumas emendas lá deu para a distância necessária.
Não cheguei a testar a ligação. Passei o tempo disponível a tentar aceder ao RPi 4 com o HA (instalado como sistema operativo) usando o browser do laptop. Não consegui. O curioso e que acedia usando um iPad sem problemas. No portátil que tem Windows 11 usando o Edge ou Opera não consegui de todo?
Enfim, daqui a duas semanas tento novamente…
Alberto

Bom dia,

Preciso de ajuda. Será que existe algum teste simples (se possível como se estiverem a falar com uma criança de 5 anos por favor :slightly_smiling_face: :slightly_smiling_face:) para validar a ligação física entre o RPI4 com a ultima versao do HASOS e a porta HAN do contador (MA109H monofásico)?

Uso o método directo com o waveshare RS485. Os primeiros testes não deram em nada, alem de aparecer apenas Unavailable,

Os leds TXD e RXD do adaptador usb RS485 não mostram qualquer actividade só o PWR está aceso.

Alem de remover os COUNT que geraram erro e corrigir os RETRY penso que o yaml estará como o do tutorial:

configuration.yaml:

Loads default set of integrations. Do not remove.

default_config:

Load frontend themes from the themes folder

frontend:

themes: !include_dir_merge_named themes

automation: !include automations.yaml

script: !include scripts.yaml

scene: !include scenes.yaml

#begin EDP smart meter

modbus:

  • name: edp_box_1

    type: serial

    method: rtu

    port: /dev/ttyUSB1

    baudrate: 9600

    stopbits: 1

    bytesize: 8

    parity: N

    delay: 1

    timeout: 5

    retries: 3

    message_wait_milliseconds: 200

    sensors:

    • name: “EDP Box - Frequência”

      scan_interval: 5

      slave: 1

      address: 127

      input_type: input

      unit_of_measurement: “Hz”

      scale: 0.1

      offset: 0

      precision: 2

      long unsigned

      data_type: uint16

    • name: “EDP Box - Tensão”

      scan_interval: 5

      slave: 1

      address: 108

      input_type: input

      unit_of_measurement: “V”

      scale: 0.1

      offset: 0

      precision: 1

      long unsigned

      data_type: uint16

      device_class: voltage

    • name: “EDP Box - Corrente”

      scan_interval: 5

      slave: 1

      address: 109

      input_type: input

      unit_of_measurement: “A”

      scale: 0.1

      offset: 0

      precision: 1

      long unsigned

      data_type: uint16

      device_class: current

    • name: “EDP Box - Potência Ativa”

      slave: 1

      address: 121

      input_type: input

      data_type: uint32

      precision: 1

      scale: 1

      unit_of_measurement: W

      device_class: power

    • name: “EDP Box - Fator de Potência”

      scan_interval: 5

      slave: 1

      address: 123

      input_type: input

      unit_of_measurement: “p.u.”

      scale: 0.001

      offset: 0

      precision: 3

      long unsigned

      data_type: uint16

      device_class: power_factor

    • name: “ICP State L1”

      0 para disconectado - 1 para conectado - 2 para preparado a reconectar

      scan_interval: 5

      slave: 1

      address: 132

      input_type: input

      count: 1

      data_type: custom

      structure: “>Bx”

    • name: “Tariff L1”

      1 para Vazio - 2 para Ponta - 3 para Cheia

      scan_interval: 10

      slave: 1

      address: 11

      input_type: input

      count: 1

      data_type: custom

      structure: “>Bx”

    • name: “EDP Box - Total Vazio”

      scan_interval: 30

      slave: 1

      address: 38

      input_type: input

      data_type: uint32

      precision: 3

      scale: 0.001

      unit_of_measurement: kWh

      device_class: “energy”

    • name: “EDP Box - Total Ponta”

      scan_interval: 10

      slave: 1

      address: 39

      input_type: input

      data_type: uint32

      precision: 3

      scale: 0.001

      unit_of_measurement: kWh

      device_class: “energy”

    • name: “EDP Box - Total Cheia”

      scan_interval: 10

      slave: 1

      address: 40

      input_type: input

      data_type: uint32

      precision: 3

      scale: 0.001

      unit_of_measurement: kWh

      device_class: “energy”

sensor:

EDP BOX Tarifa - MODBUS

  • platform: template

    sensors:

    edp_box_tarifa:

    friendly_name: "EDP Box - Tarifa"
    
    icon_template: "{{ 'mdi:counter' }}"
    
    value_template: >-
    
      {% set x = states('sensor.tariff_l1')|string %}
    
      {% if x == "1" %}
    
        {{ "Vazio" }}
    
      {% elif x == "2" %}
    
        {{ "Ponta" }}
    
      {% elif x == "3" %}
    
        {{ "Cheia" }}
    
      {% else %}
    
        {{ x }}
    
      {% endif %}
    

EDP BOX Estado ICP - MODBUS

  • platform: template

    sensors:

    edp_box_estado_icp:

    friendly_name: "EDP Box - Estado ICP"
    
    icon_template: "{{ 'mdi:flash' }}"
    
    value_template: >-
    
      {% set x = states('sensor.icp_state_l1')|string %}
    
      {% if x == "0" %}
    
        {{ "Desligado" }}
    
      {% elif x == "1" %}
    
        {{ "Ligado" }}
    
      {% elif x == "2" %}
    
        {{ "Preparado para religação" }}
    
      {% else %}
    
        {{ x }}
    
      {% endif %}
    

Customize.yaml:

EDP BOX

sensor.voltage_l1:

icon: “mdi:transmission-tower”

friendly_name: “Tensão”

sensor.current_l1:

icon: “mdi:power-socket”

friendly_name: “Corrente”

sensor.power_factor:

icon: “mdi:percent”

friendly_name: “Fator de potência”

sensor.frequency:

icon: “mdi:current-ac”

friendly_name: “Frequência”

sensor.tariff:

icon: “mdi:counter”

friendly_name: “Tarifa”

sensor.switch_control_state:

icon: “mdi:power”

friendly_name: “DCP”

Obrigado por qualquer ajuda.
Alberto

acho que andei atras do bicho errado. Como acho os 160 metros de cabo telefónico com três emendas tão tosco concentrei-me nessa ligação…
Logo a seguir a ter mandado a ultima mensagem acabei por aceder aos logs do HA e mostram isto:

2024-02-21 02:11:56.980 WARNING (MainThread) [homeassistant.components.modbus.validators] Modbus edp_box_1 timeout(5) is adjusted(4) due to scan_interval

2024-02-21 02:11:56.981 WARNING (MainThread) [homeassistant.components.modbus.modbus] retries: is deprecated and will be removed in version 2024.7

2024-02-21 02:11:56.992 ERROR (SyncWorker_0) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:00.755 ERROR (SyncWorker_11) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:00.755 ERROR (SyncWorker_11) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 127 → Modbus Error: [Connection] Failed to connect[ModbusSerialClient(<pymodbus.framer.rtu_framer.ModbusRtuFramer object at 0x7f65411a30> baud[9600])]

2024-02-21 02:12:01.017 ERROR (SyncWorker_6) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:01.225 ERROR (SyncWorker_8) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:01.433 ERROR (SyncWorker_11) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:01.638 ERROR (SyncWorker_4) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:01.845 ERROR (SyncWorker_0) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:02.050 ERROR (SyncWorker_2) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

2024-02-21 02:12:02.256 ERROR (SyncWorker_7) [pymodbus.logging] [Errno 2] could not open port /dev/ttyUSB1: [Errno 2] No such file or directory: ‘/dev/ttyUSB1’

E continua por ali fora…

Como posso corrigir isto?
Obrigado
Alberto

Deve ser outro device. /dev/ttyUSB1

No pi:

lsusb

Em cheio!!! :pray: :pray: :pray: Nem foi preciso fazer lsusb, lembrei-me do outro RPi onde tenho a correr o flightradar24 em que o USB é 0. Foi só mudar o 1 para 0 e magia, os valores do contador começaram a aparecer. Pode-se concluir que mesmo com 160 metros de cabo telefónico, usando o método directo funciona com KAIFA MA109H Monofásico. Quase todos os valores ficaram preenchidos.

Infelizmente foi efémero. Ouvi que vinha aí chuva e fui reforçar as emendas com mais fita isoladora porque o cabo ainda está estendido pelo chão e tive receio que houvesse infiltração de água. Antes tivesse ficado quieto porque depois disso o HA deixou de receber dados do contador e desta vez deve ser o cabo (as emendas).

Já tentei de diversas formas mas não consigo comprar 160 metros desse cabo em lado nenhum. Queria ter 160 metros sem emendas e por um preço que faça sentido mas está difícil…

Alguém sabe onde posso comprar disso?

Aqui vão os erros do home-assistant.log. Podem-me confirmar que será o cabo desta vez? Não me apetece refazer as emendas e não ser daí:
Obrigado

2024-02-21 23:20:29.554 WARNING (Recorder) [homeassistant.components.recorder.util] The system could not validate that the sqlite3 database at //config/home-assistant_v2.db was shutdown cleanly

2024-02-21 23:20:42.472 WARNING (MainThread) [homeassistant.components.modbus.validators] Modbus edp_box_1 timeout(5) is adjusted(4) due to scan_interval

2024-02-21 23:20:42.474 WARNING (MainThread) [homeassistant.components.modbus.modbus] retries: is deprecated and will be removed in version 2024.7

2024-02-21 23:20:48.531 WARNING (SyncWorker_8) [pymodbus.logging] Cleanup recv buffer before send: 0x3f 0x3e 0x3e 0x3e 0x3e 0x3e 0x3e 0x3e 0x3e 0x3e 0x7e 0xbe 0x3e 0xfe 0xff 0x3e 0x3e 0x3e 0x3e 0xfe 0xbf 0x3e 0x3e 0x3e 0x3f 0xfe 0xbf 0x3f 0x3e 0xbf 0x3e 0x7e 0xbf 0x3f 0x3e

2024-02-21 23:21:34.698 ERROR (SyncWorker_8) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 127 → Modbus Error: [Input/Output] Modbus Error: [Invalid Message] No response received, expected at least 4 bytes (0 received)

2024-02-21 23:25:52.805 WARNING (MainThread) [homeassistant.bootstrap] Setup timed out for bootstrap - moving forward

2024-02-21 23:26:07.816 WARNING (MainThread) [homeassistant.core] Something is blocking Home Assistant from wrapping up the start up phase. We’re going to continue anyway. Please report the following info at https://github.com/home-assistant/core/issues: water_heater, assist_pipeline, input_button, scene, image_upload, mobile_app.device_tracker, bluetooth, application_credentials, mqtt.sensor, automation, devolo_home_network.switch, my, mqtt.vacuum, homeassistant, recorder, device_tracker, mqtt.fan, mqtt.lock, mqtt.update, map, devolo_home_network.update, dlna_dmr, button, lawn_mower, trace, met.weather, devolo_home_network.sensor, counter, mqtt.scene, modbus, update, mqtt.number, mqtt.valve, ssdp, repairs, network, mobile_app.binary_sensor, sun, tag, input_datetime, mqtt.binary_sensor, template.sensor, mqtt.camera, mqtt.button, devolo_home_network.device_tracker, conversation, ffmpeg, devolo_home_network.image, google_translate.tts, template, devolo_home_network, modbus.sensor, usb, input_boolean, zone, default_config, hassio.sensor, radio_browser, cloud, cast.media_player, mqtt.switch, energy, system_log, hardware, vacuum, notify, sun.sensor, mqtt.water_heater, hassio, binary_sensor, websocket_api, homeassistant.scene, media_source, script, cast, file_upload, met, homeassistant_alerts, weather, mqtt.device_tracker, schedule, mqtt.light, climate, mqtt.event, mqtt.humidifier, system_health, mobile_app.sensor, input_number, humidifier, mqtt.climate, rpi_power.binary_sensor, mobile_app, media_player, image, todo, number, blueprint, cover, dlna_dmr.media_player, energy.sensor, logger, persistent_notification, shopping_list, event, api, devolo_home_network.binary_sensor, auth, siren, camera, logbook, input_text, valve, http, stream, device_automation, diagnostics, history, wake_word, fan, alarm_control_panel, person, onboarding, mqtt.siren, switch, lovelace, hassio.update, mqtt.image, mqtt.alarm_control_panel, timer, input_select, search, hassio.binary_sensor, rpi_power, devolo_home_network.button, lock, tts, mqtt.cover, webhook, mqtt.select, frontend, zeroconf, raspberry_pi, google_translate, text, analytics, cloud.tts, sensor, mqtt, light, dhcp, mqtt.text, mqtt.lawn_mower, select, mobile_app.notify, stt, shopping_list.todo, config

Neste momento apenas digo: evita o componente do HA…

Como assim? peço desculpa mas não percebo… :woozy_face:

O modbus do HA e a edpbox é só chatices

Qual é a alternativa se quiser manter o hardware?

Boa Noite,
Refiz as ligações e o cabo telefónico está de maneira que não vai ser movido ou manipulado. foi passado no tubo que está enterrado. Tenho acesso a alguns valores mas faltam os mais importantes. Além de que desconfio da estabilidade do funcionamento disto a longa prazo.
De qualquer maneira, alguém sabe a razão de faltarem os valores principais?
Junto uma captura de ecrã e as linhas de erro do home-assistant.log.
Obrigado

2024-02-25 23:12:39.717 ERROR (SyncWorker_13) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 38 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:12:40.273 ERROR (SyncWorker_10) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:12:50.029 ERROR (SyncWorker_3) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:12:54.963 ERROR (SyncWorker_5) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 121 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:00.033 ERROR (SyncWorker_11) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:09.740 ERROR (SyncWorker_14) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 38 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:10.310 ERROR (SyncWorker_12) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:20.027 ERROR (SyncWorker_7) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:24.969 ERROR (SyncWorker_9) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 121 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:30.025 ERROR (SyncWorker_0) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:39.716 ERROR (SyncWorker_7) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 38 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:40.270 ERROR (SyncWorker_8) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:50.032 ERROR (SyncWorker_12) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:13:54.970 ERROR (SyncWorker_6) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 121 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:14:00.031 ERROR (SyncWorker_1) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:14:09.728 ERROR (SyncWorker_5) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 38 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

2024-02-25 23:14:10.286 ERROR (SyncWorker_13) [homeassistant.components.modbus.modbus] Pymodbus: edp_box_1: Error: device: 1 address: 39 → Modbus Error: [Input/Output] No Response received from the remote slave/Unable to decode response

Podes testar com o modpoll binário

[https://github.com/nikito7/edpbox-dev/tree/dev/modbus/modpoll]

Obrigado vou fazer isso.
Estranhamente ainda está a funcionar. A pesar de ainda não terem passado 24 horas :grinning:
Se calhar vou levar algum tempo porque apesar de saber como fazer no caso de RPi, não é claro para mim no caso em que o HA é o proprio sistema operativo. Acho que deve ser elementar mas ainda não aprendi essa parte :thinking:

Os 32bits da edpbox não são normais

Estive a pensar se a resistencia de 120 Ohms é determinante nisto, neste momento não está instalada. Como tenho a sensação que isto é uma espécie de magia negra, não me apetece ir tocar naquilo por enquanto :woozy_face:

Quando conseguir completar o teste informo, obrigado

Bom dia

Adaptei o port e endereço IP e corri os comandos numa janela terminal do windows 11 no laptop que está na mesma rede do RPI.

Resultado dos testes:

…\modpoll-3.11\win> ./modpoll -m enc -a 1 -0 -1 -r 108 -c 1 -t 3 -p 8123 192.168.50.110
modpoll 3.11 - FieldTalk™ Modbus(R) Master Simulator
Copyright (c) 2002-2024 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: Encapsulated RTU over TCP, FC4
Slave configuration…: address = 1, start reference = 108 (PDU), count = 1
Communication…: 192.168.50.110, port 8123, t/o 1.00 s, poll rate 1000 ms
Data type…: 16-bit register, input register table

– Polling slave…
Checksum error!

…modpoll-3.11\win> ./modpoll -m enc -a 1 -0 -1 -r 22 -c 1 -t 3:int -e -p 8123 192.168.50.110
modpoll 3.11 - FieldTalk™ Modbus(R) Master Simulator
Copyright (c) 2002-2024 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: Encapsulated RTU over TCP, FC4
Slave configuration…: address = 1, start reference = 22 (PDU), count = 1
Communication…: 192.168.50.110, port 8123, t/o 1.00 s, poll rate 1000 ms
Data type…: 32-bit integer, input register table
32-bit mode…: Daniel/Enron single 32-bit word

– Polling slave…
Checksum error!

Não é muito encorajador pois não? :thinking: :thinking:

Tens de usar a pen directamente.

Para usar rtuovertcp tinhas de usar o ser2net acho eu

inserir o RS485 na porta USB do laptop??


Copyright © 2017-. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade