Sat, 19 Aug 2023 15:11:35 +0200
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 | 1 | <?php |
2 | ||
3 | require($_SERVER['DOCUMENT_ROOT']."/config.php"); | |
4 | ||
5 | if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') { | |
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 '; | |
8 | ||
9 | $input = file_get_contents('php://input'); | |
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 | 25 | $node = 'ispindel-' . sprintf("%06x", floatval($data['ID'])); |
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 | 37 | $uuid = 'c0ffeeee-cafe-dead-beef-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); |
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 | 40 | $payload .= '"properties":{"hardwaremake":"Wemos","hardwaremodel":"D1 mini","os":"Unknown","os_version":"Unknown","FW":"Unknown"},'; |
41 | $payload .= '"net":{"address":"' . $_SERVER['REMOTE_ADDR'] . '","ifname":"sta","rssi":' . $data['RSSI'] . '}}}'; | |
42 | $pub = $publisher . $topic . ' -m \'' . $payload . '\''; | |
43 | exec($pub); | |
44 | ||
45 | $alarm = 0; | |
46 | if (floatval($data['battery']) < 3.3) | |
47 | $alarm += 4; | |
48 | ||
49 | $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); | |
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 | 53 | $pub = $publisher . $topic . ' -m \'' .$payload . '\''; |
54 | exec($pub); | |
55 | } | |
56 | ||
57 | ?> |