Preço do kwh e bandeira tarifaria

Caros,

No canal do telegram rolou um papo sobre como obter o preço do kwh de cada operadora de energia e como seria legal ter uma integração pra fazer isso. Bom… a integração ainda vai demorar, mas consegui escrever uns scripts pra pegar os valores.

O legal foi ter descoberto que a aneel disponibiiza um site e uma API com varias informações. Deu um certo trabalhinho entender a tabela de tarifas, mas acho que cheguei num resultado interessante.

O script consulta a base de tarifas em (Tarifas de aplicação das distribuidoras de energia elétrica - Conjunto de dados - Dados Abertos - Agência Nacional de Energia Elétrica), procura sua distribuidora (informada no script), seleciona a tarifa convencional, residencial e o periodo de vigencia.

Pra integrar no HA basta usar a integração command_line e criar os sensores baseados na saida do script.

Mais instruções lá no repositório:

se alguem estiver disposto, eu ajudo a transformar isso numa integração.

4 Likes

Cheguei a fazer usando o node red para pegar as tarifas da Cemig.

Vou dar uma olhada nessa API

1 Like

Fica ligado que o preço final do kwh é o somatório de duas colunas: a Tarifa de Energia e a Tarifa de Uso do Sistema de Distribuição (TaUSD, que não, não é em dolar :slight_smile: ).

1 Like

Meus 2 cents:

Como comentei no grupo, para poder usar o sensor no painel Energia a unidade tem que ser “BRL/kWh” e eu criei aqui um terceiro sensor template com a soma dos dois:

{% set preco_kwh = states('sensor.preco_kwh') | float %}
{% set valor_bandeira = state_attr('sensor.bandeira_tarifaria', 'valor') | float %}
{{ preco_kwh + valor_bandeira }}
1 Like

integração é legal mas meu amigo, é 300x mais codigo do que ta agora, sei la se compensa

1 Like

Fiz uma versão para o NR

[{"id":"1b8cad127ef24c75","type":"group","z":"7547a558cf945eb1","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["d55786dbd3ac33e1","995f641b993ab8bd","6ae5a081bb19593a","b0653a2b6c994944","fbd9b0308694c3e6","43303e313139716c","7f4cc2583ed5eefb","adb080097466b597","ead4a3d6d2b590be","f62c086ecdeeeed3","9df30f4e7e88772f","01ab11545ee6b79f","45ce227f58a36521"],"x":34,"y":59,"w":992,"h":322},{"id":"d55786dbd3ac33e1","type":"inject","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"","props":[],"repeat":"1800","crontab":"","once":true,"onceDelay":"15","topic":"","x":130,"y":240,"wires":[["fbd9b0308694c3e6","adb080097466b597"]]},{"id":"995f641b993ab8bd","type":"debug","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":840,"y":140,"wires":[]},{"id":"6ae5a081bb19593a","type":"function","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"Tarifa","func":"if (msg.payload.success) {\n\n    let record = msg.payload.result.records[0];\n\n    let vlr_tusd = parseFloat(record.VlrTUSD.replace(\",\", \".\"));\n    let vlr_te = parseFloat(record.VlrTE.replace(\",\", \".\"));\n    let unidade = record.DscUnidadeTerciaria;\n\n    if (unidade === \"MWh\") {\n        vlr_tusd /= 1000;\n        vlr_te /= 1000;\n    }\n\n    let valor_total = vlr_tusd + vlr_te;\n\n    msg.payload = {\n        vlr_tusd,\n        vlr_te,\n        //unidade,\n        valor_total\n    };\n\n    return msg;\n    } else {\n    msg.payload = { error: \"Erro na resposta da API\" };\n    // return msg;\n\n}\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":200,"wires":[["995f641b993ab8bd","ead4a3d6d2b590be"]]},{"id":"b0653a2b6c994944","type":"http request","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":510,"y":200,"wires":[["6ae5a081bb19593a"]]},{"id":"fbd9b0308694c3e6","type":"function","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"URL Tarifa","func":"let operadora = (\"CEMIG-D\");\nlet hoje = new Date().toISOString().split('T')[0];\n\nmsg.url = `https://dadosabertos.aneel.gov.br/api/3/action/datastore_search_sql?sql=SELECT * from \"fcf2906c-7c32-4b9b-a637-054e7a5234f4\" where \"SigAgente\"= '${operadora}' and \"DscBaseTarifaria\"='Tarifa de Aplicação' and \"DscSubGrupo\"='B1' and \"DscClasse\"='Residencial' and \"DscModalidadeTarifaria\"='Convencional' and \"DscSubClasse\"='Residencial' and \"DscDetalhe\"='Não se aplica' and \"DatFimVigencia\" > '${hoje}'`;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":200,"wires":[["b0653a2b6c994944"]]},{"id":"43303e313139716c","type":"function","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"Bandeira","func":"if (msg.payload.success) {\n    let record = msg.payload.result.records[0];\n    let bandeira = record.NomBandeiraAcionada;\n    let VlrAdicionalBandeira = parseFloat(record.VlrAdicionalBandeira.replace(\",\", \".\")) / 1000;\n\n    msg.payload = {\n        bandeira,\n        VlrAdicionalBandeira\n\n    };\n\n    return msg;\n} else {\n    msg.payload = { error: \"Erro na resposta da API\" };\n    // return msg;\n\n}\n\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":280,"wires":[["f62c086ecdeeeed3","45ce227f58a36521"]]},{"id":"7f4cc2583ed5eefb","type":"http request","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":510,"y":280,"wires":[["43303e313139716c"]]},{"id":"adb080097466b597","type":"function","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"URL Bandeira","func":"let data = new Date();\nlet anomes = data.getFullYear() + \"-\" + String(data.getMonth() + 1).padStart(2, '0') + '-%';\n\nmsg.url = `https://dadosabertos.aneel.gov.br/api/3/action/datastore_search_sql?sql=SELECT * from \"0591b8f6-fe54-437b-b72b-1aa2efd46e42\" where \"DatCompetencia\" like '${anomes}'`;\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":280,"wires":[["7f4cc2583ed5eefb"]]},{"id":"ead4a3d6d2b590be","type":"ha-sensor","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"Cemig Preço KWh","entityConfig":"ee05fe2fc71504c5","version":0,"state":"payload.valor_total","stateType":"msg","attributes":[{"property":"vlr_tusd","value":"payload.vlr_tusd","valueType":"msg"},{"property":"vlr_te","value":"payload.vlr_te","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":870,"y":200,"wires":[[]]},{"id":"f62c086ecdeeeed3","type":"ha-sensor","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"Cemig Bandeira Tarifaria","entityConfig":"574512a222a0f352","version":0,"state":"payload.bandeira","stateType":"msg","attributes":[{"property":"VlrAdicionalBandeira","value":"payload.VlrAdicionalBandeira","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":890,"y":280,"wires":[[]]},{"id":"9df30f4e7e88772f","type":"server-events","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"HA Restart","server":"33803899.487d48","version":3,"exposeAsEntityConfig":"","eventType":"home_assistant_client","eventData":"","waitForRunning":true,"outputProperties":[{"property":"entity_id","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"},{"property":"event_type","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"}],"x":120,"y":100,"wires":[["01ab11545ee6b79f"]]},{"id":"01ab11545ee6b79f","type":"switch","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ready","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":130,"y":160,"wires":[["fbd9b0308694c3e6","adb080097466b597"]]},{"id":"45ce227f58a36521","type":"debug","z":"7547a558cf945eb1","g":"1b8cad127ef24c75","name":"debug 18","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":840,"y":340,"wires":[]},{"id":"ee05fe2fc71504c5","type":"ha-entity-config","server":"33803899.487d48","deviceConfig":"","name":"Cemig Preço KWh","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Cemig Preço KWh"},{"property":"icon","value":"mdi:transmission-tower"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":"R$"},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false},{"id":"574512a222a0f352","type":"ha-entity-config","server":"33803899.487d48","deviceConfig":"","name":"Cemig Bandeira Tarifaria","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Cemig Bandeira Tarifaria"},{"property":"icon","value":"mdi:transmission-tower"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false},{"id":"33803899.487d48","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

2 Likes

Baseado no Fluxo do Walber eu fiz como o @davidalben sugeriu e criei mais uma entidate com a soma do valor da bandeira + o valor kw/h:

[
{
    "id": "b207558ffc3b9392",
    "type": "tab",
    "label": "CPFL",
    "disabled": false,
    "info": "",
    "env": []
},
{
    "id": "1b8cad127ef24c75",
    "type": "group",
    "z": "b207558ffc3b9392",
    "style": {
        "stroke": "#999999",
        "stroke-opacity": "1",
        "fill": "none",
        "fill-opacity": "1",
        "label": true,
        "label-position": "nw",
        "color": "#a4a4a4"
    },
    "nodes": [
        "d55786dbd3ac33e1",
        "6ae5a081bb19593a",
        "b0653a2b6c994944",
        "fbd9b0308694c3e6",
        "43303e313139716c",
        "7f4cc2583ed5eefb",
        "adb080097466b597",
        "ead4a3d6d2b590be",
        "f62c086ecdeeeed3",
        "9df30f4e7e88772f",
        "01ab11545ee6b79f",
        "605da46785594dec",
        "e3d4be17dc19253d",
        "515d77a8aae560de",
        "c286628c12b0f522",
        "29ca378404f11b5c"
    ],
    "x": 114,
    "y": 199,
    "w": 1892,
    "h": 262
},
{
    "id": "d55786dbd3ac33e1",
    "type": "inject",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "props": [],
    "repeat": "3600",
    "crontab": "",
    "once": true,
    "onceDelay": "15",
    "topic": "",
    "x": 210,
    "y": 380,
    "wires": [
        [
            "fbd9b0308694c3e6",
            "adb080097466b597"
        ]
    ]
},
{
    "id": "6ae5a081bb19593a",
    "type": "function",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "Tarifa",
    "func": "if (msg.payload.success) {\n\n    let record = msg.payload.result.records[0];\n\n    let vlr_tusd = parseFloat(record.VlrTUSD.replace(\",\", \".\"));\n    let vlr_te = parseFloat(record.VlrTE.replace(\",\", \".\"));\n    let unidade = record.DscUnidadeTerciaria;\n\n    if (unidade === \"MWh\") {\n        vlr_tusd /= 1000;\n        vlr_te /= 1000;\n    }\n\n    let valor_total = vlr_tusd + vlr_te;\n\n    msg.payload = {\n        vlr_tusd,\n        vlr_te,\n        //unidade,\n        valor_total\n    };\n\n    return msg;\n    } else {\n    msg.payload = { error: \"Erro na resposta da API\" };\n    // return msg;\n\n}\n",
    "outputs": 1,
    "timeout": 0,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 750,
    "y": 340,
    "wires": [
        [
            "ead4a3d6d2b590be"
        ]
    ]
},
{
    "id": "b0653a2b6c994944",
    "type": "http request",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "method": "GET",
    "ret": "obj",
    "paytoqs": "ignore",
    "url": "",
    "tls": "",
    "persist": false,
    "proxy": "",
    "insecureHTTPParser": false,
    "authType": "",
    "senderr": false,
    "headers": [],
    "x": 590,
    "y": 340,
    "wires": [
        [
            "6ae5a081bb19593a"
        ]
    ]
},
{
    "id": "fbd9b0308694c3e6",
    "type": "function",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "URL Tarifa",
    "func": "let operadora = (\"CPFL-PAULISTA\");\nlet hoje = new Date().toISOString().split('T')[0];\n\nmsg.url = `https://dadosabertos.aneel.gov.br/api/3/action/datastore_search_sql?sql=SELECT * from \"fcf2906c-7c32-4b9b-a637-054e7a5234f4\" where \"SigAgente\"= '${operadora}' and \"DscBaseTarifaria\"='Tarifa de Aplicação' and \"DscSubGrupo\"='B1' and \"DscClasse\"='Residencial' and \"DscModalidadeTarifaria\"='Convencional' and \"DscSubClasse\"='Residencial' and \"DscDetalhe\"='Não se aplica' and \"DatFimVigencia\" > '${hoje}'`;\n\nreturn msg;",
    "outputs": 1,
    "timeout": 0,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 390,
    "y": 340,
    "wires": [
        [
            "b0653a2b6c994944"
        ]
    ]
},
{
    "id": "43303e313139716c",
    "type": "function",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "Bandeira",
    "func": "if (msg.payload.success) {\n    let record = msg.payload.result.records[0];\n    let bandeira = record.NomBandeiraAcionada;\n    let VlrAdicionalBandeira = parseFloat(record.VlrAdicionalBandeira.replace(\",\", \".\")) / 1000;\n\n    msg.payload = {\n        bandeira,\n        VlrAdicionalBandeira\n\n    };\n\n    return msg;\n} else {\n    msg.payload = { error: \"Erro na resposta da API\" };\n    // return msg;\n\n}\n\n",
    "outputs": 1,
    "timeout": 0,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 760,
    "y": 420,
    "wires": [
        [
            "f62c086ecdeeeed3"
        ]
    ]
},
{
    "id": "7f4cc2583ed5eefb",
    "type": "http request",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "method": "GET",
    "ret": "obj",
    "paytoqs": "ignore",
    "url": "",
    "tls": "",
    "persist": false,
    "proxy": "",
    "insecureHTTPParser": false,
    "authType": "",
    "senderr": false,
    "headers": [],
    "x": 590,
    "y": 420,
    "wires": [
        [
            "43303e313139716c"
        ]
    ]
},
{
    "id": "adb080097466b597",
    "type": "function",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "URL Bandeira",
    "func": "let data = new Date();\nlet anomes = data.getFullYear() + \"-\" + String(data.getMonth() + 1).padStart(2, '0') + '-%';\n\nmsg.url = `https://dadosabertos.aneel.gov.br/api/3/action/datastore_search_sql?sql=SELECT * from \"0591b8f6-fe54-437b-b72b-1aa2efd46e42\" where \"DatCompetencia\" like '${anomes}'`;\n\nreturn msg;\n",
    "outputs": 1,
    "timeout": 0,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 400,
    "y": 420,
    "wires": [
        [
            "7f4cc2583ed5eefb"
        ]
    ]
},
{
    "id": "ead4a3d6d2b590be",
    "type": "ha-sensor",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "CPFL Preço KWh",
    "entityConfig": "ee05fe2fc71504c5",
    "version": 0,
    "state": "payload.valor_total",
    "stateType": "msg",
    "attributes": [
        {
            "property": "vlr_tusd",
            "value": "payload.vlr_tusd",
            "valueType": "msg"
        },
        {
            "property": "vlr_te",
            "value": "payload.vlr_te",
            "valueType": "msg"
        }
    ],
    "inputOverride": "allow",
    "outputProperties": [],
    "x": 950,
    "y": 340,
    "wires": [
        [
            "605da46785594dec"
        ]
    ]
},
{
    "id": "f62c086ecdeeeed3",
    "type": "ha-sensor",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "CPFL Bandeira Tarifaria",
    "entityConfig": "574512a222a0f352",
    "version": 0,
    "state": "payload.bandeira",
    "stateType": "msg",
    "attributes": [
        {
            "property": "VlrAdicionalBandeira",
            "value": "payload.VlrAdicionalBandeira",
            "valueType": "msg"
        }
    ],
    "inputOverride": "allow",
    "outputProperties": [],
    "x": 970,
    "y": 420,
    "wires": [
        [
            "e3d4be17dc19253d"
        ]
    ]
},
{
    "id": "9df30f4e7e88772f",
    "type": "server-events",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "HA Restart",
    "server": "eaa13fce560d37e9",
    "version": 3,
    "exposeAsEntityConfig": "",
    "eventType": "home_assistant_client",
    "eventData": "",
    "waitForRunning": true,
    "outputProperties": [
        {
            "property": "entity_id",
            "propertyType": "msg",
            "value": "",
            "valueType": "eventData"
        },
        {
            "property": "topic",
            "propertyType": "msg",
            "value": "$outputData(\"eventData\").event_type",
            "valueType": "jsonata"
        },
        {
            "property": "event_type",
            "propertyType": "msg",
            "value": "$outputData(\"eventData\").event_type",
            "valueType": "jsonata"
        }
    ],
    "x": 200,
    "y": 240,
    "wires": [
        [
            "01ab11545ee6b79f"
        ]
    ]
},
{
    "id": "01ab11545ee6b79f",
    "type": "switch",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "property": "payload",
    "propertyType": "msg",
    "rules": [
        {
            "t": "eq",
            "v": "ready",
            "vt": "str"
        }
    ],
    "checkall": "true",
    "repair": false,
    "outputs": 1,
    "x": 210,
    "y": 300,
    "wires": [
        [
            "fbd9b0308694c3e6",
            "adb080097466b597"
        ]
    ]
},
{
    "id": "605da46785594dec",
    "type": "change",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "rules": [
        {
            "t": "set",
            "p": "parts",
            "pt": "msg",
            "to": "1",
            "tot": "str"
        }
    ],
    "action": "",
    "property": "",
    "from": "",
    "to": "",
    "reg": false,
    "x": 1200,
    "y": 340,
    "wires": [
        [
            "515d77a8aae560de"
        ]
    ]
},
{
    "id": "e3d4be17dc19253d",
    "type": "change",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "rules": [
        {
            "t": "set",
            "p": "parts",
            "pt": "msg",
            "to": "1",
            "tot": "str"
        }
    ],
    "action": "",
    "property": "",
    "from": "",
    "to": "",
    "reg": false,
    "x": 1200,
    "y": 420,
    "wires": [
        [
            "515d77a8aae560de"
        ]
    ]
},
{
    "id": "515d77a8aae560de",
    "type": "join",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "mode": "custom",
    "build": "array",
    "property": "payload",
    "propertyType": "msg",
    "key": "topic",
    "joiner": "\\n",
    "joinerType": "str",
    "useparts": true,
    "accumulate": false,
    "timeout": "",
    "count": "2",
    "reduceRight": false,
    "reduceExp": "",
    "reduceInit": "",
    "reduceInitType": "num",
    "reduceFixup": "",
    "x": 1410,
    "y": 380,
    "wires": [
        [
            "c286628c12b0f522"
        ]
    ]
},
{
    "id": "c286628c12b0f522",
    "type": "change",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "",
    "rules": [
        {
            "t": "set",
            "p": "payload",
            "pt": "msg",
            "to": "$sum(payload[0].VlrAdicionalBandeira+payload[1].valor_total)\t",
            "tot": "jsonata"
        }
    ],
    "action": "",
    "property": "",
    "from": "",
    "to": "",
    "reg": false,
    "x": 1620,
    "y": 380,
    "wires": [
        [
            "29ca378404f11b5c"
        ]
    ]
},
{
    "id": "29ca378404f11b5c",
    "type": "ha-sensor",
    "z": "b207558ffc3b9392",
    "g": "1b8cad127ef24c75",
    "name": "CPFL Preço Total KWh",
    "entityConfig": "346a8982ba1e71fe",
    "version": 0,
    "state": "payload",
    "stateType": "msg",
    "attributes": [],
    "inputOverride": "allow",
    "outputProperties": [],
    "x": 1880,
    "y": 380,
    "wires": [
        []
    ]
},
{
    "id": "ee05fe2fc71504c5",
    "type": "ha-entity-config",
    "server": "eaa13fce560d37e9",
    "deviceConfig": "",
    "name": "CPFL Preço KWh",
    "version": 6,
    "entityType": "sensor",
    "haConfig": [
        {
            "property": "name",
            "value": "CPFL Preço KWh"
        },
        {
            "property": "icon",
            "value": "mdi:transmission-tower"
        },
        {
            "property": "entity_picture",
            "value": ""
        },
        {
            "property": "entity_category",
            "value": ""
        },
        {
            "property": "device_class",
            "value": ""
        },
        {
            "property": "unit_of_measurement",
            "value": "R$"
        },
        {
            "property": "state_class",
            "value": ""
        }
    ],
    "resend": false,
    "debugEnabled": false
},
{
    "id": "574512a222a0f352",
    "type": "ha-entity-config",
    "server": "eaa13fce560d37e9",
    "deviceConfig": "",
    "name": "CPFL Bandeira Tarifaria",
    "version": 6,
    "entityType": "sensor",
    "haConfig": [
        {
            "property": "name",
            "value": "CPFL Bandeira Tarifaria"
        },
        {
            "property": "icon",
            "value": "mdi:transmission-tower"
        },
        {
            "property": "entity_picture",
            "value": ""
        },
        {
            "property": "entity_category",
            "value": ""
        },
        {
            "property": "device_class",
            "value": ""
        },
        {
            "property": "unit_of_measurement",
            "value": ""
        },
        {
            "property": "state_class",
            "value": ""
        }
    ],
    "resend": false,
    "debugEnabled": false
},
{
    "id": "eaa13fce560d37e9",
    "type": "server",
    "name": "Home Assistant",
    "version": 5,
    "addon": false,
    "rejectUnauthorizedCerts": true,
    "ha_boolean": "y|yes|true|on|home|open",
    "connectionDelay": true,
    "cacheJson": false,
    "heartbeat": false,
    "heartbeatInterval": "30",
    "areaSelector": "friendlyName",
    "deviceSelector": "friendlyName",
    "entitySelector": "friendlyName",
    "statusSeparator": ": ",
    "statusYear": "hidden",
    "statusMonth": "short",
    "statusDay": "numeric",
    "statusHourCycle": "default",
    "statusTimeFormat": "h:m",
    "enableGlobalContextStore": false
},
{
    "id": "346a8982ba1e71fe",
    "type": "ha-entity-config",
    "server": "eaa13fce560d37e9",
    "deviceConfig": "",
    "name": "CPFL Preço total",
    "version": 6,
    "entityType": "sensor",
    "haConfig": [
        {
            "property": "name",
            "value": "CPFL Preço total BRL/kWh"
        },
        {
            "property": "icon",
            "value": "mdi:transmission-tower"
        },
        {
            "property": "entity_picture",
            "value": ""
        },
        {
            "property": "entity_category",
            "value": ""
        },
        {
            "property": "device_class",
            "value": ""
        },
        {
            "property": "unit_of_measurement",
            "value": "BRL/kWh"
        },
        {
            "property": "state_class",
            "value": ""
        }
    ],
    "resend": false,
    "debugEnabled": false
}
]
2 Likes

@Walber e @srxz Bacana! Por favor considerem colocar isso num github, ou fazer um PR e eu adiciono no meu repositorio.

1 Like

Caros,

Obrigado pela contribuição. Fiz o merge do PR então o repositorio tem agora o flow do NR.

1 Like

Fiz uma versão beta para fazer uma previa do valor da conta de acordo com o sensor de consumo mensal.

O ideal seria conseguir pegar a porcentagem dos impostos atuais e também a data da leitura anterior.

No caso tem que alterar o nó “Calculo Conta” para cada caso, no meu esta com desconto devido a geração de energia.

Subi aqui:

2 Likes

ele começou a dar problema na hora de consultar a bandeira

é pq virou o mes, na tabela: Bandeiras Tarifárias - Bandeira Tarifária - Acionamento - Dados Abertos - Agência Nacional de Energia Elétrica consta apenas até 2025-02-01, o código pega 2025-03-% e dai como não existe ele da problema, tem que esperar atualizar a tabela, eu acho

hm… eu sabia que uma hora ou outra ia ter problema :-). Uma possivel solução é guardar o ultimo valor válido ou o valor do ultimo mês, e usar ele quando receber um resultado vazio. Isso pode mascarar algum outro erro, mas é uma opção.

ok… apliquei um fix simples… tenta pegar o mês corrente e se não conseguir pega o mês anterior. Adicionei a data de competência como um atributo do resultado, então dá pra descobrir se a bandeira é a do mês anterior. Já tá no repositório.

Tem que verificar se o mês atual for 01 colocar o mês anterior como 12

Eu to usando as bibliotecas de data do python e elas são espertinhas pra lidar com isso :-).

from dateutil.relativedelta import relativedelta
...
lastmonth = today - relativedelta(months=1)

isso cuida de tudo… inclusive do ano. Provavelmente o NR tem algo parecido.