Components and supplies
Jumper wires (generic)
Arduino Nano 33 IoT
Tactile Switch, Top Actuated
Raspberry Pi 3 Model B
Project description
Code
node-red flow
json
1[{"id":"49b1e0b1.19c7c","type":"tab","label":"sonos","disabled":false,"info":""},{"id":"6ee5c211.a3e94c","type":"comment","z":"49b1e0b1.19c7c","name":"hear 2 radio in group","info":"","x":110,"y":40,"wires":[]},{"id":"103843b4.962a64","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Soho 3 Radio","payloadType":"str","x":110,"y":100,"wires":[["20e2177b.99bce8"]]},{"id":"5e8ea9f7.de104","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"BBC 4 Radio 6 Music","payloadType":"str","x":130,"y":140,"wires":[["20e2177b.99bce8"]]},{"id":"7d65fe13.55bd3","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.play","state":"","stateType":"str","name":"","x":590,"y":180,"wires":[["68e99155.d7b4"]]},{"id":"68e99155.d7b4","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":480,"wires":[]},{"id":"20e2177b.99bce8","type":"sonos-manage-mysonos","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"mysonos.stream.item","state":"","stateType":"str","name":"","x":380,"y":180,"wires":[["7d65fe13.55bd3"]]},{"id":"318ffa9c.4ed80e","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Österreich 5 1","payloadType":"str","x":110,"y":180,"wires":[["20e2177b.99bce8"]]},{"id":"7aeee122.f02b1","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Latte 6 Miele","payloadType":"str","x":100,"y":220,"wires":[["20e2177b.99bce8"]]},{"id":"8b8f95d2.fd20f8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Deutschlandfunk","payloadType":"str","x":120,"y":260,"wires":[["20e2177b.99bce8"]]},{"id":"a8e0b53.be01348","type":"http 7 in","z":"49b1e0b1.19c7c","name":"","url":"/sonos_play_radio","method":"post","upload":false,"swaggerDoc":"","x":130,"y":440,"wires":[["e8814bd7.cfdc7","c1ff38e4.c09fc8","20e2177b.99bce8"]]},{"id":"e8814bd7.cfdc7","type":"template","z":"49b1e0b1.19c7c","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html> 8 <head></head> 9 <body> 10 <h1>Hello 11 {{ payload }}!</h1> 12 </body> 13</html>","x":330,"y":440,"wires":[["c7479080.523148"]]},{"id":"c7479080.523148","type":"http 14 response","z":"49b1e0b1.19c7c","name":"","x":470,"y":440,"wires":[]},{"id":"47cb864c.f3ce08","type":"comment","z":"49b1e0b1.19c7c","name":"example 15 urls","info":"curl -X POST -d ''Soho Radio'' -H "Content-type: text/plain" http://192.168.0.87:1880/sonos_play_radio 16 17curl 18 -X POST -d ''Deutschlandfunk'' -H "Content-type: text/plain" http://192.168.0.87:1880/sonos_play_radio 19 20","x":90,"y":400,"wires":[]},{"id":"c1ff38e4.c09fc8","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":330,"y":480,"wires":[]},{"id":"5bd7b3a0.287e3c","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.stop","state":"","stateType":"str","name":"","x":530,"y":660,"wires":[["68e99155.d7b4"]]},{"id":"71786316.bd9c4c","type":"inject","z":"49b1e0b1.19c7c","name":"stop","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":330,"y":640,"wires":[["5bd7b3a0.287e3c"]]},{"id":"dc8e0e59.44e2e","type":"http 21 in","z":"49b1e0b1.19c7c","name":"","url":"/sonos","method":"post","upload":false,"swaggerDoc":"","x":90,"y":720,"wires":[["37bc1097.7da67","e8814bd7.cfdc7"]]},{"id":"37bc1097.7da67","type":"switch","z":"49b1e0b1.19c7c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"stop","vt":"str"},{"t":"eq","v":"play","vt":"str"},{"t":"eq","v":"pause","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":320,"y":720,"wires":[["5bd7b3a0.287e3c"],["3ef330ef.4298d8"],["9946d885.512f18"]]},{"id":"3ef330ef.4298d8","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.play","state":"","stateType":"str","name":"","x":530,"y":720,"wires":[["68e99155.d7b4"]]},{"id":"9946d885.512f18","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.pause","state":"","stateType":"str","name":"","x":530,"y":780,"wires":[["68e99155.d7b4"]]},{"id":"8b3dc05.24f064","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.get.trackplus","state":"","stateType":"str","name":"","x":370,"y":940,"wires":[["d1cb0e93.ff078"]]},{"id":"f0a303d0.1dc938","type":"comment","z":"49b1e0b1.19c7c","name":"stop, 22 play or pause the group","info":"","x":140,"y":600,"wires":[]},{"id":"8b74c1c5.06c1a8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":90,"y":940,"wires":[["8b3dc05.24f064"]]},{"id":"d1cb0e93.ff078","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":940,"wires":[]},{"id":"d9b364cf.523d","type":"comment","z":"49b1e0b1.19c7c","name":"get 23 infos","info":"","x":90,"y":900,"wires":[]},{"id":"2d2a91b.60f7eee","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.set.volume","state":"","stateType":"str","name":"","x":370,"y":1040,"wires":[["859572ff.f724f8"]]},{"id":"5347976e.45ef1","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":90,"y":1040,"wires":[["2d2a91b.60f7eee"]]},{"id":"859572ff.f724f8","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":1040,"wires":[]},{"id":"78b7a900.06d57","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"5","payloadType":"num","x":90,"y":1080,"wires":[["2d2a91b.60f7eee"]]},{"id":"83655f37.e7a628","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"10","payloadType":"num","x":90,"y":1120,"wires":[["2d2a91b.60f7eee"]]},{"id":"9f262918.41c9f8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"15","payloadType":"num","x":90,"y":1160,"wires":[["2d2a91b.60f7eee"]]},{"id":"631c3eea.24d26","type":"sonos-config","z":"","name":"Küche","serialnum":"","ipaddress":"192.168.0.192"}]
arduino code
arduino
code for buttons and communication to node red
1#include <SPI.h> 2#include <WiFiNINA.h> 3#include <ArduinoHttpClient.h> 4 5// for NANO 33 IoT 6 7const int button_1 = 2; // digital pin 2 ... 8const int button_2 = 3; 9const int button_3 = 4; 10const int button_4 = 5; 11const int button_5 = 6; 12const int button_6 = 7; 13const int ledPin = LED_BUILTIN; // pin to use for the LED 14 15char ssid[] = ""; // your network SSID (name) 16char pass[] = ""; // your network password 17 18const int station_array_size = 3; 19 20// string array is station_name, station_url, station_image (does not work :-( ) 21String oe1[station_array_size] = { "Österreich 1", "mp3stream3.apasf.apa.at%3A8000", "" }; 22String soho_radio[station_array_size] = { "Soho Radio", "https://sohoradiomusic.doughunt.co.uk:8010/320mp3", "" }; 23String latte_miele[station_array_size] = { "Latte Miele", "playerservices.streamtheworld.com/api/livestream-redirect/LATTEMIELE.mp3", "" }; 24String bbc6[station_array_size] = { "BBC 6 Music", "http://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/hls/nonuk/sbr_low/llnw/bbc_radio_two.m3u8", "" }; 25String dlf[station_array_size] = { "Deutschlandfunk", "https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3", "" }; 26 27int status = WL_IDLE_STATUS; 28char server[] = "192.168.0.87"; // raspberry pi with node-red 29String endpoint_sonos_play_radio = "/sonos_play_radio"; 30String endpoint_sonos = "/sonos"; 31 32int port = 1880; 33 34WiFiClient wifi; 35 36HttpClient client = HttpClient(wifi, server, port); 37 38 39void setup() { 40 Serial.begin(9600); 41 42 // set LED pin to output mode 43 pinMode(ledPin, OUTPUT); 44 45 // configure the button pin as input 46 pinMode(button_1, INPUT); 47 pinMode(button_2, INPUT); 48 pinMode(button_3, INPUT); 49 pinMode(button_4, INPUT); 50 pinMode(button_5, INPUT); 51 pinMode(button_6, INPUT); 52 digitalWrite(button_1, HIGH); 53 digitalWrite(button_2, HIGH); 54 digitalWrite(button_3, HIGH); 55 digitalWrite(button_4, HIGH); 56 digitalWrite(button_5, HIGH); 57 digitalWrite(button_6, HIGH); 58 59 // check for the WiFi module: 60 if (WiFi.status() == WL_NO_MODULE) { 61 Serial.println("Communication with WiFi module failed!"); 62 // don't continue 63 while (true); 64 } 65 66 String fv = WiFi.firmwareVersion(); 67 if (fv < WIFI_FIRMWARE_LATEST_VERSION) { 68 Serial.println("Please upgrade the firmware"); 69 } 70 71 // attempt to connect to Wifi network: 72 while (status != WL_CONNECTED) { 73 Serial.print("Attempting to connect to SSID: "); 74 Serial.println(ssid); 75 // Connect to WPA/WPA2 network. Change this line if using open or WEP network: 76 status = WiFi.begin(ssid, pass); 77 78 // wait 10 seconds for connection: 79 delay(7000); 80 } 81 Serial.println("Connected to wifi"); 82 printWifiStatus(); 83 Serial.println(); 84} 85 86void loop() { 87 digitalWrite(ledPin, LOW); 88 89 if (digitalRead(button_1) == 0) { 90 Serial.println("button 1 pressed"); 91 digitalWrite(ledPin, HIGH); 92 web_request(endpoint_sonos_play_radio, oe1[0]); 93 } 94 if (digitalRead(button_2) == 0) { 95 Serial.println("button 2 pressed"); 96 digitalWrite(ledPin, HIGH); 97 web_request(endpoint_sonos_play_radio, soho_radio[0]); 98 } 99 if (digitalRead(button_3) == 0) { 100 Serial.println("button 3 pressed"); 101 digitalWrite(ledPin, HIGH); 102 web_request(endpoint_sonos_play_radio, latte_miele[0]); 103 } 104 if (digitalRead(button_4) == 0) { 105 Serial.println("button 4 pressed"); 106 digitalWrite(ledPin, HIGH); 107 web_request(endpoint_sonos_play_radio, bbc6[0]); 108 } 109 if (digitalRead(button_5) == 0) { 110 Serial.println("button 5 pressed"); 111 digitalWrite(ledPin, HIGH); 112 web_request(endpoint_sonos_play_radio, dlf[0]); 113 } 114 if (digitalRead(button_6) == 0) { 115 Serial.println("button 6 pressed"); 116 digitalWrite(ledPin, HIGH); 117 web_request(endpoint_sonos, "stop"); 118 } 119// while (client.available()) { 120// char c = client.read(); 121// Serial.write(c); 122// } 123} 124 125// body is POST-body message 126// path is http-endpoint eg. /sonos_play_radio, /sonos 127void web_request(String path, String body) { 128 Serial.println("making POST request with:"); 129 String contentType = "text/plain"; 130 Serial.println(body); 131 132 client.post(path, contentType, body); 133 //client.get("/"); 134 135 // read the status code and body of the response 136 int statusCode = client.responseStatusCode(); 137 String response = client.responseBody(); 138 139 Serial.print("Status code: "); 140 Serial.println(statusCode); 141 Serial.print("Response: "); 142 Serial.println(response); 143 Serial.println(); 144} 145 146void printWifiStatus() { 147 // print the SSID of the network you're attached to: 148 Serial.print("SSID: "); 149 Serial.println(WiFi.SSID()); 150 151 // print your board's IP address: 152 IPAddress ip = WiFi.localIP(); 153 Serial.print("IP Address: "); 154 Serial.println(ip); 155 156 // print the received signal strength: 157 long rssi = WiFi.RSSI(); 158 Serial.print("signal strength (RSSI):"); 159 Serial.print(rssi); 160 Serial.println(" dBm"); 161} 162
node-red flow
json
1[{"id":"49b1e0b1.19c7c","type":"tab","label":"sonos","disabled":false,"info":""},{"id":"6ee5c211.a3e94c","type":"comment","z":"49b1e0b1.19c7c","name":"hear radio in group","info":"","x":110,"y":40,"wires":[]},{"id":"103843b4.962a64","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Soho Radio","payloadType":"str","x":110,"y":100,"wires":[["20e2177b.99bce8"]]},{"id":"5e8ea9f7.de104","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"BBC Radio 6 Music","payloadType":"str","x":130,"y":140,"wires":[["20e2177b.99bce8"]]},{"id":"7d65fe13.55bd3","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.play","state":"","stateType":"str","name":"","x":590,"y":180,"wires":[["68e99155.d7b4"]]},{"id":"68e99155.d7b4","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":480,"wires":[]},{"id":"20e2177b.99bce8","type":"sonos-manage-mysonos","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"mysonos.stream.item","state":"","stateType":"str","name":"","x":380,"y":180,"wires":[["7d65fe13.55bd3"]]},{"id":"318ffa9c.4ed80e","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Österreich 1","payloadType":"str","x":110,"y":180,"wires":[["20e2177b.99bce8"]]},{"id":"7aeee122.f02b1","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Latte Miele","payloadType":"str","x":100,"y":220,"wires":[["20e2177b.99bce8"]]},{"id":"8b8f95d2.fd20f8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"Deutschlandfunk","payloadType":"str","x":120,"y":260,"wires":[["20e2177b.99bce8"]]},{"id":"a8e0b53.be01348","type":"http in","z":"49b1e0b1.19c7c","name":"","url":"/sonos_play_radio","method":"post","upload":false,"swaggerDoc":"","x":130,"y":440,"wires":[["e8814bd7.cfdc7","c1ff38e4.c09fc8","20e2177b.99bce8"]]},{"id":"e8814bd7.cfdc7","type":"template","z":"49b1e0b1.19c7c","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html> 2 <head></head> 3 <body> 4 <h1>Hello {{ payload }}!</h1> 5 </body> 6</html>","x":330,"y":440,"wires":[["c7479080.523148"]]},{"id":"c7479080.523148","type":"http response","z":"49b1e0b1.19c7c","name":"","x":470,"y":440,"wires":[]},{"id":"47cb864c.f3ce08","type":"comment","z":"49b1e0b1.19c7c","name":"example urls","info":"curl -X POST -d ''Soho Radio'' -H "Content-type: text/plain" http://192.168.0.87:1880/sonos_play_radio 7 8curl -X POST -d ''Deutschlandfunk'' -H "Content-type: text/plain" http://192.168.0.87:1880/sonos_play_radio 9 10","x":90,"y":400,"wires":[]},{"id":"c1ff38e4.c09fc8","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":330,"y":480,"wires":[]},{"id":"5bd7b3a0.287e3c","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.stop","state":"","stateType":"str","name":"","x":530,"y":660,"wires":[["68e99155.d7b4"]]},{"id":"71786316.bd9c4c","type":"inject","z":"49b1e0b1.19c7c","name":"stop","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":330,"y":640,"wires":[["5bd7b3a0.287e3c"]]},{"id":"dc8e0e59.44e2e","type":"http in","z":"49b1e0b1.19c7c","name":"","url":"/sonos","method":"post","upload":false,"swaggerDoc":"","x":90,"y":720,"wires":[["37bc1097.7da67","e8814bd7.cfdc7"]]},{"id":"37bc1097.7da67","type":"switch","z":"49b1e0b1.19c7c","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"stop","vt":"str"},{"t":"eq","v":"play","vt":"str"},{"t":"eq","v":"pause","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":320,"y":720,"wires":[["5bd7b3a0.287e3c"],["3ef330ef.4298d8"],["9946d885.512f18"]]},{"id":"3ef330ef.4298d8","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.play","state":"","stateType":"str","name":"","x":530,"y":720,"wires":[["68e99155.d7b4"]]},{"id":"9946d885.512f18","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.pause","state":"","stateType":"str","name":"","x":530,"y":780,"wires":[["68e99155.d7b4"]]},{"id":"8b3dc05.24f064","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.get.trackplus","state":"","stateType":"str","name":"","x":370,"y":940,"wires":[["d1cb0e93.ff078"]]},{"id":"f0a303d0.1dc938","type":"comment","z":"49b1e0b1.19c7c","name":"stop, play or pause the group","info":"","x":140,"y":600,"wires":[]},{"id":"8b74c1c5.06c1a8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":90,"y":940,"wires":[["8b3dc05.24f064"]]},{"id":"d1cb0e93.ff078","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":940,"wires":[]},{"id":"d9b364cf.523d","type":"comment","z":"49b1e0b1.19c7c","name":"get infos","info":"","x":90,"y":900,"wires":[]},{"id":"2d2a91b.60f7eee","type":"sonos-universal","z":"49b1e0b1.19c7c","confignode":"631c3eea.24d26","compatibilityMode":false,"command":"group.set.volume","state":"","stateType":"str","name":"","x":370,"y":1040,"wires":[["859572ff.f724f8"]]},{"id":"5347976e.45ef1","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":90,"y":1040,"wires":[["2d2a91b.60f7eee"]]},{"id":"859572ff.f724f8","type":"debug","z":"49b1e0b1.19c7c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":590,"y":1040,"wires":[]},{"id":"78b7a900.06d57","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"5","payloadType":"num","x":90,"y":1080,"wires":[["2d2a91b.60f7eee"]]},{"id":"83655f37.e7a628","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"10","payloadType":"num","x":90,"y":1120,"wires":[["2d2a91b.60f7eee"]]},{"id":"9f262918.41c9f8","type":"inject","z":"49b1e0b1.19c7c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"15","payloadType":"num","x":90,"y":1160,"wires":[["2d2a91b.60f7eee"]]},{"id":"631c3eea.24d26","type":"sonos-config","z":"","name":"Küche","serialnum":"","ipaddress":"192.168.0.192"}]
Downloadable files
switches with arduino
switches with arduino
switches with arduino
switches with arduino
Comments
Only logged in users can leave comments