UNPKG

htd-lync

Version:

This library is meant to be used to interact with an HTD Lync 12

1,450 lines (1,310 loc) 26.4 kB
function getZoneNames(i) { } function getSourceNames(i) { } function getID() { console.log("getID") command = command = ["02", "00", "00", "08", "00", "0A"]; wsSendBinary(command, true); } //setInterval(getFirmware, 5000); function getFirmware() { console.log("getFirmware") command = command = ["02", "00", "00", "0F", "00"]; wsSendBinary(command, false); } function getAllZoneStatus() { command = command = ["02", "00", "00", "05", "00", "07"]; wsSendBinary(command, true); } function allOn() { console.log("All On"); $("#allOn").addClass("active"); command = command = ["02", "00", "00", "04", "38"]; wsSendBinary(command, false); setTimeout(function(y) { $("#allOn").removeClass("active"); }, 1000); for (i = 1; i < zones.length; i++) { zones[i].powerOn = true; } updateData(); //updateGUI(); } function allOff() { $("#allOff").addClass("active"); command = command = ["02", "00", "00", "04", "39"]; wsSendBinary(command, false); setTimeout(function(y) { $("#allOff").removeClass("active"); }, 1000); for (i = 1; i < zones.length; i++) { zones[i].powerOn = false; } $('#systemStatusMute').prop('src', "images/speaker.png"); updateData(); //updateGUI(); } function toggleZonePower(i) { console.log(i); var zone = i; zone = zoneLookup(zone); if (systems[systemIdx].zones[i].powerOn == true) { command = ["02", "00", zone, "04", "21"] //console.log(command); wsSendBinary(command, false); zones[i].powerOn = false; } else { command = ["02", "00", zone, "04", "20"] //console.log(command); wsSendBinary(command, false); zones[i].powerOn = true; } updateGUI(i); updateData(); } function partyMode(i) { $('#partyBtn').addClass("active") if (i >= zones.length) { $('#partyBtn').removeClass("active") return; } console.log(i) if (systems[systemIdx].zones[i].enabled && systems[systemIdx].zones[i].dndOn == false) { var zone = i; zone = zoneLookup(zone); var partySource = partySourceLookup(systems[systemIdx].zones[Gzone].source); command = ["02", "00", zone, "04", partySource] //console.log(command); wsSendBinary(command, false); setTimeout(function(y) { partyMode(i + 1) }, 200); } } function zonePowerOn(zone) { //var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "20"] console.log(command); wsSendBinary(command, false); } function zonePowerOff(zone) { //var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "21"] console.log(command); wsSendBinary(command, false); } function zoneDNDOn() { console.log() var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "59"] //console.log(command); wsSendBinary(command, false); } function setZoneDNDOn(zone) { console.log("setZoneDNDOn") zone = zoneLookup(zone); command = ["02", "00", zone, "04", "59"] //console.log(command); wsSendBinary(command, false); } function zoneDNDOff() { var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "5A"] //console.log(command); wsSendBinary(command, false); } function setZoneDNDOff(zone) { console.log("setZoneDNDOff") zone = zoneLookup(zone); command = ["02", "00", zone, "04", "5A"] //console.log(command); wsSendBinary(command, false); } function muteAllOn() { console.log("Mute all zones") checkNextForMuteAllOn(1); } function checkNextForMuteAllOn(i) { if (i < systems[systemIdx].zones.length) { if (systems[systemIdx].zones[i].powerOn == true) { var zone = i; zone = zoneLookup(zone); console.log("mute zone " + i) command = ["02", "00", zone, "04", "1E"] console.log(command); systems[systemIdx].zones[i].muteOn = true; wsSendBinary(command, false); updateData(); } setTimeout(function(y) { checkNextForMuteAllOn(i + 1) }, 50); } } function muteAllOff() { console.log("UNMute all zones") checkNextForUnMuteAllOn(1); } function checkNextForUnMuteAllOn(i) { if (i < systems[systemIdx].zones.length) { if (systems[systemIdx].zones[i].powerOn == true) { var zone = i; zone = zoneLookup(zone); console.log("mute zone " + i) command = ["02", "00", zone, "04", "1F"] console.log(command); systems[systemIdx].zones[i].muteOn = false; wsSendBinary(command, false); updateData(); } setTimeout(function(y) { checkNextForUnMuteAllOn(i + 1) }, 50); } } function groupMuteOn() { console.log("Mute all group zones") checkNextForGroupMuteAllOn(0); } function checkNextForGroupMuteAllOn(i) { if (i < groups[Ggroup].zones.length) { console.log(i); var zone = groups[Ggroup].zones[i]; if (zones[zone].powerOn == true) { zone = zoneLookup(zone); console.log("mute zone " + zone) command = ["02", "00", zone, "04", "1E"] console.log(command); zones[groups[Ggroup].zones[i]].muteOn = true; wsSendBinary(command, false); updateData(); } setTimeout(function(y) { checkNextForGroupMuteAllOn(i + 1) }, 50); } } function groupMuteOff() { console.log("UnMute all group zones") checkNextForGroupMuteAllOff(0); } function checkNextForGroupMuteAllOff(i) { if (i < groups[Ggroup].zones.length) { console.log(i); var zone = groups[Ggroup].zones[i]; if (zones[zone].powerOn == true) { zone = zoneLookup(zone); console.log("mute zone " + zone) command = ["02", "00", zone, "04", "1F"] console.log(command); zones[groups[Ggroup].zones[i]].muteOn = false; wsSendBinary(command, false); updateData(); } setTimeout(function(y) { checkNextForGroupMuteAllOff(i + 1) }, 50); } } function resetSourceName(source) { var name = "Source " + source source = sourceCommandLookupForReset(source); var zone = "00"; var command = ["02", "00", zone, "07", source] for (var n = 0, l = name.length; n < l; n++) { var hex = Number(name.charCodeAt(n)).toString(16); hex = hex.toUpperCase(); command.push(hex); } //see how many spaces we need to add 00 for var extraSpaces = 10 - name.length; for (i = 0; i < extraSpaces; i++) { command.push("00") } command.push("00"); console.log("rename source reset to: ", name, command, source) console.log(command); wsSendBinary(command, false); } function resetZoneName(zone) { var name = "Zone " + zone; zone = zoneLookup(zone); console.log("Name zone " + zone + " to " + name) //var hexName = ascii_to_hexa(name); var command = ["02", "00", zone, "06", "00"] for (var n = 0, l = name.length; n < l; n++) { var hex = Number(name.charCodeAt(n)).toString(16); hex = hex.toUpperCase(); command.push(hex); } //see how many spaces we need to add 00 for var extraSpaces = 10 - name.length; for (i = 0; i < extraSpaces; i++) { command.push("00") } command.push("00") console.log(command, command.length); wsSendBinary(command, false); } function resetZoneAudio(zone) { zone = zoneLookup(zone); command = ["02", "00", zone, "1E", "00"] //console.log(command); wsSendBinary(command, false); } function mp3PlayPause() { console.log("mp3PlayPause") command = ["02", "00", "00", "04", "0B"] //console.log(command); wsSendBinary(command, false); } function mp3Back() { command = ["02", "00", "00", "04", "0C"] //console.log(command); wsSendBinary(command, false); } function mp3Next() { command = ["02", "00", "00", "04", "0A"] //console.log(command); wsSendBinary(command, false); } function mp3Repeat() { var src = $('#mp3RepeatImg').attr("src"); console.log(src); if (src == "images/row.png") { mp3RepeatOn(); } else { mp3RepeatOff(); } } function mp3Stop() { command = ["02", "00", "00", "04", "0D"] //console.log(command); wsSendBinary(command, false); } function mp3RepeatOn() { command = ["02", "00", "00", "01", "FF"] //console.log(command); $('#mp3RepeatImg').attr("src", "images/rowActive.png") wsSendBinary(command, false); } function mp3RepeatOff() { command = ["02", "00", "00", "01", "00"] //console.log(command); $('#mp3RepeatImg').attr("src", "images/row.png") wsSendBinary(command, false); } function zoneMuteOn(zone) { console.log("zoneMuteOn") //var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "1E"] //console.log(command); wsSendBinary(command, false); } function zoneMuteOff() { console.log("zoneMuteOff") var zone = Gzone; zone = zoneLookup(zone); command = ["02", "00", zone, "04", "1F"] //console.log(command); wsSendBinary(command, false); } function zoneSetVolume(zone) { console.log("zoneSetVolume") if (zones[zone].powerOn == false) { zonePowerOn(zone); } var zoneOrg = zone; zone = zoneLookup(zone); var volume = volumeCommandLookup(zones[zoneOrg].vol); command = ["02", "00", zone, "15", volume] console.log(command); wsSendBinary(command, false); } function setVolumeForZone(zone, vol) { if (zones[zone].powerOn == false) { zonePowerOn(zone); } var zoneOrg = zone; zone = zoneLookup(zone); var volume = volumeCommandLookup(vol); command = ["02", "00", zone, "15", volume] console.log(command); zones[zoneOrg].vol = vol; updateGUI(zoneOrg); updateData(); wsSendBinary(command, false); } //setTimeout(testSource, 10 * 1000); function testSource() { console.log("testSource"); command = ["02", "00", "01", "04", "10"] wsSendBinary(command, false); } function setSourceForZone(zone, source) { console.log(zone, source); var zoneOrg = zone; zone = zone * 1; zone = "0" + zone; //source = source - 1; //zone = zoneLookup(zone); var sourceFormatted = sourceCommandLookup(source); command = ["02", "00", zone, "04", sourceFormatted] console.log(command); console.log("---" + source + '--- ') zones[zoneOrg].source = source; updateData(); updateGUI(zoneOrg); wsSendBinary(command, false); } function volumeCommandLookup(volume) { volume = volume * 1 - 60; console.log("volumeCommandLookup " + volume); switch (volume) { case 0: return "00"; break; case -1: return "FF"; break; case -2: return "FE"; break; case -3: return "FD"; break; case -4: return "FC"; break; case -5: return "FB"; break; case -6: return "FA"; break; case -7: return "F9"; break; case -8: return "F8"; break; case -9: return "F7"; break; case -10: return "F6"; break; case -11: return "F5"; break; case -12: return "F4"; break; case -13: return "F3"; break; case -14: return "F2"; break; case -15: return "F1"; break; case -16: return "F0"; break; case -17: return "EF"; break; case -18: return "EE"; break; case -19: return "ED"; break; case -20: return "EC"; break; case -21: return "EB"; break; case -22: return "EA"; break; case -23: return "E9"; break; case -24: return "E8"; break; case -25: return "E7"; break; case -26: return "E6"; break; case -27: return "E5"; break; case -28: return "E4"; break; case -29: return "E3"; break; case -30: return "E2"; break; case -31: return "E1"; break; case -32: return "E0"; break; case -33: return "DF"; break; case -34: return "DE"; break; case -35: return "DD"; break; case -36: return "DC"; break; case -37: return "DB"; break; case -38: return "DA"; break; case -39: return "D9"; break; case -40: return "D8"; break; case -41: return "D7"; break; case -42: return "D6"; break; case -43: return "D5"; break; case -44: return "D4"; break; case -45: return "D3"; break; case -46: return "D2"; break; case -47: return "D1"; break; case -48: return "D0"; break; case -49: return "CF"; break; case -50: return "CE"; break; case -51: return "CD"; break; case -52: return "CC"; break; case -53: return "CB"; break; case -54: return "CA"; break; case -55: return "49"; break; case -56: return "C8"; break; case -57: return "C7"; break; case -58: return "C6"; break; case -59: return "C5"; break; case -60: return "C4"; break; case -61: return "C3"; break; } } function sourceCommandLookup(source) { console.log(source); source = source * 1; switch (source) { case 1: return "03"; break; case 2: return "04"; break; case 3: return "05"; break; case 4: return "06"; break; case 5: return "07"; break; case 6: return "08"; break; } } function zoneLookup(zone) { console.log(zone); zone = zone * 1; switch (zone) { case 1: return "01"; break; case 2: return "02"; break; case 3: return "03"; break; case 4: return "04"; break; case 5: return "05"; break; case 6: return "06"; break; case 7: return "07"; break; case 8: return "08"; break; case 9: return "09"; break; case 10: return "0A"; break; case 11: return "0B"; break; case 12: console.log("return 0C") return "0C"; break; } } function sourceCommandLookupForReset(source) { //console.log(source); source = source * 1 - 1; switch (source) { case 0: return "01"; break; case 1: return "02"; break; case 2: return "03"; break; case 3: return '04'; break; case 4: return '05'; break; case 5: return "06"; break; case 6: return "07"; break; case 7: return "08"; break; case 8: return "09"; break; case 9: return "0A"; break; case 10: return "0B"; break; case 11: return "0C"; break; case 12: return "0D"; break; case 13: return "0E"; break; case 14: return "0F"; break; case 15: return "10"; break; case 16: return "11"; break; case 17: return "12"; break; case 18: return "13"; break; case 19: return "14"; break; } } function setSourceForZone(zone, source) { console.log(zone, source); var zoneOrg = zone; zone = zoneLookup(zone);; var sourceFormatted = sourceCommandLookup(source); command = ["02", "00", zone, "04", sourceFormatted] console.log(command); console.log("---" + source + '--- ') zones[zoneOrg].source = source; updateData(); updateGUI(zoneOrg); wsSendBinary(command, false); } function volumeCommandLookup(volume) { volume = volume * 1 - 60; console.log("volumeCommandLookup " + volume); switch (volume) { case 0: return "00"; break; case -1: return "FF"; break; case -2: return "FE"; break; case -3: return "FD"; break; case -4: return "FC"; break; case -5: return "FB"; break; case -6: return "FA"; break; case -7: return "F9"; break; case -8: return "F8"; break; case -9: return "F7"; break; case -10: return "F6"; break; case -11: return "F5"; break; case -12: return "F4"; break; case -13: return "F3"; break; case -14: return "F2"; break; case -15: return "F1"; break; case -16: return "F0"; break; case -17: return "EF"; break; case -18: return "EE"; break; case -19: return "ED"; break; case -20: return "EC"; break; case -21: return "EB"; break; case -22: return "EA"; break; case -23: return "E9"; break; case -24: return "E8"; break; case -25: return "E7"; break; case -26: return "E6"; break; case -27: return "E5"; break; case -28: return "E4"; break; case -29: return "E3"; break; case -30: return "E2"; break; case -31: return "E1"; break; case -32: return "E0"; break; case -33: return "DF"; break; case -34: return "DE"; break; case -35: return "DD"; break; case -36: return "DC"; break; case -37: return "DB"; break; case -38: return "DA"; break; case -39: return "D9"; break; case -40: return "D8"; break; case -41: return "D7"; break; case -42: return "D6"; break; case -43: return "D5"; break; case -44: return "D4"; break; case -45: return "D3"; break; case -46: return "D2"; break; case -47: return "D1"; break; case -48: return "D0"; break; case -49: return "CF"; break; case -50: return "CE"; break; case -51: return "CD"; break; case -52: return "CC"; break; case -53: return "CB"; break; case -54: return "CA"; break; case -55: return "49"; break; case -56: return "C8"; break; case -57: return "C7"; break; case -58: return "C6"; break; case -59: return "C5"; break; case -60: return "C4"; break; case -61: return "C3"; break; } } function sourceCommandLookupOLD(source) { //console.log(source); source = source * 1 - 1; switch (source) { case 0: return "01"; break; case 1: return "02"; break; case 2: return "03"; break; case 3: return "04"; break; case 4: return "05"; break; case 5: return "06"; break; case 6: return "07"; break; case 7: return "08"; break; case 8: return "09"; break; case 9: return "0A"; break; case 10: return "0B"; break; case 11: return "0C"; break; case 12: return "0D"; break; case 13: return "0E"; break; case 14: return "0F"; break; case 15: return "10"; break; case 16: return "11"; break; case 17: return "12"; break; } } function partySourceLookup(source) { //console.log(source); source = source * 1; switch (source) { case 1: return "36"; break; case 2: return "37"; break; case 3: return "38"; break; case 4: return "39"; break; case 5: return "3A"; break; case 6: return "3B"; break; case 7: return "3C"; break; case 8: return "3D"; break; case 9: return "3E"; break; case 10: return "3F"; break; case 11: return "40"; break; case 12: return "41"; break; case 13: return "69"; break; case 14: return "6A"; break; case 15: return "6B"; break; case 16: return "6C"; break; case 17: return "6D"; break; case 18: return "6E"; break; } } function changeZoneName(name) { var zone = Gzone; zone = zoneLookup(zone); console.log("Name zone " + zone + " to " + name) //var hexName = ascii_to_hexa(name); var command = ["02", "00", zone, "06", "00"] for (var n = 0, l = name.length; n < l; n++) { var hex = Number(name.charCodeAt(n)).toString(16); hex = hex.toUpperCase(); command.push(hex); } //see how many spaces we need to add 00 for var extraSpaces = 10 - name.length; for (i = 0; i < extraSpaces; i++) { command.push("00") } command.push("00") console.log(command, command.length); wsSendBinary(command, false); } function changeSourceName(name, source) { var zone = Gzone; zone = zoneLookup(zone); source = sourceCommandLookup(source); //var hexName = ascii_to_hexa(name); var command = ["02", "00", zone, "07", source] for (var n = 0, l = name.length; n < l; n++) { var hex = Number(name.charCodeAt(n)).toString(16); hex = hex.toUpperCase(); command.push(hex); } //see how many spaces we need to add 00 for var extraSpaces = 10 - name.length; for (i = 0; i < extraSpaces; i++) { command.push("00") } command.push("00") console.log(command, command.length); wsSendBinary(command, false); } function ascii_to_hexa(str) { var arr1 = []; for (var n = 0, l = str.length; n < l; n++) { var hex = Number(str.charCodeAt(n)).toString(16); arr1.push(hex); } console.log(arr1); return arr1; } //console.log(ascii_to_hexa('Office1234')); function zoneSetBass(bass) { if (!Gzone || !zones) { return; } var zone = Gzone; zone = zoneLookup(zone); zones[Gzone].bass = bass; var bass = bassCommandLookup(zones[Gzone].bass); command = ["02", "00", zone, "18", bass] //console.log(command); wsSendBinary(command, false); } function zoneResetBass(zone, bass) { zone = zoneLookup(zone); var bass2 = bassCommandLookup(bass); command = ["02", "00", zone, "18", bass2] //console.log(command); wsSendBinary(command, false); } function zoneSetTreble(treble) { if (!Gzone || !zones) { return; } var zone = Gzone; zone = zoneLookup(zone); zones[Gzone].treble = treble; var treble = bassCommandLookup(zones[Gzone].treble); command = ["02", "00", zone, "17", treble] //console.log(command); wsSendBinary(command, false); } function zoneResetTreble(zone, treble) { zone = zoneLookup(zone); var treble2 = bassCommandLookup(treble); command = ["02", "00", zone, "17", treble2] //console.log(command); wsSendBinary(command, false); } function bassCommandLookup(bass) { //0 is -10, 10 is 0, 20 is 10 bass = bass * 1; console.log(bass); switch (bass) { case -10: return "F6"; break; case -9: return "F7"; break; case -8: return "F8"; break; case -7: return "F9"; break; case -6: return "FA"; break; case -5: return "FB"; break; case -4: return "FC"; break; case -3: return "FD"; break; case -2: return "FE"; break; case -1: return "FF"; break; case 0: return "00"; break; case 1: return "01"; break; case 2: return "02"; break; case 3: return "03"; break; case 4: return "04"; break; case 5: return "05"; break; case 6: return "06"; break; case 7: return "07"; break; case 8: return "08"; break; case 9: return "09"; break; case 10: return "0A"; break; } } function zoneSetBalance(balance) { if (!Gzone || !zones) { return; } var zone = Gzone; zone = zoneLookup(zone); zones[Gzone].balance = balance; var balance = balanceCommandLookup(zones[Gzone].balance); command = ["02", "00", zone, "16", balance] //console.log(command); wsSendBinary(command, false); } function zoneResetBalance(zone, balance) { zone = zoneLookup(zone); var balance2 = balanceCommandLookup(balance); command = ["02", "00", zone, "16", balance2] //console.log(command); wsSendBinary(command, false); } function balanceCommandLookup(balance) { //0 is -10, 10 is 0, 20 is 10 balance = balance * 1; console.log(balance); switch (balance) { case 18: return "12"; break; case 17: return "11"; break; case 16: return "10"; break; case 15: return "0F"; break; case 14: return "0E"; break; case 13: return "0D"; break; case 12: return "0C"; break; case 11: return "0B"; break; case 10: return "0A"; break; case 9: return "09"; break; case 8: return "08"; break; case 7: return "07"; break; case 6: return "06"; break; case 5: return "05"; break; case 4: return "04"; break; case 3: return "03"; break; case 2: return "02"; break; case 1: return "01"; break; case 0: return "00"; break; case -1: return "FF"; break; case -2: return "FE"; break; case -3: return "FD"; break; case -4: return "FC"; break; case -5: return "FB"; break; case -6: return "FA"; break; case -7: return "F9"; break; case -8: return "F8"; break; case -9: return "F7"; break; case -10: return "F6"; break; case -11: return "F5"; break; case -12: return "F4"; break; case -13: return "F3"; break; case -14: return "F2"; break; case -15: return "F1"; break; case -16: return "F0"; break; case -17: return "EF"; break; case -18: return "EE"; break; } }