So, I'm not really looking for super specific code examples here or anyone to do the work for me. More like just a general ideas or tips on what methods I need to do something, or where to find examples to do the steps I need here. Of course I WOULD pay for a done solution... but this really is just a hobby for me, and so the amount I'm willing to pay is probably less than anyone would need to do the work!
Background:
I have an Airport Express hooked up to my whole home audio system, and I'd like to capture the metadata from when people stream sources to them so that I can display it on the keypads. There doesn't seem to be any way to do this with an Airport Express, so step one of my solution is Shairport-Sync (https://github.com/mikebrady/shairport-sync). Basically this is an app that runs on a Raspberry Pi that makes it appear as an Airport Express AND can export the metadata of whatever is playing. I've got this part working and it works fine. I have a Raspberry Pi up and running that is effectively an Airport Express. People streaming to it don't know the difference, and it's been bulletproof for a couple of months now.
Next: The metadata.
Shairplay-Sync pushes the metadata into a named pipe on the Raspberry Pi. I want to make a plugin that I can define the IP address of the Pi (and any other info I need to) and then read the metadata (mainly song title, album, artist) and do what I want with them (most simply I'll just store them in a device state, or user-definable variable, but I see Indigo Plugins can now publish/subscribe, so that'd be cool too).
What I need to know is how the heck I make my plugin read that data. Do I have to have something running on the Pi that sort of makes the file available? Or can I just have the plugin log on itself and get the data. I've sampled the data on the Pi and it's in XML, so an XML parser is going to be required to, but I can probably figure that out later.
What do I know? Not much. I know what a named pipe is. Barely. Pretty much what a bunch of googling can tell me (effectively a data 'stream', but defined like a file with a location, etc...?)
I've made a couple of plugins, but they're basically simple serial port interfaces. Open the port, read if something's there, parse it, update some variables. Take some input from the plugin and turn into a command and feed it to the serial port. Reading from a network socket seems a bit more complicated.
Any idea on how I need to go about this?