Last active
December 10, 2022 05:00
-
-
Save artms/5356eafcd1244c6fabc0f735e5de7096 to your computer and use it in GitHub Desktop.
Reading from temper temperature sensor in bash only
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
exec 5<> /dev/hidraw1 | |
echo -e '\x00\x01\x80\x33\x01\x00\x00\x00\x00\c' >&5 | |
OUT=$(dd count=1 bs=8 <&5 2>/dev/null | xxd -p) | |
HEX4=${OUT:4:4} | |
DVAL=$((16#$HEX4)) | |
# handle negative temperatures | |
if [[ $DVAL -gt 32767 ]]; then | |
DVAL=$(($DVAL-65536)) | |
fi | |
CTEMP=$(bc <<< "scale=2; $DVAL/100") | |
echo $CTEMP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I am attempting to use the TEMPerX232 in serial mode with some of the code above, and it seems to work, but is giving me some weird values:
Temperature:
174.40
Humidity:
177.46
After snooping the COM port with the included Windows software, it seems all you have to do is send the command "READTEMP" to get data from it.
I came up with this and it seems to work fine.
#!/bin/bash
exec 5<> /dev/ttyUSB0
echo -e '\x52\x65\x61\x64\x54\x65\x6D\x70\c' >&5
OUT=$(dd count=1 bs=64 <&5 2>/dev/null | xxd -p)
echo " "
echo "Hex Out:"
echo $OUT
echo " "
echo "ASCII Out:"
echo $OUT | xxd -r -p
echo " "
echo "Temperature (C):"
TEMPC=${OUT:22:10}
echo $TEMPC | xxd -r -p
echo " "
echo " "
echo "Temperature (F):"
TEMPX=$(echo $TEMPC | xxd -r -p)
TEMPF=$(echo "1.8 * $TEMPX + 32" | bc)
echo $TEMPF
echo " "
echo "Humidity:"
HUM=${OUT:42:10}
echo $HUM | xxd -r -p
echo " "
echo " "