node-red-contrib-alice 0.6.5 → 0.6.9

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
@@ -8,8 +8,6 @@ The module allows you to use Node-Red together with the Yandex.Alice voice assis
8
8
 
9
9
  #### Этот проект некоммерческий, но Вы можете поддержать его развитие через пожертвования [ЗДЕСЬ](https://dialogs.yandex.ru/store/skills/d4f5cc21-nodered-home?action=donation)
10
10
 
11
- #### Новости сервиса и интересными статьями в телеграм канале [https://t.me/nodered_home](https://t.me/nodered_home)
12
-
13
11
  #### Обсудить и получить оперативную поддержку [https://t.me/nodered_home_chat](https://t.me/nodered_home_chat)
14
12
 
15
13
  ## Инструкция (RUS)
@@ -35,28 +33,6 @@ npm install node-red-contrib-alice
35
33
  Для того, что бы устройство ответило Алисе, что комманда выполнена успешно, на вход должно прийти соответсвующее значение.
36
34
  Если ваше устройство отвечает дольше или совсем не возвращает подтверждение просто добавьте оставьте галочку Response включенной
37
35
 
38
- ### Поддерживаемые устройства
39
- Тип | Описание | Пример устройства
40
- ---|---|---
41
- devices.types.light | Устройство, которое имеет управляемые светящиеся элементы. | Лампочка, светильник, ночник, люстра.
42
- devices.types.socket | Розетка. | Умная розетка.
43
- devices.types.switch | Выключатель. | Настенный выключатель света, тумблер, автомат в электрическом щитке, умное реле.
44
- devices.types.thermostat | Устройство с возможностью регулирования температуры. | Водонагреватель, теплый пол, обогреватель, электровентилятор. Для кондиционера рекомендуется использовать отдельный тип devices.types.thermostat.ac.
45
- devices.types.thermostat.ac | стройство, управляющее микроклиматом в помещении, с возможностью регулирования температуры и режима работы. | Кондиционер.
46
- devices.types.media_device | Аудио, видео, мультимедиа техника. Устройства, которые умеют воспроизводить звук и видео. | DVD-плеер, ресивер, медиаприставка и другие медиаустройства. Для телевизора рекомендуется использовать отдельный тип devices.types.media_device.tv.
47
- devices.types.media_device.tv | Устройство для просмотра видеоконтента. На устройстве можно изменять громкость и переключать каналы. | Умный телевизор, ИК-пульт от телевизора, медиа-приставка, ресивер.
48
- devices.types.media_device.tv_box | Устройство, подключаемое к телевизору или дисплею, для просмотра видеоконтента. На устройстве можно управлять громкостью воспроизведения и переключать каналы. | ИК-пульт от тв-приставки, умная тв-приставка.
49
- devices.types.media_device.receiver | Устройство, подключаемое к телевизору или дисплею, для просмотра видеоконтента. На устройстве можно изменять громкость, переключать каналы и источники аудио-/видеосигнала. | ИК-пульт от ресивера, AV-ресивер, спутниковый ресивер.
50
- devices.types.cooking | Различная умная кухонная техника. | Холодильник, духовой шкаф, кофеварка, мультиварка. Для чайника рекомендуется использовать отдельный тип devices.types.cooking.kettle, для кофеварки — devices.types.cooking.coffee_maker.
51
- devices.types.cooking.coffee_maker | стройство, которое умеет делать кофе. | Кофеварка, кофемашина.
52
- devices.types.cooking.kettle | Устройство, которое умеет кипятить воду и/или делать чай. | Умный чайник, термопот.
53
- devices.types.openable | Устройство, которое умеет открываться и/или закрываться. | Дверь, ворота, окно, ставни. Для штор и жалюзи рекомендуется использовать отдельный тип devices.types.openable.curtain.
54
- devices.types.openable.curtain | Устройство, которое выполняет функцию штор. | Шторы, жалюзи.
55
- devices.types.humidifier | Устройство, которое умеет изменять влажность в помещении. | Увлажнитель воздуха.
56
- devices.types.purifier | Устройство с функцией очистки воздуха. | Очиститель воздуха, мойка воздуха.
57
- devices.types.vacuum_cleaner | Устройство, которое выполняет функцию пылесоса. | Робот-пылесос.
58
- devices.types.washing_machine | Устройство для стирки белья. | Стиральная машина.
59
- devices.types.other | Остальные устройства. | Остальные устройства, не подходящие под типы выше.
60
36
 
61
37
  ## Instruction (ENG - Google Translate)
62
38
  The module allows you to use Node-Red together with the Yandex.Alice voice assistant service (voice control of smart home devices)
@@ -57,16 +57,21 @@ function AliceSensor(config){
57
57
  });
58
58
 
59
59
  this.on('input', (msg, send, done)=>{
60
- if (this.stype =='devices.properties.bool' && typeof msg.payload != 'boolean'){
61
- this.error("Wrong type! msg.payload must be boolean.");
62
- if (done) {done();}
63
- return;
64
- };
60
+ // if (this.stype =='devices.properties.bool' && typeof msg.payload != 'boolean'){
61
+ // this.error("Wrong type! msg.payload must be boolean.");
62
+ // if (done) {done();}
63
+ // return;
64
+ // };
65
65
  if (this.stype =='devices.properties.float' && typeof msg.payload != 'number'){
66
66
  this.error("Wrong type! msg.payload must be number.");
67
67
  if (done) {done();}
68
68
  return;
69
69
  };
70
+ if (this.unit == 'unit.percent'){
71
+ msg.payload = +msg.payload.toFixed(0);
72
+ }else {
73
+ msg.payload = +msg.payload.toFixed(2);
74
+ };
70
75
  if (msg.payload === this.value){
71
76
  this.debug("Value not changed. Cancel update");
72
77
  if (done) {done();}
package/nodes/alice.js CHANGED
@@ -9,9 +9,10 @@ module.exports = function(RED) {
9
9
  var firebase = require('firebase/compat/app');
10
10
  require('firebase/compat/auth');
11
11
  require('firebase/compat/firestore');
12
-
13
12
  var mqtt = require('mqtt');
13
+
14
14
  var fb;
15
+ var auth;
15
16
  const email = this.credentials.email;
16
17
  const password = this.credentials.password;
17
18
  const firebaseConfig = {
@@ -33,19 +34,21 @@ module.exports = function(RED) {
33
34
 
34
35
  try {
35
36
  this.debug("Initialize firebase App ...");
36
- fb = firebase.initializeApp(firebaseConfig,this.id);
37
+ fb = firebase.initializeApp(firebaseConfig,this.id);
38
+ auth = fb.auth();
37
39
  } catch (error) {
38
40
  if (error.code == 'app/duplicate-app'){
39
41
  this.debug("Dublicated firebase app");
40
42
  fb = firebase.app(this.id);
43
+ auth = fb.auth();
41
44
  }else{
42
45
  this.error(error);
43
46
  }
44
47
  }
45
-
48
+
46
49
  this.signIn = ()=>{
47
50
  this.debug("SignIn to firebase ...");
48
- fb.auth().signInWithEmailAndPassword(email, password)
51
+ auth.signInWithEmailAndPassword(email, password)
49
52
  .then(u=>{
50
53
  this.emit('online');
51
54
  this.debug("SignIn to firebase Success. Send signal to online");
@@ -53,6 +56,11 @@ module.exports = function(RED) {
53
56
  })
54
57
  .catch(err=>{
55
58
  this.error(err.message);
59
+ this.debug("Firebase Auth error: "+err.code);
60
+ if (err.code == 'auth/network-request-failed'){
61
+ this.debug("Authentication failed, retry after 10 seconds");
62
+ setTimeout(this.signIn, 10000);
63
+ }
56
64
  this.emit('offline');
57
65
  });
58
66
  }
@@ -145,6 +153,10 @@ module.exports = function(RED) {
145
153
 
146
154
  this.on('online', ()=>{
147
155
  this.isOnline = true;
156
+ fb.auth().currentUser.getIdToken(/* forceRefresh */ true)
157
+ .then(token=>{
158
+ this.trace("New firebase token:"+token);
159
+ })
148
160
  })
149
161
 
150
162
  this.on('close',(done)=>{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-alice",
3
- "version": "0.6.5",
3
+ "version": "0.6.9",
4
4
  "description": "",
5
5
  "main": "alice.js",
6
6
  "scripts": {
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "homepage": "https://github.com/efa2000/node-red-contrib-alice#readme",
37
37
  "dependencies": {
38
- "firebase": "9.0.1",
39
- "mqtt": "^4.2.6"
38
+ "firebase": "9.6.2",
39
+ "mqtt": "^4.3.4"
40
40
  }
41
41
  }