UNPKG

15.4 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const devices = require("@domojs/devices");
4const akala = require("@akala/server");
5const api = require("./api");
6const log = akala.log('domojs:pioneer');
7akala.worker.createClient('devices').then(function (c) {
8 var deviceCollection = {};
9 akala.injectWithName(['$worker'], function (worker) {
10 function getMainDevice(name) {
11 var indexOfDot = name.indexOf('.');
12 if (indexOfDot > 0)
13 var mainDevice = name.substr(0, indexOfDot);
14 else
15 var mainDevice = name;
16 return deviceCollection[mainDevice];
17 }
18 var client = akala.api.jsonrpcws(devices.deviceType).createClient(c, {
19 exec: function (p) {
20 var cmd = p.command;
21 var mainDevice = getMainDevice(p.device);
22 if (p.device != mainDevice.name) {
23 switch (p.device.substring(mainDevice.name.length + 1)) {
24 case 'power':
25 if (p.command == 'off')
26 cmd = 'PF';
27 else
28 cmd = 'PO';
29 break;
30 case 'mute':
31 if (p.command == 'off')
32 cmd = 'MF';
33 else
34 cmd = 'MO';
35 break;
36 case 'volume':
37 switch (p.command) {
38 case 'up':
39 cmd = 'VU';
40 break;
41 case 'down':
42 cmd = 'VD';
43 break;
44 case 'set':
45 cmd = 'VL';
46 break;
47 }
48 break;
49 case 'input':
50 switch (p.command) {
51 case 'Game':
52 cmd = '49FN';
53 break;
54 case 'Dvd':
55 cmd = '04FN';
56 break;
57 case 'Sat/Cbl':
58 cmd = '06FN';
59 break;
60 case 'Dvr/Bdr':
61 cmd = '15FN';
62 break;
63 case 'iPod':
64 cmd = '17FN';
65 break;
66 case 'Video':
67 cmd = '10FN';
68 break;
69 case 'BD':
70 cmd = '25FN';
71 break;
72 }
73 break;
74 }
75 }
76 return api.send(cmd, mainDevice['address']).then((result) => undefined);
77 },
78 getStatus: function (device) {
79 var mainDevice = getMainDevice(device.device);
80 if (mainDevice.name == device.device)
81 return Promise.resolve(mainDevice.status());
82 else
83 return Promise.resolve(mainDevice.subdevices[device.device.substring(mainDevice.name.length + 1)].status());
84 },
85 save: (p) => {
86 if (p.device.name.indexOf('.') > -1)
87 return p.device;
88 deviceCollection[p.device.name] = p.device;
89 p.device['address'] = p.body.IP || p.device.name;
90 p.device.statusMethod = 'pull';
91 p.device.subdevices = [
92 {
93 name: "power",
94 type: 'pioneer',
95 category: 'switch',
96 classes: ['power', 'switch'],
97 statusMethod: 'pull',
98 status: function () {
99 return api.send('?P', p.device.name).then(function (result) {
100 console.log('result:' + result);
101 if (result)
102 result = result.trim();
103 return { state: result == 'PWR0', color: result == 'PWR0' ? 'green' : 'red' };
104 });
105 },
106 commands: ['on', 'off']
107 },
108 {
109 name: "mute",
110 type: 'pioneer',
111 category: 'switch',
112 statusMethod: 'pull',
113 status: function () {
114 console.log('mute status');
115 return api.send('?M', p.device.name).then((result) => {
116 console.log(result);
117 return { state: result == 'MUT0', color: result == 'MUT0' ? 'green' : 'red' };
118 });
119 },
120 commands: ['on', 'off']
121 },
122 {
123 name: "volume",
124 type: 'pioneer',
125 category: 'input',
126 statusMethod: 'pull',
127 status: function () {
128 var status = {};
129 return api.send('?V', p.device.name).then(function (result) {
130 return { state: Number(/\d+/.exec(result)) * 100 / 185 };
131 });
132 },
133 commands: ['up', 'down', 'set']
134 },
135 {
136 name: "input",
137 type: 'pioneer',
138 category: 'values',
139 statusMethod: 'pull',
140 status: function () {
141 return api.send('?FN', p.device.name).then(function (result) {
142 console.log(result);
143 switch (Number(/[0-9]+/.exec(result))) {
144 case 49:
145 return { state: 'Game' };
146 case 25:
147 return { state: 'BD' };
148 case 4:
149 return { state: 'Dvd' };
150 case 6:
151 return { state: 'Sat/Cbl' };
152 case 15:
153 return { state: 'Dvr/Bdr' };
154 case 17:
155 return { state: 'iPod' };
156 case 10:
157 return { state: 'Video' };
158 default:
159 return null;
160 }
161 });
162 },
163 commands: ['Game', 'Dvd', 'Sat/Cbl', 'Dvr/Bdr', 'iPod', 'Video', 'BD']
164 }
165 ];
166 return p.device;
167 }
168 });
169 worker.on('ready', function () {
170 client.$proxy().register({ commandMode: 'dynamic', name: 'pioneer', view: '/@domojs/pioneer/device.html' });
171 });
172 })();
173});
174//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQTJDO0FBQzNDLHVDQUF1QztBQUN2Qyw2QkFBNEI7QUFDNUIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRXhDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFFakQsSUFBSSxnQkFBZ0IsR0FBZ0QsRUFBRSxDQUFDO0lBQ3ZFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxVQUFVLE1BQU07UUFFOUMsdUJBQXVCLElBQUk7WUFFdkIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLFVBQVUsR0FBRyxDQUFDO2dCQUNkLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDOztnQkFFNUMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRTFCLE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1lBQ2pFLElBQUksRUFBRSxVQUFVLENBQUM7Z0JBRWIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDcEIsSUFBSSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQy9CO29CQUNJLFFBQVEsQ0FB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
\No newline at end of file