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