To do anything with it, I'd need an API for my platforms, and they don't exist AFAIK. How has Jake managed this? Are there some websockets or web API calls that he uses?
I added Panda support to my app at the request of some folks who were more involved with the Tesla hacking community, probably the same folks working on OpenPilot and other things. This was before Comma.ai decided to remove WiFi support from their latest firmware. In general, it was hard to use but was the best "multi-bus" option.
I did, as you say, have to read the Panda source code to figure out what it was doing.
You can look at the code I wrote for Panda emulation on CANServer here:
joshwardell/CANserver
It is pretty straight forward. First, it is a UDP protocol, not TCP. You send a UDP packet with the text "hello" to the panda on port 1338. The panda then streams UDP packets of frames (between 1 and 512 frames in a single UDP transmission). Each frame is a binary-packed 16-bytes and the format is documented in the header comments of source file linked above. It is pretty straight forward.
After 5 seconds, the Panda stops sending. The client needs to send another ping before the 5 second interval is complete to maintain the transmission.
Panda and CANServer are currently 100% compatible, except that they use different IP addresses.
There are no filters on the Panda, and it will send every CAN bus message it receives over. We have been taking about extending the protocol in a compliant way to add the ability for device-side filtering. (Either a side channel, or in the ping packet)
In the end the Panda protocol is very light weight and compact, so you can stream much more data than text-based ELM-style protocols. But it does not have ELM based features like filtering, etc. Hence, the discussions to create a new protocol or extend this one a bit.
Jake