Free tool, hosted
Your EDE file, checked in this page
An EDE file that imports without an error is not the same as an EDE
file that imports correctly. This page runs the same checks
ede-check runs —
seventeen columns, the first five mandatory,
269 unit codes and 54 object types, read out of a
Niagara installation with javap rather than out of the
specification — and it runs them here, in your browser, on a file that is
never uploaded. There is nothing on our side to delete afterwards because nothing
of yours arrives.
- No upload
- No account
- Runs in the page
- Same findings as the tool
- MIT
Check a file
Drop the EDE file in, or choose it, or paste the text. If the vendor also sent a
state-text file — the one the state-text-reference column
names — add it too, because without it every reference in that column can
only be reported as unchecked.
or drop it here — it is read in the page, not sent
What the report means
The lines are the command-line tool’s own lines, deliberately: one set of
words to keep true, and the output pastes into a mail as it stands. An
ERROR is a line the parser drops — the point never arrives. A
warn is worse in practice, because the line imports: the point
arrives, with a default you did not choose, and nothing in the import log says
so. The tally at the bottom counts the columns left blank on every row, each one
silently taking its property default.
What none of it can tell you is whether the points are the right points. It reports what the parser will do with the file, not whether the file describes the plant. The tool’s page walks through a real run and what each finding costs on site.
Why your file does not leave this page
The file is read with FileReader in the page and handed straight to
the checker. There is no upload step left out of the description: no
fetch, no XMLHttpRequest, no WebSocket,
no form and no beacon in the three scripts the checker is made
of, and none in site.js, the one script every page on this site
loads — check.py fails this site’s build if a network
call appears in any of them. You are being asked to put a customer’s
point list into a stranger’s web page, so the three files
are listed here with their digests: read them, then check you read the ones
that ran.
| Script | Size and SHA-256 |
|---|---|
ede-rules.js |
read it · 12,916 bytes19f87b0da3bec9cae2528d77b519fc82b85be297110b796dbf9b3651d61bf4fb |
ede-check.js |
read it · 17,159 bytese62228335a0f23e1b929e00de8b4384600a19a316afc9c0aa6bc7b1dec08f749 |
ede-check-ui.js |
read it · 6,194 bytesff2135b1f22022cc0fd52bf120cd64a86e6d3d28892614f03edb8508d2f882e9 |
Two honest footnotes. This page carries the same cookieless analytics beacon as every other page on the site, so a request does leave your browser when the page loads — it records that the page was viewed, before you choose a file, and it never sees the file. And the rule table below is served from here, so loading this page tells us the page was loaded. Neither of those is your point list.
What a frozen rule table cannot be
The command-line tool reads the import rules out of the Niagara installation in
front of it, every run. A browser cannot run javap, so this page
carries a table read out of one installation,
4.15.5.22: seventeen columns, the first
five mandatory, 269 unit codes,
54 object types of which 13 become
points, and the comment and header prefixes the parser skips. The controller this
work usually targets runs 4.14.0.162.
A different Niagara version is a different answer, so treat this
page as the first pass and
run the tool against your own installation before
relying on either. If this page and the tool disagree about your file, the tool is
right.
One thing the table cannot carry at all: your station’s
EdeConfig. Its delimiter property defaults to
, on 4.15.5.22, and an EDE file written
with a semicolon imports as one field per line until that property is changed. The
report says so when it sees it.
Is it really the same program?
“A careful port” is not a claim anyone can check, so it is not the
claim. The two are run side by side over a corpus built to exercise every finding
either can report — a dropped mandatory column, an underscore in an integer
field, nan in a float one, a quoted delimiter, a tab-delimited body,
a trend-log row, a boolean range with three texts — and the outputs have to
be identical, including the wording of every line and the exit code.
26 runs over 13 files, 101
findings compared, no differences. The transcript is the run:
ede-check, hosted against command-line, over 13 files.
Python: tools/ede-check.py --check (reads Niagara 4.15.5.22 with javap on every run).
Browser: assets/js/ede-check.js + assets/js/ede-rules.js under node v22.23.2.
same blanks.csv exit 0, 10 lines
same blanks.csv +states exit 0, 10 lines
same clean.csv exit 0, 7 lines
same clean.csv +states exit 0, 7 lines
same comma.csv exit 0, 6 lines
same comma.csv +states exit 0, 6 lines
same mandatory.csv exit 1, 14 lines
same mandatory.csv +states exit 1, 14 lines
same no-headers.csv exit 0, 9 lines
same no-headers.csv +states exit 0, 9 lines
same nothing.csv exit 2, 0 lines
same nothing.csv +states exit 2, 0 lines
same numbers.csv exit 1, 26 lines
same numbers.csv +states exit 1, 26 lines
same one-trendlog.csv exit 0, 10 lines
same one-trendlog.csv +states exit 0, 10 lines
same shape.csv exit 0, 9 lines
same shape.csv +states exit 0, 9 lines
same tab.csv exit 0, 7 lines
same tab.csv +states exit 0, 7 lines
same template.csv exit 0, 9 lines
same template.csv +states exit 0, 7 lines
same types.csv exit 1, 19 lines
same types.csv +states exit 1, 19 lines
same values.csv exit 1, 16 lines
same values.csv +states exit 1, 15 lines
drift probe, against copies of the served scripts rather than an argument that the comparison is sensitive:
one finding reworded 2 of 26 runs differ
one unit code dropped 24 of 26 runs differ
26 of 26 runs identical, 101 findings compared.
A test nobody has watched fail proves nothing, so the same run breaks the hosted checker on purpose, twice, against copies of the files served here. Rewording one finding differs on 2 of the 26 runs — the 2 that report it. Dropping a single unit code from the rule table differs on 24, because the counts the table holds are printed at the foot of every report and compared against the counts the tool read out of the jars. A table that drifted from the installation would not quietly accept a file Niagara rejects.
The file, and the source
The Python version is one file, MIT licensed, and it is the one to keep: ede-check.py, with its page at /tools/ede-check/ and its repository at github.com/UsamaIqbal0304/ede-check. The browser version is the three scripts above, under the same licence, with the notice in each file.
Next step
Send the EDE file and the point list it was meant to produce.
A file that imports clean and lands the wrong points is usually two or three columns, and the parser decides which. Saying which columns they are costs nothing either way.