-
Notifications
You must be signed in to change notification settings - Fork 0
/
updateState.sh
88 lines (65 loc) · 2.63 KB
/
updateState.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
if [$# -ne 4];
then echo "Incorrect number of parameters. Usage: updatestate.sh mqtthost user psw devicename macaddress"
exit 2
fi
# Envoi vers HASS
host=$1
user=$2
psw=$3
Topic=$4
MACadd=$5
echo "----"$(date)"----"
echo $1 ': ' $2
hnd38=$(timeout 15 gatttool -b $MACadd --char-write-req --handle='0x0038' --value="0100" --listen | grep --max-count=1 "Notification handle")
# Notification handle = 0x0036 value: 7c 08 2a 97 0c
if !([ -z "$hnd38" ])
then
echo "Reading Mijia ..."
temperature=${hnd38:39:2}${hnd38:36:2}
temperature=$((16#$temperature))
if [ "$temperature" -gt "10000" ];
then
temperature=$((-65536 + $temperature))
fi
temperature=$(echo "scale=2;$temperature/100" | bc)
humidity=${hnd38:42:2}
humidity=$((16#$humidity))
voltage=${hnd38:48:2}${hnd38:45:2}
voltage=$((16#$voltage))
voltage=$(echo "scale=3;$voltage/1000" | bc)
battlvl=$(echo "scale=1;($voltage-2.1)*100" | bc)
# Battery Level : 0x2A19
# handle = 0x001b, uuid = 00002a19-0000-1000-8000-00805f9b34fb
hnd1b=$(gatttool --device=$MACadd --char-read -a 0x1b)
# Characteristic value/descriptor: 63
battery=${hnd1b:33:2}
battery=$((16#$battery))
# Firmware Revision String : 0x2A26
# handle = 0x0012, uuid = 00002a26-0000-1000-8000-00805f9b34fb
hnd12=$(gatttool --device=$MACadd --char-read -a 0x12)
# Characteristic value/descriptor: 31 2e 30 2e 30 5f 30 31 30 36 00
firmware=$(echo "'$hnd12'" | cut -c34-65 | xxd -r -p)
# Device Name : 0x2A00
# handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb
hnd03=$(gatttool --device=$MACadd --char-read -a 0x03)
# Characteristic value/descriptor: 4c 59 57 53 44 30 33 4d 4d 43 00
name=$(echo "'$hnd03'" | cut -c34-65 | xxd -r -p)
# Hardware Revision String : 0x2A27
# handle = 0x0014, uuid = 00002a27-0000-1000-8000-00805f9b34fb
hnd14=$(gatttool --device=$MACadd --char-read -a 0x14)
# Characteristic value/descriptor: 42 31 2e 34
revision=$(echo "'$hnd14'" | cut -c34-45 | xxd -r -p)
# Affichage des données
# echo "Reading Mijia..."
echo "Hardware: {Firmware Version:$firmware / Hardware Revision:$revision / BT Name:$name / Battery Level:$battery}"
echo "Sensors: {Temperature:$temperature / Humidity:$humidity / Voltage:$voltage / Battery:$battlvl}"
# xiaomi/sensor/theo/state
mosquitto_pub -h $host -t "xiaomi/sensor/$Topic/state" -r -d -u $user -P $psw -m "{ \"temperature\": $temperature, \"humidity\": $humidity, \"batterylevel\": $battlvl }"
echo "---END---"
else
echo "Mijia error"
echo "---END---"
exit 1
fi
#echo "---END---"