Advertisement
Guest User

Untitled

a guest
May 8th, 2019
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.32 KB | None | 0 0
  1. [{"id":"49ad1a63.1c8aa4","type":"tab","label":"washing machine","disabled":false,"info":""},{"id":"4b8c6a1d.a0d214","type":"mqtt in","z":"49ad1a63.1c8aa4","name":"Power Data","topic":"sonoffPOW/tele/SENSOR","qos":"1","datatype":"auto","broker":"60b8e619.4dde58","x":175,"y":855,"wires":[["3ddb2062.c11c4"]]},{"id":"a3ae1311.91672","type":"mqtt in","z":"49ad1a63.1c8aa4","name":"State of the Sonoff","topic":"sonoffPOW/stat/RESULT","qos":"0","datatype":"auto","broker":"60b8e619.4dde58","x":195,"y":810,"wires":[["9952a3dd.b3aa3"]]},{"id":"2872a781.78e2b8","type":"mqtt out","z":"49ad1a63.1c8aa4","name":"Control rely","topic":"sonoffPOW/cmnd/power1","qos":"0","retain":"","broker":"60b8e619.4dde58","x":385,"y":750,"wires":[]},{"id":"e38218d0.da5128","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":720,"wires":[["2872a781.78e2b8"]]},{"id":"9476febf.77d15","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":765,"wires":[["2872a781.78e2b8"]]},{"id":"9952a3dd.b3aa3","type":"debug","z":"49ad1a63.1c8aa4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":385,"y":810,"wires":[]},{"id":"3ddb2062.c11c4","type":"debug","z":"49ad1a63.1c8aa4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":385,"y":855,"wires":[]},{"id":"51a38deb.0314a4","type":"function","z":"49ad1a63.1c8aa4","name":"Get Energy","func":"msg.url =\"http://192.168.1.140/cm?&user=admin&password=pajohttp&cmnd=Status%208\"\n\n\nreturn msg;","outputs":1,"noerr":0,"x":295,"y":420,"wires":[["6efea7f2.7f8a48"]]},{"id":"6efea7f2.7f8a48","type":"http request","z":"49ad1a63.1c8aa4","name":"HTTP","method":"GET","ret":"txt","paytoqs":false,"url":"","tls":"","proxy":"","x":425,"y":420,"wires":[["68f87d83.f05ea4"]]},{"id":"68f87d83.f05ea4","type":"json","z":"49ad1a63.1c8aa4","name":"","property":"payload","action":"","pretty":false,"x":490,"y":360,"wires":[[]]},{"id":"e18e63cf.2fe6e","type":"function","z":"49ad1a63.1c8aa4","name":"Calculate power","func":"var power = msg.data.attributes.current_power_w;\nvar timer = flow.get(\"timeout\");\nvar total = flow.get(\"Total\");\nvar cost = flow.get(\"CostArray\");\n\n//check if array exists\nif(!total || !total.length || total === undefined){\n total = [];\n }\n\n//push element\ntotal.unshift(power);\n//remove X elementh\nif(total[timer] === undefined) {\n \n flow.set(\"Total\", total);\n}\nelse {\n total.splice(timer, 1);\n flow.set(\"Total\", total);\n}\n\n\n//calculate average\nvar sum = total;\n\nfunction add(accumulator, a) {\n return accumulator + a;\n}\n\nvar average = sum.reduce(add);\n\n//calculate running cost\n//check if array exists\nif(!cost || !cost.length || cost === undefined){\n cost = [];\n }\nvar price = flow.get(\"ElectricityCost\");\nvar costPerMinute = power/1000 * price / 60;\ncost.push(costPerMinute);\nflow.set(\"CostArray\", cost);\n\n//debug\nmsg.costPerMinute = total;\nmsg.average = average / timer;\nmsg.payload = power;\n\nreturn msg;","outputs":1,"noerr":0,"x":695,"y":420,"wires":[["26afc47c.6f8bec","1c07ab09.81b125"]]},{"id":"aac6b447.b71658","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":90,"wires":[["cd2bb10c.f95a6"]]},{"id":"cd2bb10c.f95a6","type":"function","z":"49ad1a63.1c8aa4","name":"Set Timeout in Min","func":"var timer = msg.payload;\nflow.set(\"timeout\", timer);\n","outputs":1,"noerr":0,"x":315,"y":90,"wires":[[]]},{"id":"3fc8ceb1.0c27a2","type":"function","z":"49ad1a63.1c8aa4","name":"reset notification","func":"flow.set(\"announce\", true);\nvar power = msg.payload;\nvar total = flow.get(\"WashTotal\");\nvar start = flow.get(\"WashStart\");\n\n\n\n// just starting the wash\nif(start === 0){\n var date = new Date();\n var sec = date.getTime();\n flow.set(\"WashStart\", sec);\n}\n\n//check if array exists\nif(!total || !total.length || total === undefined){\n total = [];\n }\n\n//push element\ntotal.unshift(power);\nflow.set(\"WashTotal\", total);\nmsg.payload = total;\n\nreturn msg;\n\n","outputs":1,"noerr":0,"x":1055,"y":375,"wires":[[]]},{"id":"bd3cd4a0.0267d8","type":"function","z":"49ad1a63.1c8aa4","name":"announce false","func":"function secondsToHms(d) {\n d = Number(d);\n var h = Math.floor(d / 3600);\n var m = Math.floor(d % 3600 / 60);\n return ('0' + h).slice(-2) + \"h \" + ('0' + m).slice(-2)+\"min\";\n}\n\nflow.set(\"announce\", false);\nvar start = flow.get(\"WashStart\");\nvar timer = flow.get(\"timeout\");\n\n//calculate wash time\nvar date = new Date();\nvar ms = date.getTime();\n\nvar totaltimeinsec = (ms-start)/1000 - 60 *timer;\nvar totalWashTime = secondsToHms(totaltimeinsec);\n\nflow.set(\"TotalWashTime\",totalWashTime);\nflow.set(\"WashStart\", 0);\n\n// save the wash power session\nvar washtotal = flow.get(\"WashTotal\");\nvar sum = washtotal;\n\nfunction add(accumulator, a) {\n return accumulator + a;\n}\n\nvar average = sum.reduce(add);\nmsg.average = average / washtotal.length;\nflow.set(\"WashTotal\", null);\n\n//total cost\nvar sum = flow.get(\"CostArray\");\n\nfunction add(accumulator, a) {\n return accumulator + a;\n}\n\nvar costofpower = sum.reduce(add);\nvar totalcost = Math.round(costofpower * 100) / 100;\nflow.set(\"CostArray\", null);\nflow.set(\"TotalCost\", totalcost);\n\nmsg = {};\n\nmsg.payload = \"Your washing is ready\";\nmsg.ms = ms;\nmsg.totalWashTime = totalWashTime;\n\nreturn msg;\n","outputs":1,"noerr":0,"x":1175,"y":435,"wires":[["43ef21d8.a339b","b4560904.650d38"]]},{"id":"15203530.93bc6b","type":"switch","z":"49ad1a63.1c8aa4","name":"notify?","property":"announce","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":1025,"y":435,"wires":[["bd3cd4a0.0267d8"]]},{"id":"43ef21d8.a339b","type":"cast-to-client","z":"49ad1a63.1c8aa4","name":"Google Home","url":"","contentType":"","message":"","language":"en","ip":"192.168.87.44","port":"8009","volume":"","x":1400,"y":435,"wires":[["4e80ab91.0fa294"]]},{"id":"b4560904.650d38","type":"function","z":"49ad1a63.1c8aa4","name":"Join ","func":"var x = flow.get(\"TotalWashTime\");\nvar totalcost = flow.get(\"TotalCost\");\n\nmsg.payload = {\"data\":{\n \"message\":\"Your washing has been done in \" + x +\n \"The total cost of the wash is: $\" +totalcost,\n \"file_url\":\"https://cdn3.iconfinder.com/data/icons/household-appliances-2/500/Automatic_automatic_machine_clean_machine_wash_washing-512.png\",\n}};\nreturn msg;","outputs":1,"noerr":0,"x":1250,"y":360,"wires":[["665c5875.d32ae8","a8fa516.86189b"]]},{"id":"5066df1b.880cc","type":"change","z":"49ad1a63.1c8aa4","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.attributes.current_power_w","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":500,"wires":[["695c8152.15791","e18e63cf.2fe6e"]]},{"id":"75e27a9a.3a8e34","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"1.93","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":135,"wires":[["6e86ae96.95ace"]]},{"id":"6e86ae96.95ace","type":"function","z":"49ad1a63.1c8aa4","name":"Set standby power limit","func":"var power = msg.payload;\nflow.set(\"average\", power);\n","outputs":1,"noerr":0,"x":335,"y":135,"wires":[[]]},{"id":"26afc47c.6f8bec","type":"function","z":"49ad1a63.1c8aa4","name":"Check average","func":"var x = flow.get(\"average\");\nvar average = msg.average; \n\n\nif(average > x){\n return[msg, null, null];\n \n}\nif(average <= x && average > 0){\n return[null, msg, null];\n}\nif(average === 0){\n flow.set(\"nagging\", false);\n return[null, null, msg];\n}\n\n\n","outputs":3,"noerr":0,"x":875,"y":420,"wires":[["3fc8ceb1.0c27a2"],["15203530.93bc6b"],[]]},{"id":"6fdf4e50.7c222","type":"comment","z":"49ad1a63.1c8aa4","name":"Settings","info":"//timeout - adjust as needed. This is how responsive\nthe notification will be, but if washing machine\nhas downtimes with low power consumption increase the\ntimeout value\n\n\n//standbypower - measure how much power the washing \nmachine draws when on standby. Set the value to be \nslightly above that","x":120,"y":60,"wires":[]},{"id":"ac79bfca.65a8f","type":"comment","z":"49ad1a63.1c8aa4","name":"Additional info and control","info":"","x":230,"y":690,"wires":[]},{"id":"4580e90d.0771f8","type":"inject","z":"49ad1a63.1c8aa4","name":"Powrer cost","topic":"","payload":"{\"dayPrice\":0.104,\"nightPrice\":0.104,\"day_tariff_start\":7,\"night_tariff_start\":22}","payloadType":"json","repeat":"60","crontab":"","once":false,"onceDelay":0.1,"x":115,"y":180,"wires":[["188b337a.ed356d"]]},{"id":"188b337a.ed356d","type":"function","z":"49ad1a63.1c8aa4","name":"set tariff","func":"var date = new Date();\nvar hours = date.getHours();\n\nvar nightTariff = msg.payload.night_tariff_start;\nvar dayTariff = msg.payload.day_tariff_start;\n\nvar nightPrice = msg.payload.nightPrice; \nvar dayPrice = msg.payload.dayPrice;\n\n\n//apply day tariff\nif(hours < nightTariff && hours >= dayTariff){\n flow.set(\"ElectricityCost\", dayPrice);\n}\n//apply night tariff\nelse{\n flow.set(\"ElectricityCost\", nightPrice);\n \n}\nmsg.payload = {\n \"hours\": hours,\n \"current_cost\": flow.get(\"ElectricityCost\"),\n \"nightTariffStart\": nightTariff,\n \"dayTariffStart\": dayTariff\n};\nreturn msg;","outputs":1,"noerr":0,"x":285,"y":180,"wires":[[]]},{"id":"4477394c.0181b8","type":"function","z":"49ad1a63.1c8aa4","name":"Nagging","func":"var nagging = msg.payload;\nflow.set(\"nagging\", nagging);\n","outputs":1,"noerr":0,"x":300,"y":240,"wires":[[]]},{"id":"3b9188cf.9fc798","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":225,"wires":[["4477394c.0181b8"]]},{"id":"bd3e7185.f4c18","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"false","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":270,"wires":[["4477394c.0181b8"]]},{"id":"4e80ab91.0fa294","type":"delay","z":"49ad1a63.1c8aa4","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":915,"y":585,"wires":[["aae22eb3.0e38a"]]},{"id":"aae22eb3.0e38a","type":"switch","z":"49ad1a63.1c8aa4","name":"","property":"nagging","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":1055,"y":585,"wires":[["d35e206e.a6508"]]},{"id":"d35e206e.a6508","type":"function","z":"49ad1a63.1c8aa4","name":"Random Naggings of my WiFi","func":"var nagging = [\n \"Hey! The washing machine has finished\",\n \"It's Adam's turn to get the washing out\",\n \"ALL OF THE WASHING\",\n \"It's Anna's turn to empty the washing machine\",\n \"The Washing machine is not going to empty itself - move your bum\"\n\n ];\n\n\nvar random = nagging[Math.floor(Math.random() * nagging.length)];\nmsg.payload = random;\nreturn msg;","outputs":1,"noerr":0,"x":1285,"y":585,"wires":[["43ef21d8.a339b"]]},{"id":"695c8152.15791","type":"ui_chart","z":"49ad1a63.1c8aa4","tab":"407262cc.33946c","name":"","group":"44389f61.8d764","order":8,"interpolate":"bezier","nodata":"","removeOlder":"24","removeOlderUnit":"3600","x":855,"y":510,"wires":[[],[]]},{"id":"1c07ab09.81b125","type":"debug","z":"49ad1a63.1c8aa4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1090,"y":240,"wires":[]},{"id":"b28677d4.f66108","type":"poll-state","z":"49ad1a63.1c8aa4","name":"","server":"a7b21508.4388a8","updateinterval":"10","updateIntervalUnits":"seconds","outputinitially":false,"outputonchanged":false,"entity_id":"switch.wemo_washing_machine","state_type":"str","halt_if":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"x":200,"y":500,"wires":[["5066df1b.880cc","e18e63cf.2fe6e"]]},{"id":"a8fa516.86189b","type":"pushbullet","z":"49ad1a63.1c8aa4","config":"4c1fb78c.1387c8","pushtype":"","title":"Washing Machine Alert","chan":"","name":"Push Bullet","x":1650,"y":360,"wires":[]},{"id":"665c5875.d32ae8","type":"debug","z":"49ad1a63.1c8aa4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1400,"y":240,"wires":[]},{"id":"abdf89a1.f831a8","type":"inject","z":"49ad1a63.1c8aa4","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":1100,"y":340,"wires":[["b4560904.650d38"]]},{"id":"60b8e619.4dde58","type":"mqtt-broker","z":"","name":"","broker":"192.168.1.183","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"407262cc.33946c","type":"ui_tab","z":"","name":"Dashboard","icon":"dashboard","order":""},{"id":"a7b21508.4388a8","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true},{"id":"4c1fb78c.1387c8","type":"pushbullet-config","z":"","name":"PushBullet"}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement