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.

5 curtidas

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

Vou dar uma olhada nessa API

1 curtida

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 curtida

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 curtida

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

1 curtida

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 curtidas

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
}
]
3 curtidas

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

2 curtidas

Caros,

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

2 curtidas

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 curtidas

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.

Eu acho que seria muito massa se você transformasse isso numa integração. :smiley:

Cara, parabéns pelo script!
Achei mto legal e apoio a idéia de transformar numa integração.

Mas gostaria de tirar uma dúvida… Estou rodando o HA dentro de um Raspberry e por algum motivo que desconheço, não consigo fazer o sensor executar o script.
O log mostra que o sensor tentou executar, mas sem sucesso.
Alguma sugestão?

Obrigado!

Precisaria ver o log para ver onde deu problema. Mas eu arrisco um palpite: o script usa a biblioteca requests do python que normalmente já tá instalada porque um monte de integrações faz uso dela, pode ser que vc não tenha instalado nenhuma integração que faça isso. Tenta logar no rasp e rodar o script na mão com um “python3 tarifa.py”

Olá a todos, testei aqui todos os scripts. Consegui ler a tarifa e a banda tarifária.

Obrigado.

Mas, desde há alguns dias, que a banda tarifária não é atualizada. Existe um erro de leitura, embora a tarifa seja lida e guardada.