[ { "id": "99a5fc27d68ded36", "type": "tab", "label": "Station Controller Rev 5", "disabled": false, "info": "", "env": [] }, { "id": "b4a104f17be8b15f", "type": "ui_button", "z": "99a5fc27d68ded36", "name": "STDBY/OPER", "group": "1e9cba754a4c60cd", "order": 3, "width": 4, "height": 1, "passthru": false, "label": "{{msg.label}}", "tooltip": "", "color": "", "bgcolor": "{{msg.background}}", "className": "", "icon": "", "payload": "mode", "payloadType": "flow", "topic": "", "topicType": "str", "x": 1120, "y": 1980, "wires": [ [ "e486d1e4e110117e", "e2b271bc329016c2" ] ] }, { "id": "96cd49f7e151c068", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse Band Number", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "BN" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1120, "y": 2320, "wires": [ [ "dc51dc26a63a310c" ] ] }, { "id": "dc51dc26a63a310c", "type": "change", "z": "99a5fc27d68ded36", "name": "Band Lookup Table", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "00", "fromt": "str", "to": "BAND: 160M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "01", "fromt": "str", "to": "BAND: 80M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "02", "fromt": "str", "to": "BAND: 60M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "03", "fromt": "str", "to": "BAND: 40M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "04", "fromt": "str", "to": "BAND: 30M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "05", "fromt": "str", "to": "BAND: 20M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "06", "fromt": "str", "to": "BAND: 17M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "07", "fromt": "str", "to": "BAND: 15M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "08", "fromt": "str", "to": "BAND: 12M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "09", "fromt": "str", "to": "BAND: 10M", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "10", "fromt": "str", "to": "BAND: 6M", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1350, "y": 2320, "wires": [ [ "1d243679f1374827" ] ] }, { "id": "a17033b6c136260a", "type": "loop", "z": "99a5fc27d68ded36", "name": "High Spd Loop Controller", "kind": "fcnt", "count": "4", "initial": "1", "step": "1", "condition": "", "conditionType": "re", "when": "before", "enumeration": "[1,2,3,4,5]", "enumerationType": "json", "limit": "", "loopPayload": "loop-val", "finalPayload": "final-orig", "x": 490, "y": 580, "wires": [ [ "852023566fee5ab5" ], [ "76fbce3550ea9934" ] ] }, { "id": "f9e882034422d6c8", "type": "inject", "z": "99a5fc27d68ded36", "name": "Start Loops", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": "1", "topic": "", "payload": "", "payloadType": "date", "x": 410, "y": 500, "wires": [ [ "a17033b6c136260a" ] ] }, { "id": "1ac3be9966a5b37a", "type": "function", "z": "99a5fc27d68ded36", "name": "Restart Loop", "func": "msg.command=\"restart\";\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1370, "y": 360, "wires": [ [ "a17033b6c136260a" ] ] }, { "id": "76fbce3550ea9934", "type": "change", "z": "99a5fc27d68ded36", "name": "High Spd Msg Generator", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "^PWI;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "2", "fromt": "num", "to": "^PC;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "3", "fromt": "num", "to": "^PWF;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "4", "fromt": "num", "to": "^SW;", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 580, "wires": [ [ "f46e7ae8e99b4a93", "2eafe4bce4396453" ] ] }, { "id": "f46e7ae8e99b4a93", "type": "delay", "z": "99a5fc27d68ded36", "name": "", "pauseType": "delay", "timeout": ".05", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 1190, "y": 580, "wires": [ [ "a17033b6c136260a" ] ] }, { "id": "ceab50ff5d85cf19", "type": "switch", "z": "99a5fc27d68ded36", "name": "Message Separator", "property": "payload", "propertyType": "msg", "rules": [ { "t": "cont", "v": "KPA", "vt": "str" }, { "t": "cont", "v": "OS", "vt": "str" }, { "t": "cont", "v": "BN", "vt": "str" }, { "t": "cont", "v": "FS", "vt": "str" }, { "t": "cont", "v": "TM", "vt": "str" }, { "t": "cont", "v": "FL", "vt": "str" }, { "t": "cont", "v": "PWI", "vt": "str" }, { "t": "cont", "v": "PWF", "vt": "str" }, { "t": "cont", "v": "SW", "vt": "str" }, { "t": "cont", "v": "PC", "vt": "str" }, { "t": "null" } ], "checkall": "false", "repair": false, "outputs": 11, "x": 770, "y": 2440, "wires": [ [ "48d47b0d905c2749", "66974f098f4ad2eb" ], [ "e5b0dcdb419c0ab3" ], [ "96cd49f7e151c068" ], [ "a1cd8de4f92f0d51" ], [ "bbc5de5375e36e05" ], [ "5d222abe744ee065" ], [ "b8a4f410fdea5b92" ], [ "1f9226ffec26a214" ], [ "2281b0bfc559fd78" ], [ "62ca53b8ee38b0ba" ], [] ] }, { "id": "1f9226ffec26a214", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse Fwd RF Pwr", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "PWF" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1110, "y": 2520, "wires": [ [ "8b1436fc569f9645" ] ] }, { "id": "8b1436fc569f9645", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "FWD RF PWR", "group": "1e9cba754a4c60cd", "order": 8, "width": 6, "height": 5, "gtype": "gage", "title": "FWD RF PWR", "label": "WATTS", "format": "{{value}}", "min": 0, "max": "2000", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "1600", "seg2": "1700", "className": "", "x": 1680, "y": 2520, "wires": [] }, { "id": "ff16f05dc0494c1e", "type": "change", "z": "99a5fc27d68ded36", "name": "Low Spd Msg Generator", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "1", "fromt": "num", "to": "^OS;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "2", "fromt": "num", "to": "^BN;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "3", "fromt": "num", "to": "^FS;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "4", "fromt": "num", "to": "^TM;", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "5", "fromt": "num", "to": "^FL;", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 770, "y": 360, "wires": [ [ "d1df5b393ffc5239", "9fcc2bbf6e3fd01f" ] ] }, { "id": "d1df5b393ffc5239", "type": "delay", "z": "99a5fc27d68ded36", "name": "", "pauseType": "delay", "timeout": ".05", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 1190, "y": 360, "wires": [ [ "1ac3be9966a5b37a" ] ] }, { "id": "852023566fee5ab5", "type": "loop", "z": "99a5fc27d68ded36", "name": "Low Spd Loop Controller", "kind": "fcnt", "count": "5", "initial": "1", "step": "1", "condition": "", "conditionType": "re", "when": "before", "enumeration": "[1,2,3,4,5]", "enumerationType": "json", "limit": "", "loopPayload": "loop-val", "finalPayload": "final-orig", "x": 490, "y": 360, "wires": [ [ "63cbf8e6643b35a5" ], [ "ff16f05dc0494c1e" ] ] }, { "id": "63cbf8e6643b35a5", "type": "function", "z": "99a5fc27d68ded36", "name": "Restart Loop", "func": "msg.command=\"restart\";\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 450, "y": 280, "wires": [ [ "852023566fee5ab5" ] ] }, { "id": "adee6e2d15e9c37b", "type": "tcp request", "z": "99a5fc27d68ded36", "name": "KPA1500", "server": "kpa1500.coffinbrook", "port": "1500", "out": "sit", "ret": "string", "splitc": " ", "newline": "", "tls": "", "x": 1760, "y": 940, "wires": [ [ "fb0f6deda5fbbc38", "e239d21947e3a2d3" ] ] }, { "id": "b8a4f410fdea5b92", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse Inp RF Pwr", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "PWI" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1110, "y": 2480, "wires": [ [ "eb0bb7707f53a7fa" ] ] }, { "id": "eb0bb7707f53a7fa", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "INP RF PWR", "group": "1e9cba754a4c60cd", "order": 7, "width": 6, "height": 5, "gtype": "gage", "title": "INPUT RF PWR", "label": "WATTS", "format": "{{value}}", "min": 0, "max": "70", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "50", "seg2": "60", "className": "", "x": 1670, "y": 2480, "wires": [] }, { "id": "2281b0bfc559fd78", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse SWR", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "SW" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1090, "y": 2560, "wires": [ [ "0ecf200cc2637f6a" ] ] }, { "id": "3d254c98f4225b62", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "SWR", "group": "1e9cba754a4c60cd", "order": 9, "width": 6, "height": 5, "gtype": "gage", "title": "SWR", "label": ":1", "format": "{{value}}", "min": 0, "max": "10", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "1.5", "seg2": "2.5", "className": "", "x": 1650, "y": 2560, "wires": [] }, { "id": "62ca53b8ee38b0ba", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse PA Current", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "PC" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1110, "y": 2600, "wires": [ [ "6548c5539c668d11" ] ] }, { "id": "0ecf200cc2637f6a", "type": "function", "z": "99a5fc27d68ded36", "name": "Divide by 10", "func": "msg.payload = msg.payload/10;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 1290, "y": 2560, "wires": [ [ "3d254c98f4225b62" ] ] }, { "id": "a1cd8de4f92f0d51", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse Fan Speed", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "FS" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1110, "y": 2360, "wires": [ [ "54a42388fe78cabf" ] ] }, { "id": "54a42388fe78cabf", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "FAN SPEED", "group": "1e9cba754a4c60cd", "order": 10, "width": 4, "height": 3, "gtype": "gage", "title": "FAN SPEED", "label": "", "format": "{{value}}", "min": 0, "max": "5", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "3", "seg2": "4", "className": "", "x": 1670, "y": 2360, "wires": [] }, { "id": "bbc5de5375e36e05", "type": "string", "z": "99a5fc27d68ded36", "name": "Parse PA Temperature", "methods": [ { "name": "delLeftMost", "params": [ { "type": "str", "value": "TM" } ] } ], "prop": "payload", "propout": "payload", "object": "msg", "objectout": "msg", "x": 1120, "y": 2400, "wires": [ [ "acb547da974c0c5b" ] ] }, { "id": "acb547da974c0c5b", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "PA TEMP", "group": "1e9cba754a4c60cd", "order": 11, "width": 4, "height": 3, "gtype": "gage", "title": "PA TEMP", "label": "°C", "format": "{{value}}", "min": 0, "max": "100", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "40", "seg2": "70", "className": "", "x": 1660, "y": 2400, "wires": [] }, { "id": "377a83d69cfc3de5", "type": "jvmg_key", "z": "99a5fc27d68ded36", "name": "gate1", "trigger": "294acd2b946b3c4b", "x": 490, "y": 1220, "wires": [] }, { "id": "2eafe4bce4396453", "type": "jvmg_gate", "z": "99a5fc27d68ded36", "name": "gate1", "default": true, "trigger": "294acd2b946b3c4b", "x": 1110, "y": 760, "wires": [ [ "e486d1e4e110117e" ] ] }, { "id": "ef2370c36d948706", "type": "function", "z": "99a5fc27d68ded36", "name": "Open Message Gate if Power is On", "func": "var power = flow.get(\"powerstate\");\nif (power==\"on\") msg.payload=Boolean(true);\n else msg.payload=Boolean(false);\nmsg.test=power;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 360, "y": 1160, "wires": [ [ "377a83d69cfc3de5", "f2cd13856e4b0aee", "239468bf8991902c" ] ] }, { "id": "854b1b80a91eb683", "type": "ui_button", "z": "99a5fc27d68ded36", "name": "POWER", "group": "1e9cba754a4c60cd", "order": 2, "width": 4, "height": 1, "passthru": false, "label": "{{msg.label}}", "tooltip": "", "color": "", "bgcolor": "{{msg.background}}", "className": "", "icon": "", "payload": "powerbutton", "payloadType": "flow", "topic": "", "topicType": "str", "x": 820, "y": 1560, "wires": [ [ "e2b271bc329016c2", "e486d1e4e110117e", "8e775c22ae84092a" ] ] }, { "id": "e5b0dcdb419c0ab3", "type": "function", "z": "99a5fc27d68ded36", "name": "Make Button Reflect True State", "func": "\nif (msg.payload==\"OS1\") msg.background=\"green\",\n msg.label=\"MODE: OPERATE\",\n flow.set(\"mode\", \"^OS0;\");\n else if (msg.payload==\"OS0\") msg.background=\"yellow\",\n msg.label=\"MODE: STANDBY\",\n flow.set(\"mode\", \"^OS1;\");\n else msg.background=\"gray\",\n msg.label=\"UNK STATE\";\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 870, "y": 1980, "wires": [ [ "b4a104f17be8b15f" ] ] }, { "id": "6548c5539c668d11", "type": "ui_gauge", "z": "99a5fc27d68ded36", "name": "PA CURRENT", "group": "1e9cba754a4c60cd", "order": 12, "width": 4, "height": 3, "gtype": "gage", "title": "PA CURRENT", "label": "AMPS", "format": "{{value}}", "min": 0, "max": "100", "colors": [ "#00b500", "#e6e600", "#ca3838" ], "seg1": "60", "seg2": "70", "className": "", "x": 1680, "y": 2600, "wires": [] }, { "id": "1d243679f1374827", "type": "ui_button", "z": "99a5fc27d68ded36", "name": "Band", "group": "1e9cba754a4c60cd", "order": 4, "width": 4, "height": 1, "passthru": false, "label": "{{msg.payload}}", "tooltip": "", "color": "", "bgcolor": "", "className": "", "icon": "", "payload": "", "payloadType": "str", "topic": "topic", "topicType": "msg", "x": 1650, "y": 2320, "wires": [ [] ] }, { "id": "05f1176fd4a8c680", "type": "comment", "z": "99a5fc27d68ded36", "name": "High speed message generation, approx. 20Hz", "info": "Input Power\nForward Power\nSWR\nPA Current", "x": 240, "y": 440, "wires": [] }, { "id": "de99b0f2f6b1bfff", "type": "comment", "z": "99a5fc27d68ded36", "name": "Low speed message generation, approx. 1Hz", "info": "Operating State\nFan Speed\nFault List\nBand Number\nPA Temperature", "x": 230, "y": 220, "wires": [] }, { "id": "60190fbf9cac0247", "type": "change", "z": "99a5fc27d68ded36", "name": "Fault Code Decoder", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "FL10", "fromt": "str", "to": "FAULT: watchdog timer reset", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL20", "fromt": "str", "to": "FAULT: PA current too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL40", "fromt": "str", "to": "FAULT: temperature too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL60", "fromt": "str", "to": "FAULT: input power too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL61", "fromt": "str", "to": "FAULT: gain too low", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL70", "fromt": "str", "to": "FAULT: invalid frequency", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL80", "fromt": "str", "to": "FAULT: 50V supply out of range", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL81", "fromt": "str", "to": "FAULT: 5V supply out of range", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL82", "fromt": "str", "to": "FAULT: 10V supply out of range", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL83", "fromt": "str", "to": "FAULT: 12V supply out of range", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL84", "fromt": "str", "to": "FAULT: -12V supply out of range", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL85", "fromt": "str", "to": "FAULT: 5V or 400V LPF voltages not detected", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL90", "fromt": "str", "to": "FAULT: reflected power too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL91", "fromt": "str", "to": "FAULT: SWR very high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FL92", "fromt": "str", "to": "FAULT: ATU search fail", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FLB0", "fromt": "str", "to": "FAULT: dissipated power too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FLC0", "fromt": "str", "to": "FAULT: forward power too high", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FLC1", "fromt": "str", "to": "FAULT: forward power too high for ATU", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "FLF0", "fromt": "str", "to": "FAULT: Gain too high", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1360, "y": 2440, "wires": [ [ "2f3fdae55a13f9db" ] ] }, { "id": "2f3fdae55a13f9db", "type": "ui_toast", "z": "99a5fc27d68ded36", "position": "dialog", "displayTime": "3", "highlight": "", "sendall": true, "outputs": 1, "ok": "CLEAR FAULT", "cancel": "", "raw": false, "className": "", "topic": "", "name": "Fault Pop-up", "x": 1670, "y": 2440, "wires": [ [] ] }, { "id": "27c0aef1732068df", "type": "split", "z": "99a5fc27d68ded36", "name": "Split on ;", "splt": ";", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": true, "addname": "", "x": 540, "y": 2480, "wires": [ [ "ceab50ff5d85cf19" ] ] }, { "id": "fb0f6deda5fbbc38", "type": "switch", "z": "99a5fc27d68ded36", "name": "Remove Null Messages", "property": "payload", "propertyType": "msg", "rules": [ { "t": "nnull" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 1790, "y": 2160, "wires": [ [ "65566025d0b4a559" ] ] }, { "id": "65566025d0b4a559", "type": "split", "z": "99a5fc27d68ded36", "name": "Split on ^", "splt": "^", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": true, "addname": "", "x": 540, "y": 2400, "wires": [ [ "27c0aef1732068df" ] ] }, { "id": "e486d1e4e110117e", "type": "simple-queue", "z": "99a5fc27d68ded36", "name": "", "firstMessageBypass": true, "bypassInterval": "0", "x": 1550, "y": 940, "wires": [ [ "adee6e2d15e9c37b" ] ] }, { "id": "e239d21947e3a2d3", "type": "change", "z": "99a5fc27d68ded36", "name": "Wait for Semicolon to Trigger Next Message", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": ";", "fromt": "str", "to": "trigger", "tot": "msg" }, { "t": "set", "p": "trigger", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 990, "y": 940, "wires": [ [ "e486d1e4e110117e" ] ] }, { "id": "e2b271bc329016c2", "type": "change", "z": "99a5fc27d68ded36", "name": "Trigger for Button Messages", "rules": [ { "t": "set", "p": "trigger", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1520, "y": 1740, "wires": [ [ "e486d1e4e110117e" ] ] }, { "id": "5d222abe744ee065", "type": "change", "z": "99a5fc27d68ded36", "name": "Filter No Fault Code", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "FL00", "fromt": "str", "to": "", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1120, "y": 2440, "wires": [ [ "60190fbf9cac0247" ] ] }, { "id": "9632dec6b8304172", "type": "inject", "z": "99a5fc27d68ded36", "name": "Check that KPA1500 is powered on and on the network every 1 sec", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "1", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "^I;", "payloadType": "str", "x": 850, "y": 1100, "wires": [ [ "e2b271bc329016c2", "e486d1e4e110117e" ] ] }, { "id": "66974f098f4ad2eb", "type": "function", "z": "99a5fc27d68ded36", "name": "Make Button Reflect True State", "func": "if (msg.payload==\"KPA1500\") msg.background=\"green\",\n msg.label=\"POWER: ON\",\n flow.set(\"powerbutton\", \"^on0;\"),\n flow.set(\"powerstate\", \"on\");\n else if (msg.payload==\"timeout\") msg.background=\"yellow\",\n msg.label=\"POWER: OFF\",\n flow.set(\"powerbutton\", \"^on1;\"),\n flow.set(\"powerstate\", \"off\");\n else msg.background=\"gray\",\n msg.label=\"UNK STATE\",\n flow.set(\"powerstate\", \"off\");\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 570, "y": 1560, "wires": [ [ "854b1b80a91eb683" ] ] }, { "id": "7645460fa201a093", "type": "status", "z": "99a5fc27d68ded36", "name": "Status All Nodes", "scope": null, "x": 1100, "y": 2640, "wires": [ [ "eede8898ef056d2b" ] ] }, { "id": "eede8898ef056d2b", "type": "ui_toast", "z": "99a5fc27d68ded36", "position": "dialog", "displayTime": "3", "highlight": "", "sendall": true, "outputs": 1, "ok": "OK", "cancel": "", "raw": false, "className": "", "topic": "", "name": "Status Pop-up", "x": 1680, "y": 2640, "wires": [ [] ] }, { "id": "48d47b0d905c2749", "type": "trigger", "z": "99a5fc27d68ded36", "name": "Message Timeout 2 Sec", "op1": "", "op2": "timeout", "op1type": "nul", "op2type": "str", "duration": "2", "extend": true, "overrideDelay": false, "units": "s", "reset": "", "bytopic": "topic", "topic": "payload", "outputs": 1, "x": 370, "y": 1440, "wires": [ [ "66974f098f4ad2eb" ] ] }, { "id": "f6fe768c43217eba", "type": "inject", "z": "99a5fc27d68ded36", "name": "Start Timer When Flow Starts", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 390, "y": 1380, "wires": [ [ "48d47b0d905c2749" ] ] }, { "id": "b21cfec34068469f", "type": "wake on lan", "z": "99a5fc27d68ded36", "mac": "E8:EB:1B:CD:47:6B", "host": "192.168.1.255", "udpport": "9", "numpackets": "3", "interval": 100, "name": "", "x": 840, "y": 1820, "wires": [] }, { "id": "0c9976ad670013c4", "type": "inject", "z": "99a5fc27d68ded36", "name": "Check once per second", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "1", "crontab": "", "once": true, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 230, "y": 1100, "wires": [ [ "ef2370c36d948706" ] ] }, { "id": "f2cd13856e4b0aee", "type": "rbe", "z": "99a5fc27d68ded36", "name": "Trigger Message Queue to Start", "func": "rbe", "gap": "", "start": "", "inout": "out", "septopics": true, "property": "payload", "topi": "topic", "x": 910, "y": 1160, "wires": [ [ "e2b271bc329016c2" ] ] }, { "id": "9fcc2bbf6e3fd01f", "type": "jvmg_gate", "z": "99a5fc27d68ded36", "name": "gate1", "default": true, "trigger": "294acd2b946b3c4b", "x": 1110, "y": 700, "wires": [ [ "e486d1e4e110117e" ] ] }, { "id": "8e775c22ae84092a", "type": "switch", "z": "99a5fc27d68ded36", "name": "Pass Only \"ON\" Commands", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "^on1;", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 800, "y": 1780, "wires": [ [ "b21cfec34068469f", "1fda06e8c8f41e23" ] ] }, { "id": "8de7b69a3632d239", "type": "ui_toast", "z": "99a5fc27d68ded36", "position": "bottom left", "displayTime": "20", "highlight": "", "sendall": true, "outputs": 0, "ok": "OK", "cancel": "", "raw": false, "className": "", "topic": "", "name": "Power ON Notification", "x": 1120, "y": 1820, "wires": [] }, { "id": "1fda06e8c8f41e23", "type": "change", "z": "99a5fc27d68ded36", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "Attempting to find and power on amplifier. This may require up to 20 seconds.\\nIf this fails repeatedly check amplifier and settings.", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1060, "y": 1780, "wires": [ [ "8de7b69a3632d239" ] ] }, { "id": "239468bf8991902c", "type": "rbe", "z": "99a5fc27d68ded36", "name": "Block Unless Change", "func": "rbe", "gap": "", "start": "", "inout": "out", "septopics": true, "property": "payload", "topi": "topic", "x": 760, "y": 1860, "wires": [ [ "e6b1bdc250222461" ] ] }, { "id": "e6b1bdc250222461", "type": "change", "z": "99a5fc27d68ded36", "name": "Dismiss on success", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 970, "y": 1860, "wires": [ [ "8de7b69a3632d239" ] ] }, { "id": "69e325159dc57b39", "type": "comment", "z": "99a5fc27d68ded36", "name": "Messages are gated off when amp is not on", "info": "", "x": 230, "y": 660, "wires": [] }, { "id": "d6a8302ce5c96756", "type": "comment", "z": "99a5fc27d68ded36", "name": "Closed loop, queued and metered message transmission", "info": "", "x": 270, "y": 860, "wires": [] }, { "id": "21ec20201c3de732", "type": "comment", "z": "99a5fc27d68ded36", "name": "Closed loop checking to see if amp is online", "info": "", "x": 230, "y": 1040, "wires": [] }, { "id": "2a55ae512af12257", "type": "comment", "z": "99a5fc27d68ded36", "name": "Two second period at startup to determine amp state", "info": "", "x": 250, "y": 1320, "wires": [] }, { "id": "ef840797d8eaa398", "type": "comment", "z": "99a5fc27d68ded36", "name": "Power button and power state indicator", "info": "", "x": 210, "y": 1560, "wires": [] }, { "id": "607f246e50e34c65", "type": "comment", "z": "99a5fc27d68ded36", "name": "Power off message (simple and easy!)", "info": "", "x": 950, "y": 1460, "wires": [] }, { "id": "e84e76dd4cd5e281", "type": "comment", "z": "99a5fc27d68ded36", "name": "Power ON logic (complicated!)", "info": "", "x": 180, "y": 1780, "wires": [] }, { "id": "77550eee82af55ee", "type": "comment", "z": "99a5fc27d68ded36", "name": "Mode control and state indicator, closed loop", "info": "", "x": 230, "y": 1960, "wires": [] }, { "id": "fc04a39dc32a7e0b", "type": "comment", "z": "99a5fc27d68ded36", "name": "closed loop reporting for ON state", "info": "", "x": 230, "y": 1600, "wires": [] }, { "id": "99396de93d1fb549", "type": "comment", "z": "99a5fc27d68ded36", "name": "Message and data processing and display", "info": "", "x": 220, "y": 2180, "wires": [] }, { "id": "ca7d76ed9883097c", "type": "comment", "z": "99a5fc27d68ded36", "name": "Overall design goals READ ME", "info": "Make sure all indicators are based on true state of the amplifier, i.e. do not base them on button clicks, but only on the receipt of actual messages from the amp.\nMake sure that data is transmitted to the amp cleanly, wait for semicolons on responses, don't let amp input buffer get overwhelmed.\nGet responsive, buttery smooth display of important parameters (e.g. forward RF power). To do this low speed queries must be evenly interspersed with high speed queries, queries should not go in \"clumps\".\nPay attention to idiosyncracies in the amp firmware and suppress display of data that should be suppressed when amp is OFF or in RX.", "x": 190, "y": 100, "wires": [] }, { "id": "e497b126e55b2a93", "type": "ui_button", "z": "99a5fc27d68ded36", "name": "Settings", "group": "1e9cba754a4c60cd", "order": 1, "width": 1, "height": 1, "passthru": false, "label": "", "tooltip": "", "color": "", "bgcolor": "", "className": "", "icon": "settings", "payload": "", "payloadType": "str", "topic": "topic", "topicType": "msg", "x": 360, "y": 2740, "wires": [ [ "e48f6e09a28bc8e0" ] ] }, { "id": "8ccfe055fd998238", "type": "ui_toast", "z": "99a5fc27d68ded36", "position": "prompt", "displayTime": "3", "highlight": "", "sendall": true, "outputs": 1, "ok": "OK", "cancel": "Cancel", "raw": false, "className": "", "topic": "", "name": "Enter IP Address", "x": 750, "y": 2740, "wires": [ [ "c3c2a2b10acdf106" ] ] }, { "id": "e48f6e09a28bc8e0", "type": "change", "z": "99a5fc27d68ded36", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "Enter IP address of amplifier", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 540, "y": 2740, "wires": [ [ "8ccfe055fd998238", "d86c2f3c9f4a93ab" ] ] }, { "id": "d86c2f3c9f4a93ab", "type": "debug", "z": "99a5fc27d68ded36", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 750, "y": 2820, "wires": [] }, { "id": "c3c2a2b10acdf106", "type": "debug", "z": "99a5fc27d68ded36", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1010, "y": 2820, "wires": [] }, { "id": "49947db00fb809a3", "type": "comment", "z": "99a5fc27d68ded36", "name": "Settings button processing (unfinished)", "info": "", "x": 230, "y": 2660, "wires": [] }, { "id": "1cb94ce7a98d8247", "type": "ui_spacer", "z": "99a5fc27d68ded36", "name": "spacer", "group": "1e9cba754a4c60cd", "order": 5, "width": 17, "height": 1 }, { "id": "a85f0a3be5f4d6d5", "type": "ui_spacer", "z": "99a5fc27d68ded36", "name": "spacer", "group": "1e9cba754a4c60cd", "order": 6, "width": 12, "height": 1 }, { "id": "bf10ad686b41d731", "type": "ui_spacer", "z": "99a5fc27d68ded36", "name": "spacer", "group": "1e9cba754a4c60cd", "order": 13, "width": 12, "height": 1 }, { "id": "1e9cba754a4c60cd", "type": "ui_group", "name": "KPA1500 Control", "tab": "a0d60a2bec02c6c5", "order": 2, "disp": false, "width": 30, "collapse": false, "className": "" }, { "id": "294acd2b946b3c4b", "type": "jvmg_trigger", "trigger": "gate1" }, { "id": "a0d60a2bec02c6c5", "type": "ui_tab", "name": "WU2O STATION CONTROLLER", "icon": "dashboard", "disabled": false, "hidden": false } ]