WS2812 and DHTxx Sensor (Pulsing and timing issue)

if you know somehow help me out here.

I already told you what you need to do. There are two functions that every Arduino sketch must have. One is setup() that is executed once.

The other is loop(). Notice that they did not call this function thatDogIsSureUgly(). There is a reason for the name. It loops. Let it handle all the looping that program needs to do.

On any given pass through loop(), it may, or may not, be time to change the brightness of the LEDs. If it is, do it, and record when the change happened. If not, move on to the next task, if there is one.

The next change may be to increase the brightness value, or it may be to decrease the brightness value. The loop() function needs to keep track of that, not a for loop index.

There is NO magic millis dust that you can sprinkle on blocking code to unblock it. You must scrap that whole sketch and start over. You already know how to use millis() to determine if it is time to do something. So, using it to decide whether the strip brightness needs to change, or not, should be trivial.

The action that needs to happen when it is time for a change is already defined in the fadeNeoPixel() function, but it is wrapped in two for loops with delay calls. Get rid of one of the for loops and the delay call. Rename the function, because it is no longer responsible for fading the LEDs. Call that function with three arguments, not two. The new argument will be the value that is b in the for loops.

Of course, you'll have issues with fadeOnSensorRead() because that expects the fadeNewPixel() function to be blocking.

But, I'm sure you'll figure that out.

By the way, having fadeOnSensorRead() take a float makes no sense, since all the tests involving that float compare it to integer values.