Skip to content

Instantly share code, notes, and snippets.

@unixweb
Last active January 7, 2018 08:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unixweb/769ef00788748c3135b0fbe4ad9c2310 to your computer and use it in GitHub Desktop.
Save unixweb/769ef00788748c3135b0fbe4ad9c2310 to your computer and use it in GitHub Desktop.
Google Home Speech with Node-Red
[{"id":"bb4433fd.83e2e8","type":"mqtt in","z":"7178696f.8022","name":"Air Pressure","topic":"pressure/p1","qos":"2","broker":"f0d962da.ee7f7","x":113,"y":75.99996948242188,"wires":[["5f72bbfe.d37b3c"]]},{"id":"5f72bbfe.d37b3c","type":"function","z":"7178696f.8022","name":"Time and Date","func":"// (1) wandelt timestamo ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird am Ende zusammengestellt)\nvar now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n\n\n// Variante1: wenn z.B. nicht ein vorhandener Payload\n// überschrieben werden soll, sondern um ein\n// Datum ergänzt werden soll. \n\n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\n\n// Variante 2: Function gibt die aktuelle Zeit als payload aus\nnow = day+'-'+month+'-'+year+' '+hour+':'+minute+':'+second;\n// JSON Antwort parsen\nvar weather=JSON.parse(msg.payload);\n \n// Neue Nachricht mit Payload erstellen\nvar newMsg = { payload: \"Der aktuelle Luftdruck beträgt\" +weather + \" hPa\"};\n//var newMsg = { payload: \"Der aktuelle Luftdruck in München ist \"+weather + \" hPa.\\r\" +Date}; \n// Zurückgeben der Nachricht\nreturn [newMsg];","outputs":1,"noerr":0,"x":313,"y":75,"wires":[["fc516b34.b67c3"]]},{"id":"fc516b34.b67c3","type":"delay","z":"7178696f.8022","name":"","pauseType":"delay","timeout":"20","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":551,"y":75,"wires":[["efd24529.6eb748"]]},{"id":"efd24529.6eb748","type":"function","z":"7178696f.8022","name":"","func":"\nreturn msg;","outputs":1,"noerr":0,"x":695,"y":122,"wires":[["8955ef3.95b489"]]},{"id":"3ce31c98.432e9c","type":"delay","z":"7178696f.8022","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":318,"y":123,"wires":[["efd24529.6eb748"]]},{"id":"854aa86d.4a7d9","type":"delay","z":"7178696f.8022","name":"","pauseType":"delay","timeout":"20","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":323,"y":180,"wires":[["efd24529.6eb748"]]},{"id":"cc70e2f3.480a2","type":"delay","z":"7178696f.8022","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":545,"y":294,"wires":[["efd24529.6eb748"]]},{"id":"a40aa761.570508","type":"inject","z":"7178696f.8022","name":"","topic":"","payload":"Die Türe ist geöffnet","payloadType":"str","repeat":"","crontab":"","once":false,"x":416,"y":239,"wires":[["efd24529.6eb748"]]},{"id":"8955ef3.95b489","type":"and-gate","z":"7178696f.8022","name":"","rules":[{"t":"eq","v":"VOICE","vt":"str","propertyType":"flow","property":"payload"}],"outputTopic":"","gateType":"and","emitOnlyIfTrue":true,"x":886,"y":122,"wires":[["3fdc7fcd.3fba9"]]},{"id":"1c31ddae.379702","type":"mqtt in","z":"7178696f.8022","name":"","topic":"home/msg","qos":"2","broker":"f0d962da.ee7f7","x":105,"y":134,"wires":[["3ce31c98.432e9c"]]},{"id":"1fe1753d.2f065b","type":"mqtt in","z":"7178696f.8022","name":"","topic":"home/msg2","qos":"2","broker":"f0d962da.ee7f7","x":112,"y":192,"wires":[["854aa86d.4a7d9"]]},{"id":"cdf65973.5f7f58","type":"function","z":"7178696f.8022","name":"Parse Temperature","func":"// (1) wandelt timestamo ins ISO Datumformat um\n//msg.timestamp= new Date().toISOString()\n\n// (2) beliebiges Datum festlegbar: hier: YYYY-MM-DD HH:MM.SS\n// (Ausgabeformat wird danz am Ende zusammengestellt)\nvar now = new Date(); \nvar year = now.getFullYear();\nvar month = now.getMonth()+1; \nvar day = now.getDate();\nvar hour = now.getHours();\nvar minute = now.getMinutes();\nvar second = now.getSeconds(); \nif(month.toString().length == 1) {\nvar month = '0'+month;\n}\nif(day.toString().length == 1) {\nvar day = '0'+day;\n} \nif(hour.toString().length == 1) {\nvar hour = '0'+hour;\n}\nif(minute.toString().length == 1) {\nvar minute = '0'+minute;\n}\nif(second.toString().length == 1) {\nvar second = '0'+second;\n} \n\n\n// Variante1: wenn z.B. nicht ein vorhandener Payload\n// überschrieben werden soll, sondern um ein\n// Datum ergänzt werden soll. \n\n//msg.timestamp = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;\n\n// Variante 2: Function gibt die aktuelle Zeit als payload aus\nnow = day+'-'+month+'-'+year+' '+hour+':'+minute+':'+second;\n\n// JSON Antwort parsen\nvar weather=JSON.parse(msg.payload);\n \n// Neue Nachricht mit Payload erstellen\nvar newMsg = { payload: \"Die aktuelle Außentemperatur beträgt \"+weather + \" Grad\"};\n \n// Zurückgeben der Nachricht\nreturn [newMsg];","outputs":1,"noerr":0,"x":359,"y":295,"wires":[["cc70e2f3.480a2"]]},{"id":"3fdc7fcd.3fba9","type":"googlehome-notify","z":"7178696f.8022","server":"a427a4e3.e2b058","name":"","x":1116,"y":123,"wires":[]},{"id":"4de1dfda.5021d","type":"mqtt in","z":"7178696f.8022","name":"Temperature Terrasse","topic":"temp/jhummel","qos":"2","broker":"f0d962da.ee7f7","x":136,"y":295.7999572753906,"wires":[["cdf65973.5f7f58"]]},{"id":"fa1adc5b.6874f","type":"inject","z":"7178696f.8022","name":"Set flow.payload ...","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"0 23 * * *","once":false,"x":158,"y":423,"wires":[["b3f1219b.8623c"]]},{"id":"fa7b3a2f.e871a","type":"inject","z":"7178696f.8022","name":"Set flow.payload ...","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"0 0-8 * * *","once":false,"x":164,"y":482,"wires":[["8f770cd0.6e9df"]]},{"id":"b3f1219b.8623c","type":"change","z":"7178696f.8022","name":"... to \"Voice On\"","rules":[{"t":"set","p":"payload","pt":"flow","to":"VOICE","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":424,"wires":[[]]},{"id":"8f770cd0.6e9df","type":"change","z":"7178696f.8022","name":"... to \"Voice Off\"","rules":[{"t":"set","p":"payload","pt":"flow","to":"OFF","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":432,"y":483,"wires":[[]]},{"id":"f0d962da.ee7f7","type":"mqtt-broker","z":"","broker":"mqtt.unixweb.de","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"15","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""},{"id":"a427a4e3.e2b058","type":"googlehome-config-node","z":"","ipaddress":"192.168.1.1","language":"de"}]
@unixweb
Copy link
Author

unixweb commented Dec 27, 2017

Requirements

1.) npm install node-red-contrib-bool-gate
2.) npm install node-red-contrib-google-home-notify

bildschirmfoto 2017-12-27 um 23 11 58

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment