www/ispindel/index.php

changeset 847
dc9281501ca6
parent 585
fa6e702d0d24
child 849
16079aef4c4c
equal deleted inserted replaced
846:d8ace3fa9ac7 847:dc9281501ca6
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 ?>

mercurial