176

(321 odpowiedzi, napisanych Oprogramowanie / Software)

w /etc/init.d/mpd masz konfig który woła nazwę karty 'PCM' a Twoja nazywa się 'Speaker'

Temat rozwiązany.
Dziwne trzeszczenie które występuje w dystrybucji Xbian, na Raspbmc tego problemu niema, widocznie coś jest sknocone w sterownikach dźwięku.

178

(14 odpowiedzi, napisanych Oprogramowanie / Software)

A masz wykupioną licencję bo nie wszystko działa z akceleracją

Tu jest trochę o Omxplayer, ja osobiście tego nie używam ale testowałem HD i chodzi płynnie.

179

(14 odpowiedzi, napisanych Oprogramowanie / Software)

Jeszcze zobacz Xbiana też daje rade ale skoro Ci tnie na innych to wszystko co z XBMC jest to sobie odpuść bo on sam zjada zasoby procesora.
Zainstaluj sobie Raspbiana do tego co potrzebujesz w zupelnosci wystarczy.

180

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Ok masz racje z czasami tylko jeśli chodzi o nie robienie bałaganu to skrypt zrobić  w /usr/lib/gargoyle/ i jako oddzielny plik czy w samym /usr/lib/gargoyle/usbrelay.sh

w oddzielnym pliku na pewno będzie to mniej zasobożerne, dlatego wolę znać Twoje zdanie

181

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Cezary napisał/a:
wabikboy napisał/a:

@Cezary jak oceniasz bieżącą wersję. Coś byś zmienił ??

Zasadę działania smile

A więcej szczegółów ??

Działać działa ale jak możesz podpowiedzieć jak może działać efektywniej lub co zmienić w kodzie to słucham smile

182

(572 odpowiedzi, napisanych Oprogramowanie / Software)

@Cezary jak oceniasz bieżącą wersję. Coś byś zmienił ??

183

(572 odpowiedzi, napisanych Oprogramowanie / Software)

@krynio Może chodzi o to że sesja logowania wygasa, ale to tylko przypuszczenie. Zapamiętuje po wylogowaniu bo pliki cookie ustawione są na 7 dni ale tylko w ostatnio używanej przeglądarce, jak otworzysz w innej będzie domyślnie.

@roblad ja nie znam podstaw smile , tylko czytam i biorę na logikę, a jeśli mnie zawodzi to dalej czytam, ew. truję d...pe Cezaremu który potrafi nakierować smile co właśnie pozwala nauczyć się czegoś, jeśli się nie wyrabiasz, nie zaczynaj kilku rzeczy na raz, bawisz się jednym, poznaj, opanuj, bierz się za następne.

Też nie mam czasu na takie rzeczy bo robię to w wolnej chwili w pracy, lub wieczorami igrając z żoną smile i pomiędzy zabawą z dzieckiem.

P.S.
Jak będzie więcej chętnych to zmienię na plik w routerze, ewentualnie może ktoś będzie się chciał sam pobawić

184

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Ok wersja poprawiona, działanie niezależne przycisków.

/*
 * This program is copyright © 2014 Cezary Jackiewicz and is distributed under the terms of the GNU GPL
 * version 2.0 with a special clarification/exception that permits adapting the program to
 * configure proprietary "back end" software provided that all modifications to the web interface
 * itself remain covered by the GPL.
 * See http://gargoyle-router.com/faq.html#qfoss for more information
 */

usbrelayS = new Object();

var flaga = new Array();
var flagaset = "1"

function createEnabledCheckbox()
{
    enabledCheckbox = createInput('checkbox');
        return enabledCheckbox;
}

function createEnabledTextbox()
{
    enabledTextbox = createInput('textbox');
    enabledTextbox.size = "1";
    return enabledTextbox;
}

function getCookie(name){
  var str = '; '+ document.cookie +';';
  var index = str.indexOf('; '+ escape(name) +'=');
  if (index != -1) {
    index += name.length+3;
    var value = str.slice(index, str.indexOf(';', index));
    return unescape(value);
  }
}

function setCookie(nazwa, wartosc, dni) {
    if (dni) {
        var data = new Date();
        data.setTime(data.getTime()+(dni*24*60*60*1000));           
        var expires = "; expires="+data.toGMTString();
    } else {
        var expires = "";
    }
    document.cookie = nazwa+"=" + wartosc + expires + "; path=/";
}

function chboxcookie(node)
{
    var row = node.parentNode.parentNode.firstChild.firstChild.data
    var pulscheck = document.getElementById("push" + row);
    setCookie("checkps" + row, pulscheck.checked, "7")

    resetData();
}

function tboxcookie(node)
{
    var row = node.parentNode.parentNode.firstChild.firstChild.data
    var timeset = document.getElementById("times" + row);
    setCookie("textps" + row, timeset.value, "7")
}

        
function resetData()
{
    var columnNames = usbrelayS.Columns;
    var usbrelayTableData = new Array();
    var serviceIds = new Array();

    if (ports.length == 0)
    {
        document.getElementById("no_usbrelay").style.display = "block";
        return;
    }

    for (idx=0; idx<ports.length; idx++)
    {
        
        if (flagaset == "1")
        {
        flaga[ports[idx][0]] = "1"
        }

        var img = document.createElement("img");
        img.style.cssText= "margin-top:5px;";

         var enabledCheckbox = createEnabledCheckbox();
        enabledCheckbox.id = "push" + ports[idx][0]
         var enabledTextbox = createEnabledTextbox();
        enabledTextbox.id = "times" + ports[idx][0]


        if (getCookie("checkps" + ports[idx][0]) == "true") 
        { 
        enabledCheckbox.checked = true

        } else {
        enabledTextbox.disabled = true
        }


        if (getCookie("textps" + ports[idx][0]) != null)
        {
        enabledTextbox.value = getCookie("textps" + ports[idx][0]);
        }
       if (ports[idx][1] == "on")
        {

            img.src = "img/green-power-button.png";
            img.onclick = function(){offRelay(this);}
            
        } else {

            img.src = "img/red-power-button.png";
            img.onclick = function(){onRelay(this);}
        }

        enabledCheckbox.onchange = function(){chboxcookie(this);}
        enabledTextbox.onchange = function(){tboxcookie(this);}

        var tmp = uciOriginal.get("usbrelay", "desc", ''+ports[idx][0])
        if (tmp == "") { tmp = "..."; }
        var anchor = document.createElement("a");
        anchor.href="usbrelay_schedule.sh?port=" + ports[idx][0];
        anchor.innerHTML = tmp;
        anchor.style.css = "a{text-decoration:none}";

        usbrelayTableData.push([ports[idx][0], anchor, img, enabledCheckbox, enabledTextbox]); 
    }
    flagaset = "0"
    var usbrelayTable = createTable(columnNames, usbrelayTableData, "usbrelay_table", false, false);
    var tableContainer = document.getElementById('usbrelay_table_container');
    if (tableContainer.firstChild != null)
    {
        tableContainer.removeChild(tableContainer.firstChild);
    }
    tableContainer.appendChild(usbrelayTable);

}

function onRelay(node)
{
    onoffRelay(node.parentNode.parentNode, "on");
}

function offRelay(node)
{
    onoffRelay(node.parentNode.parentNode, "off");
}

function onoffRelay(row, action)
{
    var port = row.firstChild.firstChild.data;
    var czass = document.getElementById("times" + port).value;
   var pulscheck = document.getElementById("push" + port);
    var cmds = [ "/usr/lib/gargoyle/usbrelay.sh " + action + " " + port, "/usr/lib/gargoyle/usbrelay.sh status" ];
    var param = getParameterDefinition("commands", cmds.join("\n")) + "&" + getParameterDefinition("hash", document.cookie.replace(/^.*hash=/,"").replace(/[\t ;]+.*$/, ""));

    var stateChangeFunction = function(req)
    {
        if(req.readyState == 4)
        {
            var lines = req.responseText.split(/[\r\n]+/);
            ports.length = 0;
            for (idx=0; idx < lines.length; idx++)
            {
                if (lines[idx].match(/:o/))
                {
                    stat=lines[idx].split(":");
                    ports.push([ stat[0], stat[1] ]);
                }
            }
                if (pulscheck.checked)
                {
                    if (flaga[port] == "1")
                    {
                        if (action == "on")
                        {
                        action = "off"
                        } else {
                        action = "on"
                        }
                    resetData();

                    flaga[port] = "0"
                    window.setTimeout( function() { onoffRelay(row, action); }, czass + "000");
                    } else {
                    flaga[port] = "1"
                    }
                }

            resetData();
            setControlsEnabled(true);
        }
    }
    runAjax("POST", "utility/run_commands.sh", param, stateChangeFunction);
}

P.S.
@roblad moje pojęcie o javascript jest takie ile przeczytam w internecie a przy tym się czegoś nauczę, a więc jak by Ci się chciało to sam byś to zrobił.
Pogrzeb sobie w skrypcie pomyśl jak to działa, a działa naprawdę intuicyjnie, a zobaczysz że dasz radę.
Tobie po prostu się nie chce, a nie nie potrafisz. smile

185

(572 odpowiedzi, napisanych Oprogramowanie / Software)

@bhb właśnie testowałem jak zasugerowałeś i u mnie jest to samo czyli jak uruchomi się kilka przekaźników to reaguje jak opisał krynio.
trzeba będzie to poprawić

186

(572 odpowiedzi, napisanych Oprogramowanie / Software)

To jeszcze zobacz czy Masz włączone ciasteczka smile w przeglądarce.

@bhb zobacz u siebie, chyba że sprawdzałeś działanie przedostatniego i ostatniego przekaźnika, jak się zachowują.

bo coś mi się zdaje że może znowu być problem z numeracją

187

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Ale zaraz zaraz piszesz że:

krynio napisał/a:

Witam,
Przetestowane i chyba bez poprawek się nie obędzie wink
1. przekaźnik ustawiony na 5 sek. i od razu włączony
2. przekaźnik ustawiony na 10 sek. i od razu włączony
3. przekaźnik ustawiony na 20 sek. i od razu włączony
Efekt
1. wyłączy się po 5 sek.
2. w ogóle się nie wyłączy (czyli cały czas ikonka zielona)
3. wyłączy się po 20 sek. (nie mierzyłem stoperem) i po około 20 sek. się samoczynnie włączy

jedyną nieprawidłową reakcją jest efekt 2 że przy ustawieniu 10 sek. nie wyłączył się przekaźnik a reszta reaguje prawidłowo.

188

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Ja też używam WinScp to nie to, na maila Ci wysłałem mój spakowany plik.

189

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Może jest wrażliwy na szybkie przełączanie,

190

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Nie trzeba robic restartu, jedynie odswiezyc przegladarke. Ale dziwne troche ze rozne czasy  i roznie dziala

testowalem na tablecie i na windowsowym google chrome i u mnie dziala n roznych czasach

191

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Kolejna poprawka, zapamiętywanie ostatniego wyboru checkbox i czasu wyłączenia.
Pamięć stanu zapisana w "cookie" więc konieczność włączenia obsługi w przeglądarce.
@Cezary czy to dobre rozwiązanie z cookie ?? jak coś to zmienię na plik.

/*
 * This program is copyright © 2014 Cezary Jackiewicz and is distributed under the terms of the GNU GPL
 * version 2.0 with a special clarification/exception that permits adapting the program to
 * configure proprietary "back end" software provided that all modifications to the web interface
 * itself remain covered by the GPL.
 * See [url]http://gargoyle-router.com/faq.html#qfoss[/url] for more information
 */

usbrelayS = new Object();

var flaga = "1"

function createEnabledCheckbox()
{
    enabledCheckbox = createInput('checkbox');
        return enabledCheckbox;
}

function createEnabledTextbox()
{
    enabledTextbox = createInput('textbox');
    enabledTextbox.size = "1";
    return enabledTextbox;
}

function getCookie(name){
  var str = '; '+ document.cookie +';';
  var index = str.indexOf('; '+ escape(name) +'=');
  if (index != -1) {
    index += name.length+3;
    var value = str.slice(index, str.indexOf(';', index));
    return unescape(value);
  }
}

function setCookie(nazwa, wartosc, dni) {
    if (dni) {
        var data = new Date();
        data.setTime(data.getTime()+(dni*24*60*60*1000));           
        var expires = "; expires="+data.toGMTString();
    } else {
        var expires = "";
    }
    document.cookie = nazwa+"=" + wartosc + expires + "; path=/";
}

function chboxcookie(node)
{
    var row = node.parentNode.parentNode.firstChild.firstChild.data
    var pulscheck = document.getElementById("push" + row);
    setCookie("checkps" + row, pulscheck.checked, "7")
}

function tboxcookie(node)
{
    var row = node.parentNode.parentNode.firstChild.firstChild.data
    var timeset = document.getElementById("times" + row);
    setCookie("textps" + row, timeset.value, "7")
}


function resetData()
{
    var columnNames = usbrelayS.Columns;
    var usbrelayTableData = new Array();
    var serviceIds = new Array();

    if (ports.length == 0)
    {
        document.getElementById("no_usbrelay").style.display = "block";
        return;
    }

    for (idx=0; idx<ports.length; idx++)
    {

        var img = document.createElement("img");
        img.style.cssText= "margin-top:5px;";

         var enabledCheckbox = createEnabledCheckbox();
        enabledCheckbox.id = "push" + ports[idx][0]

        if (getCookie("checkps" + ports[idx][0]) == "true") { enabledCheckbox.checked = true }

         var enabledTextbox = createEnabledTextbox();
        enabledTextbox.id = "times" + ports[idx][0]

        if (getCookie("textps" + ports[idx][0]) != null)
        {
        enabledTextbox.value = getCookie("textps" + ports[idx][0]);
        }
       if (ports[idx][1] == "on")
        {

            img.src = "img/green-power-button.png";
            img.onclick = function(){offRelay(this);}
            
        } else {

            img.src = "img/red-power-button.png";
            img.onclick = function(){onRelay(this);}
        }

        enabledCheckbox.onchange = function(){chboxcookie(this);}
        enabledTextbox.onchange = function(){tboxcookie(this);}

        var tmp = uciOriginal.get("usbrelay", "desc", ''+ports[idx][0])
        if (tmp == "") { tmp = "..."; }
        var anchor = document.createElement("a");
        anchor.href="usbrelay_schedule.sh?port=" + ports[idx][0];
        anchor.innerHTML = tmp;
        anchor.style.css = "a{text-decoration:none}";

        usbrelayTableData.push([ports[idx][0], anchor, img, enabledCheckbox, enabledTextbox]);
    }
    var usbrelayTable = createTable(columnNames, usbrelayTableData, "usbrelay_table", false, false);
    var tableContainer = document.getElementById('usbrelay_table_container');
    if (tableContainer.firstChild != null)
    {
        tableContainer.removeChild(tableContainer.firstChild);
    }
    tableContainer.appendChild(usbrelayTable);
}

function onRelay(node)
{
    onoffRelay(node.parentNode.parentNode, "on");
}

function offRelay(node)
{
    onoffRelay(node.parentNode.parentNode, "off");
}

function onoffRelay(row, action)
{
    var port = row.firstChild.firstChild.data;
    var czass = document.getElementById("times" + port).value;
   var pulscheck = document.getElementById("push" + port);
    var cmds = [ "/usr/lib/gargoyle/usbrelay.sh " + action + " " + port, "/usr/lib/gargoyle/usbrelay.sh status" ];
    var param = getParameterDefinition("commands", cmds.join("\n")) + "&" + getParameterDefinition("hash", document.cookie.replace(/^.*hash=/,"").replace(/[\t ;]+.*$/, ""));

    var stateChangeFunction = function(req)
    {
        if(req.readyState == 4)
        {
            var lines = req.responseText.split(/[\r\n]+/);
            ports.length = 0;
            for (idx=0; idx < lines.length; idx++)
            {
                if (lines[idx].match(/:o/))
                {
                    stat=lines[idx].split(":");
                    ports.push([ stat[0], stat[1] ]);
                }
            }
                if (pulscheck.checked)
                {
                    if (flaga == "1")
                    {
                        if (action == "on")
                        {
                        action = "off"
                        } else {
                        action = "on"
                        }
                    resetData();

                    flaga = "0"
                    window.setTimeout( function() { onoffRelay(row, action); }, czass + "000");
                    } else {
                    flaga = "1"
                    }
                }

            resetData();
            setControlsEnabled(true);
        }
    }
    runAjax("POST", "utility/run_commands.sh", param, stateChangeFunction);
}

kopiować i testować smile

192

(421 odpowiedzi, napisanych Oprogramowanie / Software)

@Cezary pytałeś o js do robienia okienka z lista plików

 <script>
 function showHint(str)
 {
 if (str.length==0)
   { 
  document.getElementById("txtHint").innerHTML="";
   return;
   }
 if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET", "/cgi-bin/budzik/lista.sh?pliki="+str,true);
 xmlhttp.send();
 }
 </script>

<select name="lista" id="txtHint" onchange="playthis(this.value)" size=10 style="width:580px;"></select>

Może być  ??

193

(142 odpowiedzi, napisanych Oprogramowanie / Software)

Nie

194

(142 odpowiedzi, napisanych Oprogramowanie / Software)

Zainstalowałem plugin DLNA i mam pytanie odnośnie tego dlaczego plugin DLNA pokazuje mi tylko pamieć wewnętrzną a brak zewnętrznej, mimo iż dysk jest zamontowany

195

(15 odpowiedzi, napisanych Mini komputery)

Konkurent dla Raspberry Pi

http://cubieboard.org/

196

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Nie, smile  teraz w przerwie w pracy wink + chwila na testy, w zasadzie tylko usunąłem kilka linijek kodu funkcji sleep, a dodałem jedną która działa lepiej smile Nie wiem dlaczego wcześniej tego nie zrobiłem, bo parę razy patrzyłem na to rozwiązanie.

197

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Chwilówki to skrypt wykonywany w przeglądarce, nie w routerze dlatego nie wykona się jeśli zmienimy zakładkę w panelu GUI

198

(572 odpowiedzi, napisanych Oprogramowanie / Software)

poprawiona wersja jest w poscie 218
działa nawet odświeżanie ikonki na czas przełączenia

199

(572 odpowiedzi, napisanych Oprogramowanie / Software)

największy problem jest właśnie z wstrzymaniem bo albo przeglądarka zwiesza się na czas ustawiony w okienku i dlatego wywala błąd że nie odpowiada albo przeskakuje od razu to co wstawiłem widzę że działa optymalnie, ale coś poszukam jeszcze bo nie może tak być aby dostosować przeglądarkę tylko skrypt ma poprawnie działać.

200

(572 odpowiedzi, napisanych Oprogramowanie / Software)

Heh,
Wszystko masz w pierwszym poście,

Ja nic nie robiłem oprócz modyfikacji "js" który masz w całości w 218 poście wystarczy skopiować kod i podmienić w /www/js/usbrelay.js, pojawią Ci się chwilówki w gargoyle.

Nic więcej niema.