www/ispindel/index.php

Sat, 19 Aug 2023 15:11:35 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 19 Aug 2023 15:11:35 +0200
changeset 847
dc9281501ca6
parent 585
fa6e702d0d24
child 849
16079aef4c4c
permissions
-rw-r--r--

De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.

581
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 <?php
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 require($_SERVER['DOCUMENT_ROOT']."/config.php");
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5 if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') {
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 // /usr/bin/mosquitto_pub -h host] [-p port] [-u username [-P password]] -t topic -m message
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 $publisher = '/usr/bin/mosquitto_pub -h '.MQTT_HOST.' -t ';
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 $input = file_get_contents('php://input');
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 $data = json_decode($input, true );
847
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
11
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
12 if ($data['temp_units'] == 'K') {
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
13 $tempC = floatval($data['temperature']) - 273.15;
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
14 } else if ($data['temp_units'] == 'F') {
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
15 $tempC = floatval($data['temperature']) / 1.8 - 32;
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
16 } else {
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
17 $tempC = floatval($data['temperature']);
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
18 }
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
19
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
20 /* The rounding in the tilt using less digits results in a 0.25 plato difference. Calculate here again using the calibration data. */
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
21 $tilt = $data['angle'];
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
22 $plato = (0.00028548 * $tilt * $tilt * $tilt) + (-0.03492272 * $tilt * $tilt) + (1.617106176 * $tilt) + -21.412976092;
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
23 syslog(LOG_NOTICE, "ispindel " . $input . " plato ".$plato);
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
24
581
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 $node = 'ispindel-' . sprintf("%06x", floatval($data['ID']));
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26
584
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
27 $alarm = 0;
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
28 $interval = $data['interval'];
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
29 if (floatval($data['battery']) < 3.3) {
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
30 $alarm += 4;
585
fa6e702d0d24 Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents: 584
diff changeset
31 if (($interval * 3) < 3600)
fa6e702d0d24 Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents: 584
diff changeset
32 $interval = 3600; // at least 3600 seconds when the battery is low.
fa6e702d0d24 Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents: 584
diff changeset
33 else
fa6e702d0d24 Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents: 584
diff changeset
34 $interval = $interval * 3;
584
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
35 }
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
36
581
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 $uuid = 'c0ffeeee-cafe-dead-beef-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID']));
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 $topic = 'mbv1.0/ispindels/NBIRTH/' . $node;
584
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
39 $payload = '{"metric":{"uuid":"' . $uuid . '","interval":' . $interval . ',';
581
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 $payload .= '"properties":{"hardwaremake":"Wemos","hardwaremodel":"D1 mini","os":"Unknown","os_version":"Unknown","FW":"Unknown"},';
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 $payload .= '"net":{"address":"' . $_SERVER['REMOTE_ADDR'] . '","ifname":"sta","rssi":' . $data['RSSI'] . '}}}';
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 $pub = $publisher . $topic . ' -m \'' . $payload . '\'';
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43 exec($pub);
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 $alarm = 0;
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 if (floatval($data['battery']) < 3.3)
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 $alarm += 4;
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49 $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID']));
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 $topic = 'mbv1.0/ispindels/DBIRTH/' . $node;
584
c9101b2eeb6a Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents: 581
diff changeset
51 $payload = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval;
847
dc9281501ca6 De iSpindel plato berekening is in het webscript gezet omdat er dan met meer cijfers achter de komman gerekend wordt. De uitkomst verschilt 0.25 plato! De calibratie is nu dus extern.
Michiel Broek <mbroek@mbse.eu>
parents: 585
diff changeset
52 $payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $plato . '}}';
581
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53 $pub = $publisher . $topic . ' -m \'' .$payload . '\'';
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 exec($pub);
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 }
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56
fc276025d047 Added ispindel script
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 ?>

mercurial