Has anyone integrated a home energy monitor that uses current transformers (think Sense or IoTaWatt or Aeotec Home Energy Monitor) with integration into Ignition Maker? I’d much rather historize and display this data in Ignition than rely on some sort of cloud service.
You could use a current monitoring sensor from NCD. Shop - store.ncd.io
Use their MQTT gateway with the current monitor sensor which will interface nicely with Maker’s MQTT module from Cirrus Link. One MQTT gateway can handle several different wireless sensors.
Monnit has a similar eco-system as well that you could check out as well Wireless AC Current Meters for Remote Current Monitoring (monnit.com)
Weird that this popped up… I’ve recently been looking into ShellyEM devices (already got a few relays wired in and talking to Ignition via MQTT)
Will the Cirrus Link MQTT modules run on a free license in Maker Edition?
Yes
I was planning to try IoTaWatt for my home setup, since spacechumper
in their forums posted an Ignition script to poll the IoTaWatt device’s webservice. I repasted the code below for the sake of redundancy in case that forum ever goes down, but I didn’t write it.
#print receivedData
receivedData=system.net.httpGet("http://x.x.x.x/query?select=[time.local.unix,input1a.amps.d2,input1pf.pf.d1,input1w.watts.d1,input2a.amps.d2,input2pf.pf.d1,input2w.watts.d1,input3a.amps.d2,input3pf.pf.d1,input3w.watts.d1,input4a.amps.d2,input4pf.pf.d1,input4w.watts.d1,input5a.amps.d2,input5pf.pf.d1,input5w.watts.d1,input6a.amps.d2,input6pf.pf.d1,input6w.watts.d1,input7a.amps.d2,input7pf.pf.d1,input7w.watts.d1,input8a.amps.d2,input8pf.pf.d1,input8w.watts.d1,input9a.amps.d2,input9pf.pf.d1,input9w.watts.d1,input10a.amps.D2,input10pf.pf.d1,input10w.watts.d1,phaseA.volts.d1,phaseB.volts.d1,phaseAFreq.hz.d1,phaseBFreq.hz.d1]&begin=s-5s&end=s&resolution=high&group=auto&header=yes",1000,2500)
#print DataJSON
DataJSON=system.util.jsonDecode(receivedData)
for key, value in DataJSON.items(): #or leave the .keys() off entirely
print key
print value
val1=0
i=0
updateTags=0
for item in DataJSON["labels"]:
for j in DataJSON["data"]:
if ((item == "Time") & (updateTags==0)):
val1 = system.tag.read("[default]IotaWatt/lastTimestamp").value
if (val1 < j[i]):
updateTags=1
system.tag.write("[default]IotaWatt/lastTimestamp",j[i])
else:
if (updateTags==1):
if j[i] is not None:
system.tag.write("[default]IotaWatt/"+item,j[i])
i=i+1
# Need to compare the above with 1sec updates using http://x.x.x.x/status?inputs=yes&outputs=yes
# from the author and forum.
Did you end up using the IoTaWatt sensor? I want to monitor power usage in my future house and looking for different solutions…
I know it’s not your code, but that should definitely be rewritten to call write once instead of a bajillion times.
Also, is that comic sans in their logo?
Regardless, my interest is piqued! (despite this post being 2 years ago )
I have not yet tried IoTaWatt. Maybe it's difficult to take them seriously because of the Comic Sans logo.
I'm considering something like the Aeotec ZW095-A, a Zwave device with two split-core CTs. Aeotec Z-Wave Plus Home Energy Meter - Gen 5 - ZW095-A — ZWaveProducts