[SOLVED]Myq cover stoped working (fixed in update 0.92.2)

I confirm as well. Fixed in 0.92.2

Just ran my update docker script and works like a charm.

All good here on 0.92.2 also. Man, I love this project and the people who work on it. So good.

Fixed here as well !!

Love that it is fixed, not sure why it is not mentioned in the release notes.

Any custom component requires a 'init.py file.

It is, actually, however cryptically. It’s this one:

1 Like

My MyQ stopped working again. Is anyone else working ?

Mine is still working, just tested this right now.

I knew i had not changed anything in HA so i asked here in the forums and see that its still working. Then i decided to factory reset the device and it now works.

Thanks for responding.

1 Like

Looks like they’ve changed something in their Auth setup again and broken the component. Hopefully we can fix this pretty quickly again.

2 Likes

Errors are back again… :frowning:

Home Assistant
0.96.5

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 126, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
    return fut.result()
  File "/usr/src/homeassistant/homeassistant/components/myq/cover.py", line 43, in async_setup_platform
    myq = await login(username, password, brand, websession)
  File "/usr/local/lib/python3.7/site-packages/pymyq/api.py", line 293, in login
    await api.authenticate(username, password)
  File "/usr/local/lib/python3.7/site-packages/pymyq/api.py", line 228, in authenticate
    await self._get_security_token()
  File "/usr/local/lib/python3.7/site-packages/pymyq/api.py", line 244, in _get_security_token
    login_request=True,
  File "/usr/local/lib/python3.7/site-packages/pymyq/api.py", line 153, in _request
    return await resp.json(content_type=None)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/client_reqrep.py", line 1036, in json
    return loads(stripped.decode(encoding))
  File "/usr/local/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

I have exactly the same error. Worked as late as yesterday, and I’ve not changed anything since then.

I see that the problem has been picked up on github: https://github.com/arraylabs/pymyq/issues/22

1 Like

yep broke for me as well

Not working here either

Please share, I’d dump MyQ in a blink of an eye for a more reliable solution. Ever since they changed the app a few months back the sensor on my main garage door has been crap. Several times per week it will tells me that the door is still open when it’s not. That’s not even a home assistant thing, the native app gives the incorrect state. It’s to the point I just assume it’s not going to work. I did try the the Best Buy brand (can’t remember the name off the top of my head) as a possible solution but that was a sad pit of misery. I didn’t mind having to hardwire into my opener but I couldn’t ever get the silly thing to connect to HomeKit, i tired it every which way but no luck. So God knows I didn’t even get close to HA. if you have a good solution i’d love to hear it.

It takes a bit of soldering skills but what I did was inspired by other threads here and elsewhere on the interwebs.

You need a Sonoff Basic, a NodeMCU, an HC-SR04 ultrasonic distance sensor, a 5v USB PS and a spare remote for your garage door. And the associated mounting accessories for the nodeMCU & US sensor. I had a couple of mini bread boards already that I got from Amazon in a 6 pack for pretty cheap.

I wish I would have taken pictures of my steps to get it working but I didn’t so it’s going to be a bit clumsy trying to describe things. I’ll do my best tho. :slightly_smiling_face:

I originally used a sonoff basic because I bought a bunch of them so I had one to use. If I was to do it again I would have used a Sonoff SV and turned it into a dry contact relay as this guy is doing in this video:

But I didn’t so here is what I did:

You need to open up the Sonoff Basic (older style with solder traces). This what should look like originally:

You will need to cut/remove the solder traces on the bottom as indicated on the picture below (not my picture - mine isn’t that shoddy…:wink:):

Then turn the board over and cut the traces on the top of the board in the same location as in the picture below (long yellowish section along the bottom & the yellowish section just to the left of the right hand terminal block):

It’s kind of hard to see so here is one that kind of points it out a bit better:

Basically what you doing is completely disconnecting the relay contact pin from the hot input terminal and disconnecting the neutral line between the input & output terminals. Use a multimeter to verify that they are no longer connected.

Then you will connect a jumper between the neutral solder trace and the relay contact pin on the bottom of the board indicated by the circle:

After you are done with that then reassemble the Sonoff and flash it with whichever firmware you prefer (I use ESPHome - code below).

Then disassemble your spare remote and using a multimeter determine which pins on the switch are closed when you push the button. Solder a wire onto each of those switch pins on the remote. Connect those wires to the output terminals on the Sonoff.

Connect power to the Sonoff input terminals. Once it boots up then when you push the button on the sonoff and the relay turns on the garage door should operate. hit the button again to turn the relay off. If it works then congratulations you’ve just simulated a button press & release on the remote with the Sonoff! :slightly_smiling_face:

Then for the door position you will connect the HC-SR04 US Sensor to the NodeMCU like this:

NodeMCU%20with%20Ultra-sonic%20sensor%20wiring

Flash the NodeMCU with your firmware of choice (again I use ESPHome - code below).

Then you will mount the US sensor on the ceiling of your garage with the US sensor pointing at the floor and so that the garage door blocks the US sensor when open & unblocks it when closed.

Sonoff ESPHome Code:

esphome:
  name: ----node name here-
  platform: ESP8266
  board: esp01_1m
  board_flash_mode: dout

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pwd
  reboot_timeout: 0s
  fast_connect: true
  manual_ip:
    static_ip: ----ip address here-
    gateway: 192.168.1.1
    subnet: 255.255.255.0
    
# Enable logging
logger:

# Enable Home Assistant API
api:
  reboot_timeout: 0s

ota:
  
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    id: button
    on_press:
      - switch.toggle: relay_template
    on_multi_click:
    - timing:
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at most 0.5s
        - ON for at most 0.5s
        - OFF for at least 0.2s
      then:
        - switch.turn_on: restart_sonoff
           
switch:
  - platform: gpio
    pin: GPIO12
    id: relay
  - platform: template
    name: ----friendly name here-
    id: relay_template
    lambda: |-
      if (id(relay).state) {
        return true;
      } else {
        return false;
      }
    turn_on_action:
      - light.turn_on: status_led
      - switch.turn_on: relay
    turn_off_action:
      - light.turn_off: status_led
      - switch.turn_off: relay
  - platform: restart
    id: restart_sonoff

output:
  - platform: esp8266_pwm
    id: basic_green_led
    pin:
      number: GPIO13
      inverted: True

light:
  - platform: monochromatic
    output: basic_green_led
    id: status_led
    default_transition_length: 1ms # controls the light fade/transition time
    
text_sensor:
  - platform: version
    name: ----friendly_name here- ESPHome Version
    
sensor:
  - platform: wifi_signal
    name: ----friendly_name here- WiFi Signal Strength
    update_interval: 60s

Ultrasonic sensor Code:

esphome:
  name: ----Node_Name_here-
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pwd
  fast_connect: true
  manual_ip:
    static_ip: ----IP_address_here-
    gateway: 192.168.1.1
    subnet: 255.255.255.0

# Enable logging
logger:

# Enable Home Assistant API
api:
  
ota:
    
sensor:
  - platform: ultrasonic
    trigger_pin: D4
    echo_pin: D3
    name: ----Friendly_name _here-
  - platform: wifi_signal
    name: ----same friendly_name here- WiFi Signal Strength
    update_interval: 60s
    
text_sensor:
  - platform: version
    name: ----Same freindly name here- ESPHome Version

then in HA you create a momentary switch:

automation:
  - alias: Toggle Garage Door South Switch
    initial_state: 'on'
    trigger:
      platform: state
      entity_id: switch.garage_door_south_sonoff_operator
      to: 'on'
      for:
        seconds: 1
    action:
      service: homeassistant.turn_off
      entity_id: switch.garage_door_south_sonoff_operator

and a template cover to put it all together:

cover:
  - platform:
    covers:
      south_garage_door_sonoff:
        friendly_name: 'South Garage Door'
        value_template: "{{ states.sensor.south_garage_door_position_sensor.state | int < 38 }}"
        open_cover:
          service: switch.turn_on
          entity_id: switch.garage_door_north_operator_switch
        close_cover:
          service: switch.turn_on
          entity_id: switch.garage_door_north_operator_switch
        stop_cover:
          service: switch.turn_on
          entity_id: switch.garage_door_south_sonoff_operator
        icon_template: >
          {% if states.sensor.south_garage_door_position_sensor.state | int < 38 %}
            mdi:garage-open
          {% else %}
            mdi:garage
          {% endif %}

Obviously you’ll need to use your details in the automations & cover codes.

Good luck!

2 Likes

If your MyQ is not working follow these steps. This is the method I have been using for a while now on multiple versions of HA, I am currently running 0.100.3.

switch to your homeassistant user then
edit your manifest.json file located at:

    /opt/homeassistant/lib/python3.8/site-packages/homeassistant/components/myq

and change

    "pymyq==2.0.0" to "pymyq==2.0.1"

This will tell HA to use the correct version of the software.

Additionally, if this does not work right off the bat, ensure your have the pymyq software installed with pip3.

    #pymyq (2.0.1)  - Python package for controlling MyQ-Enabled Garage Door
    pip3 install pymyq

and none of that works in hassio or in Docker installs