# \[Contribution\] node-red-contrib-formulize — fit closed-form equations to sensor streams

**URL:** <https://discourse.nodered.org/t/contribution-node-red-contrib-formulize-fit-closed-form-equations-to-sensor-streams/101762>\
**Category:** Share Your Nodes\
**Created:** [9 September 2026 18:42 UTC](https://discourse.nodered.org/t/contribution-node-red-contrib-formulize-fit-closed-form-equations-to-sensor-streams/101762 "2026-09-09T18:42:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![vgpprasad91](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/vgpprasad91/32/108353_2.png) [@vgpprasad91](https://discourse.nodered.org/u/vgpprasad91)\
**Post date:** [9 September 2026 18:42 UTC](https://discourse.nodered.org/t/contribution-node-red-contrib-formulize-fit-closed-form-equations-to-sensor-streams/101762/1 "2026-09-09T18:42:57Z")

</div>

Hi everyone,

I've been building a Node-RED palette that fits **closed-form symbolic equations** to sensor time-series — the kind of equation you can paste into a Function node or hand to an engineer, not another opaque model file.

**What it does**

Wire `formulize-fit` after any node that produces a CSV string, an array of objects (mqtt-in / http-in style), or an explicit `{X, y}` shape. Fire it once; the debug panel gets back:

- The fitted equation as a SymPy string + LaTeX
- R² on the training window
- 1σ standard errors on each fitted coefficient (with a note flagging singular-covariance cases so you don't over-trust stderrs on tiny samples)
- Optional BCa 95 % bootstrap CIs when you set `msg.bootstrap = true`
- A named-equation match if the shape is recognized (framework name + canonical form)
- A stable prediction URL — `POST /f/{formula_id}/predict` — you can hit for the next 30 days with any new X

Chain `formulize-predict` to hit that URL from the same flow.

**What's in the repo**

Three starter example flows (HVAC efficiency, solar degradation, predictive maintenance) — the JSON structure and node wiring are ready; the specific reference numbers are yours to fill in against your own data. Smoke test: recovers `y = x²` from 7 rows in ~2.5 s end-to-end, and `POST /f/{id}/predict` on the returned URL evaluates the fit on new points (verified today against the live API).

**Honest disclosure**

The palette calls a hosted API at `api.formulize.dev` by default. Free tier is 50 fits/month, no card required. The palette itself is MIT (`github.com/vgpprasad91/node-red-contrib-formulize`). The engine source and on-prem image are not open today — that's on the roadmap. The third node (`formulize-drift`) is in the palette but its refit backend is arriving in a follow-up release; baseline fetch works, refit does not yet. If either the on-prem story or drift refit is a hard requirement for you, hit reply and I'll prioritize.

Solo dev, this is my main project, feedback here goes straight into what I build next week.

**Install**

```auto
npm i node-red-contrib-formulize

```

Docs and worked examples: [Node-RED × formulize — sensor streams → equations in 10 minutes](https://formulize.dev/node-red)

Would love to hear what sensor streams you'd point this at.

Cheers,  
Guru
