A: 

My thoughts over this for a while now lead me to think the Controller part of the pattern is fairly redundant in this design. And again, It's MVVM not MVVMC or MVC :)

Abstractions need to be justified in the end, or it'll just be the redundancy of the service pattern all over again. Something that shouldn't be necessary with observers.

So my design as of right now looks like this. The hardware controllers are all event based and meant to do UI updates, so I think it really do make sense to access them directly from the viewmodel.

We'll probably still design it with the use of DI/IoC, so loose coupling could allow for a mediator at a later point, should it be necessary.

But I'll leave the question open for better answers for now :)

Claus Jørgensen
+1  A: 

You should absolutely consider the low level controllers and scripting engine to be part of your domain model, however you should have these representated via abstractions (ie. with interfaces) so that you can properly test the rest of your domain.

I would also recommend against doing much more upfront design, and instead let your design evolve via TDD, otherwise you run the risk of trying to shoehorn an implementation in just to fit your UML diagrams...

jacko
But is a domain model with eventhandlers a good idea?
Claus Jørgensen
Why wouldn't it be? Events can be tested just like everything else...
jacko