I have experienced similar problems, then can be impossible to find. For me most of the time it was the termination resistor 4.7K I changed to about 3.3K and that resolved the problem. The fault was repeating at approximately the same time every day, making it very hard to debug. I put a scope on the line and saw random noise all the time so lowering the impedance reduced the noise below the threshold. Another big one I have seen several times is the power supply. Replacing the power supply resolved the problem. In checking the "bad" supply it tested OK until I lowered the input voltage, it had no headroom. Further investigation showed the main filter was loosing capacity. There may not be enough time to allow the data to be received properly, add that Honorable delay() and see if that helps. I do not have a data sheet but I believe the unit you are using does not need the +5 connected, it steals power from the data line. If you are doing that add the +5.