A rapidly expanding thought after reading the blog post and through this thread:
Instead of some extra object placed next to the object you want to control, it IMHO would be better that you could fit a
controller into the object which allow to extend the behaviour and interface of an specific object.
A controller would have slots (amount of them according to level of the controller) for
uplink,
control and
logic modules. And for controllers with more than a single slot (or two) some way to create internal wiring (similar to the one we can do now on macro scale between chests, inserters and the logic objects) so we can direct the flow of data inside the controller.
Having that it would be possible to insert:
- a range of uplink modules tying into different data networks (wired giving an external pole to connect to, wireless to attach to global logistic storage, bluetooth for local range, ...) to obtain or send data
- a range of control modules selecting what to work on, examples would be: filter modules to make smart inserters, belt sensors or smart chests, ways to alter pickup/placement points for inserters, receipt selection for factories, railroad track selection or signal setters, readout probes, ...
- a range of logic modules (or a configureable one) to do some bool stuff inside the bigger controllers
The user interface should be somewhat along the current interface for smart inserters/chest, but modular (portions like type selections, amount selectors, filter lists) depending on modules inserted, and as a result of the generic approach should work identical for all smart objects.
Without an uplink module only the control ones will be active (example would be to create an unconnected smart inserter), in case no control module is in then it would simply be on/off through the connection module, through logic modules we could do basic 'if we dont have enough of this, but enough of that then...' inside the object.
This would also directly implement the Logistic Network Connector which would be a
control enclosure, internally containing a bigger controller which could manage a cluster of assemblers and inserters through a local LAN while being hooked up to some WAN to get the data for decision making, or act as a bridge between networks, ...
Simplest way with the proposed system in place and no additional world graphics needed:
A lamp made smart with a (more or less big) controller
And in case the controllers can get big enough it would give the option to put the logic we currently build in a discreet manner on flat ground into something similar to a rack located near the area of its influence (like every sane engineer building a factory would do) and would solve a good part of the problematics with wires and poles and visibility.
This proposal would also nicely spread along the research tree to not overwhelm a new player (since options would come over time and build upon another) and be consistent since it would be a generic mechanic for all 'smart-able' objects, with the
option to do complex logic.
Given such a mechanic the game could built on that in a generic way:
Build a lamp, have light. Upgrade it with a small controller and you can add remote features, turn it into a bridge to another network with multiple interface modules, or even something to manage a cluster of assemblers with a big enough controller in it.
Build a splitter, have standard functionality. Make it smart to be able to add on/off or filter control modules, ...
Build an assembler, have standard functionality (in the tiers as-is, regarding speed and number of source materials). Upgrade to a smart one to
change recipt, turn it
on/off or
read some data (or whatever), or attach a bit enough controller to control the inserters around.
Controllers could come in different levels (with more slots and internal wiring for big ones, which build chain upon each other similar to Electronic Circuits), which would also open up for a progression on the controlled objects itself (basic object being dumb, upgradeable to smarter versions with increasing size of controller), which could be done through a factory receipt of 'install controller' which would take a controller and a
smartable object (similar like furnaces take several materials, so we don't need to inflate receipts needlessly) and output a smart version (basic object with controller).
The opposit ('remove controller') should also exist so both objects and controllers can be upgraded (detach controller from object, upgrade one or both, reattach).
Regarding inserters:
I think they currently lack in several aspects: They are basically multi-axis robot arms, so why can't they deliver over 90° or pickup from multiple sources? With a system along the proposed one we could build a standard inserter frame which comes in small and big (= yellow and red) in the first step, attach a motor - burner, electric motor or two for speed, or even a windup one for the very early start - (to be back at the current speed classes of burner, yellow and blue), then
smart them with various levels of controllers to be able to add filters and remote control, or even add a module that let it pick up from two lanes, or drop into multiply assemblers, or configure different places to pick/drop stuff in a different configuration than from behind to far side of belt infront.
Regarding the idea to turn transport belts on and off and read their contents:
A sensor tile (1x1 size, available in the usual speeds, created with a belt, some additional materials and a controller) that can sample the belt and read fill rate (amount of items on belt), relative speed of the objects on the belt (to be able to detect congestion) - both maybe averaged over a second or two - would nicely do the trick and enable interesting ways to react to changing loads - plus can be turned on and off through an uplink. Built with a bigger controller it could possibly, maybe when equipped with multiple filter modules, also report on different kinds of items on the belt in parallel.
I also would like that one could control splitters through the proposed concept, so upgrade a splitter to a 'smart' one and be able to attach control modules (corresponding to left and right side) to switch them on or off or filter stuff that comes along by some criteria.
Might sound a bit convoluted at first, but it is intended to generalize the way 'smart' stuff across the board (both from a logic, as from an UI standpoint), no exceptions - so please give it a thought before tossing it out. In case of interest I can flesh out the idea a bit more in detail, like how the modules could work and how they would play together.
[edit]Took a while to write, so the dev was here before me
[/edit]