What do I need to develop

I managed to get the WIndows version running in Visual Studio. That’s a good start. but then…what else do I need. Where is everything located? Is there a tutorial somewhere for developers. Where is defined what, where is the interface coming from? What other github repos are interesting. I want to extend a zwave dimmer. Some help would be appreciated. I really would like to get in a state that I can set a breakpoint anywhere to see what is doing what.

And to make clear what I want to start doing: I want to have my Qubino dimmer to have a minimal dim level. Very much similar to the EnergySavingMode, but instead this should become a minimum level.
So with some searching I found

  1. *.programs.json
    These seem to me some I18N files. used for translations. in the UI. How are they used? What do I need to add my own EnergyManagement.EnergyMinimumLevel stuff.

Then I found the program.xml , This looks to me like these are scripts. I believe I do understand the programblock for the EnergyManagement.EnergySavingLevel. So do I need to write a similar block for the EnergyManagement.EnergyMinimumLevel? But one that keeps the level above a certain percentage?

looking further, I found these properties in the ZWaveLib. I guess I need to add the new property there too. But I see there some stuff I have no idea yet what to do with it…

You don’t need to load HG into visual studio to add programs or widgets.
the only reason would be to modify the internal code, which I don’t see the need for in your case. You may wish to view the HG documentation as I believe your over thinking things.

I have a look, thanks

Hmm, My first reaction is ‘really?’ Being fluent in C# does help in the syntax, but this is another programming paradigm. No VS IDE to help you. Any options to debug? I see a ‘Break’ in the programs part, but no idea what it does. Except that the option was removed from the configuration when I set the break. Anyway What I want is to add additional features to the DImmer. So in the configuration I want to be able to set a Minimum Dim Level. Just like the Energy Saving. I could not find anything in the documentation on how to do that. The Widget only seems to be the UI for the Dashboard, not the configuration. Am I missing something?

Well, it really depends on what you have and what you want to achieve.
As documentation for Qubino Flush Dimmer states (https://qubino.com/products/flush-dimmer/flush-dimmer-tech/) there is Parameter no. 60 – Minimum dimming value, you can set it for your dimmer in Settings - Setup window:
Then in Configuration Variables section you will be able to set the value needed for this variable (you will also get hints like in my case if your device is in pepper1db shipped with HG):

That’s the paradigm of HG, that allows users to create their own programs, widgets and even Virtual Modules without need of bootstrapping developing environment, recompiling and so on. Also it’s possible to write automation programs not only in C#, but also in JavaScript, Python, Ruby and with simple Wizard. Take a look at these files https://github.com/genielabs/HomeGenie/tree/master/HomeGenie/Automation/Engines

I understand. It’s great for users. Less so for developers. And your sample does help and would probably work. I will certainly look at that. But I would have preferred to actually add it as a full blown feature to the UI. This feature would just be my way of getting to know how to integrate new stuff. What I really want is to add my heating system to the framework. It has an api and of course lots of features that (probably) don’t have any matching interface parts (yet). Can I add that just using the widgets and programs?

I don’t see the hints from pepper1db.I did a "Update Pepper1DB’ but still nothing. This is probably the problem:

I set Variable Id 60 to 20. When I do a Get I get that value back. But I can still slide the dimmer to any level below 20. While the max level (EnergySaving) is working fine. I also set variable id 66 (the dimming time) and that seems to work.

Firstly you should visit the HG GitHub to get an overview of the application if you have not already done so https://github.com/genielabs/HomeGenie

Next you should have a look at the HG documentation for further details on the application development


Finally this is the old HG forum where much development was carried out by the user base https://genielabs.github.io/HomeGenie/#/develop/programs

I did all of your suggestion. And I used VS to debug why I could not get the pepper database. The reason was that there is an error when it tries to download the file:

The request was aborted: Could not create SSL/TLS secure channel

I fixed it by adding the two lines about the ServicePointManager.

There’s a number of other programs you may need to run through the VS IDE too. They are marked as obsolete attributes but I’m not sure they are down for deprecation. They are reporting as compilation warnings. Again as you look closer at the program content you’ll see what I mean.

I think no.
In case you want to connect HG with external system, you need to implement MIG Interface for that system, pack it, and then import in HG. The skeleton project is located here https://github.com/genielabs/mig-interface-skelton, and other interfaces are here in packages repository: https://github.com/genielabs/homegenie-packages/tree/master/packages/Interfaces.
You can look at Z-Wave and X10 MIG Interfaces implementation here: https://github.com/genielabs/mig-homeauto

This part of project isn’t documented well =(

I think I have an idea of how a Mig Interface works. I currently looked at the Windows implementation of HG only. Is the version for the Raspberry Pi totally separate or do they share code?

It’s completely the same code.

The only difference between Windows, MacOS and Linux versions is the presence of installer and helper app for Windows.

Are you familiar with Mono https://www.mono-project.com/ Could I say that’s the glue between HG on Linux. I imagine most of the code samples you see here and on the old forum were written in C# in Windows. If the code works in HG on Windows it should work on Linux.

Sure. I have been working with Xamarin a lot as well. I was wondering if everything could .NET Core however.

That’s a question that would need to be put to the author. The application could do with a complete rewrite because as you know it does not take account of the developments in .Net Core. I doubt
many are newly developing in .Net Framework