@Texus you are on the list now
@Beyonder420 ... that's an involved post to answer ...
As far as PIDs go, the only PID supported is the Omron E5CC-QX2ASM-802 with the RS-485 communication. (the RS-485 communication being the key); other PIDs could theoretically be supported by writing an interface assuming the PID had a communication port and API (could be RS-485, could be serial, could be TCP/IP or whatever), as long as it has a robust/responsive one available. Integration to support an alternate PID, as long as it had all the required features available in it's API, would likely be relatively straight forward.
For supporting dual coil, that would be a whole other matter. It would involve separating out the server code to be able to manage 1 to N instances of the PID, and then some method to switch the controls from 1 PID to the next. The server side API apart from the main controller would also have to be extended to support this, as well as the client. I would estimate that this would be a minimum of 100-150 hours of development time but likely more, as the changes would be so drastic as it would likely be easiest to essentially just do a full rewrite, re-using all the code where possible. Although likely 80% of the code would be re-usable, you would have to touch most of it to parameterize appropriately and to handle switching inputs/outputs, and to handle the multiple RS-485 input.
You could approach this in 2 ways ... a) support 1-to-N PIDS. b) create 2 static versions that support either 1 or 2 PIDS.
Option b) would be easier, but more costly to maintain as one would then be maintaining 2 codebases moving forwards. Option a) would be a better implementation, but the dynamic nature of it would be more involved/complex and thus would take longer.
It's unlikely I will get to this, but by all means if you are a proficient developer feel free to dig in! (If I was to do this for a customer, I would bill this work out at $20-$30k
)
Edit:
@Beyonder420 , the one other way to maybe add dual support with minimal coding changes, would be to simply have a switch where the software would control/read 1 PID
or the other; but the key being only 1 at a time. You could then chain together 1-to-N PIDS without issues, and you would just "select" which PID you wanted to control/monitor. You could even easily add a few multi-PID features such as TURN OFF ALL ... and maybe slowly integrate some multi-PID features.
Now that I think about it ... the RS-485 interfaces just daisy chain together, so 2 possibilities on if then slowly adding multi-PID support would work:
1) You quickly call setID([id of Omron RS-485]) for each PID, and then read the required registers (temp, state, etc.). This would need to occur every 1 second at the most. So the question would be if you can switch and read this frequently without causing issues with the interface or the Pi (if the Pi gets overloaded upgrading to a Pi4 vs. the little Pi Zero would solve that ... or even better I might eventually design a board that you can "slot" a Pi compute module 4 into).
2) You only read the 1 PID frequently, and the other doesn't get monitored (this would likely be ok for the most part ... as you likely only want to monitor/control one at a time apart from maybe the basics like auto-shutoff and being able to power-on/off all, but maybe not read the state and temp of each PID every second, maybe read the "state" of the currently controlled PID every 0.5-1s and then read the state of the other PIDs say every 15-30 seconds, to manage things like auto-shutoff.
Some interesting thoughts anyways! If only I could see a real business model for these at a decent scale, I could dedicate more time, but the reality is I just don't see it (I'm already I would guestimate $75-$100k in the hole as far as invested time on this project ...!
... however, have a lot of fun building this vs business software, or industrial monitoring and control systems! ... so as long as I look at it as a hobby I've just spent a lot of time building myself a REALLY fancy tool for vaping my concentrates!)