[{"data":1,"prerenderedAt":829},["ShallowReactive",2],{"blog-\u002Fblog\u002F2026\u002F06\u002Fopcua-to-influxdb":3,"blog-all-for-related":828},{"id":4,"title":5,"authors":6,"body":8,"cta":793,"date":797,"description":798,"extension":799,"image":800,"lastUpdated":801,"meta":802,"navigation":491,"path":817,"seo":818,"sitemap":819,"stem":820,"subtitle":821,"tags":822,"tldr":826,"video":801,"__hash__":827},"blog\u002Fblog\u002F2026\u002F06\u002Fopcua-to-influxdb.md","Historical Data Logging with OPC UA and InfluxDB",[7],"sumit-shinde",{"type":9,"value":10,"toc":782},"minimark",[11,15,33,44,49,52,90,106,109,113,116,167,176,179,183,186,191,241,250,260,272,276,282,308,316,365,377,393,412,421,425,432,449,653,656,699,708,717,720,724,727,748,756,759,768,772,775,778],[12,13,14],"p",{},"Industrial equipment produces data constantly: temperatures, pressures, motor speeds, tank levels, all changing by the second. Real-time values tell you what's happening now, but the history is where the value lives, spotting a degrading pump, proving a batch stayed within spec, tracing the conditions behind a fault. OPC UA gets that data out of your equipment in a vendor-neutral way, and InfluxDB stores it as timestamped history built to query at scale. In this article, you'll connect the two in FlowFuse to turn live readings into a durable record you can query, chart, and analyze.",[16,17,18],"blockquote",{},[12,19,20,24,25,32],{},[21,22,23],"strong",{},"Note:"," If you'd rather not leave FlowFuse and want a good time-series database built in, ",[26,27,31],"a",{"href":28,"rel":29},"https:\u002F\u002Fflowfuse.com\u002Fdocs\u002Fuser\u002Fff-tables\u002F",[30],"nofollow","FlowFuse Tables"," is the answer.",[12,34,35,40],{},[36,37],"img",{"alt":38,"src":39},"The finished flow on the FlowFuse canvas: inject → Read (OPC UA) → function → influxdb out","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fopcua-to-influxdb-flow.png",[41,42,43],"em",{},"The complete pipeline: an inject node triggers a read, a function node shapes the reading, and the influxdb out node stores it.",[45,46,48],"h2",{"id":47},"what-youll-need","What you'll need",[12,50,51],{},"Before building the flow, make sure you have:",[53,54,55,67,73,79],"ul",{},[56,57,58,61,62,66],"li",{},[21,59,60],{},"A FlowFuse remote instance on an edge device."," OPC UA servers and PLCs sit on the local network, so run this flow on an edge device close to the equipment. Install the ",[26,63,65],{"href":64},"\u002Fdocs\u002Fdevice-agent\u002Finstall\u002Foverview\u002F","Device Agent"," and register it as a remote instance.",[56,68,69,72],{},[21,70,71],{},"An OPC UA server to read from."," Your data source: a PLC, gateway, or device exposing tags over OPC UA. No hardware? The free Prosys OPC UA Simulation Server works for testing.",[56,74,75,78],{},[21,76,77],{},"A running InfluxDB instance."," Cloud or self-hosted. Create an organization, a bucket, and an API token with write access.",[56,80,81,84,85,89],{},[21,82,83],{},"Endpoint details for both."," The OPC UA endpoint URL (like ",[86,87,88],"code",{},"opc.tcp:\u002F\u002F192.168.1.10:4840",") plus any credentials, and your InfluxDB URL, org, bucket, and token.",[12,91,92,93,96,97,100,101,105],{},"For the OPC UA connection, this guide uses the ",[21,94,95],{},"FlowFuse Edge Certified Nodes package",", part of the ",[21,98,99],{},"FlowFuse Edge"," offering and vetted, maintained, and tested by the FlowFuse team. ",[26,102,104],{"href":103},"\u002Fcontact-us\u002F","Contact sales"," to enable it for your team. Community nodes work too, but they don't get the same vetting, maintenance, or testing, so reliability varies.",[12,107,108],{},"With those ready, the next step is installing the nodes that connect FlowFuse to OPC UA and InfluxDB.",[45,110,112],{"id":111},"installing-the-nodes","Installing the nodes",[12,114,115],{},"You'll install two packages: the InfluxDB nodes and the FlowFuse Edge Certified OPC UA nodes.",[117,118,119,122,133,145,152],"ol",{},[56,120,121],{},"Open the editor on your remote instance.",[56,123,124,125,128,129,132],{},"From the menu (top right), select ",[21,126,127],{},"Manage palette",", then switch to the ",[21,130,131],{},"Install"," tab.",[56,134,135,136,141,142,144],{},"Search for ",[21,137,138],{},[86,139,140],{},"node-red-contrib-influxdb"," and click ",[21,143,131],{},". These nodes write to and query InfluxDB.",[56,146,147,148,151],{},"Switch the catalog using the top dropdown to ",[21,149,150],{},"FlowFuse Edge Certified Nodes",". Once sales enables FlowFuse Edge Certified Nodes for your team, this catalog shows up here; restart any existing instance so it picks up the updated catalogue.",[56,153,135,154,141,159,161,162,166],{},[21,155,156],{},[86,157,158],{},"@flowfuse-certified-nodes\u002Fopcua",[21,160,131],{},". See the ",[26,163,165],{"href":164},"\u002Fnode-red\u002Fflowfuse\u002Fedge\u002Fopcua\u002F","OPC UA node documentation"," for the full node set and configuration options.",[12,168,169,173],{},[36,170],{"alt":171,"src":172},"Manage palette Install tab showing the OPC UA certified package in search results","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fopcua-manage-pallete.png",[41,174,175],{},"Install the OPC UA certified package from the FlowFuse Edge Certified Nodes catalog.",[12,177,178],{},"Both packages now appear in the palette on the left: an OPC UA group for reading your equipment, and an InfluxDB group for storing the data. Now you're ready to connect to your server and pull live values.",[45,180,182],{"id":181},"connecting-to-your-opc-ua-server","Connecting to your OPC UA server",[12,184,185],{},"With the nodes installed, you'll build the read side of the flow: define the connection, then read your tag values on a schedule.",[187,188,190],"h3",{"id":189},"define-the-connection","Define the connection",[117,192,193,200,207,213,228,231],{},[56,194,195,196,199],{},"Drag a ",[21,197,198],{},"Read"," node onto the canvas.",[56,201,202,203,206],{},"Double-click it to open its settings, then click the \"+\" next to the ",[21,204,205],{},"Endpoint"," field to add a new endpoint configuration.",[56,208,209,210,212],{},"Enter your endpoint URL, for example ",[86,211,88],{},".",[56,214,215,216,219,220,223,224,227],{},"Set the ",[21,217,218],{},"Security Policy"," and ",[21,221,222],{},"Security Mode"," to match your server. For a local test server such as the Prosys simulator with security disabled, set both to ",[86,225,226],{},"None",". On production equipment, choose the certificate-based policy and mode your server requires, and point the node at your certificate and private-key files.",[56,229,230],{},"If your server needs credentials, enable the login option on the endpoint and enter the username and password. Otherwise leave it anonymous.",[56,232,233,234,237,238,212],{},"Click ",[21,235,236],{},"Add",", then ",[21,239,240],{},"Done",[12,242,243,247],{},[36,244],{"alt":245,"src":246},"The OPC UA endpoint configuration dialog with URL, Security Policy, and Security Mode fields","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fopcua-config.png",[41,248,249],{},"Point the endpoint at your server's URL and match its Security Policy and Mode.",[16,251,252],{},[12,253,254,256,257,259],{},[21,255,23],{}," This guide uses a simulator server for convenience. On production equipment, always enable a certificate-based Security Policy and Mode rather than ",[86,258,226],{},", so the connection between FlowFuse and your OPC UA server stays encrypted and authenticated.",[16,261,262],{},[12,263,264,266,267,271],{},[21,265,23],{}," Store connection details, endpoint URLs, credentials, InfluxDB tokens, org and bucket names in environment variables rather than hardcoding them in your nodes. This keeps secrets out of your flows and lets you move the same flow between instances without editing each node. See ",[26,268,270],{"href":269},"\u002Fdocs\u002Fuser\u002Fenvvar\u002F","Using Environment Variables"," for how to set them.",[187,273,275],{"id":274},"read-the-values-on-a-schedule","Read the values on a schedule",[12,277,278,279,212],{},"The Read node takes the Node ID of the tag from the incoming message, so feed it a message carrying the tag you want and it returns the value. First you need that Node ID, something like ",[86,280,281],{},"ns=3;s=Temperature",[117,283,284,294,301],{},[56,285,286,287,289,290,293],{},"In the ",[21,288,198],{}," node, click the tree button next to the ",[21,291,292],{},"NodeId"," field. Enter the Node ID you want to drill into (a root node such as the Objects folder is the usual starting point), and the node renders your server's address space as an expandable tree. Drill down, click the tag you want, and its Node ID fills in automatically.",[56,295,296,297,300],{},"Add an ",[21,298,299],{},"inject"," node and set it to repeat at a fixed interval, say every 5 seconds, so each pulse triggers a fresh read. Wire it into the Read node.",[56,302,303,304,307],{},"Connect a ",[21,305,306],{},"debug"," node to the Read node's output, then deploy.",[12,309,310,314],{},[36,311],{"alt":312,"src":313},"Opcua read node config","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fopcua-read-node.png",[41,315,312],{},[12,317,318,319,322,323,326,327,330,331,334,335,338,339,342,343,334,346,219,349,352,353,356,357,360,361,364],{},"Each time a message arrives, the Read node returns more than just the number. The value lands in ",[86,320,321],{},"msg.payload",", and the message also carries ",[86,324,325],{},"msg.dataType"," (such as ",[86,328,329],{},"Double"," or ",[86,332,333],{},"Boolean","), ",[86,336,337],{},"msg.statusCode"," (",[86,340,341],{},"Good"," on success, or an error like ",[86,344,345],{},"BadUnknownNode",[86,347,348],{},"msg.sourceTimestamp",[86,350,351],{},"msg.serverTimestamp"," as ISO strings, and ",[86,354,355],{},"msg.nodeId"," echoing back what was read. Watch that ",[86,358,359],{},"statusCode",", it's how you tell a real ",[86,362,363],{},"0"," reading from a tag that failed to read at all.",[12,366,367,368,330,371,373,374,376],{},"To read several tags at once, pass an array of Node IDs in ",[86,369,370],{},"msg.topic",[86,372,355],{}," and the node returns an array of values in ",[86,375,321],{},", more efficient than running a separate read per tag.",[16,378,379],{},[12,380,381,384,385,388,389,392],{},[21,382,383],{},"ℹ Tip:"," If you ever need the ",[41,386,387],{},"flow itself"," to discover Node IDs while it's running, say, to enumerate tags on a server whose address space changes, there's a dedicated ",[21,390,391],{},"Browse"," node for that. It's overkill for a fixed set of tags like this one, so we'll skip it here.",[12,394,395,396,398,399,401,402,404,405,407,408,411],{},"Deploy and watch the debug output. You should see a value arriving on each interval. The value itself is in ",[86,397,321],{},", while the timestamp and quality ride along on separate properties (",[86,400,348],{},", ",[86,403,337],{},", and so on), so ",[86,406,321],{}," is just the bare reading, like ",[86,409,410],{},"42.5",". That's the shape the next step builds on.",[12,413,414,418],{},[36,415],{"alt":416,"src":417},"The debug sidebar showing a reading with msg.payload, msg.statusCode, and msg.sourceTimestamp expanded","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fread-output.png",[41,419,420],{},"Each read returns the value in msg.payload, with timestamp and quality on separate properties.",[45,422,424],{"id":423},"writing-data-to-influxdb","Writing Data to InfluxDB",[12,426,427,428,431],{},"The OPC UA Read node and InfluxDB Out node use different message formats, so add a ",[21,429,430],{},"Function"," node between them to format the data before writing it to InfluxDB.",[117,433,434,440],{},[56,435,436,437,439],{},"Drop a ",[21,438,430],{}," node after the Read node and open it.",[56,441,442,443,445,446,448],{},"Configure it to build the payload InfluxDB expects. ",[86,444,321],{}," contains the OPC UA value, and ",[86,447,348],{}," contains the timestamp from the OPC UA server:",[450,451,456],"pre",{"className":452,"code":453,"language":454,"meta":455,"style":455},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const value = msg.payload;\n\nmsg.measurement = \"equipment_readings\";\nmsg.timestamp = msg.sourceTimestamp;\n\nmsg.payload = [\n    {\n        temperature: value\n    },\n    {\n        sensor: \"tank-1\",\n        location: \"plant-floor\"\n    }\n];\n\nreturn msg;\n","javascript","",[86,457,458,486,493,518,539,544,559,565,578,584,589,607,623,629,637,642],{"__ignoreMap":455},[459,460,463,467,471,475,478,480,483],"span",{"class":461,"line":462},"line",1,[459,464,466],{"class":465},"spNyl","const",[459,468,470],{"class":469},"sTEyZ"," value ",[459,472,474],{"class":473},"sMK4o","=",[459,476,477],{"class":469}," msg",[459,479,212],{"class":473},[459,481,482],{"class":469},"payload",[459,484,485],{"class":473},";\n",[459,487,489],{"class":461,"line":488},2,[459,490,492],{"emptyLinePlaceholder":491},true,"\n",[459,494,496,499,501,504,506,509,513,516],{"class":461,"line":495},3,[459,497,498],{"class":469},"msg",[459,500,212],{"class":473},[459,502,503],{"class":469},"measurement ",[459,505,474],{"class":473},[459,507,508],{"class":473}," \"",[459,510,512],{"class":511},"sfazB","equipment_readings",[459,514,515],{"class":473},"\"",[459,517,485],{"class":473},[459,519,521,523,525,528,530,532,534,537],{"class":461,"line":520},4,[459,522,498],{"class":469},[459,524,212],{"class":473},[459,526,527],{"class":469},"timestamp ",[459,529,474],{"class":473},[459,531,477],{"class":469},[459,533,212],{"class":473},[459,535,536],{"class":469},"sourceTimestamp",[459,538,485],{"class":473},[459,540,542],{"class":461,"line":541},5,[459,543,492],{"emptyLinePlaceholder":491},[459,545,547,549,551,554,556],{"class":461,"line":546},6,[459,548,498],{"class":469},[459,550,212],{"class":473},[459,552,553],{"class":469},"payload ",[459,555,474],{"class":473},[459,557,558],{"class":469}," [\n",[459,560,562],{"class":461,"line":561},7,[459,563,564],{"class":473},"    {\n",[459,566,568,572,575],{"class":461,"line":567},8,[459,569,571],{"class":570},"swJcz","        temperature",[459,573,574],{"class":473},":",[459,576,577],{"class":469}," value\n",[459,579,581],{"class":461,"line":580},9,[459,582,583],{"class":473},"    },\n",[459,585,587],{"class":461,"line":586},10,[459,588,564],{"class":473},[459,590,592,595,597,599,602,604],{"class":461,"line":591},11,[459,593,594],{"class":570},"        sensor",[459,596,574],{"class":473},[459,598,508],{"class":473},[459,600,601],{"class":511},"tank-1",[459,603,515],{"class":473},[459,605,606],{"class":473},",\n",[459,608,610,613,615,617,620],{"class":461,"line":609},12,[459,611,612],{"class":570},"        location",[459,614,574],{"class":473},[459,616,508],{"class":473},[459,618,619],{"class":511},"plant-floor",[459,621,622],{"class":473},"\"\n",[459,624,626],{"class":461,"line":625},13,[459,627,628],{"class":473},"    }\n",[459,630,632,635],{"class":461,"line":631},14,[459,633,634],{"class":469},"]",[459,636,485],{"class":473},[459,638,640],{"class":461,"line":639},15,[459,641,492],{"emptyLinePlaceholder":491},[459,643,645,649,651],{"class":461,"line":644},16,[459,646,648],{"class":647},"s7zQu","return",[459,650,477],{"class":469},[459,652,485],{"class":473},[12,654,655],{},"The first object contains the field values, while the second contains tags used for filtering and grouping data during queries.",[117,657,658,665,672,686,696],{"start":495},[56,659,660,661,664],{},"Wire the Function node to an ",[21,662,663],{},"InfluxDB Out"," node.",[56,666,667,668,671],{},"Open the InfluxDB Out node and click the \"+\" icon next to ",[21,669,670],{},"Server"," to configure the connection. Enter your InfluxDB URL and select the appropriate version (1.x or 2.0).",[56,673,674,675,401,678,681,682,685],{},"For InfluxDB 2.0, provide your ",[21,676,677],{},"Token",[21,679,680],{},"Organization",", and ",[21,683,684],{},"Bucket",". For InfluxDB 1.x, enter the database name and any required credentials.",[56,687,688,689,692,693,695],{},"If you did not set ",[86,690,691],{},"msg.measurement"," in the Function node, specify the measurement name (for example, ",[86,694,512],{},") in the InfluxDB Out node configuration.",[56,697,698],{},"Deploy the flow.",[12,700,701,705],{},[36,702],{"alt":703,"src":704},"The influxdb node configuration with URL and version fields","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Finfluxdb-config.png",[41,706,707],{},"Configure the server connection with your InfluxDB URL and version.",[12,709,710,714],{},[36,711],{"alt":712,"src":713},"The influxdb out node configuration with token, org, and bucket fields","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Finfluxdb-write-node-config.png",[41,715,716],{},"Set the token, organization, and bucket so readings are written to the correct destination.",[12,718,719],{},"Your readings are now flowing into InfluxDB. On each interval, the Read node retrieves the OPC UA value, the Function node formats it, and the InfluxDB Out node writes the timestamped data point to your bucket.",[45,721,723],{"id":722},"verifying-your-data","Verifying your data",[12,725,726],{},"Confirm the history is actually landing before you rely on it.",[117,728,729,735,745],{},[56,730,731,732,212],{},"Open the InfluxDB UI and go to the ",[21,733,734],{},"Data Explorer",[56,736,737,738,740,741,744],{},"Select your bucket, your ",[86,739,512],{}," measurement, and the ",[86,742,743],{},"temperature"," field.",[56,746,747],{},"Set the time range to the last few minutes and run the query.",[12,749,750,754],{},[36,751],{"alt":752,"src":753},"InfluxDB Data Explorer showing the temperature filling in","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Finfluxdb-explorer.png",[41,755,752],{},[12,757,758],{},"You'll see your readings listed in a table, one row per read interval. If new rows keep appearing as time passes, your pipeline is working end to end: equipment to OPC UA to FlowFuse to InfluxDB.",[12,760,761,762,767],{},"Storing data is only half the story. The InfluxDB In node lets you query readings back from InfluxDB, whether you need the latest values, historical trends, or aggregated metrics. You can then feed the results directly into a ",[26,763,766],{"href":764,"rel":765},"https:\u002F\u002Fdashboard.flowfuse.com",[30],"FlowFuse Dashboard"," to build charts, tables, and real-time monitoring views of your OPC UA data.",[45,769,771],{"id":770},"where-to-go-from-here","Where to go from here",[12,773,774],{},"You now have a durable, queryable record of your equipment's behavior. From here you can read more tags, tag each reading with its machine or line so you can slice the data later, and build dashboards on top of InfluxDB to chart trends and spot the slow drift that real-time values hide.",[12,776,777],{},"The real payoff comes when you stop reacting to problems and start seeing them coming. A pump that's drawing a little more current each week, a tank that's taking longer to fill, a temperature that's creeping past its usual range, all of it now sits in a history you can query, instead of vanishing the moment it happens.",[779,780,781],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":455,"searchDepth":520,"depth":520,"links":783},[784,785,786,790,791,792],{"id":47,"depth":488,"text":48},{"id":111,"depth":488,"text":112},{"id":181,"depth":488,"text":182,"children":787},[788,789],{"id":189,"depth":495,"text":190},{"id":274,"depth":495,"text":275},{"id":423,"depth":488,"text":424},{"id":722,"depth":488,"text":723},{"id":770,"depth":488,"text":771},{"type":794,"title":795,"description":796},"contact","Build on a foundation you can trust","FlowFuse Edge Certified Nodes are vetted, maintained, and tested by the FlowFuse team, so your OPC UA connections stay reliable in production. Contact sales to enable them for your team.","2026-06-24","Learn how to connect OPC UA and InfluxDB in FlowFuse to log industrial equipment data as timestamped history, so you can spot trends, prove compliance, and catch failures before they happen.","md","\u002Fblog\u002F2026\u002F06\u002Fimages\u002Fopcua-to-influxdb.png",null,{"keywords":803,"excerpt":804},"opc ua influxdb, opc ua historical data, influxdb node-red, flowfuse opc ua, industrial data logging, opc ua time series, node-red influxdb, log opc ua data, equipment data history, iiot data logging",{"type":9,"value":805},[806,808],[12,807,14],{},[16,809,810],{},[12,811,812,24,814,32],{},[21,813,23],{},[26,815,31],{"href":28,"rel":816},[30],"\u002Fblog\u002F2026\u002F06\u002Fopcua-to-influxdb",{"title":5,"description":798},{"loc":817},"blog\u002F2026\u002F06\u002Fopcua-to-influxdb","Turn live equipment readings into a durable history you can query, chart, and analyze",[823,824,825],"post","flowfuse","opcua","Real-time OPC UA values tell you what's happening now; the history is where the value lives. This guide connects OPC UA to InfluxDB in FlowFuse to turn live equipment readings into durable, timestamped history. Install the InfluxDB and FlowFuse Edge Certified OPC UA nodes, configure an OPC UA endpoint and read tags on a schedule, shape each reading into fields and tags with a function node, set the point's timestamp from the server's sample time, and write to InfluxDB with the influxdb out node. Verify the data lands in the Data Explorer, then query it back into FlowFuse Dashboard to chart trends and catch slow drift before it becomes a fault.","H1vitrPnSOBbHUdgRAQ3bgr0P8RNKt9Emkv_VJXrbK0",[],1785528702819]