Автоматическое обновление кода PHP внутри скрипта Java - PullRequest
0 голосов
/ 14 октября 2019

Я создаю небольшую веб-страницу для мониторинга на своем Пи, чтобы отслеживать некоторые показания мощности с измерителя мощности.

В настоящее время я добавляю некоторые датчики в настройку, чтобы она выглядела довольно красиво, ядля этого я использую Canvas-gauges (https://canvas -gauges.com / ).

У меня есть фоновый скрипт на Python, который извлекает данные из счетчика и затем сохраняет их вфайл каждую минуту, к которому я затем обращаюсь через PHP для отображения данных на стороне веб-страницы. У меня есть данные, отображаемые в виде текста, который автоматически обновляется, но датчик собирает переменную при запуске, а затем никогда не изменяется, см. Код ниже:

...Some code...

<?php
            $dataFile = "data/Data.txt";
            if (file_exists($dataFile)) {
                chmod($dataFile, 0777);
            } else {
                echo "The file $dataFile does not exist";
            }
            $dataLines = file($dataFile);
            $volts = $dataLines[3];
            ?>

...Some code...

<div id="voltsR" class="voltsR">
                    <?php echo "The Voltage is $volts V";
                    ?>
</div>
<canvas id="voltG">
</canvas>


...Some Code...

        <script type="text/javascript">
            setInterval("reload();",10000); <!-- time in milliseconds -->
            function reload() {
                $("#voltsR").load(location.href+" #voltsR");
                voltGr.update({value: <?php echo $volts ?>});
            }
        </script>
        <script>
        var voltGr = new RadialGauge ({
        renderTo:"voltG",
        width:"150",
        height:"150",
        units:"V",
        title:"Volts",
        minValue:"0",
        maxValue:"300",
        majorTicks:"0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300",
        minorTicks:"2",
        strokeTicks:"false",
        highlights:[
                { "from": 0, "to": 210, "color": "rgba(166, 28, 28, .25)" },
                { "from": 210, "to": 245, "color": "rgba(28, 166, 28, .25)" },
                { "from": 245, "to": 300, "color": "rgba(166, 28, 28, .25)" }
        ],
        colorPlate:"#222",
        colorMajorTicks:"#f5f5f5",
        colorMinorTicks:"#ddd",
        colorTitle:"#fff",
        colorUnits:"#ccc",
        colorNumbers:"#eee",
        colorNeedleStart:"rgba(240, 128, 128, 1)",
        colorNeedleEnd:"rgba(255, 160, 122, .9)",
        valueBox:"true",
        animationRule:"bounce",
        animationDuration:"500",
        fontValue:"Led",
        animatedValue:"true"});
        voltGr.draw();
        voltGr.value = <?php echo $volts ?>;
        </script>




Что происходит: В настоящее время происходит то, что текстовый раздел кода будет обновляться каждые 10 секунд, и через минуту он будет отображать недавно извлеченные данные $ вольт из текстового файла, т. Е. Первое чтение будет выглядеть как «Напряжение равно 241,567 В. "и через минуту он будет читать как:" Напряжение составляет 240,345 В "

Датчик будет читать первое чтение как 241,567 и отображать это правильно, однако через минуту значение не изменится на новое значение.

Если я щелкну правой кнопкой мыши -> осмотреть веб-страницу, я вижу, что переменная $ volts не обновилась в разделе Java Script внизу, но обновилась в div VoltsR.

Как мне получить оба значения для обновления соответственно?

Спасибо,

1 Ответ

0 голосов
/ 01 ноября 2019

Крис Дж помог мне добраться туда, где я хотел быть:

Я создал отдельный php-файл, который извлекал данные из файла (/data/getData.php), а затем использовал команду $.get(), чтобы вытащитьэти данные очень часто и обновите график:

setInterval(reload, 10000); // time in milliseconds
function reload() {
  $("#voltsR").load(location.href + " #voltsR");
  $.get("/data/getData.php", function (valString) {
    voltGr.update({ value: parseFloat(valString, 10) });
  });
}
...