MySensor on Hass.io - can't get it work



  • Hi! Can anyone help me with this code? https://pastebin.com/byb6BQZz The code isn't mine (made by my friend), I've been using it with Domoticz for almost a year, and it worked perfectly. But recently i decided to give a try to Hass.io, and I really like it. But I still have a problem with lights connected via MySensors (Arduino Mega conected to Rpi via USB), can't get it work with Hass.io. Config part in configuration.yaml looks like this https://pastebin.com/y3RDrCKQ
    I forgot about error log https://pastebin.com/WUMtMKfK

    I'll be gratefull for some hints.



  • @maty said in MySensor on Hass.io - can't get it work:

    e code isn't mine (made by my friend), I've been using it with Domoticz for almost a year, and it worked perfectly. But recently i decided to give a try to Hass.io, and I really like it. But I still have a problem with lights connected via MySensors (Arduino Mega conected to Rpi via USB), can't get it work with Hass.io. Config part in configuration.yaml look

    Hi @MaTy
    I have no experience with hass.io, but some comments arise.

    1. Your configuration.yaml file path seems to be incorrect. You have to edit this to real path, something like "/user/.homeassistant/mysensors.json" or whatever. The path should exist, file there will be created if it is correct and writeable.
    2. You should check if your USB port is really /dev/ttyUSB0 usually command "lsusb" is used, but I'm not sure how to do this in hass.io
    3. Also, check if USB port speed is the same as in mysensors gateway and your configuration. 38400 seems different than the standard what usually is 115200 if I'm not mistaken.
      EDIT: Ok, baud seems to match, so that should not be an issue.


  • @archiijs said in MySensor on Hass.io - can't get it work:

    @maty said in MySensor on Hass.io - can't get it work:

    e code isn't mine (made by my friend), I've been using it with Domoticz for almost a year, and it worked perfectly. But recently i decided to give a try to Hass.io, and I really like it. But I still have a problem with lights connected via MySensors (Arduino Mega conected to Rpi via USB), can't get it work with Hass.io. Config part in configuration.yaml look

    Hi @MaTy
    I have no experience with hass.io, but some comments arise.

    1. Your configuration.yaml file path seems to be incorrect. You have to edit this to real path, something like "/user/.homeassistant/mysensors.json" or whatever. The path should exist, file there will be created if it is correct and writeable.
    2. You should check if your USB port is really /dev/ttyUSB0 usually command "lsusb" is used, but I'm not sure how to do this in hass.io
    3. Also, check if USB port speed is the same as in mysensors gateway and your configuration. 38400 seems different than the standard what usually is 115200 if I'm not mistaken.
      EDIT: Ok, baud seems to match, so that should not be an issue.

    Ad.1. I tried different path too (default one '/config/mysensors.json') - still wrong. I'm not sure how these .json files works, so maybe I'm still makeing sthg wrong. (Maybe someone can share me a link with an explanation or write a few words about it?)
    Ad.2. USB is correct I checked (besides i have RFLink on the ttyUSB1 and it works great).
    Ad.3. As You said at the end ... baud should be OK.



  • @maty said in MySensor on Hass.io - can't get it work:

    /config/mysensor

    Default path seems to be generic and not really useful, at the beginning I had problems with understanding this as well. Take a look at the full location where your home assistant configuration files are located, this could be a good location. and add "mysensors.json" at the end (this file will be created and you can name it anything.yson).
    like mine is "/root/.homeassistant/mysensors.json"



  • Wait, do I need to install an addon from reposytory, to make it work? Isn't it included in Hass.io? I cant see any repo 😕



  • I think i found the answer ... https://forum.mysensors.org/topic/7360/hass-io-and-ethernet-gateway-on-pi

    It looks like I need docker add-on to run MySensors gateway on Hass.io, and it doesn't exist so far, what a shame 😞



  • I don't have a light switch on my sensors but I do have a couple of temp sensors running on my hassio installation with no problem.



  • @tom-carpenter
    How did You make it? Is it via serial gateway?


  • Plugin Developer

    @maty

    That thread is about attaching the radio directly to the RPi GPIO in combination with Hass.io. You're using an arduino as gateway that has the radio if I understand correctly. So you shouldn't need an addon for your case.

    I suggest looking at the Z-wave documentation for Hass.io where they also connect a USB device. It's the same principle as the mysensors serial gateway when you use an arduino as gateway.

    https://home-assistant.io/hassio/zwave/



  • @martinhjelmare

    Oh, sorry, im so confused after I moved from domoticz to Hass.io. But I don't need Z-wave. What I have is serial gateway based on arduino mega 2560, with a sketch (example) https://hastebin.com/cinokiraka.cpp which controles all lights in my house. The arduino mega is connected to my RPI3 (with Hass.io) via usb (ttyUSB0). It worked perfectly on Domoticz, all lights was discovered automatically. I've checked the documentation of MySensors implementation on Hass.io web site, and read plenty of forums and still nothing 😕
    I'm still getting errors. https://pastebin.com/VDaVRKkV



  • Are you sure that's the right device? It's /dev/ttyUSB0 that is the source of the error in your output. Maybe the device is something like /dev/ttyAMA0 or /dev/ttyACM0?



  • @nelsonov
    when i use "hassio homeassistant hardware" command it displays only ttyUSB0 and ttyUSB1. I have RFLink connected to USB1 and it works great, so MySensors gateway must be the ttyUSB0.
    https://pastebin.com/wTn72d1D Am I right?



  • What do you get from ls -l /dev/tty*?





  • After I disconnected gateway and connected it again, I checked command "dmesg | grep usb" and this showed up
    https://hastebin.com/leqocowaco.vbs before there was nothing after command. Command ls -l /dev/tty* still the same.



  • You might need to take this to the [Home Assistant Forum]
    (https://community.home-assistant.io). Something strange is going on at the OS level. Your kernel is recognizing the USB device, but the OS isn't creating the tty. You can try lsusb just to see if it's still there, but beyond that I'm out of advice. The error you are getting from Home Assistant has awkward wording, but it means that it can't find the serial device.


  • Plugin Developer

    @maty
    If you read the Z-wave documentation I linked to you will get instructions how to add a specific USB device to Hass.io docker. My guess is this could solve your problem.

    For some devices the /dev/ttyAMA0 device is not detected by udev and is therefore not mapped by Docker. To explicitly set this device for mapping to Home-Assistant, execute the following command using the ssh add-on:

    $ curl -d '{"devices": ["ttyAMA0"]}' http://hassio/homeassistant/options
    

    Replace ttyAMA0 above with the correct device in your case.



  • @martinhjelmare
    I did It. resault But I'm still getting errors 😕

    I guess I'm hopeless. It's probably sthg silly as always.

    update:
    after trying different solutions i typed hardware check command and new serial appeared 'AMA0' but I did nothing physically with RPi (din't attach any devices). I tried to check mysensors config with ttyAMA0 instead of USB0, but I still got the same resault.
    ps. of course when I was trying your command ($ curl -d '{"devices": ["ttyAMA0"]}' http://hassio/homeassistant/options), I did it with USB0 parameter, not AMA0.



  • Yesterday I accidentally restarted Hass.io with all that errors in config. I was afraid that it'll crush after restart but it actually worked. After restart I turned on switch on the wall, and Switch (light relay) appeared on Hass.io home screen.

    There are still the same errors in config, and I have some issues with those light switches. Most annoying issue is that Hass.io doesn't update switch state after change via gui. Switch state changes in Hass.io when i use manual switch on the wall but when I use gui it doesn't
    http://ibb.co/f8Rvum


  • Plugin Developer

    @maty

    You should send feedback of state changes to home assistant from your device. This is done from the receive function. The switch in home assistant will switch as soon as the feedback comes in.

    Also set optimistic to false in your mysensors config section.



  • @martinhjelmare
    You mean in my sketch, something like this?

    void receive(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // Store state in eeprom
         saveState(message.sensor, message.getBool());
         // Write some debug info
         Serial.print("Incoming change for sensor:");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
    

    I had optimistic set false.

    BTW: Strange thing, baud rate in my sketch is 38400, but when I set it up in Hass.io, lights won't work, when I changed to 115200 in .yaml (in sketch is still 38400), all works fine, except the states update.


  • Plugin Developer

    @maty

    In your example above you never send the feedback from receive. Use the send method
    from within receive to do that.

    In what sketch have you set baud rate to 38400? For the light device or for the gateway? It's only the gateway baud rate that is relevant for home assistant config, since it's the gateway that interfaces via the serial connection to home assistant.



  • @martinhjelmare

    Should it be something like this added to my sketch?

    send(msg.set(RELAY_1;V_LIGHT)
    send(msg.set(RELAY_2;V_LIGHT)
    ...
    

    I ment BAUD_RATE defined in this sketch

    #if F_CPU == 8000000L
    #define MY_BAUD_RATE 38400
    #endif
    

    Once again, sorry for tons of noob questions. But I didn't write that sketch by myself, and my knowledge about programming is below basic.


  • Plugin Developer

    Something like this:

    send(msg.set(state));
    

    The arduino mega runs at 16 MHz so that if block won't be entered, and the define of baud rate won't change.



  • @martinhjelmare

    Hi,
    I checked my sketch once again, and confronted it with MySensors documentation, and I actually found the send message command in it. Should I change something to make it work properly with Hass.io

    void loop() {
      // Send locally attached sensor data here
      if (debouncer.update()) {
        // Get the update value.
        int value = debouncer.read();
        // Send in the new value.
        if(value == LOW){
             saveState(1, !loadState(1));
             digitalWrite(RELAY_1, loadState(1)?RELAY_ON:RELAY_OFF);
             send(msg.set(loadState(1)));
    

  • Plugin Developer

    @maty

    Yes. There are two ways of interacting with the device to make a state change. Either by pressing the button or by sending a message from home assistant to the device. The send command you showed above will only happen if the button is pressed when the loop is running.

    When you send a message from home assistant to the device, to change the state, the message will be received in your sketch by the receive function.

    So you need to add a send command to the receive function and send the new state back to home assistant after doing the digitalWrite call and saving the state.



  • @maty Yes serial gateway hooked to the pi



  • @tom-carpenter How did you configure the serial gateway in configuration.yaml? can you please post that section?

    Also what arduino hardware did you use?

    Thanks


Log in to reply
 

Suggested Topics

66
Online

11.4k
Users

11.1k
Topics

112.7k
Posts