Fiz um flow em nodered para converter o valor MHW para Kwh contudo, algo aqui me está a escapar, ou seja consigo ver que o novo atributo aparece no debug, ,mas no home assistant ele não actualiza o sensor com no novo atributo.
este é o código da função:
var sensorValue = msg.payload;
// Realize o cálculo
var resultado = (sensorValue / 1000) * 1.183 + 0.01002 - 0.0958;
// Arredonda o resultado para 3 casas decimais
resultado = resultado.toFixed(3);
// Atualiza o atributo "valor_khw" no objeto msg.data.new_state.attributes
msg.data.new_state.attributes.valor_kWh = resultado.toString();
return msg;
Na variavel, está a conta a ser feita para converter segundo uma fórmula simplificada da Luzboa.
Deixo aqui o flow completo, para quem quiser ajudar:
[{"id":"b959a3d6368b4dcb","type":"server-state-changed","z":"cd967ef81c14b84f","name":"preco mwh omie","server":"cd683d65.68ba9","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.omie_spot_price_pt","entityidfiltertype":"exact","outputinitially":true,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":180,"y":680,"wires":[["709715810e2e557b"]]},{"id":"709715810e2e557b","type":"change","z":"cd967ef81c14b84f","name":"valor","rules":[{"t":"set","p":"data.new_state.attributes.today_average","pt":"msg","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":680,"wires":[["25f2395b85663b34"]]},{"id":"25f2395b85663b34","type":"function","z":"cd967ef81c14b84f","name":"Cálculo Matemático","func":"var sensorValue = msg.payload;\n\n// Realize o cálculo\nvar resultado = (sensorValue / 1000) * 1.183 + 0.01002 - 0.0958;\n\n// Arredonde o resultado para 3 casas decimais\nresultado = resultado.toFixed(3);\n\n// Atualize o atributo \"novo_atributo\" no objeto msg.data.new_state.attributes\nmsg.data.new_state.attributes.valor_kWh = resultado.toString();\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":680,"wires":[["60ee2b1d96b75fb3"]]},{"id":"60ee2b1d96b75fb3","type":"api-call-service","z":"cd967ef81c14b84f","name":"","server":"cd683d65.68ba9","version":5,"debugenabled":false,"domain":"homeassistant","service":"update_entity","areaId":[],"deviceId":[],"entityId":["sensor.omie_spot_price_pt"],"data":"{\"data\":{\"entity_id\":\"sensor.omie_spot_price_pt\",\"state\":\"{{payload}}\",\"attributes\":{\"valor_kWh\":\"{{data.new_state.attributes.valor_kWh}}\"}}}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":780,"y":680,"wires":[["22c770aeed473b57"]]},{"id":"cd683d65.68ba9","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}]