I could not get the DS18B20 to work in parasite mode which suggests that perhaps the temp() function is not written to do the strong pull-up needed in parasite mode. I am using the recommended 470k ohm resistor as a pull-up on the data line but an explicit strong pull-up is also needed during temperature conversion while in parasite mode. By powering the sensor, I got an 85 return value (instead of the -127 you get when the unit isn't working). Obviously this was not room temperature! 85 is the startup contents of the temperature buffer in the DS18B20 so I'm led to believe that the sensor logic is working and sending back data (I tried two of them with the same results). It seems that no temperature conversion is being done. This is supposed to be initiated by a command from the temp() function.
Unless I'm missing something in the documentation, the temp() function is the only onewire command or function. This suggests that the first time it is called (and possibly every time) it does a discovery to see how many devices are connected, gets their unique ROM codes, and builds a look-up table to associate them as devices 0 - n. It may or may not address each device by ROM code, initiate a temperature conversion, then read the temperature data.
My theories as to why this is not working are : 1. The sensors need configuration bytes sent and this is not happening. 2. The temperature conversion command is either not being sent or it is being sent using the wrong ROM code (this would be a bug). 3. As there doesn't seem to be a way to configure each OW device, it could be that the DS18B20 is configured differently than the temp function in expecting.
Has anybody gotten this to work?