Template: erro regex_match

Boa noite,

Estou a tentar por a funcionar o template em baixo para undervoltage mas estou a obter um erro no regex_match
Could not render template System: Charger: UndefinedError: 'regex_match' is undefined
Já tentei algumas alterações e até testes mais simples mas sem sucesso. Estou a fazer algo mal ou será que o regex_match já não é suportado ?

- platform: template
  sensors:
    check_charger:
      friendly_name: "System: Charger"
      value_template: >
        {% if is_state("sensor.system_undervoltage_status", "throttled=0x0") -%}
           No throttling detected
        {% elif regex_match(states("sensor.system_undervoltage_status"), 'throttled=0x4', ignorecase=FALSE) -%}
           Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% elif regex_match(states("sensor.system_undervoltage_status") , 'throttled=0x5', ignorecase=FALSE) -%}
           Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% else %}
           There is a problem with your power supply or system, state {{ states("sensor.system_undervoltage_status") }} reported
        {%- endif %}

Obrigado

Estás a misturar aspas com plicas. O 'throttled=0x4' e o 'throttled=0x5' devem estar com aspas.

Altera tudo para aspas que já não tens erro.

obrigado @j_assuncao

Fiz a alteração mas continuo com o mesmo erro. Também alterei o conteudo da comparação porque estou a usar HassOS e estou a obter os valores através de cat /sys/devices/platform/soc/soc:firmware/get_throttled

- platform: template
  sensors:
    check_charger:
      friendly_name: "System: Charger"
      value_template: >
        {% if is_state("sensor.system_undervoltage_status", "0") -%}
           No throttling detected
        {% elif regex_match(states("sensor.system_undervoltage_status"), "40005", ignorecase=FALSE) -%}
           Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% elif regex_match(states("sensor.system_undervoltage_status") , "50005", ignorecase=FALSE) -%}
           Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% else %}
           There is a problem with your power supply or system, state {{ states("sensor.system_undervoltage_status") }} reported
        {%- endif %}

O código no meu passa sem problemas…

Acredito… até porque não inventei este código.
O que poderá estar a causar este erro?

encontrei aqui alguem com o mesmo erro mas não no statement to IF e a solução passou por usar como filtro mas aqui no IF não sei bem se dá.

Obrigado,
Diogo

Não vejo (aparentemente) nada de errado no template e perece-me que o problema poderá estar na definição dos sensores utilizados. Podes publicar os sensores?

Aqui vai o último estado em que ficou o codigo e tambem imagem dos sensores a registarem aparentemente bem os valores.

- platform: command_line
  name: "System: number of undervoltage messages"
  command: "dmesg | grep Under-voltage | wc -l"
  unit_of_measurement: "times"
  scan_interval: 120

- platform: command_line
  name: "System: undervoltage status"
  command: "cat /sys/devices/platform/soc/soc:firmware/get_throttled" 
  scan_interval: 120

- platform: template
  sensors:
    check_charger:
      friendly_name: "System: Charger"
      value_template: >
        {% if is_state("sensor.system_undervoltage_status", "0") %}
          No throttling detected
        {% elif regex_match(states("sensor.system_undervoltage_status"), "40005", ignorecase=FALSE) %}
          Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% elif regex_match(states("sensor.system_undervoltage_status"), "50005", ignorecase=FALSE) %}
          Throttling detected {{ states("sensor.system_number_of_undervoltage_messages") }} times 
        {% else %}
          There is a problem with your power supply or system, state {{ states("sensor.system_undervoltage_status") }} reported
        {% endif %}
1 Like

@dpjrodrigues este sistema de carregamento é do que mesmo?

É informação do próprio Rpi @RodolfoVieira.

Não vejo nada de mal no código nem nos sensores… Mas só para despistar um possível erro experimenta tirar os : de System: Charger e dos nomes dos sensores.

1 Like

Bom dia, não cheguei a responder mas fiz o sugerido e o erro mantem-se…
Há alguma maneira de aumentar o detalhe dos logs para tentar perceber o que está a provocar o erro?

Obrigado

Usei o comando em baixo mas não aparecei nada de relevante.

logger:
  default: debug

entretanto acabei por resolver o problema com o código em baixo (que até já tem umas melhorias nas condições). em suma o que fiz foi substituir regex_match(value, regex, ignorecase=FALSE) por value | regex_match(regex, ignorecase=FALSE)
Não sou nenhum expert nisto mas calculo que possa ter haver com alguma versão mais recente de uma biblioteca ou algo do genero…

- platform: template
  sensors:
    check_charger:
      friendly_name: 'System: Charger'
      value_template: >
        {% if is_state("sensor.system_undervoltage_status", "0") %}
           No throttling detected
        {% elif states("sensor.system_undervoltage_status") | regex_match('[01]0001', ignorecase=FALSE) %}
           A under-voltage has occurred ({{ states("sensor.system_number_of_undervoltage_messages") }} times)  
        {% elif states("sensor.system_undervoltage_status") | regex_match('[23]000[23]', ignorecase=FALSE) %}
           ARM frequency capped has with under-voltage ({{ states("sensor.system_number_of_undervoltage_messages") }} times) 
        {% elif states("sensor.system_undervoltage_status") | regex_match('[45]000[45]', ignorecase=FALSE) %}
           CPU is throttled due to under-voltage  ({{ states("sensor.system_number_of_undervoltage_messages") }} times)
        {% else %}
           There is a problem with your power supply or system, state {{ states("sensor.system_undervoltage_status") }} reported
        {% endif %}
1 Like

Este tópico foi automaticamente fechado 90 dias após a última resposta. Novas respostas não são permitidas.


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


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