Ocena wątku:
  • 1 głosów - średnia: 5
  • 1
  • 2
  • 3
  • 4
  • 5
LCD Switcher
#1
(firmware >1.43 Hw >3.5 posiada już zinterpretowane to rozwiązanie a poniższe pliki nie będą działać prawidłowo)

Wspominałem już ze LCD po czasie pracy na tych samych informacjach wypala pixele,
właśnie zamówiłem nowy bo dotychczasowy jest w stanie jak widać na filmie i w związku z tym by nie dojechać nowego napisałem prosty kod który umożliwia nam zmianę wyświetlanej informacji przy użyciu jednego z wejść np INPD4



w zdarzeniach dodajemy event jeśli INPD4 = 1 ==> http4 a jako ciąg http4 wstawiamy url do naszego pliku który zamieszczamy na dowolnym serwerze  => zmiana ręczna ekranu

lub url do naszego pliku wywołujemy cyklicznie czyli ustawiamy jako adres serwera1  => zmiana cykliczna ekranu

Kod PHP:
<?php
include_once('CONFIG.PHP');

//$ip = '192.168.1.100';  //odkomentowac dla stalego ip 
$context stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " base64_encode("$username:$password")
    )
));

function 
set_val($param$value){
    $fileData file('CONFIG.PHP');
    $newArray = array(); $jest 0;
    foreach($fileData as $line) {
      if (strpos($line$param.' = ')) { //jesli linia ma parametr to zmiana + opis
          if (strpos($line'/')){$opis substr($linestrpos($line'/'), strlen($line));} else {$opis "\n";} 
        $line '$'.$param.' = \''.$value.'\';        '.$opis$jest 1;
      }
      if (strpos($line'*end*') && $jest == 0){$line '$'.$param.' = \''.$value.'\';'."\n".'/*end*/'."\n";}
      $newArray[] = $line;
    }
     $fp fopen('CONFIG.PHP''w');
    fwrite($fpimplode("",$newArray));
    fclose($fp);
}

function 
test($data,$pn){    //sprawdzanie poprawności składni i kodowanie url
    
if(substr_count($data'*') != 4){$data "1* *  config data* error line ".$pn."* ";}
    
return  str_replace(array('%',' '), array('!','%20'), $data);
}

$ips getenv("REMOTE_ADDR") ; 
if (
$ips != $ip){set_val('ip'$ips);}  //zapis ip jeśli zmieniono

if ($pn < (count($panel)-1)){set_val("pn",$pn+1); } else {set_val("pn","0"); }  //zapis nr tablicy

$url test($panel[$pn],$pn);

//***************************** send info *********************************//
set_error_handler( function ($s$m$f$l) { throw new ErrorException($m$s$s$f$l); });
try { 
file_get_contents('http://'.$ip.':'.$port.'/stm.cgi?oled='.$urlfalse$context); }
catch (
Exception $e) { $url $e->getMessage(); }
restore_error_handler();

    
//echo $url;  
    
?>
i plik configu

Kod PHP:
<?php
$username 
'admin';        //user LK
$password 'admin';            //pass LK
$ip '10.10.2.100';        //ip   LK
$port '80';            //port LK
$pn '0';        


//********nie przesuwać poniższych lini jako pozycji *************//
$panel = array(
"1* *    %06900 * * ",                                                     ///panel 1  Każda z tych linii jest kodem ustawień ekranu OLED
"1*   OGRZEWANIE*Zasobnik   %01910*Wymiennik  %01610*Kociol     %01810",   ///panel 2  Każde z wywołań pliku powoduje wysłanie do LK ustawień
"1*     SOLAR*Solar      %01710*Wymiennik  %01610*Pompa %043    %02210",   ///panel 3  kolejno jednej linii i wyświetlenie jej na ekranie OLED
"1*    POGODA*Temp:     %01410'C*Cisn:     %05912*Wilg:     %01510 %",     ///panel 4  aż do następnej zmiany - wyświetlenie ostatniej 
"1*     INFO*----*--*--",                                                  ///panel 5  powoduje znów wyświetlenie pierwszej itd...
);

?>
Ilość paneli zasadniczo dowolna kolejne dodajemy np kopiując jako nowa linię INFO i odpowiednio edytując, Pamiętając ze panel musi zawierać 4 linie rozdzielone * a każda z linijek txtu LCD musi zawierać minimum jeden znak lub spacje!

Możesz zobaczyć jak to wygląda aktualnie na twoim ekranie OLED 192.168.1.100/xml/oled.xml i wkleić do kodu

np: pusty ekran to

Kod:
"1* * * * ",
działanie na filmie poniżej ale lepiej przetestować samemu Smile inpd4 do plusa i mamy zmianę ekranu z informacją
licencja freeuse wszelkie pomysły dalszego rozwoju kodu mile widziane...

e-chata.hyzne.com | LK1 - sterowniki akwarystyki | LK2 - sterowniki ihome | LK3 - niezliczone ilości wersji/nakładek na farmach PV i nie tylko | LK4 - testy bezprzewodowe
Odpowiedz


Wiadomości w tym wątku
LCD Switcher - przez stAch - 09-03-2021, 03:44 PM
RE: LCD Switcher - przez marcinb - 09-05-2021, 11:07 AM
RE: LCD Switcher - przez stAch - 09-05-2021, 04:58 PM
RE: LCD Switcher - przez marcinb - 09-06-2021, 10:18 AM
RE: LCD Switcher - przez stAch - 09-06-2021, 10:20 AM
RE: LCD Switcher - przez wilkxt - 09-08-2021, 07:37 AM
RE: LCD Switcher - przez stAch - 09-08-2021, 02:38 PM
RE: LCD Switcher - przez wilkxt - 09-08-2021, 02:57 PM
RE: LCD Switcher - przez stAch - 09-09-2021, 09:21 AM

Skocz do:


Użytkownicy przeglądający ten wątek: 3 gości