node-red-contrib-yandex-station-management 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/nodes/in.js +24 -19
- package/nodes/local-out.js +1 -0
- package/nodes/yandex-login.js +6 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
После деплоя в настройках ноды в поле Station должны появиться станции доступные для управления.
|
|
42
42
|
|
|
43
|
-
Если станция не появилась в списке, то можно подождать пару минут или перезапустить Node-Red.
|
|
43
|
+
npmЕсли станция не появилась в списке, то можно подождать пару минут или перезапустить Node-Red.
|
|
44
44
|
|
|
45
45
|
## Описание возможностей и сценариев использования.
|
|
46
46
|
### Нода Station
|
package/nodes/in.js
CHANGED
|
@@ -26,27 +26,32 @@ module.exports = function(RED) {
|
|
|
26
26
|
if (node.output == 'status') {
|
|
27
27
|
payload = {'payload': message}
|
|
28
28
|
} else if (node.output == 'homekit') {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
ConfiguredName
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
29
|
+
try {
|
|
30
|
+
if (node.homekitFormat == 'speaker') {
|
|
31
|
+
let ConfiguredName = `${(message.playerState.subtitle) ? message.playerState.subtitle : 'No Artist'} - ${(message.playerState.title) ? message.playerState.title : 'No Track Name'}`;
|
|
32
|
+
let title = `${message.playerState.title}`;
|
|
33
|
+
if (ConfiguredName.length > 64 && title.length > 0 && title.length <= 64) {
|
|
34
|
+
ConfiguredName = title;
|
|
35
|
+
} else {
|
|
36
|
+
ConfiguredName = title.substr(0, 61) + `...`;
|
|
37
|
+
}
|
|
38
|
+
(message.playerState)? payload = {'payload': {
|
|
39
|
+
"CurrentMediaState": (message.playing) ? 0 : 1,
|
|
40
|
+
"ConfiguredName": ConfiguredName
|
|
41
|
+
} }:payload = {'payload': {
|
|
42
|
+
"CurrentMediaState": (message.playing) ? 0 : 1,
|
|
43
|
+
"ConfiguredName": `No Artists - No Track Name`
|
|
44
|
+
} }
|
|
45
|
+
}else if (node.homekitFormat == 'tv') {
|
|
46
|
+
payload = {'payload': {
|
|
47
|
+
"Active": (message.playing) ? 1 : 0
|
|
48
|
+
}
|
|
49
|
+
}
|
|
48
50
|
}
|
|
51
|
+
} catch(e) {
|
|
52
|
+
debugMessage(`Error while preparing payload: `+ e)
|
|
49
53
|
}
|
|
54
|
+
|
|
50
55
|
}
|
|
51
56
|
return payload;
|
|
52
57
|
|
package/nodes/local-out.js
CHANGED
|
@@ -110,6 +110,7 @@ module.exports = function(RED) {
|
|
|
110
110
|
}
|
|
111
111
|
} else {
|
|
112
112
|
data.payload = input.payload;
|
|
113
|
+
data.hap = input.hap;
|
|
113
114
|
node.controller.sendMessage(node.station, node.input, data);
|
|
114
115
|
debugMessage(`Sending data: station: ${node.station}, input type: ${node.input}, data: ${JSON.stringify(data)}`);
|
|
115
116
|
}
|
package/nodes/yandex-login.js
CHANGED
|
@@ -283,11 +283,13 @@ module.exports = function(RED) {
|
|
|
283
283
|
device.watchDog = setTimeout(() => device.ws.close(), 10000);
|
|
284
284
|
device.pingInterval = setInterval(onPing,300,device);
|
|
285
285
|
clearTimeout(device.timer);
|
|
286
|
+
debugMessage(`readyState: ${device.ws.readyState}`)
|
|
286
287
|
});
|
|
287
288
|
device.ws.on('message', function incoming(data) {
|
|
288
289
|
//debugMessage(`${device.id}: ${JSON.stringify(data)}`);
|
|
289
290
|
let dataRecieved = JSON.parse(data);
|
|
290
291
|
device.lastState = dataRecieved.state;
|
|
292
|
+
device.fullMessage = JSON.stringify(dataRecieved);
|
|
291
293
|
//debugMessage(checkSheduler(device, JSON.parse(data).sentTime));
|
|
292
294
|
node.emit(`message_${device.id}`, device.lastState);
|
|
293
295
|
if (device.lastState.aliceState == 'LISTENING' && device.waitForListening) {node.emit(`stopListening`, device)}
|
|
@@ -321,6 +323,7 @@ module.exports = function(RED) {
|
|
|
321
323
|
//device.ws.on('ping', function);
|
|
322
324
|
device.ws.on('close', function close(code, reason){
|
|
323
325
|
statusUpdate({"color": "red", "text": "disconnected"}, device);
|
|
326
|
+
debugMessage(`readyState: ${device.ws.readyState}`)
|
|
324
327
|
device.lastState = {};
|
|
325
328
|
clearTimeout(device.watchDog);
|
|
326
329
|
switch(code) {
|
|
@@ -507,8 +510,8 @@ module.exports = function(RED) {
|
|
|
507
510
|
return result;
|
|
508
511
|
break;
|
|
509
512
|
case 'homekit':
|
|
510
|
-
debugMessage('HAP: ' + JSON.stringify(message
|
|
511
|
-
if (message.hap
|
|
513
|
+
debugMessage('HAP: ' + JSON.stringify(message) + ' PL: ' + JSON.stringify(message.payload) );
|
|
514
|
+
if ("session" in message.hap) {
|
|
512
515
|
switch(JSON.stringify(message.payload)){
|
|
513
516
|
case '{"TargetMediaState":1}':
|
|
514
517
|
case '{"Active":0}':
|
|
@@ -786,7 +789,7 @@ module.exports = function(RED) {
|
|
|
786
789
|
let device = searchDeviceByID(id);
|
|
787
790
|
if (device) {
|
|
788
791
|
|
|
789
|
-
res.json({"id": device.id,"name": device.name, "platform": device.platform, "address": device.address, "port": device.port, "manager": device.manager, "ws": device.ws, "parameters": device.parameters});
|
|
792
|
+
res.json({"id": device.id,"name": device.name, "platform": device.platform, "address": device.address, "port": device.port, "manager": device.manager, "ws": device.ws, "parameters": device.parameters, "fullMessage": device.fullMessage });
|
|
790
793
|
} else {
|
|
791
794
|
res.json({"error": 'no device found'});
|
|
792
795
|
}
|