# Buttons and output state

**URL:** https://discourse.nodered.org/t/buttons-and-output-state/70534
**Category:** General
**Created:** [13 November 2022 11:56 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534 "2022-11-13T11:56:47Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Erich](https://avatars.discourse-cdn.com/v4/letter/e/ea5d25/32.png) [@Erich](https://discourse.nodered.org/u/Erich)
#### Post date: [13 November 2022 11:56 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534/1 "2022-11-13T11:56:47Z")

</div>

Good evening  
I have 9 similar flows for lamps. Each has one UI button and one or more Sonoff buttons.  
This works fine. I have add a alarm button who sets all outputs on.  
I would memorize the Powerstatus for the 9 outputs before i switch this outputs on.  
When i press the alarm button a second time i like to restore the previous settings.  
What s a good way to go? Global variable? Array?  
Thanks.

 ![Sonoff1](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/4/c/4c05472650989d3a5dfede0ac966e78f52a0a049.png)

---

<div class="post-metadata">

### Author: ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)
#### Post date: [13 November 2022 12:26 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534/2 "2022-11-13T12:26:22Z")

</div>

What status do you need to remember - is it just on/off or colour and brightness data?

---

<div class="post-metadata">

### Author: ![Erich](https://avatars.discourse-cdn.com/v4/letter/e/ea5d25/32.png) [@Erich](https://discourse.nodered.org/u/Erich)
#### Post date: [13 November 2022 12:34 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534/3 "2022-11-13T12:34:06Z")

</div>

Just on /off

---

<div class="post-metadata">

### Author: ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)
#### Post date: [13 November 2022 12:53 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534/4 "2022-11-13T12:53:09Z")

</div>

My smart devices accept commands "ON", "OFF" and "TOGGLE" so if I wanted to connect them via a dashboard button it could send "TOGGLE", while a PIR sensor would send "ON".  
No need to retain the status in NR.

I guess that's dependent on the firmware though.

You can certainly use context storage, though I would try and avoid global variables.  
Something like this should work:

 ![Untitled 1](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/9/091d353536eea06f91bc873472b8bb27cd0a76a7.jpeg)

```auto
[{"id":"69b2dac3e1917348","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device1","payload":"ON","payloadType":"str","x":210,"y":300,"wires":[["0d150b7a0d3c1f05"]]},{"id":"f5949197d3fc1659","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device1","payload":"OFF","payloadType":"str","x":210,"y":340,"wires":[["0d150b7a0d3c1f05"]]},{"id":"7a71b71604290094","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device2","payload":"ON","payloadType":"str","x":210,"y":380,"wires":[["0d150b7a0d3c1f05"]]},{"id":"cfc0099bb19f1ed9","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device2","payload":"OFF","payloadType":"str","x":210,"y":420,"wires":[["0d150b7a0d3c1f05"]]},{"id":"e314011742ca2e41","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device3","payload":"ON","payloadType":"str","x":210,"y":460,"wires":[["0d150b7a0d3c1f05"]]},{"id":"25de037f09739fd3","type":"inject","z":"87ea245182d582ac","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"device3","payload":"OFF","payloadType":"str","x":210,"y":500,"wires":[["0d150b7a0d3c1f05"]]},{"id":"0d150b7a0d3c1f05","type":"function","z":"87ea245182d582ac","name":"function 2","func":"var status = flow.get('deviceStatus') || {}\nstatus[msg.topic] = msg.payload\nflow.set('deviceStatus', (status))\nmsg.payload = flow.get('deviceStatus')\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":380,"wires":[["73ea2720e7d62d56"]]},{"id":"73ea2720e7d62d56","type":"debug","z":"87ea245182d582ac","name":"debug 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":380,"wires":[]}]

```

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [12 January 2023 12:54 UTC](https://discourse.nodered.org/t/buttons-and-output-state/70534/5 "2023-01-12T12:54:07Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
