Skip to content

Instantly share code, notes, and snippets.

@fergussonb
Created August 4, 2016 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fergussonb/783d47c8a50a16adbe3b51ef3743733e to your computer and use it in GitHub Desktop.
Save fergussonb/783d47c8a50a16adbe3b51ef3743733e to your computer and use it in GitHub Desktop.
EMC from Temperature and Humidity

Listens to an MQTT broker for temperature and humidity. Then calculates the EMC (equilibrium moisture content) and posts the calculated value to an MQTT broker. Designed for use with an EmonCMS.

Written by Berkeley Fergusson in August 2016.

[{"id":"83cf3f33.85205","type":"mqtt-broker","z":"","broker":"10.1.10.200","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willRetain":null,"willPayload":"","birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":""},{"id":"68c3c93f.51d4b8","type":"mqtt in","z":"5ab7703b.4b958","name":"Bench Temperature","topic":"emon/EmonTH1/temperature","broker":"83cf3f33.85205","x":141,"y":118,"wires":[["fef4f107.56746"]]},{"id":"7d4ed145.fe8ee","type":"debug","z":"5ab7703b.4b958","name":"","active":false,"console":"false","complete":"true","x":919,"y":261,"wires":[]},{"id":"fef4f107.56746","type":"function","z":"5ab7703b.4b958","name":"str to float","func":"var temp = parseFloat(msg.payload)\nnewMsg = msg\nnewMsg.payload = temp\nreturn newMsg;","outputs":1,"noerr":0,"x":166,"y":176,"wires":[["a19bc9bf.b48de8"]]},{"id":"d8f27098.71576","type":"function","z":"5ab7703b.4b958","name":"All Values in one Msg","func":"context.data = context.data || {};\nif(msg.payload < 0){\n var hum = msg.payload + 101;\n context.data.humidity = hum;\n msg = null;\n} else if (msg.payload >= 0) {\n var temp = msg.payload - 100;\n context.data.tempF = temp;\n msg = null;\n} else msg = null;\n\nif(context.data.humidity != null && context.data.tempF != null){\n var hum = context.data.humidity;\n var temp = context.data.tempF;\n context.data = null;\n return {humidity: hum, tempF: temp};\n //return {humidity: context.data.humidity, temp: context.data.tempF};\n} else return msg;","outputs":"1","noerr":0,"x":449,"y":365,"wires":[["f0a17ab5.0a8f58"]]},{"id":"c3cb9f42.f89e1","type":"mqtt in","z":"5ab7703b.4b958","name":"Bench Humidity","topic":"emon/EmonTH1/humidity","broker":"83cf3f33.85205","x":141,"y":429,"wires":[["edb06f6a.47437"]]},{"id":"edb06f6a.47437","type":"function","z":"5ab7703b.4b958","name":"str to float","func":"var temp = parseFloat(msg.payload)\nnewMsg = msg\nnewMsg.payload = temp\nreturn newMsg;","outputs":1,"noerr":0,"x":140,"y":480,"wires":[["6da21578.b689ec"]]},{"id":"6da21578.b689ec","type":"function","z":"5ab7703b.4b958","name":"Make Negative","func":"var hum = msg.payload\nhum -= 101\nmsg.payload = hum\nreturn msg;","outputs":1,"noerr":0,"x":142,"y":545,"wires":[["d8f27098.71576"]]},{"id":"a19bc9bf.b48de8","type":"function","z":"5ab7703b.4b958","name":"C to F","func":"var temp = msg.payload;\ntemp = temp * 1.8 + 32;\nmsg.payload = temp;\n\nreturn msg;","outputs":1,"noerr":0,"x":160,"y":238,"wires":[["3136cdf9.5c67d2"]]},{"id":"3136cdf9.5c67d2","type":"function","z":"5ab7703b.4b958","name":"Make Positive","func":"var temp = msg.payload;\ntemp += 100;\nmsg.payload = temp;\nreturn msg;","outputs":1,"noerr":0,"x":152,"y":304,"wires":[["d8f27098.71576"]]},{"id":"f0a17ab5.0a8f58","type":"function","z":"5ab7703b.4b958","name":"EMC calculation","func":"var tf = msg.tempF\nvar h = msg.humidity\nh /= 100;\nvar t2 = tf * tf;\nvar w = 330 + 0.452 * tf + 0.00415 * t2;\nvar k = 0.791 + 0.000463 * tf - 0.000000844 * t2;\nvar ka = 6.34 + 0.000775 * tf - 0.0000935 * t2;\nvar kb = 1.09 + 0.0284 * tf - 0.0000904 * t2;\nvar m = 1800 / w * ( k * h / (1 - k * h)+ (ka * k * h + 2 * ka * kb * k * k * h * h)/ (1 + ka * k * h + ka * kb * k * k * h * h));\nreturn {\"payload\": m};","outputs":1,"noerr":0,"x":670,"y":366,"wires":[["7d4ed145.fe8ee","5f8222bd.4b86ec"]]},{"id":"5f8222bd.4b86ec","type":"mqtt out","z":"5ab7703b.4b958","name":"","topic":"emon/EmonTH1/EMC2_Bench","qos":"","retain":"","broker":"83cf3f33.85205","x":941,"y":366,"wires":[]}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment