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.
<?php require($_SERVER['DOCUMENT_ROOT']."/config.php"); if ($_SERVER['HTTP_USER_AGENT'] == 'ESP8266HTTPClient') { // /usr/bin/mosquitto_pub -h host] [-p port] [-u username [-P password]] -t topic -m message $publisher = '/usr/bin/mosquitto_pub -h '.MQTT_HOST.' -t '; $input = file_get_contents('php://input'); $data = json_decode($input, true ); if ($data['temp_units'] == 'K') { $tempC = floatval($data['temperature']) - 273.15; } else if ($data['temp_units'] == 'F') { $tempC = floatval($data['temperature']) / 1.8 - 32; } else { $tempC = floatval($data['temperature']); } /* The rounding in the tilt using less digits results in a 0.25 plato difference. Calculate here again using the calibration data. */ $tilt = $data['angle']; $plato = (0.00028548 * $tilt * $tilt * $tilt) + (-0.03492272 * $tilt * $tilt) + (1.617106176 * $tilt) + -21.412976092; syslog(LOG_NOTICE, "ispindel " . $input . " plato ".$plato); $node = 'ispindel-' . sprintf("%06x", floatval($data['ID'])); $alarm = 0; $interval = $data['interval']; if (floatval($data['battery']) < 3.3) { $alarm += 4; if (($interval * 3) < 3600) $interval = 3600; // at least 3600 seconds when the battery is low. else $interval = $interval * 3; } $uuid = 'c0ffeeee-cafe-dead-beef-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); $topic = 'mbv1.0/ispindels/NBIRTH/' . $node; $payload = '{"metric":{"uuid":"' . $uuid . '","interval":' . $interval . ','; $payload .= '"properties":{"hardwaremake":"Wemos","hardwaremodel":"D1 mini","os":"Unknown","os_version":"Unknown","FW":"Unknown"},'; $payload .= '"net":{"address":"' . $_SERVER['REMOTE_ADDR'] . '","ifname":"sta","rssi":' . $data['RSSI'] . '}}}'; $pub = $publisher . $topic . ' -m \'' . $payload . '\''; exec($pub); $alarm = 0; if (floatval($data['battery']) < 3.3) $alarm += 4; $uuid = 'c0ffeeee-cafe-dead-bee0-' . sprintf("%06x", 0xffffff - floatval($data['ID'])) . sprintf("%06x", floatval($data['ID'])); $topic = 'mbv1.0/ispindels/DBIRTH/' . $node; $payload = '{"unit":{"uuid":"' . $uuid .'","alias":"' . $data['name'] . '","alarm":' . $alarm . ',"interval":' . $interval; $payload .= ',"angle":' . $data['angle'] . ',"temperature":' . $tempC . ',"battery":' . $data['battery'] . ',"gravity":' . $plato . '}}'; $pub = $publisher . $topic . ' -m \'' .$payload . '\''; exec($pub); } ?>