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 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
- if (node.homekitFormat == 'speaker') {
30
- let ConfiguredName = `${(message.playerState.subtitle) ? message.playerState.subtitle : 'No Artist'} - ${(message.playerState.title) ? message.playerState.title : 'No Track Name'}`;
31
- let title = `${message.playerState.title}`;
32
- if (ConfiguredName.length > 64 && title.length > 0 && title.length <= 64) {
33
- ConfiguredName = title;
34
- } else {
35
- ConfiguredName = title.substr(0, 61) + `...`;
36
- }
37
- (message.playerState)? payload = {'payload': {
38
- "CurrentMediaState": (message.playing) ? 0 : 1,
39
- "ConfiguredName": ConfiguredName
40
- } }:payload = {'payload': {
41
- "CurrentMediaState": (message.playing) ? 0 : 1,
42
- "ConfiguredName": `No Artists - No Track Name`
43
- } }
44
- }else if (node.homekitFormat == 'tv') {
45
- payload = {'payload': {
46
- "Active": (message.playing) ? 1 : 0
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
 
@@ -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
  }
@@ -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.hap.context) + ' PL: ' + JSON.stringify(message.payload) );
511
- if (message.hap.context != undefined) {
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-yandex-station-management",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Local management of YandexStation using API on websockets",
5
5
  "main": "index.js",
6
6
  "scripts": {