ZEVERSOLAR TLC6000 Import danych do Smart Home

182 Wyświetleń

ZEVERSOLAR TLC6000 Import danych do Smart Home

Po długich analizach i czasochłonnych przeliczeniach, stało się. Fotowoltaika zainstalowana w domu. Nareszcie można cieszyć się z energii wyprodukowanej ze słońca. Tylko ile tej energii się dzisiaj wyprodukowało? Biegnę do falownika, sprawdzę na wyświetlaczu… Tylko, że takie codzienne bieganie może w końcu człowieka zmęczyć. Czas na jakąś automatyzację tego procesu 🙂

W mojej instalacji zamontowany jest inwerter  ZEVERSOLAR TLC6000 z Wi-Fi. Można odczytywać z niego informacje po magistrali RS485 lub po LAN łącząc go z domową siecią Wi-Fi. Niestety ilość parametrów, które można odczytać po sieci LAN nie powala, ale na moje potrzeby jest wystarczająca.  W kilku następnych akapitach przedstawię Wam mój sposób na integrację inwertera z systemem Nettemp (z Domoticz po nie wielkich zmianach), który pracuje u mnie w domu.

Jak odczytać dane z inwertera ZEVERSOLAR

Aby otrzymać podstawowe dane na temat produkowanej obecnie przez instalację energii elektrycznej wystarczy wpisać w adresie przeglądarki internetowej następujący link:

http://adres_ip_inwertera/home.cgi/ i nacisnąć ENTER. Po wykonaniu zapytania otrzymamy w oknie przeglądarki następujący wynik:

zeversolar_tlc6000

W powyższym ciągu mamy informację o numerze seryjnym inwertera, czasie, dacie, chwilowej mocy instalacji, sumie wyprodukowanej dzisiaj energii oraz status inwertera. Nas interesują pozycje zaznaczone na czerwono, czyli chwilowa ilość produkowanej energii, suma wyprodukowanej energii w ciągu dnia oraz status inwertera.

zeversolar_tlc6000

Stąd już prosta droga do integracji z nettempem. Wystarczy napisać prosty skrypt np. w php i dodać go do crona tak, żeby uruchamiał się co minutę, robił odczyt i zapisywał dane do bazy w nettempie.

<?php

$ROOT='/var/www/nettemp';
include("$ROOT/receiver.php");
$status2 = 3 ;
$hour = date('H');

$url = "http://192.168.150.18/home.cgi/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
if(!empty($post)) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$inputdata = curl_exec($ch);
curl_close($ch);

$inputdata_expl = explode("\n", $inputdata);

$peak = $inputdata_expl[10];
$total = $inputdata_expl[11];
$status = $inputdata_expl[12];

if ($status == 'OK') {$status2 = 0 ;}
if ($status != 'OK') {$status2 = 1 ;}

$dba = new PDO ("sqlite:/var/www/nettemp/dbf/nettemp.db") or die ("Cannot open database");
$sth = $dba->;query("SELECT time, tmp from sensors WHERE rom = 'falownik_total'");

$row = $sth->;fetchAll();

foreach ($row as $row){
$date = $row['time'];
$val = $row['tmp'];

if (($val >= $total) && $hour < 23) {

$total = $val;
}

}

db('falownik_peak',$peak,'watt','ip',$local_current,'192.168.150.18',$local_gpio,$local_i2c,$local_usb,$local_name);
db('falownik_total',$total,'kwatt','ip',$local_current,'192.168.150.18',$local_gpio,$local_i2c,$local_usb,$local_name);
db('falownik_status',$status2,'trigger','LOCAL',$local_current,'192.168.150.18',$local_gpio,$local_i2c,$local_usb,$local_name);
?>;

Po wykonaniu powyższego skryptu w nettempie pojawią się nowe sensory z odczytami z inwertera.

 

zeversolar_tlc6000_nettemp

0 komentarzy

Napisz komentarz