5 if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') { |
5 if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') { |
6 // /usr/bin/mosquitto_pub -h host] [-p port] [-u username [-P password]] -t topic -m message |
6 // /usr/bin/mosquitto_pub -h host] [-p port] [-u username [-P password]] -t topic -m message |
7 $publisher = '/usr/bin/mosquitto_pub -h '.MQTT_HOST.' -t '; |
7 $publisher = '/usr/bin/mosquitto_pub -h '.MQTT_HOST.' -t '; |
8 |
8 |
9 $input = file_get_contents('php://input'); |
9 $input = file_get_contents('php://input'); |
10 //syslog(LOG_NOTICE, "ispindel " . $input); |
|
11 $data = json_decode($input, true ); |
10 $data = json_decode($input, true ); |
|
11 |
|
12 if ($data['temp_units'] == 'K') { |
|
13 $tempC = floatval($data['temperature']) - 273.15; |
|
14 } else if ($data['temp_units'] == 'F') { |
|
15 $tempC = floatval($data['temperature']) / 1.8 - 32; |
|
16 } else { |
|
17 $tempC = floatval($data['temperature']); |
|
18 } |
|
19 |
|
20 /* The rounding in the tilt using less digits results in a 0.25 plato difference. Calculate here again using the calibration data. */ |
|
21 $tilt = $data['angle']; |
|
22 $plato = (0.00028548 * $tilt * $tilt * $tilt) + (-0.03492272 * $tilt * $tilt) + (1.617106176 * $tilt) + -21.412976092; |
|
23 syslog(LOG_NOTICE, "ispindel " . $input . " plato ".$plato); |
|
24 |
12 $node = 'ispindel-' . sprintf("%06x", floatval($data['ID'])); |
25 $node = 'ispindel-' . sprintf("%06x", floatval($data['ID'])); |
13 |
26 |
14 $alarm = 0; |
27 $alarm = 0; |
15 $interval = $data['interval']; |
28 $interval = $data['interval']; |
16 if (floatval($data['battery']) < 3.3) { |
29 if (floatval($data['battery']) < 3.3) { |
31 |
44 |
32 $alarm = 0; |
45 $alarm = 0; |
33 if (floatval($data['battery']) < 3.3) |
46 if (floatval($data['battery']) < 3.3) |
34 $alarm += 4; |
47 $alarm += 4; |
35 |
48 |
36 if ($data['temp_units'] == 'K') { |
|
37 $tempC = floatval($data['temperature']) - 273.15; |
|
38 } else if ($data['temp_units'] == 'F') { |
|
39 $tempC = floatval($data['temperature']) / 1.8 - 32; |
|
40 } else { |
|
41 $tempC = floatval($data['temperature']); |
|
42 } |
|
43 |
|
44 $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); |
49 $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); |
45 $topic = 'mbv1.0/ispindels/DBIRTH/' . $node; |
50 $topic = 'mbv1.0/ispindels/DBIRTH/' . $node; |
46 $payload = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval; |
51 $payload = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval; |
47 $payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $data['gravity'] . '}}'; |
52 $payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $plato . '}}'; |
48 $pub = $publisher . $topic . ' -m \'' .$payload . '\''; |
53 $pub = $publisher . $topic . ' -m \'' .$payload . '\''; |
49 exec($pub); |
54 exec($pub); |
50 } |
55 } |
51 |
56 |
52 ?> |
57 ?> |