Home energy meter success with Ignition Maker?

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)

1 Like

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)

1 Like

Will the Cirrus Link MQTT modules run on a free license in Maker Edition? :thinking:

Yes

1 Like

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.
1 Like

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?
Screenshot_20220823-060609_Chrome

Regardless, my interest is piqued! (despite this post being 2 years ago :grin:)

2 Likes

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