New add-on to add support for Easywave devices

Hi Marc,

thank you very much for the comprehensive reply! I used your modified config and the logs look good.

The tricky part is indeed making the shutters respond to the Eldat stick. I will try the process that worked with the Altron shutters but presume that my shutters will need a different procedure - need to find a manual for them and see how I can pair them with the Eldat stick. But need to wait a bit in any case before I can continue my quest as it’s currently snowing heavily and the shutters are frozen shut :wink: .

I will report back once I have further news.

Thanks again and have a good weekend.

Hi Marc,
I have been able to discover the ID’s of the easywave switches. According to your instructions, these have to be configured in the appsettings.json file. However, there are two files located in the smb share:
\homeassistant\addons\Easywave2MQTT\addon\Easywave2MQTT\app
and
\homeassistant\addons\Easywave2MQTT\src\Easywave2Mqtt
Unfortunately, whatever I put in these files, when restarting the Easywave2MQTT addon, the log always shows the same buttons:
[14:18:37.831 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Terras (229ad6:‘A’) in Keuken
[14:18:37.935 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Terras (229ad6:‘B’) in Keuken
[14:18:37.951 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (2274e4:‘A’) in Keuken
[14:18:37.967 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (2274e4:‘B’) in Keuken
[14:18:37.984 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (2274e4:‘C’) in Keuken
[14:18:37.999 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (2274e4:‘D’) in Keuken
[14:18:38.015 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Haldeur (22a4c1:‘A’) in Keuken
[14:18:38.029 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Haldeur (22a4c1:‘B’) in Keuken
[14:18:38.045 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Keukendeur (2295be:‘A’) in Wasplaats
[14:18:38.060 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Keukendeur (2295be:‘B’) in Wasplaats
[14:18:38.076 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (227e60:‘A’) in Hal
[14:18:38.093 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (227e60:‘B’) in Hal
[14:18:38.123 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (227e60:‘C’) in Hal
[14:18:38.141 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Livingdeur (227e60:‘D’) in Hal
[14:18:38.157 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Badkamer (2295ce:‘A’) in Badkamer
[14:18:38.171 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Badkamer (2295ce:‘B’) in Badkamer
[14:18:38.187 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Badkamer (229630:‘A’) in Hal
[14:18:38.203 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Badkamer (229630:‘B’) in Hal
[14:18:38.218 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Nina (22963e:‘A’) in Hal
[14:18:38.251 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Nina (22963e:‘B’) in Hal
[14:18:38.272 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Eline (229964:‘A’) in Hal
[14:18:38.300 INF Easywave2Mqtt.Worker] Declaring button Schakelaar Hal Eline (229964:‘B’) in Hal
[14:18:38.318 INF Easywave2Mqtt.Worker] Declaring button Deur (229589:‘A’) in Slaapkamer Ouders
[14:18:38.335 INF Easywave2Mqtt.Worker] Declaring button Deur (229589:‘B’) in Slaapkamer Ouders
[14:18:38.352 INF Easywave2Mqtt.Worker] Declaring button Bed (22759c:‘A’) in Slaapkamer Ouders
[14:18:38.369 INF Easywave2Mqtt.Worker] Declaring button Bed (22759c:‘B’) in Slaapkamer Ouders
[14:18:38.386 INF Easywave2Mqtt.Worker] Declaring button Bed (22759c:‘C’) in Slaapkamer Ouders
[14:18:38.403 INF Easywave2Mqtt.Worker] Declaring button Bed (22759c:‘D’) in Slaapkamer Ouders
Where do I declare, configure my buttons and switches?

Thans for the great work to integrate this in HA.

The src folder is only used for developing the plugin. The output of the development is then copied into the addon/Easywave2MQTT folder.

So, first delete the addon from HA if you have already installed it and only copy the contents of the addon folder from github to the addons folder in the SMB share of Home Assistant, like in the screenshot below.
Your \\homeassistant\addons folder should only contain a single Easywave2MQTT folder and nothing else (besides any other plug-ins you have manually installed).

image.png

The config file you should alter is the \\homeassistant\addons\Easywave2MQTT\app\appSettings.json file.

image.png

Replace the contents of line 13->207 with your own configuration (take care of the syntax!).
The settings from lines 3->10 can be changed from the plugin configuration and what is set there will take precedence over what is in the config file.

Also make sure to read Nice to meet you Eldat part from the previous question as that explains how you can link your Eldat receiver to the stuff you want to control from HA.

Marc

Thanks Marc for your quick reply.
I reinstalled the plugin with the correct path, modified the json file.
One thing I discovered is that you need to do a rebuild when you change the json file. And a stop & start.
Also, the ID’s cannot be longer than 7 characters.
Struggled a while with the Mosquito MQTT broker but it finaly worked after a reboot.
As you said, you need to add the Eldat stick as a new remote to the Niko “receivers”.
I can now ditch the soon to be retired connected switch.
Thanks for all your good work.

Glad it works. :smiley:
A rebuild should not be necessary when changing the config file… A simple restart should suffice as the plugin reads the contents of the config file while starting-up.
But be aware that the values in the configuration tab (which will be set as environment variables in the container that hosts the plug-in) always take precedence over the values in the config file.

Thanks Marc

Hi Marc,
thanks for pointing into this thread.

I adapted my config according your example but still no luck. It looks like the devices are not recognized correctly as they are not listed and the addon seems to ignore incoming MQTT meassages. Any idea what I have done wrong?

Config:

  "LogLevel": "Information",
  "SerialPort": "/dev/ttyUSB0",
  "EasywaveActionTimeout": "500",
  "EasywaveRepeatTimeout": "80",
  "MQTTServer": "192.168.1.210",
  "MQTTPort": "1883",
  "MQTTUser": "easywave",
  "MQTTPassword": "easywave",
  
  "Devices": [
    {
      "Id": "18df10",
      "Type": "Transmitter",
      "Name": "Buero OG",
      "Area": "Büro",
      "KeyCode": ["A", "B", "C"]
    },
    {
      "Id": "bBuerO",
      "Type": "Blind",
      "Name": "Blind Buero OG",
      "Area": "Büro",
      "Subscriptions": [
        {
          "Address": "18df10",
          "KeyCode": "A"
        },
        {
          "Address": "000010",
          "KeyCode": "A",
          "CanSend": "true"
        }
      ]
    }
  ]
}

Log:

[09:36:25.549 INF Easywave2Mqtt.Mqtt.MessagingService] Service starting...
[09:36:25.624 ERR Easywave2Mqtt.Mqtt.MessagingService] Failed to subscribe to topic easywave2mqtt/#: GrantedQoS1
[09:36:25.628 ERR Easywave2Mqtt.Mqtt.MessagingService] Failed to subscribe to topic mqtt2easywave/#: GrantedQoS1
[09:36:25.631 INF Easywave2Mqtt.Mqtt.MessagingService] Service running...
[09:36:25.641 INF Easywave2Mqtt.Worker] Service is starting...
[09:36:25.647 INF Easywave2Mqtt.Worker] Service running...
[09:36:25.650 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Easywave service is starting...
[09:36:25.666 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Service is running...
[09:36:25.681 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Eldat Transceiver detected with identifier 155a:1006
[09:36:26.684 INF Microsoft.Hosting.Lifetime] Application started. Press Ctrl+C to shut down.
[09:36:26.685 INF Microsoft.Hosting.Lifetime] Hosting environment: Production
[09:36:26.685 INF Microsoft.Hosting.Lifetime] Content root path: /app
[09:36:59.460 WRN Easywave2Mqtt.Worker] Ignored incoming MQTT message for unknown device 000001
[09:37:48.465 WRN Easywave2Mqtt.Worker] Ignored incoming MQTT message for unknown device 000010

I think there is something wrong in your config.

The Failed to subscribe to topic messages are normal. I still need to adapt the plugin to be compatible with MQTT 5 that now reports Quality of Service levels as return codes while in previous versions everything besides 0 was an error.

But what I’m missing is Declaring button ... and Declaring blinds ... messages in the logs. These are the messages that indicate that my addon created the devices in HA. As they do not show in your log, that would mean that the Devices list is not parsed correctly.

As I don’t see it in the config contents you pasted, are you sure the initial { in the beginning of the `addons/Easywave2MQTT/app/appsettings.json’ file is there? For reference I’ve added the complete config file contents below.

{
    "LogLevel": "Information",
    "SerialPort": "/dev/ttyUSB0",
    "EasywaveActionTimeout": "500",
    "EasywaveRepeatTimeout": "80",
    "MQTTServer": "192.168.1.210",
    "MQTTPort": "1883",
    "MQTTUser": "easywave",
    "MQTTPassword": "easywave",
    "Devices": [
        {
            "Id": "18df10",
            "Type": "Transmitter",
            "Name": "Buero OG",
            "Area": "Büro",
            "KeyCode": [
                "A",
                "B",
                "C"
            ]
        },
        {
            "Id": "bBuerO",
            "Type": "Blind",
            "Name": "Blind Buero OG",
            "Area": "Büro",
            "Subscriptions": [
                {
                    "Address": "18df10",
                    "KeyCode": "A"
                },
                {
                    "Address": "000010",
                    "KeyCode": "A",
                    "CanSend": "true"
                }
            ]
        }
    ]
}

Another strange thing are the Ignored incoming MQTT message for unknown device 000001 and Ignored incoming MQTT message for unknown device 000010 I see. I’m guessing you are trying to send mqtt messages yourself, but these are not correct, as the commands should be targeted to device bBuerO and not to the subscriptions that drive it. And this will only work if the addon declared the devices correctly.

Thanks so far, I checked for the open “{” and also tried while copy/paste your config proposal. But still not see any device declaration. If i use the appsettings directly from guthub, all looks fine. Also devices are created…

The ignored incoming messages were my mistake, as I thaught I have to create a device by myself and send commands from it via MQTT to your Add-on.

Can you change the loglevel to Verbose in the configuration, restart the addon, wait 5 seconds and then copy the contents of the log here?

While using your config proposal from above.

[20:25:48.934 DBG Microsoft.Extensions.Hosting.Internal.Host] Hosting starting
[20:25:48.978 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Checking serial port /dev/ttyUSB0
[20:25:48.987 INF Easywave2Mqtt.Mqtt.MessagingService] Service starting...
[20:25:49.055 ERR Easywave2Mqtt.Mqtt.MessagingService] Failed to subscribe to topic easywave2mqtt/#: GrantedQoS1
[20:25:49.058 ERR Easywave2Mqtt.Mqtt.MessagingService] Failed to subscribe to topic mqtt2easywave/#: GrantedQoS1
[20:25:49.060 INF Easywave2Mqtt.Mqtt.MessagingService] Service running...
[20:25:49.064 DBG Easywave2Mqtt.Mqtt.MessagingService] Publishing topic easywave2mqtt with payload available
[20:25:49.073 INF Easywave2Mqtt.Worker] Service is starting...
[20:25:49.076 DBG Easywave2Mqtt.Mqtt.MessagingService] Topic easywave2mqtt/kkn1/state received with payload off
[20:25:49.077 DBG Easywave2Mqtt.Mqtt.MessagingService] Topic easywave2mqtt received with payload available
[20:25:49.078 DBG Easywave2Mqtt.Mqtt.MessagingService] Topic easywave2mqtt received with payload available
[20:25:49.080 INF Easywave2Mqtt.Worker] Service running...
[20:25:49.082 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Easywave service is starting...
[20:25:49.086 DBG Easywave2Mqtt.Easywave.EldatRx09Transceiver] Opening serial port /dev/ttyUSB0
[20:25:49.093 DBG Easywave2Mqtt.Easywave.EldatRx09Transceiver] Sent GETP?
[20:25:49.098 DBG Easywave2Mqtt.Easywave.EldatRx09Transceiver] Sent ID?
[20:25:49.100 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Service is running...
[20:25:49.108 DBG Easywave2Mqtt.Easywave.EldatRx09Transceiver] Received GETP,80	OK
[20:25:49.111 VRB Easywave2Mqtt.Easywave.EldatRx09Transceiver] -->Parse(GETP,80	OK) start
[20:25:49.114 VRB Easywave2Mqtt.Easywave.EldatRx09Transceiver] <--Parse returns EasywaveTelegram { Address = , KeyCode =  }
[20:25:49.115 DBG Easywave2Mqtt.Easywave.EldatRx09Transceiver] Received ID,155a,1006,0100	OK
[20:25:49.115 VRB Easywave2Mqtt.Easywave.EldatRx09Transceiver] -->Parse(ID,155a,1006,0100	OK) start
[20:25:49.116 INF Easywave2Mqtt.Easywave.EldatRx09Transceiver] Eldat Transceiver detected with identifier 155a:1006
[20:25:49.116 VRB Easywave2Mqtt.Easywave.EldatRx09Transceiver] <--Parse returns EasywaveTelegram { Address = , KeyCode =  }
[20:25:50.119 INF Microsoft.Hosting.Lifetime] Application started. Press Ctrl+C to shut down.
[20:25:50.119 INF Microsoft.Hosting.Lifetime] Hosting environment: Production
[20:25:50.120 INF Microsoft.Hosting.Lifetime] Content root path: /app
[20:25:50.120 DBG Microsoft.Extensions.Hosting.Internal.Host] Hosting started

The node name for the array of buttons for device id 18df10 is incorrect.
It should be Buttons instead of KeyCode.
The rest seems correct, so far…

Correct that nodename, Stop the addon, press the Rebuild button and wait until the spinner stops spinning, then press start.

That should do the trick.

Thanks, that was a dump error by myself. Actually I got it (halfway) to close and open my blinds, BUT only when I declare them as “Light”…

Means I wrote a config, with "Type": "Blind" doesn’t do anything, also no device creation. When I changed to "Type": "Light" I got devices (as lights) and can now open and close my blinds. No stop possible but so far better than nothing.

If you have any other idea (?) or like me to test something, I would be happy to help also would be happy if stop would also be possible. As it would directly influence the WAF :wink:

What is the version number of the Easywave2MQTT add-on that you have installed?
It should be 0.7.1 or higher for the blinds to work.

Also, I’m not really sure, but it seems that the latest version of HA caches the configuration somehow. When you change to type to Blind, be sure to stop the addon and press the rebuild button and after the rebuild is done, start it again.

It can also help to delete the existing “light” device before starting the add-in with the type configured as “blind”.

Also, stopping them will mess up their state in HA. Unlike Zigbee where devices report their sate, Easywave does not support that. That means that if you press the close button and then press the stop button, my addon (and by consequence, HA) has no way of knowing how far they have actually closed.

This also means that once they start closing, HA will consider them as closed. Even if you pressed the stop button half-way. As a consequence you will probably not be able to close them further without opening (and maybe stopping) them first.

Hi Marc,
was again able to check some stuff… during the “lights” wordaround worked fine, HA restart required one manual run of the blind to get the correct state back in.

I’m actual on 0.7.1, even deleting the device, stopping, changing from “light” → “blind”, rebuild and starting just end up that these entries are not proccessed anymore.

I’m actual 80% happy, being able to stop (as a blind not light) would raise it to 100% :wink:

Hi Sebastian,

I have just released a new (V1.0) version that should support Blinds (more or less) correctly. Please upgrade to that version and try again.


This is the configuration I used to test this:

{
  "LogLevel": "Information",
  "SerialPort": "/dev/ttyUSB0",
  "EasywaveActionTimeout": "500",
  "EasywaveRepeatTimeout": "80",
  "MQTTServer": "192.168.1.13",
  "MQTTPort": "1883",
  "MQTTUser": "mqtt",
  "MQTTPassword": "mqtt",
  "Devices": [
    {
      "Id": "18df10",
      "Type": "Transmitter",
      "Name": "Buro OG",
      "Area": "Living",
      "Buttons": [ "A", "B", "C" ]
    },
    {
      "Id": "buro",
      "Type": "Blind",
      "Name": "Buro",
      "Area": "Living",
      "Subscriptions": [
        {
          "Address": "18df10",
          "KeyCode": "A"
        },
        {
          "Address": "000010",
          "KeyCode": "A",
          "CanSend": "true"
        }
      ]
    }
  ]
}