Hey, i’m struggling to convert my L/min incoming constant flowrate to a volume of per month or per day.
I managed to create some utility meters that just track the usage and reset at X amount but they’re showing up as L/min… and i’d like to calculate a daily usage of L and monthly - what would be the best approach - NOTE i also have NodeRed from where the input is coming in
CODE:
[{"id":"88f33f41.f7b7f","type":"function","z":"c7f1066e.144448","name":"","func":"let lastmilis = global.get(\"timestamp_1\")\nlet milis = Date.now()\nlet diameter = 32\nglobal.set(\"timestamp_1\", Date.now())\n///////////////////////////////////////////////////////////////////\nfunction deltatime( r1 , r2 ){\n return ( (r1 - r2)/1000) \n}\nfunction convertRange( value, r1, r2 ) { \n return ( value - r1[ 0 ] ) * ( r2[ 1 ] - r2[ 0 ] ) / ( r1[ 1 ] - r1[ 0 ] ) + r2[ 0 ]\n}\nfunction areaflow(r1){\n return ( ( Math.pow( ( (r1/2)/1000 ), 2 ) * Math.PI ) )\n}\n/////////////////////////////////////////////////////////////////////\nlet flowvelocity = convertRange( (msg.payload/1000), [ 0 , 2000 ], [ 0 , 20 ])\nlet flowvolume = flowvelocity * areaflow(diameter)\nlet flowpersec = flowvolume * deltatime( milis, lastmilis )\nlet flowliters = parseFloat(flowpersec * 1000 )\nlet calculatedarea = areaflow(diameter)\nlet timedifference = deltatime(milis, lastmilis )\n/////////////////////////////////////////////////////////////////////\nreturn [ { payload: flowliters },{ payload: { time_now: milis, time_last: lastmilis, time_diffirence: timedifference + \" Sec\", flow_velocity: flowvelocity + \" Nm/s\", flow_volume_per_Sec: flowvolume + \" mˆ3/s\",\n normal_volume: flowpersec + \" mˆ3\" , actual_volume_in_liters: flowliters, calculated_area: calculatedarea + \" mˆ2\"} } ]\n//return [ { payload: flow },{ payload: flowrange + \" Nm/s\" } ]","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":260,"wires":[["aa926513.679c98","42b4ae37.67f3","172093.f93c2f6d"],["97feaf38.bdf12"]]},{"id":"42b4ae37.67f3","type":"function","z":"c7f1066e.144448","name":"","func":"if ( (Date.now() - global.get(\"timestamp2_1\")) < 60000) {\n postvolume = (global.get(\"airvolume1_1\") + msg.payload)\n global.set(\"airvolume1_1\", postvolume )\n } else {\n report = (global.get(\"airvolume1_1\") + msg.payload)\n global.set(\"airvolume1_1\", 0 )\n global.set(\"timestamp2_1\", Date.now())\n return { payload: report }\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":200,"wires":[["b03d78ac.8be978","bce4bd6.4e8744","b945bfff.70e25"]]},{"id":"b03d78ac.8be978","type":"ui_text","z":"c7f1066e.144448","group":"5367dc61.30d8d4","order":1,"width":4,"height":4,"name":"","label":"Porabljeno litrov v zadnji minuti","format":"{{msg.payload.toFixed(1)}} Litrov","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":750,"y":240,"wires":[]},{"id":"bce4bd6.4e8744","type":"ui_chart","z":"c7f1066e.144448","name":"","group":"5367dc61.30d8d4","order":5,"width":14,"height":8,"label":"","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"N/a","dot":true,"ymin":"0","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":690,"y":160,"wires":[[]]},{"id":"aa926513.679c98","type":"function","z":"c7f1066e.144448","name":"","func":"if ( global.get(\"airvolume3_1\") >= 0 ) {\n report = global.get(\"airvolume3_1\") + msg.payload\n global.set(\"airvolume3_1\", report )\n return { payload: report }\n} else {\n global.set(\"airvolume3_1\", 0 )\n return { payload: 0 }\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":320,"wires":[["7a0e2496.25895c"]]},{"id":"7a0e2496.25895c","type":"ui_text","z":"c7f1066e.144448","group":"5367dc61.30d8d4","order":4,"width":14,"height":1,"name":"","label":"Porabljeno danes","format":"{{msg.payload.toFixed(1)}} Litrov","layout":"row-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":710,"y":320,"wires":[]},{"id":"71da79b0.e2b578","type":"ui_gauge","z":"c7f1066e.144448","name":"","group":"5367dc61.30d8d4","order":2,"width":6,"height":4,"gtype":"gage","title":"Hitrost zraka","label":"Nm/s","format":"{{msg.payload}}","min":0,"max":"20","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":690,"y":420,"wires":[]},{"id":"97feaf38.bdf12","type":"function","z":"c7f1066e.144448","name":"","func":"function roundup(x) {\n return Number(parseFloat(x).toFixed(2));\n}\n\nreturn { payload: roundup(msg.payload.flow_velocity) };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":420,"wires":[["71da79b0.e2b578","ec8aaec2fa6d7050"]]},{"id":"602d9adf.a8fa74","type":"modbus-read","z":"c7f1066e.144448","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"","dataType":"InputRegister","adr":"66","quantity":"1","rate":"1","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"d0d8f050.70433","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":130,"y":60,"wires":[["88f33f41.f7b7f"],[]]},{"id":"172093.f93c2f6d","type":"link out","z":"c7f1066e.144448","name":"","mode":"link","links":["46c7a818.ffa138"],"x":265,"y":180,"wires":[]},{"id":"b945bfff.70e25","type":"link out","z":"c7f1066e.144448","name":"","links":["3946bd8e.506442"],"x":535,"y":280,"wires":[]},{"id":"ec8aaec2fa6d7050","type":"ha-sensor","z":"c7f1066e.144448","name":"Hitrost Zraka 1","entityConfig":"14d645e442930130","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":700,"y":480,"wires":[[]]},{"id":"5367dc61.30d8d4","type":"ui_group","name":"Zrak 1: Poraba","tab":"f1cd734f.ce269","order":1,"disp":true,"width":14,"collapse":true,"className":""},{"id":"d0d8f050.70433","type":"modbus-client","name":"ICP DAS COUNTER","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":false,"tcpHost":"192.168.2.69","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true,"showErrors":false,"showWarnings":true,"showLogs":true},{"id":"14d645e442930130","type":"ha-entity-config","server":"aadc97cc1869071b","deviceConfig":"7c0286166f8cef5f","name":"Hitrost Zraka 1","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Hitrost Zraka 1"},{"property":"icon","value":"mdi:gauge"},{"property":"entity_picture","value":""},{"property":"entity_category","value":"diagnostic"},{"property":"device_class","value":"volume_flow_rate"},{"property":"unit_of_measurement","value":"L/min"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"f1cd734f.ce269","type":"ui_tab","name":"Nadzor Zraka","icon":"wi-darksky-wind","disabled":false,"hidden":false},{"id":"aadc97cc1869071b","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false},{"id":"7c0286166f8cef5f","type":"ha-device-config","name":"Merilni Sistem Zrak","hwVersion":"","manufacturer":"HONSBERG Instruments","model":"LABO-FG-F","swVersion":""}]