param ( [string]$comport = "COM11" ) $1wirelist=@{} $port= new-Object System.IO.Ports.SerialPort $comport,115200,None,8,one $port.ReadTimeout=5000 $port.WriteTimeout=5000 $port.open() $port.WriteLine('$?') write-host "Scanning 1-Wire" start-sleep -milliseconds 1000 while ($port.BytesToRead -ne 0) { $line = $port.ReadLine() if ($line.startswith('$S0')) { Write-host "Found S0-Line $line" $s0array = $line -split(';') write-host " S0-Counter1 = " $s0array[1] write-host " S0-Counter2 = " $s0array[2] } else { Write-host "Found 1Wire-Device: $line" $1wirearray = $line -split(';') $1wirelist.add($1wirearray[0],$1wirearray[2]) } } if ($1wirelist.count -ne 0) { foreach ($key in $1wirelist.keys) { $port.WriteLine($key) start-sleep -milliseconds 100 $1wiredata = $port.ReadLine() write-host (" 1wireData: Device:" + $1wirelist.item($key)) write-host (" 1wireData: Data:" + $1wiredata) $1wiredataarray = $1wiredata.split(";") if ( ($1wirelist.item($key)).startswith("10") ) { $highbyte = [Convert]::ToInt32($1wiredataarray[3],16) $lowbyte = [Convert]::ToInt32($1wiredataarray[2],16) if ($HighByte -eq 00) { $Temp = $LowByte * 0.5 } else { $Temp = (256- $LowByte) * - 0.5 } write-host "Temperatur $temp" } } } $port.Close()