[RELEASE] SmartLife (H801) RGBW LED Strip Wifi Controller & Bulb

Im using Iview-isb600 bulbs. cant seem to get the pins configured to light the bulb…

I can’t find any info about the pins on the bulb. Do you know where I can find some?

IVIEW-ISB600 Smart WiFi LED Light Bulb, Multi Color, Dimmable, No Hub Required, Free APP Remote Control, Compatible with Amazon Alexa & Google Assistant https://www.amazon.com/dp/B0736DTSH9/ref=cm_sw_r_cp_apa_i_QXpQDbGN12423 I got them from amazon

Guys, maybe that’s a dumb question but I can’t get h801 working. I correctly installed app, was able to discover and add controller to list of devices. But I am just not able to switch it on.

I see device in both, old and new apps on my mobile, but when clicking on turning on it’s going to state ‘turning on’ and after few second goes into off.
So - I see device, it’s online, but no way to turn it on.
Any thoughts?

Did you assign the PIN numbers by accessing the settings via the IP address? I wasnt aware of this step originally.

I had a very old configuration back from maybe 2015 with 2 H801 controllers setup and working. I mainly use them with this smartapp - https://github.com/ygelfand/smartthings/blob/master/smartapps/ygelfand/holiday-color-lights.src/holiday-color-lights.groovy

After updating the firmware, smartapp, and device handlers, the smartapp that I use above can no longer control the brightness of the H801 nor can the official ST SmartLighting app turn it on. Any idea how to fix it?

Make sure the pin assignments are correct in the advanced config for the device.

Are there any errors in the log when you try to adjust the level or turn it on?

The pin assignments are correct.
This is what happens when my programming under SmartLighting should turn it on or off.
Here is what I get on one of the adapters:

7:54:58 PM: debug /on?transition=1

7:54:58 PM: debug on()

7:54:55 PM: debug /off?transition=1

7:54:55 PM: debug off()

The other one:

7:54:58 PM: debug /on?transition=null
7:54:58 PM: debug on()
7:54:55 PM: debug /off?transition=null
7:54:55 PM: debug off()

And there is the SmartLighting log:

7:54:58 PM: debug on()
7:54:58 PM: trace switchStateOK = true
7:54:58 PM: trace ambientLightOK = true
7:54:58 PM: trace timeOk = true
7:54:58 PM: trace timeWindowStop = null
7:54:58 PM: trace timeWindowStart = null
7:54:58 PM: trace daysOk = true
7:54:58 PM: trace modeOk = true
7:54:58 PM: trace switchStateOK = true
7:54:58 PM: trace ambientLightOK = true
7:54:58 PM: trace timeOk = true
7:54:58 PM: trace timeWindowStop = null
7:54:58 PM: trace timeWindowStart = null
7:54:58 PM: trace daysOk = true
7:54:58 PM: trace modeOk = true
7:54:58 PM: trace triggerHandler(switch: on)
7:54:54 PM: debug off()
7:54:54 PM: trace stopAction()
7:54:54 PM: trace switchStateOK = true
7:54:54 PM: trace ambientLightOK = true
7:54:54 PM: trace timeOk = true
7:54:54 PM: trace timeWindowStop = null
7:54:54 PM: trace timeWindowStart = null
7:54:54 PM: trace daysOk = true
7:54:54 PM: trace modeOk = true
7:54:54 PM: trace stopHandler(switch: off)
Here is my PIN config

That is really weird man. Can you control the device in SmartThings (not using an app)? Can you control it from the web interface?

Some times. Pressing on/off sometimes works but others not. If I change the brightness then that works every time. It seems like shapi, a few posts above, has the same issue.

Hi!

I also have the same issues sometimes.The ON/OFF button from Smartthings App is inresponsive.
Once I go to the Web Interface, set some kind of color brightness and it works.
The strange thing is that is very random, it doesn’t always happens.
Thanks,
Vlad

I’ve had this issue all along I just accepted it as I thought it was just me.
So yeah the On/Off doesn’t actually do anything but soon as I press a colour or adjust brightness it works.

One thing I’d like to ask others…

Ive recently started using the jumper pins to trigger the H801 to toggle on/off from my wall switch (as the H801 now stays on all the time). If I short the jumper pin recently after I have triggered it last then the light correctly toggles on/off, however if more than ~1 minute has passed since I last shorted the jumper pins then the H801 does nothing.

Tried adding a capacitor across the pins to reduce noise, even an extra pull up resistor but no change, so have to a it is software as it is very reproducable.

Ive read the code a fair few times and just cant understand what could be causing this, does anybody else experience the same thing?

I haven’t used the jumper for on/off for a while, but at one point I was using it daily and it was working great. That was a long time ago though.

@erocm1231 - Thanks for the response! Did you change the implementation from loop based to interrupt based at some point? I cant see how it would work with the code as current:

void relayToggle() {
  if (digitalRead(KEY_PIN) == LOW) {
    current_low = millis();
    state = LOW;
  }
  if (digitalRead(KEY_PIN == HIGH) && state == LOW)
  {
    current_high = millis();
    if ((current_high - current_low) > (Settings.debounce ? Settings.debounce : debounceDelay) && (current_high - current_low) < 10000)
    {
      state = HIGH;
      run_program = false;
      if (getHex(RED) + getHex(GREEN) + getHex(BLUE) + getHex(W1) + getHex(W2) == "0000000000") {
        String transition = Settings.defaultTransition == 2? "false" : "true";
        run_program = false;
        turnOn(transition);
        //Check if we should forward the request to another device
        check_if_forward_request();
        needUpdate = true;
      } else {
        String transition = Settings.defaultTransition == 2? "false" : "true";
        run_program = false;
        turnOff(transition);
        //Check if we should forward the request to another device
        check_if_forward_request();
        needUpdate = true;
      }
    }
    else if ((current_high - current_low) >= 10000 && (current_high - current_low) < 20000)
    {
      if (Settings.resetType == 1 || Settings.resetType == 3) {
        Settings.longPress = true;
        SaveSettings();
        ESP.restart();
      }
    }
    else if ((current_high - current_low) >= 20000 && (current_high - current_low) < 60000)
    {
      if (Settings.resetType == 1 || Settings.resetType == 3) {
        Settings.reallyLongPress = true;
        SaveSettings();
        ESP.restart();
      }
    }
  }
}

Since the monitoring on key press (high) would ignore presses that are more than 10s since the button was last pressed, plus would also potentially trigger a reset if the button was not pressed for a between 10-60seconds. I would have thought the following is the answer?

void relayToggle() {
  if (digitalRead(KEY_PIN) == LOW && state == HIGH) {
    //First set the counters that the switch is released
    current_low = millis();
    state = LOW;

    //If it has been held for 20-30s then do a partial reset
    if ((current_high - current_low) >= 20000 && (current_high - current_low) < 30000)
    {
      if (Settings.resetType == 1 || Settings.resetType == 3) {
        Settings.longPress = true;
        SaveSettings();
        ESP.restart();
      }
    }
    //Otherwise if it has been held for 30-60s then do a full reset
    else if ((current_high - current_low) >= 30000 && (current_high - current_low) < 60000)
    {
      if (Settings.resetType == 1 || Settings.resetType == 3) {
        Settings.reallyLongPress = true;
        SaveSettings();
        ESP.restart();
      }
    }
  }
  if (digitalRead(KEY_PIN) == HIGH && state == LOW)
  {
    current_high = millis();
    if ((current_high - current_low) > (Settings.debounce ? Settings.debounce : debounceDelay))
    {
      state = HIGH;
      run_program = false;
      if (getHex(RED) + getHex(GREEN) + getHex(BLUE) + getHex(W1) + getHex(W2) == "0000000000") {
        String transition = Settings.defaultTransition == 2? "false" : "true";
        run_program = false;
        turnOn(transition);
        //Check if we should forward the request to another device
        check_if_forward_request();
        needUpdate = true;
      } else {
        String transition = Settings.defaultTransition == 2? "false" : "true";
        run_program = false;
        turnOff(transition);
        //Check if we should forward the request to another device
        check_if_forward_request();
        needUpdate = true;
      }
    }
  }
}

Ive been trying to test it on my devices, but Ive updated Arduino Studio and a load of libraries, hence I actually cant get the compiled code to work at all at the moment (new computer), even with code that should be fine! Im obviously missing a setting somewhere!

I can attest that the on/off button hasn’t been working on my H801s since install about 8 months ago. There’s the possibility that I didn’t put the right pin-out into the web configuration, but everything else works.

Everything else works well though.

@Dunlapjc - Just checking, the on-off button you mention is not the digital button on the webpage (or ST), but you mean the pin header right? If so do you get the same behaviour as me, where is works after the first press, but the first button press is ignored if you havent pressed in a while?
THanks

I’ve had this setup (the H801 and smartlife rgbw device handler) for many months now without incident. Suddenly I started getting strange behavior where turning on lights at a particular level has unpredicatable behavior.

When I looked at the logs to see what is happening I could that the order the commands are sent to the device handler appears to be indeterminate. Sometimes it sents the On command followed by the set brightness command, which causes it to work as expected, but sometimes it sends the brightness command followed by the on command, which causes it to go to full brightness. I’m wondering if a smartthings update has broken things, I notice my firmware is 28.12 which does not even have published release notes yet.

Has anyone else seen this behavior?

Yes, it seems to work once (usually during a setup or change), but then does nothing ever again. I assumed I had a pinout setting Wrong in the web configuration, but have never been able to sort it out.

Yes, on the momentary contact switch on the pin header.
Jon

Hi @erocm1231
I’ve just submitted a PR on GitHub which covers two things:

  1. It fixes the relay toggle behaviour, I have now properly tested the change and it works much better now. No longer does it require double pressing if more than 10s have elapsed since the last press.
  2. I was trying to get the code to compile on newer versions of ESP core (2.6+) and totally failed to get anything working, (I think) due to the fact the code takes up a lot more space in the newer core. The first bug I fixed was relating to IP addresses and IPv6, as it was totally backwards compatible I included it in the PR.

Everything works smoothly on core 2.3, which I assume is what you’re using, but some more bug fixing and code optimising is needed to get the latest ESP core working with this project.

1 Like