Production that creates input material isn't a reason for me I need the working status of a machine. Standard approach of this is to feed back the output to the input and at the splitter that combines input and output belt prefer the input that comes from the machine output, so the output will never stall. At the same time this splitter can be applied a filter to sort out the output material I'm interested in.
If the material is a fluid, feed the machine input from a storage tank and feed back the output to that same storage tank. At the input of the tank that comes from the outside, put a pump that is wired with the storage tank and activated only if the tank level is below some threshold. That's how advanced oil processing can work with and balance the 3 different oil products and cracking.
If one was able to wire a production machine, there are these options in general:
- activate/deactivate machine
- read working state
- read input buffer content
- read output buffer content
Reading the working state alone to enable feeding is not a viable strategy, because you cannot distinguish between input empty and output full. In both cases the machine is stopped.
What is promising is the ability to validate both input and output: a machine is supposed to work if there is enough input and not too much output.
It would be convenient to not get these numbers directly but instead available input buffer space and available output buffer space, because this implicitly includes the respective buffer sizes.
Then, a machine is supposed to be working, if available output buffer space > 0 and available input buffer space == 0.
The ability to read the output buffer could help optimization. One can enable a stack inserter as soon as output buffer > inserter hand size.
In this case, we don't want available buffer space but instead buffer content. Then directly wire the stack inserter with the machine with activation criteria buffer content >= <hand size>. This could also work with available buffer space, if we subtract: activate inserter if available buffer space <= <buffer space> - <hand size>, which can be hardcoded within the inserter, since buffer space and hand size are constant.
But I didn't find a use case for reading the input of a machine. It can be used for detecting and visualizing underflows, but I don't see a role of this for regular production. If the input buffer is full, ok, nice. If the input buffer is empty, the engineer has to build better feeding. For visualizing overflow and underflow, mods like Bottleneck are the better tool.
If it comes to the rocket silo, which is actually a huge assembling machine, reading the output buffer could give us the currently produced rocket parts, so we can see, well, um, I forgot what I once wanted to do with this information. If we want to know we got enough rocket parts for a launch, we could read the hand content of the satellite inserter: if it pulses a satellite, we just finished 100 rocket parts.
The ability to disable a machine would be handy for a mall. For example, if we decide we have enough nuclear reactors buffered in our mall, we could disable the reactor assembling machine. This way, we would not create an additional reactor that sits in limbo in the output buffer as it is currently, because currently we have to deactivate the inserter at the machine output. Deactivating the input inserters is a worse option, because the input buffers contain up to 2 makes, so we get even one reactor more we don't currently want.
So if you ask me, I find it useful to have these circuit network options for a building machine:
- active/deactivate
- read output buffer content
- alternative: read available output buffer space
For fluids, it's the same. Take the content of all output buffers and report the average as percent of the output buffer size. Fluid level is highly fluctuating because of the high throughput, so it may be an option to get a 1/5/10 second average instead of the exact value each tick.
This also fits what I find in actual real world machines. I can turn off machines (there is this big red button everywhere). And I can look at its output what it has just produced and tell the factory about that something is coming or not yet coming. A view of the input is not visible: the input vanishes somewhere in the machine, and it's not clear how much is still there and how much is being used currently.
There are extra values and long standing requests to report for special buildings:
- read temperature of a heat producing or heat consuming entity such as a reactor or heat exchanger
- aehm, forgot what else.