Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var ZonePro = function() {
- var self = {
- system : "",
- model : "",
- feedback : "",
- debug : 1,
- zone1 : ["01","05","00","10"],
- zone2 : ["01","05","01","11"],
- zone3 : ["01","05","02","12"],
- zone4 : ["01","05","03","13"],
- };
- self.setup = function(system, feedback) {
- self.log("Creating " + system + " " + feedback );
- self.system = system;
- self.feedback = feedback;
- };
- self.initialize = function() {
- self.log("init");
- CF.watch(CF.FeedbackMatchedEvent, self.system, self.feedback, self.ProcessFeedback);
- self.sendHeartbeat();
- };
- ///////////////////////////////
- // VOLUME FUNCTIONS //
- ///////////////////////////////
- self.setVolume = function(zone, volume) {
- switch (zone) {
- case 1:
- self.setZoneVolume(self.zone1, volume);
- break;
- case 2:
- self.setZoneVolume(self.zone2, volume);
- break;
- case 3:
- self.setZoneVolume(self.zone3, volume);
- self.setZoneVolume(self.zone4, volume);
- break;
- }
- };
- self.setZoneVolume = function(zone, volume) {
- var commandarray = ["F0","64","00","01","00","00","00","1C","00","33"];
- var fillarray = ["00","30"];
- var endarray = ["01","00","00","00","00","01","00","01","03","00"];
- commandarray = commandarray.concat(zone, fillarray, zone, endarray);
- commandarray.push((parseInt(volume) * 2 + 181).toString(16));
- commandarray.push(self.checksum(commandarray));
- self.log(commandarray);
- self.sendCommand(self.hexify(commandarray));
- };
- ///////////////////////////////
- // MUTE FUNCTIONS //
- ///////////////////////////////
- self.muteOn = function() {
- self.log("Mute");
- self.muteZoneOn(1, "01");
- self.muteZoneOn(2, "01");
- self.muteZoneOn(3, "01");
- self.muteZoneOn(4, "01");
- };
- self.muteOff = function() {
- self.log("UnMute");
- self.muteZoneOn(1, "00");
- self.muteZoneOn(2, "00");
- self.muteZoneOn(3, "00");
- self.muteZoneOn(4, "00");
- };
- self.muteZoneOn = function(zone, mute) {
- var commandarray = ["F0","64","00","01","00","00","00","1B","00","33"];
- var fillarray = ["00","30"];
- var endarray = ["01","00","00","00","00","01","00","02","01"];
- var target = "";
- switch (zone) {
- case 1:
- target = self.zone1;
- break;
- case 2:
- target = self.zone2;
- break;
- case 3:
- target = self.zone3;
- break;
- case 4:
- target = self.zone4;
- break;
- }
- commandarray = commandarray.concat(target, fillarray, target, endarray);
- commandarray.push(mute);
- commandarray.push(self.checksum(commandarray));
- self.sendCommand(self.hexify(commandarray));
- };
- ///////////////////////////////
- // FEEDBACK //
- ///////////////////////////////
- self.ProcessFeedback = function(feedbackname, feedbackstring) {
- return;
- // hahahaha
- // hahahahahahahahahahah
- // yea right
- };
- ///////////////////////////////
- // INTERNAL HELPER FUNCTIONS //
- ///////////////////////////////
- self.sendHeartbeat = function() {
- // Heartbeat F0 8C
- self.log("heartbeat");
- self.sendCommand("\xF0\x8C");
- };
- self.hexify = function( array ) {
- var string = "";
- for ( var i = 0; i < array.length; i++) {
- string = string + String.fromCharCode(parseInt(array[i],16));
- }
- return string;
- };
- self.checksum = function(dbx) {
- var ccit = ["5E","BC","E2","61","3F","DD","83","C2","9C","7E","20","A3","FD","1F","41","9D","C3","21","7F","FC","A2","40","1E","5F","01","E3","BD","3E","60","82","DC","23","7D","9F","C1","42","1C","FE","A0","E1","BF","5D","03","80","DE","3C","62","BE","E0","02","5C","DF","81","63","3D","7C","22","C0","9E","1D","43","A1","FF","46","18","FA","A4","27","79","9B","C5","84","DA","38","66","E5","BB","59","07","DB","85","67","39","BA","E4","06","58","19","47","A5","FB","78","26","C4","9A","65","3B","D9","87","04","5A","B8","E6","A7","F9","1B","45","C6","98","7A","24","F8","A6","44","1A","99","C7","25","7B","3A","64","86","D8","5B","05","E7","B9","8C","D2","30","6E","ED","B3","51","0F","4E","10","F2","AC","2F","71","93","CD","11","4F","AD","F3","70","2E","CC","92","D3","8D","6F","31","B2","EC","0E","50","AF","F1","13","4D","CE","90","72","2C","6D","33","D1","8F","0C","52","B0","EE","32","6C","8E","D0","53","0D","EF","B1","F0","AE","4C","12","91","CF","2D","73","CA","94","76","28","AB","F5","17","49","08","56","B4","EA","69","37","D5","8B","57","09","EB","B5","36","68","8A","D4","95","CB","29","77","F4","AA","48","16","E9","B7","55","0B","88","D6","34","6A","2B","75","97","C9","4A","14","F6","A8","74","2A","C8","96","15","4B","A9","F7","B6","E8","0A","54","D7","89","6B","35"];
- var bcc = "FF";
- for (var i = 1; i < dbx.length; i++ ) {
- var dbx1 = parseInt(dbx[i],16);
- var bcc1 = parseInt(bcc,16);
- var bcc = ccit[(bcc1^dbx1)-1];
- }
- return bcc;
- };
- self.sendCommand = function (command) {
- CF.send("Moxa_ZonePro", command + "\n");
- };
- // Only allow logging calls when CF is in debug mode - better performance in release mode this way
- self.log = function(msg) {
- if (CF.debug && self.debug) {
- CF.log("ZonePro: " + msg);
- }
- };
- return self;
- };
- CF.modules.push({
- name: "DBX ZonePro",
- object: ZonePro,
- version: 1.0
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement