Supla Virtual Device – Obliczanie Punktu Rosy

2022-11-04 9 Przez klimas

Temperatura punktu rosy lub punkt rosy – temperatura w której może rozpocząć się proces skraplania gazu lub wybranego składnika mieszaniny gazów przy ustalonym ciśnieniu.

Co potrzebujemy?
– Serwer z Supla Virtual Device
– Zainstalowane php
– Wygenerowany link bezpośredni do temperatury i wilgotności

Jak obliczyć taki Punkt Rosy ? Używamy poniższego wzoru:

Rysunek 1 – Wzór na obliczenie punktu rosy

Teraz musimy to obliczyć pobierając dane temperatury i wilgotności. Dane pobierzemy sobie z JSONA i wykonamy obliczenia w PHP. Następnie te dane zapiszemy do pliku txt.

Przechodzimy do folderu gdzie mamy zainstalowane Supla Virtual Device w moim przypadku wykonuje komendę:

cd /home/pi/appdata/supla-virtual-device/

Tworzymy folder dla naszego skryptu liczącego:

mkdir punkt-rosy

Przechodzimy do tego folderu komendą:

cd punkt-rosy

Teraz tworzymy plik gdzie będą przechowywane nasze dane:

touch sensor_tpr.txt

Gdy już mamy plik tekstowy na nasze dane tworzymy nasz skrypt wykonujący.

nano sensor_tpr.php

Teraz wklejamy poniższy kod i uzupełniamy link bezpośredni który wygenerowaliśmy na stronie cloud.supla.org z dopisanym na końcu adresu po read „?format=json”.

<?php
// Temperatura i Wilgotność
$jsonth = file_get_contents('https://svrXX.supla.org/direct/XXXX/aBcDeFgHiJ/read?format=json');
$datath = json_decode($jsonth);
$temperatura = round($datath->temperature,2);
$wilgotnosc = round($datath->humidity,2);

// Punkt Rosy
$licztpr = pow($wilgotnosc/100,1.0/8.0)*(112+(0.9*$temperatura))+0.1*$temperatura-112;
$tpr = round($licztpr,2);

// Folder zapisu pliku
$folder = "/home/pi//appdata/supla-virtual-device/punkt-rosy";

// Otwarcie pliku do zapisu
$fp = fopen("$folder/sensor_tpr.txt", "w");

// Zapisanie danych
fputs($fp, $tpr);

// Zamknięcie pliku
fclose($fp);
?>

Pamiętaj aby jeszcze podać ścieżkę do folderu gdzie znajdują się pliku skryptu i policzonego punktu rosy. Odpowiada za to zmienna „$folder”.

Testujemy działanie naszego skryptu wykonując komendę:

php sensor_tpr.php

W celu weryfikacji zaglądamy do pliku „sensor_tpr.txt” dowolnym edytorem tekstowym lub przy użyciu komendy „cat sensor_tpr.txt”. Jeżeli dane się zapisują to super, udało Ci się poprawnie stworzyć skrypt.

Kolejnym krokiem jest dodanie kanału w temperatury w konfiguracji SVD. Zrobimy to edytując plik „supla-virtual-device.cfg” który znajduje się w folderze gdzie mamy zainstalowany Supla Virtual Devce.

[GLOBAL]
device_name=SUPLA-VDB

[SERVER]
host=svrXX.supla.org
protocol_version=12

[AUTH]
[email protected]

[CHANNEL_0]
function=TEMPERATURE_AND_HUMIDITY
file=/home/pi/appdata/supla-virtual-device/supla-mi-th/sensor_th0.txt
battery_powered=1
file_write_check_sec=120

[CHANNEL_1]
function=TEMPERATURE
file=/home/pi/appdata/supla-virtual-device/punkt-rosy/sensor_tpr.txt
file_write_check_sec=120

W moim przypadku dopisałem kanał z numerem 1. Jak widzimy musimy podać funkcję, ścieżkę do pliku sensor_tpr.txt oraz co ile sekund ma być sprawdzany zapis pliku.

Zapisujemy konfigurację i włączmy w chmurze rejestrację nowych urządzeń:

Rysunek 2 – Włączanie rejestracji urządzeń na cloud.supla.org

Gdy już wszystko działa tworzymy automatyczną aktualizację danych w pliku. Aby to zrobić dopisujemy w konfiguracji crona (crontab -e)

# Supla Virtual Device
  */1 * * * * php /home/pi/appdata/supla-virtual-device/punkt-rosy/sensor_tpr.php

Aby zmienić czas co ile ma się aktualizować punkt rosy zmieniamy parametr „*/1 * * * *” – co minutę lub np rzadziej „*/5 * * * *” – co 5 minut. Przyda się jakby za szybko kończył nam się limit zapytań do API SUPLA.

Ostatnim krokiem jest szybka aktualizacja danych w pliku tekstowy i restart SVD:

php sensor_tpr.php &&  supervisorctl restart supla-virtual-device

W aplikacji wygląda to tak jak na poniższym obrazku:

Rysunek 3 – Odczyty w aplikacji na telefonie

Jeszcze tylko dodać odpowiednią ikonkę która się będzie wyświetlać w aplikacji.

Rysunek 4 – Ikona punktu rosy

Jeżeli masz pytania zostaw komentarz a jeżeli spodobał Ci się poradnik udostępnij linka dalej 😉