# Node-RED google home integration

**URL:** https://discourse.nodered.org/t/node-red-google-home-integration/4829
**Category:** Share Your Projects
**Created:** [13 November 2018 09:25 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829 "2018-11-13T09:25:31Z")
**Posts on this page:** 20
**Page:** 16

<div class="post-metadata">

### Author: ![andrew01144](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@andrew01144](https://discourse.nodered.org/u/andrew01144)
#### Post date: [11 November 2019 15:01 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/308 "2019-11-11T15:01:53Z")

</div>

Comments/Thoughts about openPercent in Blinds:

This is really about absolute vs relative open/close amounts.  
Initially, I was confused about how Nora/Google was interpreting my spoken commands. Then I realized that it interpreted "Open green blind 20%" to mean "Open green blind **BY** 20%".  
And, I could specify absolute (open **to** 20%) or relative (open **by** 20%).

IMHO, it should default to absolute rather than relative. I think this would be less confusing. But I understand there are no right answers for this.

FYI - My experience with gBridge so far: it does only absolute.

---

<div class="post-metadata">

### Author: ![andrei-tatar](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei-tatar/32/3780_2.png) [@andrei-tatar](https://discourse.nodered.org/u/andrei-tatar)
#### Post date: [11 November 2019 15:09 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/309 "2019-11-11T15:09:36Z")

</div>

The command nora receives from google always contains the absolute value. Google automatically handles relative changes. That's not something I can change.  
[https://developers.google.com/assistant/smarthome/traits/openclose.html#device-commands](https://developers.google.com/assistant/smarthome/traits/openclose.html#device-commands)

---

<div class="post-metadata">

### Author: ![andrew01144](https://avatars.discourse-cdn.com/v4/letter/a/48db29/32.png) [@andrew01144](https://discourse.nodered.org/u/andrew01144)
#### Post date: [11 November 2019 15:12 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/310 "2019-11-11T15:12:20Z")

</div>

Ah, useful info. Thanks. I'll poke around a bit more.  
...and thanks for the quick replies.

---

<div class="post-metadata">

### Author: ![Tico](https://avatars.discourse-cdn.com/v4/letter/t/a88e57/32.png) [@Tico](https://discourse.nodered.org/u/Tico)
#### Post date: [11 November 2019 20:43 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/311 "2019-11-11T20:43:48Z")

</div>

Hi @andrei-tatar,

I'm seeing an issue with the NORA Thermostat that is different to all the other NORA nodes. When Deploying a change in Node-Red (unrelated to the NORA Thermostat), the redeployment breaks the Thermostat node.

To fix the problem, I go into the Google Home settings, unlink the NORA account and relink it. This consistently fixes the issue. All the other NORA nodes are unaffected by redeployments.

I see some other comments above about the Thermostat node being 'fickle' - @pico563.

@pico563 - Can you test an unlink/relink of the NORA account to see if your symptoms match?

---

<div class="post-metadata">

### Author: ![pvandenbulcke](https://avatars.discourse-cdn.com/v4/letter/p/d26b3c/32.png) [@pvandenbulcke](https://discourse.nodered.org/u/pvandenbulcke)
#### Post date: [14 November 2019 20:49 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/312 "2019-11-14T20:49:16Z")

</div>

Hello,  
I've been experimenting greatly with NORA and it works great, but now.... I have a problem that suddenly some lights appears twice in Google Home. One functioning and one not, both have the same name.

Additionaly when I use Google Assistant to switch on/off the lights.. The Google Assistant actually does switch the lights, give a message that it will switcht the associated light off, it actually does it and then Google Assistant tells me that the specific lights looks not available???

Very strange, any ideas?

---

<div class="post-metadata">

### Author: ![pvandenbulcke](https://avatars.discourse-cdn.com/v4/letter/p/d26b3c/32.png) [@pvandenbulcke](https://discourse.nodered.org/u/pvandenbulcke)
#### Post date: [14 November 2019 21:10 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/313 "2019-11-14T21:10:34Z")

</div>

When I unlink NORA from google home and link it again... it shows me lights that do not even exist in my node-red flows anymore.... so something is wrong here... But it can't fix it.

---

<div class="post-metadata">

### Author: ![andrei-tatar](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei-tatar/32/3780_2.png) [@andrei-tatar](https://discourse.nodered.org/u/andrei-tatar)
#### Post date: [16 November 2019 08:51 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/314 "2019-11-16T08:51:15Z")

</div>

> [@Tico](#):
>
> To fix the problem, I go into the Google Home settings, unlink the NORA account and relink it. This consistently fixes the issue. All the other NORA nodes are unaffected by redeployments.

I don't have any issues with my thermostats. Might be Google related.

> [@pvandenbulcke](#):
>
> The Google Assistant actually does switch the lights, give a message that it will switcht the associated light off, it actually does it and then Google Assistant tells me that the specific lights looks not available???

Probably google issue. I haven't encountered this until now.

> [@pvandenbulcke](#):
>
> When I unlink NORA from google home and link it again... it shows me lights that do not even exist in my node-red flows anymore.

Did you use different groups?

I added a new feature to see your own devices/states as they are reported to google. Accessing [https://node-red-google-home.herokuapp.com/](https://node-red-google-home.herokuapp.com/) will give you a JSON of all your devices by group name with their corresponding state. So now you can check if the devices are the same, states are correct, etc.

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/5/56b85824aadb7fb64c4a61795c650fcde2acf3b5.png)

Later Edit: Found the issue with humidity, should be fixed now in the latest version 0.0.25. Also merged PR to add support for garage doors (thanks to @rgerrans).

---

<div class="post-metadata">

### Author: ![pvandenbulcke](https://avatars.discourse-cdn.com/v4/letter/p/d26b3c/32.png) [@pvandenbulcke](https://discourse.nodered.org/u/pvandenbulcke)
#### Post date: [16 November 2019 10:45 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/315 "2019-11-16T10:45:42Z")

</div>

Hello, the problem with duplicat lights was fixed using the following:

1. unlinked NORA from google home and relink --\> Did not fix the problem

2. Revoke and renew NORA key --\> Did not fix the problem

3. Removed NORA-CONFIG from Node-Red and  
Removed all NORA nodes from flow and reassign ALL the NORA nodes to the flow  
That actually fixed the problem.

I don't know if it has something to do with it, but I build some of the nodes by copying and pasting new NORA nodes, perhaps that was part of the problem.

I don't really have an explanation, but this is how it got fixed.  
If others have comparable problem, method 3 could potentially fix it.

---

<div class="post-metadata">

### Author: ![rgerrans](https://avatars.discourse-cdn.com/v4/letter/r/2bfe46/32.png) [@rgerrans](https://discourse.nodered.org/u/rgerrans)
#### Post date: [16 November 2019 17:46 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/316 "2019-11-16T17:46:44Z")

</div>

Hold off on upgrading to the latest nodes, I was working on Locks and accidentally included some of the code in the last build which is causing issues. I've sent the change to @andrei-tatar so it should get updated soon.

---

<div class="post-metadata">

### Author: ![rgerrans](https://avatars.discourse-cdn.com/v4/letter/r/2bfe46/32.png) [@rgerrans](https://discourse.nodered.org/u/rgerrans)
#### Post date: [18 November 2019 04:36 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/317 "2019-11-18T04:36:07Z")

</div>

It looks like it is now fixed. If you installed the previous version, make sure to restart node-red when you update to the latest

---

<div class="post-metadata">

### Author: ![marbalon](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marbalon/32/14527_2.png) [@marbalon](https://discourse.nodered.org/u/marbalon)
#### Post date: [23 November 2019 16:56 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/318 "2019-11-23T16:56:40Z")

</div>

I have a question for the thermostat feature. Is there a chance to extend configuration to extend the max temperature range. Now I'm using this bloc to set temperature in my house and it is fine. But when I tried to use the same block to set heaters temperature or hot water I'm limited to 32C. Another nice feature will be extended precision for displaying temperature.

---

<div class="post-metadata">

### Author: ![drAndrew](https://avatars.discourse-cdn.com/v4/letter/d/9fc29f/32.png) [@drAndrew](https://discourse.nodered.org/u/drAndrew)
#### Post date: [23 November 2019 18:27 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/319 "2019-11-23T18:27:53Z")

</div>

Hi, i'm new to Nora, just switched from gBridge. Excellent project, but i have one problem.  
The setting "send msg if state doesn't change after command" is not working for me. It should execute command even if nora thinks device is already in this state or am i missing something? Thanx

---

<div class="post-metadata">

### Author: ![andrei-tatar](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei-tatar/32/3780_2.png) [@andrei-tatar](https://discourse.nodered.org/u/andrei-tatar)
#### Post date: [24 November 2019 08:54 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/320 "2019-11-24T08:54:12Z")

</div>

> [@marbalon](#):
>
> Is there a chance to extend configuration to extend the max temperature range. Now I'm using this bloc to set temperature in my house and it is fine. But when I tried to use the same block to set heaters temperature or hot water I'm limited to 32C. Another nice feature will be extended precision for displaying temperature.

Do you mean in the Google Home app? Not in my control... All Google's

> [@drAndrew](#):
>
> The setting "send msg if state doesn't change after command" is not working for me. It should execute command even if nora thinks device is already in this state or am i missing something?

Yes, you should basically get the same output from the node even if it's already in that state. For example having the light off and turning it on would give you an "on" output message. If you ask google to turn the light on again, by default, it won't output the same message again. Having that option enabled would allow for the message to come again.  
If it's not working for you, please give more details. Flow you use, exact steps you follow, what's the result/expected result after each step, etc.

---

<div class="post-metadata">

### Author: ![drAndrew](https://avatars.discourse-cdn.com/v4/letter/d/9fc29f/32.png) [@drAndrew](https://discourse.nodered.org/u/drAndrew)
#### Post date: [24 November 2019 09:52 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/321 "2019-11-24T09:52:24Z")

</div>

OK, it started working when i changed group name, it was empty before. Now for some reason if i change group name to "home" google says the device isn't available right now, but works fine with different name, "home2" for example.

---

<div class="post-metadata">

### Author: ![andrei-tatar](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei-tatar/32/3780_2.png) [@andrei-tatar](https://discourse.nodered.org/u/andrei-tatar)
#### Post date: [25 November 2019 09:51 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/322 "2019-11-25T09:51:10Z")

</div>

You should just leave group name to either value... it doesn't really matter (empty or not).  
The problem you can get into is that you get the same node ids in different groups so the service is unable to identify exactly each device (this is a limitation of nora). That's why it says the device isn't available, because it's now defined in 2 different groups.  
Once a day the service restarts so the unused groups will just disappear.

---

<div class="post-metadata">

### Author: ![syoma755](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/syoma755/32/14687_2.png) [@syoma755](https://discourse.nodered.org/u/syoma755)
#### Post date: [25 November 2019 20:40 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/323 "2019-11-25T20:40:03Z")

</div>

Hi there. I tried NORA and found some possible improvement - is it possible to revert Blind output? E.g. so that 0 could mean fully closed or fully open and 100 vice versa.

---

<div class="post-metadata">

### Author: ![dr-boss](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dr-boss/32/14665_2.png) [@dr-boss](https://discourse.nodered.org/u/dr-boss)
#### Post date: [26 November 2019 22:40 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/324 "2019-11-26T22:40:33Z")

</div>

I have the problem with NORA after changing token. I can't see on Google Assistant any devices from NORA and NORA as service. I doing relink the Nora from GA but without any results. In nodered I have this message after any deploy :"nora: sync error (invalid object for sync)" but all node are okey.

---

<div class="post-metadata">

### Author: ![andrei-tatar](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/andrei-tatar/32/3780_2.png) [@andrei-tatar](https://discourse.nodered.org/u/andrei-tatar)
#### Post date: [28 November 2019 08:15 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/325 "2019-11-28T08:15:05Z")

</div>

> [@syoma755](#):
>
> Hi there. I tried NORA and found some possible improvement - is it possible to revert Blind output? E.g. so that 0 could mean fully closed or fully open and 100 vice versa.

You can do this with a node specific to your case. Feel free to create a PR if you want this as an option in the blinds node.

> [@dr-boss](#):
>
> I have the problem with NORA after changing token. I can't see on Google Assistant any devices from NORA and NORA as service. I doing relink the Nora from GA but without any results. In nodered I have this message after any deploy :"nora: sync error (invalid object for sync)" but all node are okey.

Can you post a flow that does this? The sync error means the devices don't actually get synced with NORA because of some invalid state/property.

---

<div class="post-metadata">

### Author: ![dr-boss](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dr-boss/32/14665_2.png) [@dr-boss](https://discourse.nodered.org/u/dr-boss)
#### Post date: [28 November 2019 17:08 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/326 "2019-11-28T17:08:31Z")

</div>

After deleting connection and create new one with new token the error not show. If I create new connection and switched all module to this new one but the old one are not deleted the error stay. Only work delete old one and create new.

But I have new messaage ☹ only displayed on deploy moment.

```auto
28.11.2019, 17:49:37
msg : string[49]
"nora (KMdc8): disconnected (io client disconnect)"

```

but all work fine.

---

<div class="post-metadata">

### Author: ![dr-boss](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dr-boss/32/14665_2.png) [@dr-boss](https://discourse.nodered.org/u/dr-boss)
#### Post date: [28 November 2019 17:10 UTC](https://discourse.nodered.org/t/node-red-google-home-integration/4829/327 "2019-11-28T17:10:11Z")

</div>

Example of my flow:

```auto
[
    {
        "id": "afdcbda3.a9446",
        "type": "tab",
        "label": "SAT",
        "disabled": false,
        "info": ""
    },
    {
        "id": "5afe9c8c.a732e4",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "cont",
                "v": "false",
                "vt": "str"
            },
            {
                "t": "cont",
                "v": "true",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 690,
        "y": 180,
        "wires": [
            [
                "11a25fa4.9147c"
            ],
            [
                "38c0ce3c.a950b2"
            ]
        ]
    },
    {
        "id": "da00ea5e.6b62f8",
        "type": "mqtt in",
        "z": "afdcbda3.a9446",
        "name": "HC2",
        "topic": "home/command/#",
        "qos": "2",
        "datatype": "auto",
        "broker": "3629b28a.9a237e",
        "x": 130,
        "y": 60,
        "wires": [
            []
        ]
    },
    {
        "id": "89a46413.2b00a8",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "TV",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 390,
        "y": 360,
        "wires": [
            [
                "3db62e78.e64a32"
            ]
        ]
    },
    {
        "id": "ea782773.ce8968",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            },
            {
                "t": "false"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 550,
        "y": 360,
        "wires": [
            [
                "d8610977.a29678"
            ],
            [
                "749ae28d.93107c"
            ]
        ]
    },
    {
        "id": "d8610977.a29678",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT On",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/powerstate?newstate=4",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 720,
        "y": 320,
        "wires": [
            [
                "579f68fe.a43c48"
            ]
        ]
    },
    {
        "id": "749ae28d.93107c",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Off",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/powerstate?newstate=5",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 720,
        "y": 380,
        "wires": [
            [
                "579f68fe.a43c48"
            ]
        ]
    },
    {
        "id": "2107a91c.d72156",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 250,
        "y": 340,
        "wires": [
            [
                "89a46413.2b00a8"
            ]
        ]
    },
    {
        "id": "f4e0c143.065f6",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "false",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 250,
        "y": 400,
        "wires": [
            [
                "89a46413.2b00a8"
            ]
        ]
    },
    {
        "id": "34938bc3.b47f14",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Status",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/powerstate",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 550,
        "y": 200,
        "wires": [
            [
                "5afe9c8c.a732e4"
            ]
        ]
    },
    {
        "id": "11a25fa4.9147c",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "true",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 860,
        "y": 160,
        "wires": [
            [
                "89a46413.2b00a8"
            ]
        ]
    },
    {
        "id": "38c0ce3c.a950b2",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 860,
        "y": 200,
        "wires": [
            [
                "89a46413.2b00a8"
            ]
        ]
    },
    {
        "id": "579f68fe.a43c48",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "2",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 380,
        "y": 200,
        "wires": [
            [
                "34938bc3.b47f14"
            ]
        ]
    },
    {
        "id": "563b4673.7372c8",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "10",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 180,
        "wires": [
            [
                "579f68fe.a43c48"
            ]
        ]
    },
    {
        "id": "3db62e78.e64a32",
        "type": "rbe",
        "z": "afdcbda3.a9446",
        "name": "",
        "func": "rbei",
        "gap": "",
        "start": "",
        "inout": "out",
        "property": "payload",
        "x": 440,
        "y": 460,
        "wires": [
            [
                "ea782773.ce8968"
            ]
        ]
    },
    {
        "id": "9778bffa.544bb",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Up",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=115",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 710,
        "y": 800,
        "wires": [
            [
                "8516d6f2.c10e58",
                "b7ea5d9e.df965",
                "89ebb28e.992e1"
            ]
        ]
    },
    {
        "id": "5fbd81eb.86ccd",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Dw",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=114",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 710,
        "y": 960,
        "wires": [
            [
                "947afb07.eee5b8",
                "3c01d4d9.eaeefc",
                "884e7240.e1c4e"
            ]
        ]
    },
    {
        "id": "a50714db.df9658",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Mute",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=113",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 720,
        "y": 620,
        "wires": [
            []
        ]
    },
    {
        "id": "f578101f.9078a",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "Silence",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 410,
        "y": 620,
        "wires": [
            [
                "b10a33b8.c7eee"
            ]
        ]
    },
    {
        "id": "984e6990.ca3c38",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 420,
        "y": 720,
        "wires": [
            [
                "f578101f.9078a"
            ]
        ]
    },
    {
        "id": "b10a33b8.c7eee",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 570,
        "y": 620,
        "wires": [
            [
                "a50714db.df9658",
                "984e6990.ca3c38"
            ]
        ]
    },
    {
        "id": "60099893.3ba2c8",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "Voice Up",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 400,
        "y": 800,
        "wires": [
            [
                "5f697f04.8112d"
            ]
        ]
    },
    {
        "id": "be90b6df.685a18",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 900,
        "wires": [
            [
                "60099893.3ba2c8"
            ]
        ]
    },
    {
        "id": "5f697f04.8112d",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 560,
        "y": 800,
        "wires": [
            [
                "9778bffa.544bb",
                "be90b6df.685a18"
            ]
        ]
    },
    {
        "id": "d2921067.04c09",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "Voice Down",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 410,
        "y": 960,
        "wires": [
            [
                "623d7ba8.820c44"
            ]
        ]
    },
    {
        "id": "635d17dd.e91fc8",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 1060,
        "wires": [
            [
                "d2921067.04c09"
            ]
        ]
    },
    {
        "id": "623d7ba8.820c44",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 560,
        "y": 960,
        "wires": [
            [
                "5fbd81eb.86ccd",
                "635d17dd.e91fc8"
            ]
        ]
    },
    {
        "id": "d910adb1.08721",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 620,
        "wires": [
            [
                "f578101f.9078a"
            ]
        ]
    },
    {
        "id": "8b9d5661.d61e48",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 800,
        "wires": [
            [
                "60099893.3ba2c8"
            ]
        ]
    },
    {
        "id": "859089ae.b525a8",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 960,
        "wires": [
            [
                "d2921067.04c09"
            ]
        ]
    },
    {
        "id": "9c443524.f79758",
        "type": "debug",
        "z": "afdcbda3.a9446",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "x": 1090,
        "y": 720,
        "wires": []
    },
    {
        "id": "ff9fd1cc.97234",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "Programy",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 1020,
        "y": 440,
        "wires": [
            []
        ]
    },
    {
        "id": "8083adc7.306e4",
        "type": "nora-light",
        "z": "afdcbda3.a9446",
        "devicename": "number",
        "lightcolor": false,
        "brightnesscontrol": true,
        "passthru": false,
        "statepayload": true,
        "brightnessoverride": "",
        "roomhint": "",
        "name": "",
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 900,
        "y": 620,
        "wires": [
            [
                "4e628663.af28f8"
            ]
        ]
    },
    {
        "id": "4e628663.af28f8",
        "type": "function",
        "z": "afdcbda3.a9446",
        "name": "kanal",
        "func": "msg.payload = msg.payload.brightness\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 890,
        "y": 720,
        "wires": [
            [
                "9c443524.f79758",
                "b83150ed.e807"
            ]
        ]
    },
    {
        "id": "b83150ed.e807",
        "type": "exec",
        "z": "afdcbda3.a9446",
        "command": "/home/pi/.scripts/channel.sh ",
        "addpay": true,
        "append": "",
        "useSpawn": "false",
        "timer": "",
        "oldrc": false,
        "name": "set N program",
        "x": 1100,
        "y": 820,
        "wires": [
            [
                "9c443524.f79758"
            ],
            [
                "9c443524.f79758"
            ],
            [
                "9c443524.f79758"
            ]
        ]
    },
    {
        "id": "da2afc59.1878a",
        "type": "ftp-download",
        "z": "afdcbda3.a9446",
        "server": "4ddcf12c.ac8ca",
        "files": "/etc/enigma2/userbouquet.vh21.tv",
        "directory": "/home/pi/.scripts",
        "name": "",
        "output": "payload",
        "filesType": "str",
        "directoryType": "str",
        "x": 1060,
        "y": 560,
        "wires": [
            [
                "9c443524.f79758"
            ]
        ]
    },
    {
        "id": "5f10ac7a.b75334",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "Refresh channels",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "",
        "crontab": "00 07 * * *",
        "once": false,
        "onceDelay": 0.1,
        "x": 790,
        "y": 560,
        "wires": [
            [
                "da2afc59.1878a"
            ]
        ]
    },
    {
        "id": "182cd0a.703c72f",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Up",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=115",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 880,
        "wires": [
            []
        ]
    },
    {
        "id": "fdb77746.4cbb78",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Up",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=115",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 840,
        "wires": [
            []
        ]
    },
    {
        "id": "8516d6f2.c10e58",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "2",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 840,
        "wires": [
            [
                "fdb77746.4cbb78"
            ]
        ]
    },
    {
        "id": "b7ea5d9e.df965",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "4",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 880,
        "wires": [
            [
                "182cd0a.703c72f"
            ]
        ]
    },
    {
        "id": "79100498.601d4c",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Up",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=115",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 920,
        "wires": [
            []
        ]
    },
    {
        "id": "89ebb28e.992e1",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "6",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 920,
        "wires": [
            [
                "79100498.601d4c"
            ]
        ]
    },
    {
        "id": "1193b3c3.bf674c",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Dw",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=114",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 1080,
        "wires": [
            []
        ]
    },
    {
        "id": "d3533f68.d052d",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Dw",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=114",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 1040,
        "wires": [
            []
        ]
    },
    {
        "id": "c4e87fda.438dc",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Vol Dw",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=114",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 870,
        "y": 1000,
        "wires": [
            []
        ]
    },
    {
        "id": "947afb07.eee5b8",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "2",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 1000,
        "wires": [
            [
                "c4e87fda.438dc"
            ]
        ]
    },
    {
        "id": "3c01d4d9.eaeefc",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "4",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 1040,
        "wires": [
            [
                "d3533f68.d052d"
            ]
        ]
    },
    {
        "id": "884e7240.e1c4e",
        "type": "delay",
        "z": "afdcbda3.a9446",
        "name": "",
        "pauseType": "delay",
        "timeout": "6",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "x": 720,
        "y": 1080,
        "wires": [
            [
                "1193b3c3.bf674c"
            ]
        ]
    },
    {
        "id": "a8746438.cebcd8",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Ch Up",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=402",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 710,
        "y": 1140,
        "wires": [
            []
        ]
    },
    {
        "id": "200d4801.4e8f48",
        "type": "http request",
        "z": "afdcbda3.a9446",
        "name": "SAT Ch Dw",
        "method": "GET",
        "ret": "txt",
        "paytoqs": false,
        "url": "http://192.168.1.65/web/remotecontrol?command=403",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 710,
        "y": 1300,
        "wires": [
            []
        ]
    },
    {
        "id": "ee2a14cc.b8cf68",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "Channel Up",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 410,
        "y": 1140,
        "wires": [
            [
                "fa7eab71.1359a8"
            ]
        ]
    },
    {
        "id": "acd272c6.3dbfd",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 1240,
        "wires": [
            [
                "ee2a14cc.b8cf68"
            ]
        ]
    },
    {
        "id": "fa7eab71.1359a8",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 560,
        "y": 1140,
        "wires": [
            [
                "a8746438.cebcd8",
                "acd272c6.3dbfd"
            ]
        ]
    },
    {
        "id": "88bcb5bc.97d208",
        "type": "nora-switch",
        "z": "afdcbda3.a9446",
        "devicename": "Channel Down",
        "roomhint": "",
        "name": "",
        "passthru": true,
        "nora": "df7a24c4.66de68",
        "topic": "",
        "onvalue": "true",
        "onvalueType": "bool",
        "offvalue": "false",
        "offvalueType": "bool",
        "x": 420,
        "y": 1300,
        "wires": [
            [
                "e327bfc0.5c3ca"
            ]
        ]
    },
    {
        "id": "8b84b9f3.01b838",
        "type": "change",
        "z": "afdcbda3.a9446",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "false",
                "tot": "bool"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 410,
        "y": 1400,
        "wires": [
            [
                "88bcb5bc.97d208"
            ]
        ]
    },
    {
        "id": "e327bfc0.5c3ca",
        "type": "switch",
        "z": "afdcbda3.a9446",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 560,
        "y": 1300,
        "wires": [
            [
                "200d4801.4e8f48",
                "8b84b9f3.01b838"
            ]
        ]
    },
    {
        "id": "e3763f17.c6a45",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 1140,
        "wires": [
            [
                "ee2a14cc.b8cf68"
            ]
        ]
    },
    {
        "id": "dde3c9bb.86af28",
        "type": "inject",
        "z": "afdcbda3.a9446",
        "name": "",
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "x": 190,
        "y": 1300,
        "wires": [
            [
                "88bcb5bc.97d208"
            ]
        ]
    },
    {
        "id": "3629b28a.9a237e",
        "type": "mqtt-broker",
        "z": "",
        "name": "pi4",
        "broker": "192.168.1.10",
        "port": "1883",
        "tls": "",
        "clientid": "",
        "usetls": false,
        "compatmode": true,
        "keepalive": "60",
        "cleansession": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "closeTopic": "",
        "closeQos": "0",
        "closePayload": "",
        "willTopic": "",
        "willQos": "0",
        "willPayload": ""
    },
    {
        "id": "df7a24c4.66de68",
        "type": "nora-config",
        "z": "",
        "name": "nora config",
        "group": "",
        "notify": false
    },
    {
        "id": "4ddcf12c.ac8ca",
        "type": "ftp-download-server",
        "z": "",
        "host": "192.168.1.65",
        "port": "21",
        "user": "satinfo",
        "connTimeout": "10000",
        "pasvTimeout": "10000",
        "keepalive": "10000",
        "name": "SAT"
    }
]

```

[Previous page](https://discourse.nodered.org/t/node-red-google-home-integration/4829.md?page=15)

[Next page](https://discourse.nodered.org/t/node-red-google-home-integration/4829.md?page=17)
