If you choose to use Particle Rules Engine, or Node-RED, you could use the following flow:
Click here to view the Flow JSON to copy and import ...
[{"id":"54579d69.6b7924","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"299695e2.f4d9ea","type":"inject","z":"54579d69.6b7924","name":"make request","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":110,"y":40,"wires":[["9d6ace9.255e63"]]},{"id":"9d6ace9.255e63","type":"http request","z":"54579d69.6b7924","name":"","method":"GET","ret":"txt","url":"http://nemweb.com.au/Reports/Current/Dispatchprices_PRE_AP/","tls":"","x":130,"y":100,"wires":[["cc7aa9a2.ff44a8"]]},{"id":"cc7aa9a2.ff44a8","type":"html","z":"54579d69.6b7924","name":"","property":"","outproperty":"payload","tag":"[href]:last-of-type","ret":"text","as":"single","x":190,"y":160,"wires":[["9252116d.56a9f"]]},{"id":"c201f919.6ee6a8","type":"http request","z":"54579d69.6b7924","name":"Fetch .zip","method":"GET","ret":"bin","url":"","tls":"","x":440,"y":40,"wires":[["bdb7a498.a9ac78"]]},{"id":"9252116d.56a9f","type":"template","z":"54579d69.6b7924","name":"Create URL","field":"url","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"http://nemweb.com.au/Reports/Current/Dispatchprices_PRE_AP/{{payload.0}}","output":"str","x":210,"y":220,"wires":[["c201f919.6ee6a8"]]},{"id":"bdb7a498.a9ac78","type":"zip","z":"54579d69.6b7924","name":"Unzip","mode":"decompress","filename":"","outasstring":true,"x":470,"y":100,"wires":[["8926f847.bed168"]]},{"id":"21167e4c.bb3472","type":"csv","z":"54579d69.6b7924","name":"","sep":",","hdrin":false,"hdrout":"","multi":"one","ret":"\\n","temp":"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o","skip":"2","x":590,"y":220,"wires":[["a844234a.09cf6","6d4c1ad1.17c144"]]},{"id":"4241022e.60c40c","type":"debug","z":"54579d69.6b7924","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":260,"wires":[]},{"id":"4edc2efb.54fc","type":"debug","z":"54579d69.6b7924","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":300,"wires":[]},{"id":"a844234a.09cf6","type":"debug","z":"54579d69.6b7924","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":220,"wires":[]},{"id":"8926f847.bed168","type":"function","z":"54579d69.6b7924","name":"grab first file contents","func":"msg.payload = msg.payload[0].payload.toString();\nreturn msg;\n","outputs":1,"noerr":0,"x":580,"y":160,"wires":[["21167e4c.bb3472","1c65a60a.1f744a"]]},{"id":"1c65a60a.1f744a","type":"debug","z":"54579d69.6b7924","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":850,"y":160,"wires":[]},{"id":"6d4c1ad1.17c144","type":"function","z":"54579d69.6b7924","name":"Check g for > 500","func":"//\n// we only want to look at row with \"a\":\"D\"\n//\nif (msg.payload.a !== \"D\") {\n return;\n}\n\n//\n// are we greater than 500?\n//\nif (msg.payload.g > 500) {\n msg.payload = \"g > 500\";\n return [ msg, null ];\n} else {\n msg.payload = \"g <= 500\";\n return [ null, msg ];\n}\n","outputs":2,"noerr":0,"x":630,"y":280,"wires":[["4241022e.60c40c"],["4edc2efb.54fc"]]}]
The flow starts in the top left with an Inject node. It can be configured to run every 5 minutes. Currently, it’s fired when you click it’s button. The inject triggers the HTTP Request node to fetch the web page you provided, and the HTML node uses a selector to grab the last file name on the page.
This file name is passed to a Template node that creates the URL from the filename, and then passes this to another HTTP Request node to fetch the .zip file. The Unzip node (I had to install this free node) unzips the file and returns an array of files contained in it. I then added a function to grab the contents of the unzipped file, and pass it to a CSV Parse node, which emits the parsed rows of the CSV as objects.
My last function node checks the “g” property of each object for “g > 500” and emits a debug message you can see in the Debug panel.
Obviously this was a quick hack, but only took ~15-20 minutes of experimenting to get to working. Instead of the debug messages, you could be calling the HTTP endpoint of a Particle.function() to set your digital pin to high/low.
Node-RED is a powerful platform for quick flow programming tasks like this, which is why Particle embraced it for their Rules Engine.