Jakiś czas temu zachłysnąłem się urządzeniami wirtualnymi dla fibaro. Robiłem tego bardzo dużo i podpinałem pod przyciski i kontrolki co tylko mogłem w domu. Zacząłem od badania stanu online urządzeń podłączonych do LAN. Chciałem np. określając status podłączenia do sieci lokalnej sprawdzać czy domownik jest w domu czy go nie ma i uzależniać od tego realizację niektórych scen. Niestety jak się później okazało zdarzają się błędy odczytu stanu i raz na jakiś czas mimo tego, że telefon leżał na sole w salonie pojedynczy odczyt wskazywał opuszczenie urządzenia strefy zamieszkania. Opieranie o to scenariusza było więc strasznie ryzykowne. Ostatecznie mam oparte o to jedną scenę, która jest aktywowana tylko i wyłącznie w przypadku nieobecności wszystkich 3 telefonów. Przy braku obecności online przez 5 minut wszystkich 3 urządzeń Fibaro gasi wszystkie włączone światła i telewizor jeżeli jest włączony.

Dodatkowo wpadłem na pomysł, żeby wyłączać komputer stacjonarny syna jeżeli tego przed wyjściem nie zrobi… i tu pojawił się pierwszy stopień pod górkę. Jak Fibaro ma się „odezwać” do komputera i wydać mu polecenie?

Hop do internetu. Jedno forum drugie forum i już jest wskazówka. Z pomocą w rozwiązaniu mojego problemu przyszło mi oprogramowanie: MCE Controller (https://tig.github.io/mcec/)

Programik odpalony w tle nasłuchuje komend na porcie 5150. Bardzo proste i niesamowicie intuicyjne. W pierwszej kolejności musimy pozwolić programowi na obsługę konkretnych komend. Wybieramy tylko te które nas interesują. Są to oczywiście względy bezpieczeństwa. Na początek wystarczy potrzebny mi w tych rozważaniach „shutdown„. Ja dodatkowo mam powłączane „vol+„, „vol-” oraz „mute

Samo wywołanie wysyłanie komend do urządzenia odbywa się przez mini pliczek PHP leżący na lokalnym serwerze, który jest przez fibaro wywoływany przez odpowiednie wirtualne urządzenia:

<?php
    if (isset($_GET['IP']) && isset($_GET['CMD']))
    { // shutdown, restart, mute, vol+, vol-
        $fp = fsockopen($_GET['IP'], 5150, $errno, $errstr, 30);
        if (!$fp) {
            echo "$errstr ($errno)<br />\n";
        } else {
            $out = $_GET['CMD']."\n";
            echo $out;
            fwrite($fp, $out);  
            fclose($fp);
        }
    }
?>

Kod lua pod przycisk urządzenia wirtualnego:

MCE  = Net.FHttp ("192.168.1.120")
response = MCE:GET("/m4fibaro_mce_controller.php?IP=192.168.1.12&CMD=vol-") 

Prawda, że banalnie proste ? 🙂 Rozwiązanie sprawdza się idealnie na 4 z 5 komputerów w domu. Tylko i wyłącznie dla tego, że na moim prywatnym laptopie siedzi sobie ubuntu 🙂 aktualnie szukam analogicznego rozwiązania pod linuxa. Z góry dzięki za sugestie.

Author : m4rlb0r0

Aktualnie siedzę we frontendzie. Na co dzień koduję HTML5, CSS3 (SASS) i JavaScript na potrzeby PrestaShop. Gdy zajdzie potrzeba nurkuję w backend do PHP i MySQL gdzie zaczynałem swoją przygodę z zaawansowaną developerką. Ciągły rozwój :)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Profesjonalny Hosting