Manages the 1-wire bus

Dependents:   oldheating heating

web/web-1wire-script.inc

Committer:
andrewboyson
Date:
2021-02-18
Revision:
11:3859fee99d5d
Parent:
10:b4e0b4c4e045

File content as of revision 11:3859fee99d5d:

"//1wire script\n"
"'use strict';\n"
"\n"
"let allRomValues        = new Map();\n"
"let oneWireScanTime     = 0;\n"
"let oneWireLowTweak     = 0;\n"
"let oneWireFloatTweak   = 0;\n"
"let oneWireReadTweak    = 0;\n"
"let oneWireHighTweak    = 0;\n"
"let oneWireReleaseTweak = 0;\n"
"let oneWireTrace        = false;\n"
"let assignedRoms        = new Array();\n"
"let assignedNames       = new Array();\n"
"\n"
"function getAssignedName(rom)\n"
"{\n"
"    for (let i = 0; i < assignedRoms.length; i++)\n"
"    {\n"
"        if (assignedRoms[i] === rom) return assignedNames[i]; \n"
"    }\n"
"    return '';\n"
"}\n"
"\n"
"function addRomValue(line)\n"
"{\n"
"    if (line) allRomValues.set(line.substr(0, 16), line.substr(16));\n"
"}\n"
"function parseAllRomValues(topic)\n"
"{\n"
"    allRomValues.clear();\n"
"    topic.split('\\n').forEach(addRomValue);\n"
"}\n"
"function parseTimings(topic)\n"
"{\n"
"    let lines = topic.split('\\n');\n"
"    oneWireScanTime     = Ajax.hexToSignedInt16(lines[0]);\n"
"    oneWireLowTweak     = Ajax.hexToSignedInt16(lines[1]);\n"
"    oneWireFloatTweak   = Ajax.hexToSignedInt16(lines[2]);\n"
"    oneWireReadTweak    = Ajax.hexToSignedInt16(lines[3]);\n"
"    oneWireHighTweak    = Ajax.hexToSignedInt16(lines[4]);\n"
"    oneWireReleaseTweak = Ajax.hexToSignedInt16(lines[5]);\n"
"    oneWireTrace        =                       lines[6] != '0';\n"
"}\n"
"function addRom(line)\n"
"{\n"
"    if (line)\n"
"    {\n"
"        assignedRoms.push(line.substr(0, 16))\n"
"        assignedNames.push(line.substr(16));\n"
"    }\n"
"}\n"
"function parseAssigned(topic)\n"
"{\n"
"    assignedRoms  = new Array();\n"
"    assignedNames = new Array();\n"
"    topic.split('\\n').forEach(addRom);\n"
"}\n"
"function parse()\n"
"{\n"
"    let topics = Ajax.response.split('\\f');\n"
"    parseTimings     (topics[0]);\n"
"    parseAllRomValues(topics[1]);\n"
"    parseAssigned    (topics[2]);\n"
"}\n"
"function display()\n"
"{\n"
"    let elem;\n"
"    elem = Ajax.getElementOrNull('ajax-device-values');\n"
"    if (elem) \n"
"    {\n"
"        elem.textContent = '';\n"
"        for (let [key, value] of allRomValues)\n"
"        {\n"
"            elem.textContent += key;\n"
"            elem.textContent += ' '; \n"
"            elem.textContent += OneWire.DS18B20ToString(Ajax.hexToSignedInt16(value));\n"
"            elem.textContent += ' ';\n"
"            elem.textContent += getAssignedName(key);\n"
"            elem.textContent += '\\r\\n';\n"
"        }\n"
"    }\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-scan-time'    ); if (elem) elem.textContent = oneWireScanTime;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-tweak-low'    ); if (elem) elem.textContent = oneWireLowTweak;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-tweak-float'  ); if (elem) elem.textContent = oneWireFloatTweak;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-tweak-read'   ); if (elem) elem.textContent = oneWireReadTweak;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-tweak-high'   ); if (elem) elem.textContent = oneWireHighTweak;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-tweak-release'); if (elem) elem.textContent = oneWireReleaseTweak;\n"
"    elem = Ajax.getElementOrNull('ajax-1-wire-trace'        ); if (elem) elem.setAttribute('dir', oneWireTrace ? 'rtl' : 'ltr');\n"
"\n"
"    elem = Ajax.getElementOrNull('ajax-name-0'); if (elem && assignedNames.length > 0) elem.textContent = assignedNames[0];\n"
"    elem = Ajax.getElementOrNull('ajax-name-1'); if (elem && assignedNames.length > 1) elem.textContent = assignedNames[1];\n"
"    elem = Ajax.getElementOrNull('ajax-name-2'); if (elem && assignedNames.length > 2) elem.textContent = assignedNames[2];\n"
"    elem = Ajax.getElementOrNull('ajax-name-3'); if (elem && assignedNames.length > 3) elem.textContent = assignedNames[3];\n"
"    elem = Ajax.getElementOrNull('ajax-name-4'); if (elem && assignedNames.length > 4) elem.textContent = assignedNames[4];\n"
"    elem = Ajax.getElementOrNull('ajax-name-5'); if (elem && assignedNames.length > 5) elem.textContent = assignedNames[5];\n"
"    elem = Ajax.getElementOrNull('ajax-name-6'); if (elem && assignedNames.length > 6) elem.textContent = assignedNames[6];\n"
"    elem = Ajax.getElementOrNull('ajax-name-7'); if (elem && assignedNames.length > 7) elem.textContent = assignedNames[7];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-0' ); if (elem && assignedRoms.length  > 0) elem.value = assignedRoms[0];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-1' ); if (elem && assignedRoms.length  > 1) elem.value = assignedRoms[1];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-2' ); if (elem && assignedRoms.length  > 2) elem.value = assignedRoms[2];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-3' ); if (elem && assignedRoms.length  > 3) elem.value = assignedRoms[3];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-4' ); if (elem && assignedRoms.length  > 4) elem.value = assignedRoms[4];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-5' ); if (elem && assignedRoms.length  > 5) elem.value = assignedRoms[5];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-6' ); if (elem && assignedRoms.length  > 6) elem.value = assignedRoms[6];\n"
"    elem = Ajax.getElementOrNull('ajax-rom-7' ); if (elem && assignedRoms.length  > 7) elem.value = assignedRoms[7];\n"
"}\n"
"\n"
"Ajax.server     = '/1wire-ajax';\n"
"Ajax.onResponse = function() { parse(); display(); };\n"
"Ajax.init();\n"
""