iobroker.iot 1.8.21 → 1.8.25

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.
@@ -330,7 +330,7 @@ function AlexaSH2(adapter) {
330
330
 
331
331
  // merge actions
332
332
  for (let a = 0; a < actions.length; a++) {
333
- if (groups[friendlyNames[n]].actions.indexOf(actions[a]) === -1) {
333
+ if (!groups[friendlyNames[n]].actions.includes(actions[a])) {
334
334
  groups[friendlyNames[n]].actions.push(actions[a]);
335
335
  }
336
336
  }
@@ -497,7 +497,7 @@ function AlexaSH2(adapter) {
497
497
  value = 0;
498
498
  }
499
499
 
500
- adapter.setForeignState(id, value, function (err) {
500
+ adapter.setForeignState(id, value, err => {
501
501
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
502
502
  callback && callback(err);
503
503
  });
@@ -525,7 +525,7 @@ function AlexaSH2(adapter) {
525
525
  adapter.setState('smart.lastObjectID', id, true);
526
526
  }
527
527
 
528
- adapter.setForeignState(id, value, function (err) {
528
+ adapter.setForeignState(id, value, err => {
529
529
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
530
530
  callback && callback(err);
531
531
  });
@@ -555,10 +555,18 @@ function AlexaSH2(adapter) {
555
555
  let max = 100;
556
556
  let min = 0;
557
557
 
558
- if (typeof obj.common.max !== 'undefined') max = parseFloat(obj.common.max);
559
- if (typeof obj.common.min !== 'undefined') min = parseFloat(obj.common.min);
560
- if (value < 0) value = 0;
561
- if (value > 100) value = 100;
558
+ if (typeof obj.common.max !== 'undefined') {
559
+ max = parseFloat(obj.common.max);
560
+ }
561
+ if (typeof obj.common.min !== 'undefined') {
562
+ min = parseFloat(obj.common.min);
563
+ }
564
+ if (value < min) {
565
+ value = min;
566
+ } else
567
+ if (value > max) {
568
+ value = max;
569
+ }
562
570
 
563
571
  value = (value / 100) * (max - min) + min;
564
572
 
@@ -573,7 +581,7 @@ function AlexaSH2(adapter) {
573
581
  adapter.setState('smart.lastObjectID', id, true);
574
582
  }
575
583
 
576
- adapter.setForeignState(id, value, function (err) {
584
+ adapter.setForeignState(id, value, err => {
577
585
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
578
586
  callback && callback();
579
587
  });
@@ -603,7 +611,7 @@ function AlexaSH2(adapter) {
603
611
  return callback && callback();
604
612
  }
605
613
 
606
- adapter.log.debug('[ALEXA] Controlling ' + id + ' .');
614
+ adapter.log.debug(`[ALEXA] Controlling delta ${id}`);
607
615
 
608
616
  adapter.getForeignState(id, function (err, state) {
609
617
  let value = state ? (state.val || 0) : 0;
@@ -632,7 +640,7 @@ function AlexaSH2(adapter) {
632
640
  adapter.setState('smart.lastObjectID', id, true);
633
641
  }
634
642
 
635
- adapter.setForeignState(id, value, function (err) {
643
+ adapter.setForeignState(id, value, err => {
636
644
  err && adapter.log.error(`[ALEXA] Cannot set device: ${err}`);
637
645
  callback && callback();
638
646
  });
@@ -666,7 +674,7 @@ function AlexaSH2(adapter) {
666
674
  // }
667
675
  //}
668
676
 
669
- adapter.getForeignObject(id, function (err, obj) {
677
+ adapter.getForeignObject(id, (err, obj) => {
670
678
  if (!obj || obj.type !== 'state') {
671
679
  err && adapter.log.error(`[ALEXA] Cannot control non state: ${id} ${obj ? obj.type : 'no object'}`);
672
680
  return callback && callback();
@@ -699,23 +707,23 @@ function AlexaSH2(adapter) {
699
707
  value = !!value;
700
708
  }
701
709
 
702
- adapter.getForeignState(id, function (err, state) {
710
+ adapter.getForeignState(id, (err, state) => {
703
711
  err && adapter.log.error(`[ALEXA] Cannot read device: ${err}`);
704
712
 
705
713
  if (writeStates) {
706
714
  adapter.setState('smart.lastObjectID', id, true);
707
715
  }
708
716
 
709
- adapter.setForeignState(id, value, function (err) {
717
+ adapter.setForeignState(id, value, err => {
710
718
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
711
719
  let response = {
712
720
  payload: {
713
721
  targetTemperature: {
714
722
  value: value
715
723
  },
716
- /*temperatureMode: {
717
- value: 'AUTO'
718
- },*/
724
+ temperatureMode: {
725
+ value: 'AUTO'
726
+ },
719
727
  previousState: {
720
728
  targetTemperature: {
721
729
  value: state ? parseFloat(state.val) || 0 : 0
@@ -826,7 +834,7 @@ function AlexaSH2(adapter) {
826
834
  adapter.setState('smart.lastObjectID', id, true);
827
835
  }
828
836
 
829
- adapter.setForeignState(id, value, function (err) {
837
+ adapter.setForeignState(id, value, err => {
830
838
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
831
839
  let response = {
832
840
  payload: {
@@ -871,7 +879,7 @@ function AlexaSH2(adapter) {
871
879
 
872
880
  adapter.setForeignState(id,
873
881
  obj.native.CONTROL_VALUE === undefined ? obj.native.LOCK_VALUE : obj.native.CONTROL_VALUE,
874
- function (err) {
882
+ err => {
875
883
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
876
884
  callback && callback();
877
885
  });
@@ -977,7 +985,7 @@ function AlexaSH2(adapter) {
977
985
  }
978
986
  let rgb = hsvToRgb(color.hue/360, color.saturation, color.brightness);
979
987
 
980
- adapter.setForeignState(id, rgb, function (err) {
988
+ adapter.setForeignState(id, rgb, err => {
981
989
  err && adapter.log.error(`[ALEXA] Cannot read device: ${err}`);
982
990
 
983
991
  if (writeStates) {
@@ -1003,7 +1011,7 @@ function AlexaSH2(adapter) {
1003
1011
  if (obj.common && obj.common.min !== undefined && obj.common.max !== undefined) {
1004
1012
  color.hue = Math.round((obj.common.max - obj.common.min) * (color.hue / 360) + obj.common.min);
1005
1013
  }
1006
- adapter.setForeignState(idh, color.hue, function (err) {
1014
+ adapter.setForeignState(idh, color.hue, err => {
1007
1015
  err && adapter.log.error(`[ALEXA] Cannot read device: ${err}`);
1008
1016
 
1009
1017
  if (writeStates) {
@@ -1020,7 +1028,7 @@ function AlexaSH2(adapter) {
1020
1028
  color.saturation *= 100;
1021
1029
  }
1022
1030
 
1023
- adapter.setForeignState(ids, color.saturation, function (err) {
1031
+ adapter.setForeignState(ids, color.saturation, err => {
1024
1032
  err && adapter.log.error('[ALEXA] Cannot read device: ' + err);
1025
1033
 
1026
1034
  if (!idb){
@@ -1038,7 +1046,7 @@ function AlexaSH2(adapter) {
1038
1046
  color.brightness *= 100;
1039
1047
  }
1040
1048
 
1041
- adapter.setForeignState(idb, color.brightness, function (err) {
1049
+ adapter.setForeignState(idb, color.brightness, err => {
1042
1050
  err && adapter.log.error(`[ALEXA] Cannot read device: ${err}`);
1043
1051
  callback && callback(err);
1044
1052
  });
@@ -1111,7 +1119,7 @@ function AlexaSH2(adapter) {
1111
1119
 
1112
1120
  adapter.log.debug(`[ALEXA] Controlling: ${id} setting to ${value}`);
1113
1121
 
1114
- adapter.setForeignState(id, value, function (err) {
1122
+ adapter.setForeignState(id, value, err => {
1115
1123
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
1116
1124
  callback && callback();
1117
1125
  });
@@ -1177,7 +1185,7 @@ function AlexaSH2(adapter) {
1177
1185
 
1178
1186
  adapter.log.debug(`[ALEXA] Controlling: ${id} setting to ${value}`);
1179
1187
 
1180
- adapter.setForeignState(id, value, function (err) {
1188
+ adapter.setForeignState(id, value, err => {
1181
1189
  err && adapter.log.error(`[ALEXA] Cannot switch device: ${err}`);
1182
1190
  if (callback) {
1183
1191
  // convert value back to Kelvin for reporting
@@ -1255,7 +1263,11 @@ function AlexaSH2(adapter) {
1255
1263
  details = smartDevices[i].additionalApplianceDetails;
1256
1264
  }
1257
1265
  }
1258
- adapter.log.debug(JSON.stringify(details));
1266
+
1267
+ if (adapter.common.loglevel === 'debug') {
1268
+ adapter.log.debug('[ALEXA] Found following devices to control: ' + JSON.stringify(details));
1269
+ }
1270
+
1259
1271
  if (details) {
1260
1272
  if (details.group) {
1261
1273
  channels = details.channels;
@@ -1408,20 +1420,25 @@ function AlexaSH2(adapter) {
1408
1420
  adapter.log.debug(`[ALEXA] ALEXA ON: ${request.payload.appliance.applianceId}`);
1409
1421
 
1410
1422
  for (let channel in channels) {
1411
- if (!channels.hasOwnProperty(channel)) continue;
1423
+ if (!channels.hasOwnProperty(channel)) {
1424
+ continue;
1425
+ }
1412
1426
  let toggle = findRoleInChannel(channels[channel], 'level.dimmer');
1413
1427
  if (toggle) {
1414
1428
  let byon = (device.additionalApplianceDetails.group) ?
1415
1429
  device.additionalApplianceDetails.byONs[toggle] :
1416
1430
  device.additionalApplianceDetails.byON;
1417
- if (!byon || byon === '-') toggle = null;
1431
+ if (!byon || byon === '-') {
1432
+ toggle = null;
1433
+ }
1418
1434
  }
1419
- if (!toggle) toggle = findRoleInChannel(channels[channel], 'switch');
1435
+
1436
+ toggle = toggle || findRoleInChannel(channels[channel], 'switch');
1420
1437
 
1421
1438
  for (let i = 0; i < channels[channel].length; i++) {
1422
1439
  let id = channels[channel][i].id;
1423
1440
  adapter.log.debug('[ALEXA] Controlling: ' + id);
1424
- controlOnOff(toggle, id, true, Object.keys(channels).length === 1, function (err) {
1441
+ controlOnOff(toggle, id, true, Object.keys(channels).length === 1, err => {
1425
1442
  err && adapter.log.error(`[ALEXA] Cannot controlOnOff: ${err}`);
1426
1443
  if (!--count) {
1427
1444
  request.header.name = 'TurnOnConfirmation';
@@ -1430,6 +1447,7 @@ function AlexaSH2(adapter) {
1430
1447
  header: request.header,
1431
1448
  payload: {}
1432
1449
  });
1450
+
1433
1451
  request = null;
1434
1452
  }
1435
1453
  });
@@ -1459,20 +1477,26 @@ function AlexaSH2(adapter) {
1459
1477
  adapter.log.debug('[ALEXA] ALEXA OFF: ' + request.payload.appliance.applianceId);
1460
1478
 
1461
1479
  for (let channel in channels) {
1462
- if (!channels.hasOwnProperty(channel)) continue;
1480
+ if (!channels.hasOwnProperty(channel)) {
1481
+ continue;
1482
+ }
1463
1483
  let toggle = findRoleInChannel(channels[channel], 'level.dimmer');
1464
1484
  if (toggle) {
1465
1485
  let byon = (device.additionalApplianceDetails.group) ?
1466
1486
  device.additionalApplianceDetails.byONs[toggle] :
1467
1487
  device.additionalApplianceDetails.byON;
1468
- if (!byon || byon === '-') toggle = null;
1488
+ if (!byon || byon === '-') {
1489
+ toggle = null;
1490
+ }
1469
1491
  }
1470
- if (!toggle) toggle = findRoleInChannel(channels[channel], 'switch');
1492
+
1493
+ toggle = toggle || findRoleInChannel(channels[channel], 'switch');
1494
+
1471
1495
  adapter.log.debug(toggle);
1472
1496
  for (let i = 0; i < channels[channel].length; i++) {
1473
1497
  let id = channels[channel][i].id;
1474
1498
  adapter.log.debug('[ALEXA] Controlling off: ' + id);
1475
- controlOnOff(toggle, id, false, Object.keys(channels).length === 1, function (err) {
1499
+ controlOnOff(toggle, id, false, Object.keys(channels).length === 1, err => {
1476
1500
  err && adapter.log.error(`[ALEXA] Cannot controlOnOff: ${err}`);
1477
1501
  if (!--count) {
1478
1502
  request.header.name = 'TurnOffConfirmation';
@@ -1508,11 +1532,13 @@ function AlexaSH2(adapter) {
1508
1532
  // }
1509
1533
  adapter.log.debug('[ALEXA] ALEXA LOCK: ' + request.payload.appliance.applianceId);
1510
1534
  for (let channel in channels) {
1511
- if (!channels.hasOwnProperty(channel)) continue;
1535
+ if (!channels.hasOwnProperty(channel)) {
1536
+ continue;
1537
+ }
1512
1538
  for (let i = 0; i < channels[channel].length; i++) {
1513
1539
  let id = channels[channel][i].id;
1514
1540
  adapter.log.debug('[ALEXA] Controlling lock: ' + id);
1515
- controlLock(id, Object.keys(channels).length === 1, function (err) {
1541
+ controlLock(id, Object.keys(channels).length === 1, err => {
1516
1542
  err && adapter.log.error(`[ALEXA] Cannot controlLock: ${err}`);
1517
1543
  if (!--count) {
1518
1544
  request.header.name = 'SetLockStateConfirmation';
@@ -1562,11 +1588,13 @@ function AlexaSH2(adapter) {
1562
1588
  adapter.log.debug('[ALEXA] ALEXA GetLOCK: ' + request.payload.appliance.applianceId);
1563
1589
  let result = null;
1564
1590
  for (let channel in channels) {
1565
- if (!channels.hasOwnProperty(channel)) continue;
1591
+ if (!channels.hasOwnProperty(channel)) {
1592
+ continue;
1593
+ }
1566
1594
  for (let i = 0; i < channels[channel].length; i++) {
1567
1595
  let id = channels[channel][i].id;
1568
1596
  adapter.log.debug(`[ALEXA] Controlling lock: ${id}`);
1569
- getLock(id, Object.keys(channels).length === 1, function (err, value, ts) {
1597
+ getLock(id, Object.keys(channels).length === 1, (err, value, ts) => {
1570
1598
  err && adapter.log.error(`[ALEXA] Cannot getLock: ${err}`);
1571
1599
  if (result === null || value === false) {
1572
1600
  adapter.log.debug(`[ALEXA] Settings result: ${value}`);
@@ -1604,14 +1632,16 @@ function AlexaSH2(adapter) {
1604
1632
  case 'SetPercentageRequest': {
1605
1633
  adapter.log.debug(`[ALEXA] ALEXA Percent: ${request.payload.appliance.applianceId} ${request.payload.percentageState.value}%`);
1606
1634
  for (let channel in channels) {
1607
- if (!channels.hasOwnProperty(channel)) continue;
1635
+ if (!channels.hasOwnProperty(channel)) {
1636
+ continue;
1637
+ }
1608
1638
  let dimmer = findRoleInChannel(channels[channel], 'level.dimmer');
1609
1639
  adapter.log.debug('[ALEXA] DATA: ' + JSON.stringify(channels[channel]));
1610
1640
  adapter.log.debug(dimmer);
1611
1641
  for (let i = 0; i < channels[channel].length; i++) {
1612
1642
  let id = channels[channel][i].id;
1613
1643
  adapter.log.debug('[ALEXA] Controlling percentage: ' + id);
1614
- controlPercent(dimmer, id, request.payload.percentageState.value, Object.keys(channels).length === 1, function (err) {
1644
+ controlPercent(dimmer, id, request.payload.percentageState.value, Object.keys(channels).length === 1, err => {
1615
1645
  err && adapter.log.error(`[ALEXA] Cannot controlPercent: ${err}`);
1616
1646
  if (!--count) {
1617
1647
  request.header.name = 'SetPercentageConfirmation';
@@ -1642,8 +1672,8 @@ function AlexaSH2(adapter) {
1642
1672
 
1643
1673
  for (let i = 0; i < channels[channel].length; i++) {
1644
1674
  let id = channels[channel][i].id;
1645
- adapter.log.debug('[ALEXA] Controlling percentage: ' + id);
1646
- controlDelta(dimmer, id, request.payload.percentageState.value, Object.keys(channels).length === 1, function (err) {
1675
+ adapter.log.debug('[ALEXA] Controlling increment percentage: ' + id);
1676
+ controlDelta(dimmer, id, request.payload.percentageState.value, Object.keys(channels).length === 1, err => {
1647
1677
  err && adapter.log.error(`[ALEXA] Cannot controlDelta: ${err}`);
1648
1678
  if (!--count) {
1649
1679
  request.header.name = 'IncrementPercentageConfirmation';
@@ -1664,7 +1694,9 @@ function AlexaSH2(adapter) {
1664
1694
  case 'DecrementPercentageRequest': {
1665
1695
  adapter.log.debug(`[ALEXA] ALEXA decrement: ${request.payload.appliance.applianceId} ${request.payload.deltaPercentage.value}%`);
1666
1696
  for (let channel in channels) {
1667
- if (!channels.hasOwnProperty(channel)) continue;
1697
+ if (!channels.hasOwnProperty(channel)) {
1698
+ continue;
1699
+ }
1668
1700
  let dimmer = findRoleInChannel(channels[channel], 'level.dimmer');
1669
1701
 
1670
1702
  adapter.log.debug('[ALEXA] DATA: ' + JSON.stringify(channels[channel]));
@@ -1672,8 +1704,8 @@ function AlexaSH2(adapter) {
1672
1704
 
1673
1705
  for (let i = 0; i < channels[channel].length; i++) {
1674
1706
  let id = channels[channel][i].id;
1675
- adapter.log.debug(`[ALEXA] Controlling percentage: ${id}`);
1676
- controlDelta(dimmer, id, request.payload.percentageState.value * (-1), Object.keys(channels).length === 1, function (err) {
1707
+ adapter.log.debug(`[ALEXA] Controlling decrement percentage: ${id}`);
1708
+ controlDelta(dimmer, id, request.payload.percentageState.value * (-1), Object.keys(channels).length === 1, err => {
1677
1709
  err && adapter.log.error(`[ALEXA] Cannot controlDelta: ${err}`);
1678
1710
  if (!--count) {
1679
1711
  request.header.name = 'DecrementPercentageConfirmation';
@@ -1694,14 +1726,23 @@ function AlexaSH2(adapter) {
1694
1726
  case 'SetTargetTemperatureRequest': {
1695
1727
  adapter.log.debug(`[ALEXA] ALEXA temperature Percent: ${request.payload.appliance.applianceId} ${request.payload.targetTemperature.value} grad`);
1696
1728
  for (let channel in channels) {
1697
- if (!channels.hasOwnProperty(channel)) continue;
1729
+ if (!channels.hasOwnProperty(channel)) {
1730
+ continue;
1731
+ }
1732
+ let response;
1733
+
1698
1734
  for (let i = 0; i < channels[channel].length; i++) {
1699
1735
  let id = channels[channel][i].id;
1700
1736
 
1701
- adapter.log.debug(`[ALEXA] Controlling percentage: ${id}`);
1737
+ adapter.log.debug(`[ALEXA] Controlling temperature: ${id}`);
1702
1738
 
1703
- controlTemperature(id, request.payload.targetTemperature.value, Object.keys(channels).length === 1, function (err, response) {
1739
+ controlTemperature(id, request.payload.targetTemperature.value, Object.keys(channels).length === 1, (err, _response) => {
1704
1740
  err && adapter.log.error(`[ALEXA] Cannot controlTemperature: ${err}`);
1741
+
1742
+ if (_response && !response) {
1743
+ response = _response;
1744
+ }
1745
+
1705
1746
  if (!--count) {
1706
1747
  if (err || !response) {
1707
1748
  response = {
@@ -1709,9 +1750,9 @@ function AlexaSH2(adapter) {
1709
1750
  targetTemperature: {
1710
1751
  value: 0
1711
1752
  },
1712
- /*temperatureMode: {
1713
- value: 'AUTO'
1714
- },*/
1753
+ temperatureMode: {
1754
+ value: 'AUTO'
1755
+ },
1715
1756
  previousState: {
1716
1757
  targetTemperature: {
1717
1758
  value: 0
@@ -1737,13 +1778,22 @@ function AlexaSH2(adapter) {
1737
1778
  case 'IncrementTargetTemperatureRequest': {
1738
1779
  request.payload.deltaTemperature.value = request.payload.deltaTemperature.value || 1;
1739
1780
  adapter.log.debug(`[ALEXA] ALEXA temperature Increment: ${request.payload.appliance.applianceId} ${request.payload.deltaTemperature.value} grad`);
1781
+ let response;
1782
+
1740
1783
  for (let channel in channels) {
1741
- if (!channels.hasOwnProperty(channel)) continue;
1784
+ if (!channels.hasOwnProperty(channel)) {
1785
+ continue;
1786
+ }
1742
1787
  for (let i = 0; i < channels[channel].length; i++) {
1743
1788
  let id = channels[channel][i].id;
1744
- adapter.log.debug('[ALEXA] Controlling percentage: ' + id);
1745
- controlTemperatureDelta(id, request.payload.deltaTemperature.value, Object.keys(channels).length === 1, function (err, response) {
1789
+ adapter.log.debug('[ALEXA] Controlling increment temperature: ' + id);
1790
+ controlTemperatureDelta(id, request.payload.deltaTemperature.value, Object.keys(channels).length === 1, (err, _response) => {
1746
1791
  err && adapter.log.error(`[ALEXA] Cannot controlTemperatureDelta: ${err}`);
1792
+
1793
+ if (_response && !response) {
1794
+ response = _response;
1795
+ }
1796
+
1747
1797
  if (!--count) {
1748
1798
  if (err || !response) {
1749
1799
  response = {
@@ -1779,6 +1829,8 @@ function AlexaSH2(adapter) {
1779
1829
  case 'DecrementTargetTemperatureRequest': {
1780
1830
  request.payload.deltaTemperature.value = request.payload.deltaTemperature.value || 1;
1781
1831
  adapter.log.debug(`[ALEXA] ALEXA temperature decrement: ${request.payload.appliance.applianceId} ${request.payload.deltaTemperature.value} grad`);
1832
+ let response;
1833
+
1782
1834
  for (let channel in channels) {
1783
1835
  if (!channels.hasOwnProperty(channel)) {
1784
1836
  continue;
@@ -1787,10 +1839,15 @@ function AlexaSH2(adapter) {
1787
1839
  for (let i = 0; i < channels[channel].length; i++) {
1788
1840
  let id = channels[channel][i].id;
1789
1841
 
1790
- adapter.log.debug(`[ALEXA] Controlling percentage: ${id}`);
1842
+ adapter.log.debug(`[ALEXA] Controlling decrement temperature: ${id}`);
1791
1843
 
1792
- controlTemperatureDelta(id, request.payload.deltaTemperature.value * (-1), Object.keys(channels).length === 1, function (err, response) {
1844
+ controlTemperatureDelta(id, request.payload.deltaTemperature.value * (-1), Object.keys(channels).length === 1, (err, _response) => {
1793
1845
  err && adapter.log.error(`[ALEXA] Cannot controlTemperatureDelta: ${err}`);
1846
+
1847
+ if (_response && !response) {
1848
+ response = _response;
1849
+ }
1850
+
1794
1851
  if (!--count) {
1795
1852
  if (err || !response) {
1796
1853
  response = {
@@ -1834,8 +1891,8 @@ function AlexaSH2(adapter) {
1834
1891
  for (let i = 0; i < channels[channel].length; i++) {
1835
1892
  let id = channels[channel][i].id;
1836
1893
 
1837
- adapter.log.debug(`[ALEXA] Controlling percentage: ${id}`);
1838
- getTemperature(id, Object.keys(channels).length === 1, function (err, value, ts) {
1894
+ adapter.log.debug(`[ALEXA] Get temperature: ${id}`);
1895
+ getTemperature(id, Object.keys(channels).length === 1, (err, value, ts) => {
1839
1896
  err && adapter.log.error(`[ALEXA] Cannot getTemperature: ${err}`);
1840
1897
  if (value){
1841
1898
  num++;
@@ -1884,9 +1941,9 @@ function AlexaSH2(adapter) {
1884
1941
  for (let i = 0; i < channels[channel].length; i++) {
1885
1942
  let id = channels[channel][i].id;
1886
1943
 
1887
- adapter.log.debug(`[ALEXA] Getting: ${id}`);
1944
+ adapter.log.debug(`[ALEXA] Getting target temperature: ${id}`);
1888
1945
 
1889
- getTargetTemperature(id, Object.keys(channels).length === 1, function (err, value, ts) {
1946
+ getTargetTemperature(id, Object.keys(channels).length === 1, (err, value, ts) => {
1890
1947
  err && adapter.log.error(`[ALEXA] Cannot getTargetTemperature: ${err}`);
1891
1948
  if (!result && value) result = value;
1892
1949
  if (!--count) {
@@ -1916,8 +1973,8 @@ function AlexaSH2(adapter) {
1916
1973
  break;
1917
1974
 
1918
1975
  case 'SetColorRequest': {
1919
- adapter.log.debug('[ALEXA] ALEXA Color: ' + request.payload.appliance.applianceId + ' ' + JSON.stringify(request.payload.color));
1920
- let doneCallback = function (err) {
1976
+ adapter.log.debug(`[ALEXA] ALEXA Color: ${request.payload.appliance.applianceId} ${JSON.stringify(request.payload.color)}`);
1977
+ let doneCallback = err => {
1921
1978
  err && adapter.log.error(`[ALEXA] Cannot SetColorRequest: ${err}`);
1922
1979
  adapter.log.debug(`[ALEXA] Hue Count: ${count}`);
1923
1980
 
@@ -1978,7 +2035,7 @@ function AlexaSH2(adapter) {
1978
2035
  let id = channels[channel][i].id;
1979
2036
  adapter.log.debug(`[ALEXA] Controlling temperature kelvin: ${id}`);
1980
2037
 
1981
- controlColorTemperature(temperature, id, request.payload.colorTemperature.value, Object.keys(channels).length === 1, function (err) {
2038
+ controlColorTemperature(temperature, id, request.payload.colorTemperature.value, Object.keys(channels).length === 1, err => {
1982
2039
  err && adapter.log.error(`[ALEXA] Cannot controlColorTemperature: ${err}`);
1983
2040
  if (!--count) {
1984
2041
  request.header.name = 'SetColorTemperatureConfirmation';
@@ -2009,7 +2066,7 @@ function AlexaSH2(adapter) {
2009
2066
  for (let i = 0; i < channels[channel].length; i++) {
2010
2067
  let id = channels[channel][i].id;
2011
2068
  adapter.log.debug('[ALEXA] Controlling temperature kelvin: ' + id);
2012
- controlColorTemperatureDelta(temperature, id, -1, Object.keys(channels).length === 1, function (err, res) {
2069
+ controlColorTemperatureDelta(temperature, id, -1, Object.keys(channels).length === 1, (err, res) => {
2013
2070
  err && adapter.log.error(`[ALEXA] Cannot controlColorTemperatureDelta: ${err}`);
2014
2071
  adapter.log.debug(`[ALEXA] Count: ${count}`);
2015
2072
  if (!--count) {
@@ -2042,7 +2099,7 @@ function AlexaSH2(adapter) {
2042
2099
  let id = channels[channel][i].id;
2043
2100
  adapter.log.debug(`[ALEXA] Controlling temperature kelvin: ${id}`);
2044
2101
 
2045
- controlColorTemperatureDelta(temperature, id, 1, Object.keys(channels).length === 1, function (err, res) {
2102
+ controlColorTemperatureDelta(temperature, id, 1, Object.keys(channels).length === 1, (err, res) => {
2046
2103
  err && adapter.log.error(`[ALEXA] Cannot controlColorTemperatureDelta: ${err}`);
2047
2104
  adapter.log.debug(`[ALEXA] Count: ${count}`);
2048
2105
 
@@ -2318,6 +2375,11 @@ function AlexaSH2(adapter) {
2318
2375
  adapter.log.debug(`[ALEXA] Created ALEXA device: ${fn} ${JSON.stringify(result[k].actions)}`);
2319
2376
  }
2320
2377
  }
2378
+
2379
+ if (result.length > 300) {
2380
+ adapter.log.error(`[ALEXA] too many devices ${result.length}. Max supported number is 300`);
2381
+ }
2382
+
2321
2383
  callback(err, result, analyseAddedId);
2322
2384
  });
2323
2385
  });
package/lib/alisa.js CHANGED
@@ -60,6 +60,7 @@ class YandexAliceConverter {
60
60
  [Types.blind]: this._processBlinds.bind(this),
61
61
  [Types.lock]: this._processLock.bind(this),
62
62
  [Types.vacuumCleaner]: this._processVacuumCleaner.bind(this),
63
+ [Types.gate]: this._processLock.bind(this),
63
64
  // sensors
64
65
  [Types.motion]: this._processMotion.bind(this),
65
66
  [Types.door]: this._processContact.bind(this),
package/lib/googleHome.js CHANGED
@@ -463,13 +463,16 @@ class GoogleHome {
463
463
  };
464
464
  }
465
465
 
466
- checkUrlKey(forceCheck) {
466
+ checkUrlKey() {
467
467
  const now = Date.now();
468
468
  if (!this.keyPromise || now - this.keyPromiseTime > 900000) {
469
469
  /* 15 Minutes */
470
470
  this.keyPromiseTime = now;
471
471
  this.keyPromise = new Promise((resolve, reject) => {
472
472
  const url = `${URL_STATUS}?user=${encodeURIComponent(this.adapter.config.login)}&urlKey=${encodeURIComponent(this.urlKey.key)}&p=${PROTOCOL_VERSION}&v=${version}`;
473
+
474
+ this.adapter.log.debug(url);
475
+
473
476
  request.get({
474
477
  method: 'GET',
475
478
  url
@@ -2123,12 +2126,17 @@ class GoogleHome {
2123
2126
  if (_attr === 'on') {
2124
2127
  val = state.val === 1 || state.val === '1' || state.val === 'true' || state.val === 'ON' || state.val === 'on' || state.val === true || (typeof state.val === 'number' && state.val > 0);
2125
2128
  } else if (_attr === 'color_R' || _attr === 'color_G' || _attr === 'color_B') {
2126
- const r = await this.adapter.getForeignStateAsync(json[devId]['color_R'].id);
2127
- const g = await this.adapter.getForeignStateAsync(json[devId]['color_G'].id);
2128
- const b = await this.adapter.getForeignStateAsync(json[devId]['color_B'].id);
2129
- const spectrumRgb = (r.val << 16) + (g.val << 8) + (b.val);
2129
+ if (!json[devId]['color_R']) {
2130
+ this.adapter.log.warn(`[GHOME] Invalid structure for "${devId}": ${JSON.stringify(json[devId])}`)
2131
+ val = this.reportedStates[devId][_attr].val;
2132
+ } else {
2133
+ const r = await this.adapter.getForeignStateAsync(json[devId]['color_R'].id);
2134
+ const g = await this.adapter.getForeignStateAsync(json[devId]['color_G'].id);
2135
+ const b = await this.adapter.getForeignStateAsync(json[devId]['color_B'].id);
2136
+ const spectrumRgb = (r.val << 16) + (g.val << 8) + (b.val);
2130
2137
 
2131
- val = Math.floor(spectrumRgb);
2138
+ val = Math.floor(spectrumRgb);
2139
+ }
2132
2140
  } else if (_attr === 'color_hue') {
2133
2141
  json[devId].color = json[devId].color ? json[devId].color : {};
2134
2142
  const hue = await this.adapter.getForeignStateAsync(json[devId]['color_hue'].id);
@@ -2221,7 +2229,7 @@ class GoogleHome {
2221
2229
  this.reportedStates[devId][_attr].val = val;
2222
2230
  this.reportedStates[devId][_attr].ts = now;
2223
2231
  json[devId] = json[devId] || {};
2224
- if (_attr.indexOf('color_') !== -1) {
2232
+ if (_attr.includes('color_')) {
2225
2233
  json[devId].color = json[devId].color ? json[devId].color : {};
2226
2234
  if (_attr === 'color_temperature') {
2227
2235
  json[devId].color.temperatureK = Math.floor(val);
package/main.js CHANGED
@@ -618,7 +618,7 @@ function processMessage(type, request, callback) {
618
618
  }
619
619
  }
620
620
 
621
- adapter.log.debug(Date.now() + ' ALEXA: ' + JSON.stringify(request));
621
+ adapter.log.debug(`${Date.now()} ALEXA: ${JSON.stringify(request)}`);
622
622
 
623
623
  if (request && request.directive) {
624
624
  if (alexaSH3) {
@@ -686,7 +686,7 @@ function processMessage(type, request, callback) {
686
686
  }
687
687
  }
688
688
 
689
- adapter.log.debug(Date.now() + ' ALISA: ' + JSON.stringify(request));
689
+ adapter.log.debug(`${Date.now()} ALISA: ${JSON.stringify(request)}`);
690
690
  if (yandexAlisa) {
691
691
  yandexAlisa.process(request, adapter.config.yandexAlisa, response => callback(response));
692
692
  } else {
@@ -709,7 +709,7 @@ function processMessage(type, request, callback) {
709
709
 
710
710
  if (type.startsWith('text2command')) {
711
711
  if (adapter.config.text2command !== undefined && adapter.config.text2command !== '') {
712
- adapter.setForeignState('text2command.' + adapter.config.text2command + '.text', request,
712
+ adapter.setForeignState(`text2command.${adapter.config.text2command}.text`, request,
713
713
  err => callback({result: err || 'Ok'}));
714
714
  } else {
715
715
  adapter.log.warn('Received service text2command, but instance is not defined');
@@ -721,7 +721,7 @@ function processMessage(type, request, callback) {
721
721
  adapter.getObject('services.custom_' + _type, (err, obj) => {
722
722
  if (!obj) {
723
723
  adapter.setObjectNotExists('services.custom_' + _type, {
724
- _id: adapter.namespace + '.services.custom_' + _type,
724
+ _id: `${adapter.namespace}.services.custom_${_type}`,
725
725
  type: 'state',
726
726
  common: {
727
727
  name: 'Service for ' + _type,
@@ -838,8 +838,12 @@ function startDevice(clientId, login, password, retry) {
838
838
  if (topic.startsWith(`command/${clientId}/`)) {
839
839
  let type = topic.substring(clientId.length + 9);
840
840
 
841
- processMessage(type, request, response =>
842
- device && device.publish(`response/${clientId}/${type}`, JSON.stringify(response)));
841
+ processMessage(type, request, response => {
842
+ if (adapter.common.loglevel === 'debug') {
843
+ adapter.log.debug('Response: ' + JSON.stringify(response));
844
+ }
845
+ device && device.publish(`response/${clientId}/${type}`, JSON.stringify(response))
846
+ });
843
847
  }
844
848
  });
845
849
  }).catch(e => {