Here is a summary of my findings after I’ve been reading up on HS3-Pi and installed it on my spare Raspberry Pi. Note that the HS3-Pi is exactly the same HomeSeer build as running on the Zee. So we can assume that all below is applicable for the HomeSeer HomeTroller Zee hardware too.
EXE plugin support?
Originally, we wanted the Zee to run EXE plugins just like the Windows HS3. However, there was a problem with MONO ver 2.10 where remote calls were not reliable and it would sometimes call the wrong function. So to fix this we made a minor change to the plugin API so plugins could be a DLL instead. This fixed the problem and we released the Zee with this special build of HS3. That is what the Zee build is today. Also, MONO only worked on the soft float version of Linux so that is what we had to use.
That was then, this is now: still no EXE plugin support?
Now, MONO is at version 3.2 on the PI, the PI OS is now hard float (means it runs a little faster) and the original remote call issue is fixed, so EXE plugins now work. Our intent was to change the Zee so it would support exe plugins. However, after much testing we decided to not do this. The reason is that each EXE plugin runs in its own MONO process and each process uses at least 30MB of memory. Add that to the mem that the plugin uses and you quickly start using up the 512MB of memory on the PI. So while it works ok with 2 or 3 plugins, it will probably run out of memory with more. So the user experience will less than optimal! So we decided to keep with the DLL plugins for now. I wish they would do a 1GB version of the PI, that would solve the problem.
Acceptable arguments, what about running the plugins remotely?
I have not actually tried that, but there is nothing in the code to stop it from working, so I think it should work. In fact, if you run an EXE plugin on the Zee from the HS3 folder, I think that also works.
Ok, let’s try running an EXE plugin from the HS3 folder on the HS3-Pi.
What’s with the System.TypeLoadException?
I did try remote plugins with the standard Zee and it does not work. The issue is that there is a slight plugin API change and that causes and exception to be thrown. So for now, the solution is to just run the full Linux version, that does support remote plugins.
Switching to the full Linux version is too easy. Let’s try to connect remotely…
No luck. Let’s try to solve the System.TypeLoadException and run it locally on the HS3-Pi:
It looks like nothing is listening on the default plugin-API port (10400). I should have checked that earlier!
Well, having read how the homeseer communication framework actually works, it’s time to get our hands dirty with a little Zee plugin to enable remote plugin connections.
A little teaser :
To be continued.