An individual assignment of materials is only possible if they are no longer instances (==copies of a single object), but a freely processable mesh.
For this you have to use the node Realize Instances
. But first you would have to capture the index of the instance with Capture Attribute
to be able to work with it further:
However, there are also situations where the objects should remain as instances. For this the following solution would fit, where you simply build a kind of switch at instantiation, where you decide which points should instantiate which objects:
PS: I don't know how you want to control the lights, but you could solve the animation for example with the help of the node Scene Time
. Maybe the math node Snap
will help you further on.