Supla Virtual Device – Obliczanie Punktu Rosy
2022-11-04Temperatura 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:
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ń:
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:
Jeszcze tylko dodać odpowiednią ikonkę która się będzie wyświetlać w aplikacji.
Jeżeli masz pytania zostaw komentarz a jeżeli spodobał Ci się poradnik udostępnij linka dalej 😉
bardzo fajny pomysł, super <3 czekałem na takie rozwiązanie
a jak zainstalować PHP ?:)
Możesz to zrobić wg. dowolnego poradnika z Internetu. W google znajdziesz pod hasłem „debian instalacja php”
Podsyłam przykładowy link: https://verbu.pl/epub/51/php_w_przykladach/devenv_1.html
Ten skrypt nie zawiera błędu bo u mnie nie działa? Po komendzie „php sensor_tpr.php” dostaję odpowiedz „-bash: php: command not found” Nic nie zapisuje w pliku „sensor_tpr.txt” W czym może być problem?
A co zwraca Ci komenda: „php -version” ?
Możliwe że nie masz zainstalowanego php.
pewnie nie mam php
dostaje cos takiego
-bash: php: command not found
Zainstaluj php. W Google znajdziesz wiele poradników pod hasłem „debian instalacja php” Przykład jeżeli używasz Debiana.
Mam bramkę SVD postawiona na Rasberrpi 0 w i nie mogę zainstalować php na tym rasberry mimo rożnych poradnikow
A możesz pokazać jakiej komendy używasz i jakie błędy masz ?