@dev0, here’s my feedback after testing.
Tl;dr:
Neewer 660 Pro Mk2 RGB lights are working - mostly.
More detail below…
Setup:
I am using the lights in my professional home office setup. Currently, I have two Neewer 660 Pro Mk2 RGB lights installed. I plan to add at least one more identical light, possibly two. All the lights will remain stationary in the same room.
Requirements:
Being able to control the lights in Home Assistant to include them in different scenes (e.g., one for calls, work, all lights off, etc.).
Equipment used:
Software components used:
Flashing:
- Flashing your ESP32 firmware onto my ESP32s eventuell worked well.
- However, I first just added your package to my out-of-box ESP32 configuration as described in your readme and didn’t look into your “neewer-controller.yaml”. This resultet in duplicate definitions for esphome and esp32 (among others) and my ESP32 only booted up properly once after flashing. After checking your yaml and resolving the duplicate entries, flashing and booting repeatedly works well without issues.
- Important to note also that I had to delete the original definition of my esp32 board as “esp32_dev” (or so) and keep that one from your yaml as “wemos_d1_mini32” also for those non-wemos ESP32s I ordered on Amazon.
- As a learning, we could adapt your readme on GitHub and maybe include a sample ESP32 config.yaml as reference. Happy to support.
Pairing and basic usage:
- The Mk2 lights identify as “NEEWER-RGB660 PRO” instead of “NEEWER-RGB660”, which is why I am getting the following log message:
12:25:04 [W] [neewer:126] Neewer device "NEEWER-RGB660 PRO" does not identify as NEEWER-RGB660, is not officially supported and may not work as expected
- The integration connects successfully to my Neewer 660 Mk2 lights:
12:25:57 [I] [neewer:180] Connecting to BLE client
12:25:58 [I] [esp32_ble_client:067] [0] [E8:49:31:33:EF:B3] 0x01 Attempting BLE connection
12:25:58 [W] [neewer_ble_output:021] [69400002-B5A3-F393-E0A9-E50E24DCCA99] Connected successfully!
12:25:59 [I] [esp32_ble_client:227] [0] [E8:49:31:33:EF:B3] Connected
- The lights switch on or off fine using either your web interface or Home Assistant. While doing so, I am getting the following log message. Is this expected behavior?
12:26:03 [I] [light:392] 'Neewer 660 RGB Light' - Keeping current color mode Color temperature for call without color mode.
12:26:03 [I] [neewer_ble_output:067] Attempting to write colour command 5 bytes, state value: 1.000000
Bugs and issues:
- As soon as I send the same command twice, this could be as easy as a light.turn_on command wihtout any additional data, the Neewer light turns off with the second command and doesn’t seem to react anymore. From that point on, the light status in your web interface or Home Assistant does not reflect the physical status of the light anymore (for instance, after switching on again, Home Assistant shows light is on but it isn’t). This is the log (3x light.turn_on with light being on after the first command, and staying off after second command):
12:34:09 [I] [neewer_ble_output:067] Attempting to write colour command 5 bytes, state value: 1.000000
12:34:13 [I] [neewer_ble_output:067] Attempting to write colour command 8 bytes, state value: 1.000000
12:35:42 [I] [neewer_ble_output:067] Attempting to write colour command 8 bytes, state value: 1.000000
- I found that the way to get the Neewer light to work again is sending a light.turn_on command that is different from the last one that made the light/integration crash. For instance, include a different color temperature or brightness. The log when sending this command and making the Neewer light turn on again looks as follows:
12:38:57 [I] [neewer_ble_output:067] Attempting to write colour command 6 bytes, state value: 1.000000
- As long as I only send every command only once, everything works again.
- Unfortunately though, it happens quite often that you send the same command multiple times to the Neewer light. As stated above, I am using light scenes that include the Neewer lights. If I use a wall switch or button to toggle through scenes, it happens quickly that the lights get the same light.turn_on command twice because two scenes both keep the lights on at the same brightness/color temp. So for my envisioned setup, it’s almost impossible to avoid this issue. (Admittedly, a quick fix would be to edit my scenes and don’t include the Neewer lights in all subsequent scenes after the first scene that switched them on, however, typically I have multiple switches triggering these scenes in different orders, which means I’d have to duplicate scenes… it’s a rabbit hole.)
- As a first root cause analysis, I have flashed my spare ESP32 directly with Litui’s neewerlight implementation without using your component. The issue is the same, so it is related to Litui’s neewerlight implementation (that you use in yours).
Questions, additional thoughts and considerations:
- Can you reproduce the issue described above with your Neewer 660 RGB Mk1 lights (or else, is it related to the Mk2 lights)? Has anyone looked deeper into bugfixing this?
- I really like the additional entities your integration creates, making it transparent for instance which device is currently paired, change the paired device, or reboot the ESP32. The only thing I prefer using Litui’s neewerlight implementation directly is the ability to pair multiple Neewer lights to one ESP32. Is that something you considered adding? For my configuration using multiple Neewer lights close to each other in one room, BLE connectivity seems to be good enough (maybe only for Mk2?) to use one only ESP32 centrally.
Hope this feedback helps. 
EDIT:
Adding the log from the neewerlight implementation for when sending two subsequent light.turn_on commands and the lights stop working.
First light.turn_on command => Neewer light turns on:
[17:27:57][D][light:036]: 'Neewer 660 Pro II RGB' Setting:
[17:27:57][D][light:047]: State: ON
[17:27:57][D][neewer_rgbct_light_output:272]: CTWB value changed while RGB == 0
[17:27:57][D][neewer_rgbct_light_output:274]: Only WB changed.
[17:27:57][D][neewer_ble_output:089]: Message length at end of build_msg_with_checksum: 5
[17:27:57][D][neewer_ble_output:063]: Message length before write to light: 5
[17:27:57][I][neewer_ble_output:067]: Attempting to write colour command 5 bytes, state value: 1.000000
[17:27:57][D][esp32_ble_client:110]: [1] [E8:49:31:33:EF:B3] ESP_GATTC_WRITE_CHAR_EVT
Second light.turn_on command => Neewer light turns off and becomes unresponsive:
[17:28:00][D][light:036]: 'Neewer 660 Pro II RGB' Setting:
[17:28:00][D][neewer_rgbct_light_output:281]: Executing RGB fallback.
[17:28:00][D][neewer_rgbct_light_output:207]: Attempting RGB colour conversion from 0.000000, 0.000000, 0.000000...
[17:28:00][D][neewer_rgbct_light_output:249]: Converted RGB to HSB values 0, 0, 0
[17:28:00][D][neewer_ble_output:089]: Message length at end of build_msg_with_checksum: 8
[17:28:00][D][neewer_ble_output:063]: Message length before write to light: 8
[17:28:00][I][neewer_ble_output:067]: Attempting to write colour command 8 bytes, state value: 1.000000
[17:28:00][D][esp32_ble_client:110]: [1] [E8:49:31:33:EF:B3] ESP_GATTC_WRITE_CHAR_EVT