esphome / issues

Issue Tracker for ESPHome
https://esphome.io/
290 stars 34 forks source link

Trying to use rf_bridge to control my novy hood #4311

Open Bjoern3003 opened 1 year ago

Bjoern3003 commented 1 year ago

The problem

Hi there, I have tried a lot of time, to fix this problem by myself

I have a Novy Hood and a Novy 840029 RF Controller.

I have flashed ESP-Home on my Sonoff RF Bridge and installed it in Home-Assistant with ESP-Home Addon.

Every seems looking fine, but I can not controll my Hood with ESP-Home.

I think the protocol is not correct.

I have found another Project in FHEM, where I can see the complete Informations for the protocol: https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

But I don't understand, how I can translate these defines in the ESP-Home yaml code.

Attached the Log File, when I press the light toggle Button on the Remote Control.

I have attached my yaml file, with example, that I have tried.

Which version of ESPHome has the issue?

2023.3.0

What type of installation are you using?

Home Assistant Add-on

Which version of Home Assistant has the issue?

2023.3.4

What platform are you using?

ESP8266

Board

Sonoff RF Bridge

Component causing the issue

No response

Example YAML snippet

remote_receiver:
  pin: GPIO04
  dump: rc_switch
  #dump: all
  tolerance: 50%
  filter: 250us
  idle: 4ms
  buffer_size: 2kb

remote_transmitter:
  pin: GPIO05
  carrier_duty_percent: 100%

# this will log received commands, and can also transmit. Read up here:
# https://esphome.io/components/remote_transmitter.html#remote-setting-up-rf
# https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

button:
  - platform: template
    name: Licht Toggle
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1011001011001011001011001011001001001011001011011011001'
          protocol: 1
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v2
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010111010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v3
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '011101000100'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v4
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '10101010011101000111'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v5
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1010101011010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v6
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1010101001110111'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v7
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '0111010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

Anything in the logs that might be useful for us?

[15:41:39][D][remote.rc_switch:261]: Received RCSwitch Raw: protocol=6 data='010101010111010001'

Additional information

https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

https://github.com/RFD-FHEM/RFFHEM/issues/331

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

pvh0 commented 1 year ago

The problem

Hi there, I have tried a lot of time, to fix this problem by myself

I have a Novy Hood and a Novy 840029 RF Controller.

I have flashed ESP-Home on my Sonoff RF Bridge and installed it in Home-Assistant with ESP-Home Addon.

Every seems looking fine, but I can not controll my Hood with ESP-Home.

I think the protocol is not correct.

I have found another Project in FHEM, where I can see the complete Informations for the protocol: https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

But I don't understand, how I can translate these defines in the ESP-Home yaml code.

Attached the Log File, when I press the light toggle Button on the Remote Control.

I have attached my yaml file, with example, that I have tried.

Which version of ESPHome has the issue?

2023.3.0

What type of installation are you using?

Home Assistant Add-on

Which version of Home Assistant has the issue?

2023.3.4

What platform are you using?

ESP8266

Board

Sonoff RF Bridge

Component causing the issue

No response

Example YAML snippet

remote_receiver:
  pin: GPIO04
  dump: rc_switch
  #dump: all
  tolerance: 50%
  filter: 250us
  idle: 4ms
  buffer_size: 2kb

remote_transmitter:
  pin: GPIO05
  carrier_duty_percent: 100%

# this will log received commands, and can also transmit. Read up here:
# https://esphome.io/components/remote_transmitter.html#remote-setting-up-rf
# https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

button:
  - platform: template
    name: Licht Toggle
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1011001011001011001011001011001001001011001011011011001'
          protocol: 1
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v2
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010111010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v3
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '011101000100'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v4
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '10101010011101000111'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v5
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1010101011010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

  - platform: template
    name: Licht Toggle v6
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '1010101001110111'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms
  - platform: template
    name: Licht Toggle v7
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '0111010001'
          protocol: 6
          repeat:
            times: 4
            wait_time: 20ms

Anything in the logs that might be useful for us?

[15:41:39][D][remote.rc_switch:261]: Received RCSwitch Raw: protocol=6 data='010101010111010001'

Additional information

https://github.com/RFD-FHEM/RFFHEM/blob/491b4b35a430a3b83f81d29d6e7f20390c02e173/FHEM/lib/SD_ProtocolData.pm#L2370

RFD-FHEM/RFFHEM#331

@Bjoern3003 Did you ever find a solution for this? Looking for the same.

Bjoern3003 commented 1 year ago

No, unfortunately not.

bart1 commented 10 months ago

Thanks to this issue and the RFD-FHEM, I have figured out the correct setup for my ATAG hood. I have a transmitter that reads on the back SF01 01319004 433.92 MHz, I think this is the same as some of the other hoods. After some hints in the various topics and playing around with a logic analyzer I have found the following settings to work for toggling the light:

remote_transmitter:
  pin: GPIO21
  carrier_duty_percent: 50%

button:
  - platform: template
    name: Licht Toggle
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '111000001000101110'
          protocol:
            pulse_length: 350 
            sync: [44, 1] 
            zero: [1, 2] 
            one: [2, 1] 
            inverted: True
          repeat:
            times: 10
            wait_time: 0ms

I use a very simple transmitter (FS1000A) connected to an esp. Special thanks goes out to @sidey79 in the other topic. I hope this is helpful for someone. I will try to decode the other signals soon

bart1 commented 10 months ago

A quick follow up for the ATAG hood these are the codes:

111000001000101110 -> toggle light
111000001000101110 -> repeat a 100 times to dim
111000001000101001 -> timer
111000001000101100 -> + extracting
111000001000101010 -> - extracting
111000001000101101 -> turn off
pvh0 commented 10 months ago

A quick follow up for the ATAG hood these are the codes:

111000001000101110 -> toggle light
111000001000101110 -> repeat a 100 times to dim
111000001000101001 -> timer
111000001000101100 -> + extracting
111000001000101010 -> - extracting
111000001000101101 -> turn off

Thanks Bart, will give it a try here with my Novy as well. It did not work with me but had inverted to false so will check again!

bart1 commented 10 months ago

@pvh0 also note it did not work for me with the wait time at 20ms, it started working when I lowered it to 0

bart1 commented 10 months ago

PS this video helped me to decode the signal (and measure if I reproduce it correctly): https://www.youtube.com/watch?v=V7TzMmDZjAY

Bjoern3003 commented 10 months ago

Interesting solution.

I have sold my Sonoff RF Bridge, because of no results.

Now I have bought Arduino 433Mhz Set to test again with your solution @bart1

pvh0 commented 10 months ago

PS this video helped me to decode the signal (and measure if I reproduce it correctly): https://www.youtube.com/watch?v=V7TzMmDZjAY

Just ordered the logic analyser. Could you please explain how you got from the Youtube movie (Pulseview) to "# 111000001000101110 -> toggle light"?

bart1 commented 10 months ago

Just ordered the logic analyser. Could you please explain how you got from the Youtube movie (Pulseview) to "# 111000001000101110 -> toggle light"?

Using the circuit from the video (link with drawings is in the description) I made a recording while I pressed the button on the existing remote (I think I used a sampling rate of 4 MHz). In this recording I can then decode the signal manually (using the encoding from the RFFHEM issue). Using the timing feature of pulseview you can just count the intervals and each time see if a 1 or 0 is encoded. Ideally the remote_receiver from esphome would do this but that does not seem to get the encoding right.

pvh0 commented 10 months ago

I also analysed the codes and these seem to be the codes for my Novy hood:

Plus 1010101010101 Light 1010101010111010001 Min 1010101010110 On/Off 1010101010111010011

In the meantime I found this, which reflect my codes as well: https://github.com/abelgomez/rf-mqtt-bridge/blob/master/src/NovyController.cpp

I tried these codes with the config from Bart, but unfortunately no luck:

`remote_transmitter: pin: GPIO21 carrier_duty_percent: 50%

button:

Codes are sent to the Novy but no response. Will see if I can play a bit with the wait time etc... Maybe one more check for @bart1, do you really have carrier_duty_percent: 50%? Because ESPHome documentation says Set this to 50% if you’re working with IR LEDs and to 100% if working with other things like 433MHz transmitters...

bart1 commented 10 months ago

@pvh0 I indeed hat the carrier duty 50% maybe it works better with a 100% I did not test that. It works from atleast 3 meters away for me. Did you have a look if the resulting signal emitted from the esp looked the same in the logic analyzer as the one you recorded?

renedis commented 8 months ago

I also analysed the codes and these seem to be the codes for my Novy hood:

Plus 1010101010101 Light 1010101010111010001 Min 1010101010110 On/Off 1010101010111010011

In the meantime I found this, which reflect my codes as well: https://github.com/abelgomez/rf-mqtt-bridge/blob/master/src/NovyController.cpp

I tried these codes with the config from Bart, but unfortunately no luck:

`remote_transmitter: pin: GPIO21 carrier_duty_percent: 50%

button:

  • platform: template name: Licht Toggle on_press:

    • remote_transmitter.transmit_rc_switch_raw: code: '1010101010111010001' protocol: pulse_length: 350 sync: [44, 1] zero: [1, 2] one: [2, 1] inverted: True repeat: times: 10 wait_time: 0ms`

Codes are sent to the Novy but no response. Will see if I can play a bit with the wait time etc... Maybe one more check for @bart1, do you really have carrier_duty_percent: 50%? Because ESPHome documentation says Set this to 50% if you’re working with IR LEDs and to 100% if working with other things like 433MHz transmitters...

Your code seems one character to long?

the code is setup as: DEVICE+PREFIX+BUTTON DEVICE = 4 characters long PREFIX = 4 characters long BUTTON = specific code with variable length.

In your case you try to send the light button toggle. Which is: 1010 1010 1 0111010001 (use without spaces of course)

But it should be: 1010 1010 0111010001 (use without spaces of course)

I think you used one "1" character to much when reading https://github.com/abelgomez/rf-mqtt-bridge/blob/master/src/NovyController.cpp

Also, i think you should find out which DEVICE code your remote uses in the 10 variables.

klenaers commented 2 months ago

@pvh0 : If you're still looking for the correct parameters for the Novy hood(based on protocol 12 of RC-switch). I use the CC1101-specific module that you find in the dev-branch of esphome. These settings work for my configuration. Maybe also for the Sonoff RF-bridge.

  - platform: template
    name: "Light toggle"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw_cc1101:
          code: '101001010111010001'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10

And this works with duty cycle 100%

remote_transmitter:
  pin: GPIO22  # GDO0
  carrier_duty_percent: 100%
pvh0 commented 2 months ago

Thanks, cool! Couple of questions:

@pvh0 : If you're still looking for the correct parameters for the Novy hood(based on protocol 12 of RC-switch). I use the CC1101-specific module that you find in the dev-branch of esphome. These settings work for my configuration. Maybe also for the Sonoff RF-bridge.

  - platform: template
    name: "Light toggle"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw_cc1101:
          code: '101001010111010001'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10

And this works with duty cycle 100%

remote_transmitter:
  pin: GPIO22  # GDO0
  carrier_duty_percent: 100%
Bjoern3003 commented 2 months ago

For me its compiling fine like this:

external_components:
  # use rtttl and dfplayer from ESPHome's dev branch in GitHub
  - source:
      type: git
      url: https://github.com/gabest11/esphome
      ref: cc1101
    components: [ cc1101 ]

esphome:
  name: test-dunstabzugshaube
  friendly_name: Test Dunstabzugshaube

esp8266:
  board: d1_mini

# Enable logging
logger:

spi:
  clk_pin: GPIO14
  miso_pin: GPIO12
  mosi_pin: GPIO13

cc1101:
  id: transceiver
  cs_pin: GPIO15
  gdo0_pin:
    number: D1
    allow_other_uses: true
  bandwidth: 200
  frequency: 433920
  rssi:
    name: RSSI
  lqi:
    name: LQI
  temperature:
    name: Temperature

remote_transmitter:
  pin:
    number: D1  # GDO0
    allow_other_uses: true
  carrier_duty_percent: 100%

remote_receiver:
  pin:
    number: D1  # GDO0
    allow_other_uses: true
  dump:
    - rc_switch
  # Settings to optimize recognition of RF devices
  tolerance: 50%
  buffer_size: 2kb
  filter: 250us
  idle: 4ms
  on_rc_switch:
    - logger.log:
        format: "on_rc_switch: %i %llu"
        args: [x.protocol, x.code]

button:
  - platform: template
    name: "Light toggle"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw_cc1101:
          code: '101001010111010001'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10

captive_portal:

I will order an cc1101 module to test it with my novy hood.

klenaers commented 2 months ago

@pvh0 : this is the location where you find how to combine the code for the different actions: https://github.com/SpectraCoder/ESP32_Novy_Commander/blob/main/config.example.h

NOVY_DEVICE_CODE[channelIndex] + NOVY_PREFIX + NOVY_COMMAND_LIGHT 1010 (channel 6) + 0101 + 0111010001 = 101001010111010001

Bjoern3003 commented 2 months ago

Thank you @klenaers for me now its also working without cc1101

Its working well with this:

remote_transmitter:
  pin:
    number: D1  # GDO0
  carrier_duty_percent: 100%

button:
  - platform: template
    name: "Licht schalten"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010111010001'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10
  - platform: template
    name: "Haube schalten"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010111010011'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10
  - platform: template
    name: "Lüfter schneller"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010101'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10
  - platform: template
    name: "Lüfter langsamer"
    on_press:
      - remote_transmitter.transmit_rc_switch_raw:
          code: '010101010110'
          protocol:
            pulse_length: 320
            sync: [36,1]
            zero: [1,2]
            one: [2,1]
            inverted: true
          repeat:
            times: 10