Thu, 13 Jun 2024 17:12:00 +0200
Brought the web interface in sync with the new bmsapp water treatment.
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 | |
581 | 20 | $node = 'ispindel-' . sprintf("%06x", floatval($data['ID'])); |
21 | ||
584
c9101b2eeb6a
Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents:
581
diff
changeset
|
22 | $alarm = 0; |
c9101b2eeb6a
Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents:
581
diff
changeset
|
23 | $interval = $data['interval']; |
c9101b2eeb6a
Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents:
581
diff
changeset
|
24 | 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
|
25 | $alarm += 4; |
585
fa6e702d0d24
Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents:
584
diff
changeset
|
26 | if (($interval * 3) < 3600) |
fa6e702d0d24
Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents:
584
diff
changeset
|
27 | $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
|
28 | else |
fa6e702d0d24
Use the same emergency logic as the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents:
584
diff
changeset
|
29 | $interval = $interval * 3; |
584
c9101b2eeb6a
Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents:
581
diff
changeset
|
30 | } |
c9101b2eeb6a
Interval is 3600 seconds when running on low battery.
Michiel Broek <mbroek@mbse.eu>
parents:
581
diff
changeset
|
31 | |
581 | 32 | $uuid = 'c0ffeeee-cafe-dead-beef-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); |
33 | $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
|
34 | $payload = '{"metric":{"uuid":"' . $uuid . '","interval":' . $interval . ','; |
581 | 35 | $payload .= '"properties":{"hardwaremake":"Wemos","hardwaremodel":"D1 mini","os":"Unknown","os_version":"Unknown","FW":"Unknown"},'; |
36 | $payload .= '"net":{"address":"' . $_SERVER['REMOTE_ADDR'] . '","ifname":"sta","rssi":' . $data['RSSI'] . '}}}'; | |
37 | $pub = $publisher . $topic . ' -m \'' . $payload . '\''; | |
38 | exec($pub); | |
39 | ||
40 | $alarm = 0; | |
41 | if (floatval($data['battery']) < 3.3) | |
42 | $alarm += 4; | |
43 | ||
44 | $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); | |
45 | $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
|
46 | $payload = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval; |
849
16079aef4c4c
Version 0.3.44. Moved iSpindel Plato calculation from the php script to bmsd. This uses calibration data in the mon_ispindels table. Setup of this data will be done by the bmsapp applications. Default settings are stored in MySQL. From now on you don't need to store calibration data in the iSpindel.
Michiel Broek <mbroek@mbse.eu>
parents:
847
diff
changeset
|
47 | $payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $data['gravity'] . '}}'; |
581 | 48 | $pub = $publisher . $topic . ' -m \'' .$payload . '\''; |
49 | exec($pub); | |
50 | } | |
51 | ||
52 | ?> |