From ignition-scada
References 104 functions of Ignition expression language for tag bindings and Perspective property bindings. Use when authoring expressions in Ignition.
npx claudepluginhub thethoughtagen/ignition-ide-plugins --plugin ignition-scadaThis skill uses the workspace's default tool permissions.
Ignition expressions are used in tag expression bindings and Perspective property bindings. They are **NOT Python** — they use a distinct function-based syntax.
Generates and debugs tested Bloblang transformation scripts from natural language for mapping fields, parsing JSON/CSV/XML, converting timestamps, and filtering arrays.
Validates n8n expression syntax and fixes common errors like incorrect {{}} braces, $json/$node access, webhook body referencing, and data mapping between nodes.
Validates n8n expression syntax with {{}}, $json, $node variables, and fixes errors like incorrect webhook data access under .body. Use for writing dynamic values or debugging workflow expressions.
Share bugs, ideas, or general feedback.
Ignition expressions are used in tag expression bindings and Perspective property bindings. They are NOT Python — they use a distinct function-based syntax.
if({[.]value} > 100, "High", "Normal")
dateFormat(now(5000), "HH:mm:ss")
tag("[default]Path/To/Tag")
runScript("project.library.myFunc", 5000, arg1)
Property references: {this.props.value}, {view.custom.myProp}, {view.params.x}, {[.]tagProperty}
abs(value) — Absolute valueceil(value) — Round upfloor(value) — Round downlog(value) — Natural logarithmmax(a, b) — Greater of two valuesmin(a, b) — Lesser of two valuesmod(dividend, divisor) — Remainderpow(base, exponent) — Exponentiationrand() — Random double 0.0-1.0round(value) — Round to nearest integersignum(value) — Sign (-1, 0, 1)sqrt(value) — Square rootconcat(str1, str2, ...) — Concatenate stringsendsWith(string, suffix) — Suffix checkindexOf(string, substring) — First occurrence index (-1 if not found)left(string, count) — Leftmost characterslen(string) — String lengthlower(string) — To lowercaseltrim(string) — Remove leading whitespacemid(string, start, length) — Substring by position and lengthnumberFormat(value, format) — Format number (Java DecimalFormat)regexExtract(string, pattern) — Extract regex matchrepeat(string, count) — Repeat stringreplace(string, search, replacement) — Replace all occurrencesreverse(string) — Reverse charactersright(string, count) — Rightmost charactersrtrim(string) — Remove trailing whitespacesplit(string, delimiter) — Split into arraystartsWith(string, prefix) — Prefix checksubstring(string, start, end) — Substring by indicestoStr(value) — Convert to stringtrim(string) — Remove surrounding whitespaceunicodeNormalize(string, form) — Unicode normalization (NFC, NFD, NFKC, NFKD)upper(string) — To uppercaseurlDecode(string) — URL decodeurlEncode(string) — URL encodedateArith(date, field, amount) — Add/subtract from date field ("hour", "day", "month")dateDiff(date1, date2, field) — Difference in field unitsdateExtract(date, field) — Extract field ("year", "month", "day", "hour")dateFormat(date, format) — Format date (Java SimpleDateFormat)dateParse(string, format) — Parse string to datedaysBetween(date1, date2) — Days between dateshoursBetween(date1, date2) — Hours between datesmillisBetween(date1, date2) — Millis between datesminutesBetween(date1, date2) — Minutes between datesmonthsBetween(date1, date2) — Months between datesnow(pollRate) — Current date/time. Always specify rate: now(5000) or now(0)secondsBetween(date1, date2) — Seconds between datessetTime(date, hour, minute, second) — Set time componentstoDate(value) — Convert to date (epoch millis or string)weeksBetween(date1, date2) — Weeks between datesyearsBetween(date1, date2) — Years between dateschoose(index, value0, value1, ...) — Select by 0-based indexcoalesce(value1, value2, ...) — First non-null valuehasChanged(value) — True if value changed since last evaluationif(condition, trueValue, falseValue) — ConditionalisNull(value) — Null checkpreviousValue(value) — Previous evaluation's valuequalify(tagPath) — Qualify tag path with current providerswitch(value, case1, result1, ..., default) — Case matchingtoBool, toColor(r,g,b), toDataSet, toDouble, toFloat, toInt, toLong
avg(values...) — AveragecolumnCount(dataset) — Column countdataSetToJSON(dataset) — Dataset to JSON stringforEach(dataset, expression) — Evaluate per rowgetColumn(dataset, columnIndex) — Column as arrayhasRows(dataset) — Has at least one rowjsonToDataSet(json) — JSON to datasetlookup(dataset, lookupCol, lookupVal, resultCol) — Column lookuprowCount(dataset) — Row countsum(values...) — SumjsonDecode(json) — Parse JSONjsonDelete(json, path) — Remove at pathjsonEncode(value) — Serialize to JSONjsonKeys(json) — Object keysjsonLength(json) — Array/object lengthjsonMerge(json1, json2) — Deep merge (json2 wins)jsonSet(json, path, value) — Set at pathjsonValueByKey(json, key) — Get by keyhasQuality(value, quality) — Check quality codeisBad(value) — Bad qualityisGood(value) — Good qualityisNotGood(value) — Not good qualityisUncertain(value) — Uncertain qualitytag(tagPath) — Read tag valuetagCount(folderPath) — Count tags in folderchooseColor(index, color0, color1, ...) — Select color by indexcolorMix(color1, color2, bias) — Blend colors (0.0=color1, 1.0=color2)binDecode(string, encoding) — Decode binary (Base64, Hex)binEncode(data, encoding) — Encode binaryforceQuality(value, qualityCode) — Set quality codegetMillis() — Current epoch millishtmlToPlain(html) — Strip HTML tagsisAuthorized(requiredRoles...) — Security role checkmapLat(value) — Latitude from map coordinatemapLng(value) — Longitude from map coordinaterunScript(scriptPath, pollRate, args...) — Call project scripttypeOf(value) — Type name stringnow() defaults to 1000ms polling — always use now(5000) or now(0)runScript("project.library.func", 5000, arg1) calls project scripts from expressionsgetSibling(), getParent(), getChild(), getComponent() — break on restructure{this.props.X} (own), {view.custom.X} (view), {view.params.X} (params)