I have supplied just about enough of information for this to be solved, but one more piece of information:
I would assume that your application based on rooms are using different rack/modules per room. That is why the addressing is different.
In a generic program, that is the way that I would do it also.
Good luck guys, I think that there is something still missing here.