Odp: USB Relay - plugin do Gargoyle
prawie dobrze. Teraz sobie to przerób żeby zwracało w formacie
1:on
2:off
Bo takie są wymagania pluginu. Zwykły if w kodzie i będzie działać.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → USB Relay - plugin do Gargoyle
Strony Poprzednia 1 … 13 14 15 16 17 … 23 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
prawie dobrze. Teraz sobie to przerób żeby zwracało w formacie
1:on
2:off
Bo takie są wymagania pluginu. Zwykły if w kodzie i będzie działać.
Udało mi się zrobić, aby status wyglądał tak jak ma być.
Zmodyfikowałem kod karty, teraz po zapytaniu np. "echo -ne "0112\r > /dev/ttyS0" zwraca tylko "on" lub "off"
a "1:" itd. pobiera ze skryptu ![]()
Kolego Cezary podpowiedz jeszcze jak to uruchomić na Debianie, aby się wyświetlały ikonki itp. itd.
Nie uruchomisz tego na debianie. Nie jest to samodzielny interfejs www.
uuu... no to kiszka ![]()
W domu mam jeszcze terminal HP T5710 z openWRT nada się?
Chociaż wolałbym to zrobic na Debianie. Kolega wabikboy pokazywał tu na forum (nie mogę teraz znaleźć tego tematu) swoj sposób na sterowanie przekaźnikami przez www-nada się to na Debiana?
Pod gargoyle dokładnie. Powinien.
Jeśli chodzi o ten temat na końcu, to jest zrobione na openwrt gdzie już jest serwer www, więc jak postawisz sobie na Debianie taki serwer to nie widzę problemu.
wabikboy
możesz coś więcej powiedzieć na temat swojego rozwiązania-co i jak?
Jest to prosta strona która odczytuje stan przekaźnika i wysyła do niego odpowiednie polecenie.
Jeśli chcesz więcej informacji napisz co konkretnie chcesz wiedzieć
Jak postawić taką prosta stronę i jak sterować przekaźnikami ![]()
Tylko jest problem, a nawet dwa: to nie "Power switch" i mam Debiana.
Więc
1. problem to nie problem bo skoro wysyłasz polecenie i dostajesz odpowiedz o stanie to w identyczny sposób działa Power Switch.
2. problem. Nie bawiłem się debianem ale sądzę że postawienie serwera www wygląda podobnie jak na ubuntu.
teraz robisz stronę na której po kliknięciu w przycisk wysyłasz polecenie do przekaźnika.
Jak się tak upierasz przy debianie to musisz poszperać po necie albo może tu Ci ktoś pomoże bo jak się jednak zdecydujesz na openwrt to wyślę Ci gotowca którego mam do Powerswitch'a i sobie przerobisz.
Tzn. serwer www php itp. już u mnie jest postawiony i działa. Bardziej mi chodzi o to jak stworzyć stronę z "guziczkami" aby można było sobie sterować tym wszystkim.
Jak możesz to prześlij mi tez tego "gotowca" do Powerswitch'a na pimowo(malpa)gmail.com
Panowie,
Mam takiego "stwora":
<?
if($_GET[on] == "on"){
$message = shell_exec("/var/www/power.sh on 1");
header("Location: test.php");
exit;
}
if($_GET[off] == "off"){
$message = shell_exec("/var/www/power.sh off 1");
header("Location: test.php");
exit;
}
$relay1 = trim(shell_exec("/var/www/power.sh status 1"))
?>
<html>
<?php
if($relay1 == "on" )
echo '<a href="?off=off"><img style="width: 50px; height: 50px;" src="images/on.png"></a>';
else
echo '<a href="?on=on"><img style="width: 50px; height: 50px;" src="images/off.png"></a>';
?>
</html>i do tego skrypt /power.sh
#!/bin/bash
case "$1" in
off)
[ $2 = "1" ] && echo -ne "0510\r" > /dev/ttyS0
[ $2 = "2" ] && echo -ne "0520\r" > /dev/ttyS0
[ $2 = "3" ] && echo -ne "0530\r" > /dev/ttyS0
;;
on)
[ $2 = "1" ] && echo -ne "0511\r" > /dev/ttyS0
[ $2 = "2" ] && echo -ne "0521\r" > /dev/ttyS0
[ $2 = "3" ] && echo -ne "0531\r" > /dev/ttyS0
;;
status)
[ $2 = "1" ] && echo -ne "0512\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
[ $2 = "2" ] && echo -ne "0522\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
[ $2 = "3" ] && echo -ne "0532\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
;;
stan)
echo -n "1:"
echo -ne "0512\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
echo -n "2:"
echo -ne "0522\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
echo -n "3:"
echo -ne "0532\r" > /dev/ttyS0 && grep -m1 "" /dev/ttyS0
;;
esac
exit 0I teraz tak, wszystko jest fajnie, pięknie, ikonki on/off podstawiają sie do aktualnego stanu przekaźnika, ale jak zrobić więcej "guzików"?
Tzn. "guziki" sobie zrobię, ale mam problem z odczytaniem stanu dla większej ilości "guzików" ![]()
Jak to zrobić, aby stan się ustawiał zawsze dla wszystkich jednocześnie poprzez jedno zapytanie czy odświeżenie strony?
Masz trzy, to teraz przerób skrypt żeby odczytywał całą 100 jak chciałeś.
Te trzy to tylko dla testów...
Chodzi mi o to jak to zrobić na stronie odnośnie tych statusów.
Na wet dla tych trzech mam problem opanować ich stan ![]()
TO po pokazałeś to fragment strony. Działają Ci te statusy dla 3 czy nie?
Nie działają mi statusy bo jak dam np. trzy guziki to już przy wczytywaniu strony jest problem-wszystkie trzy wysyłają zapytanie o status i wszystkie czekają na odpowiedz. Przez tyle pytań i odpowiedzi jednocześnie blokuje się magistrala bo poprzez RS485 dane mogą płynąć tylko w jedna stronę w danym czasie ![]()
Ale przecież to skrypt robi, więc dodaj sobie sleep pomiędzy.
Tyle że w ten sposób odpytanie 100 mija się z celem, więc zrób sobie tak żeby wszystkie na raz odpowiadały a ty to przeparsuj.
więc zrób sobie tak żeby wszystkie na raz odpowiadały a ty to przeparsuj.
Właśnie nie wiem jak to ugryźć.
Wysyłam "/power.sh stan" i otrzymuję:
1:on
2:off
3:off
itd.wynik przefiltrować dla każdego guzika i każdemu stan podstawić. Chyba musiało by być, że za każdym kliknięciem jakiegoś guzika przeładowanie strony i stan podstawiany dla wszystkich.
I tak ma być. Skoro masz możliwość to możesz sobie przerobić kod w sterowniku żeby po poleceniu np.
echo -ne "9999999\r" > /dev/ttyS0
Zwracało wynik dokładnie w w/w formie. Nawet nie będziesz musiał nic parsować.
I tak ma być. Skoro masz możliwość to możesz sobie przerobić kod w sterowniku żeby po poleceniu np.
echo -ne "9999999\r" > /dev/ttyS0
To już bym musial "rozwalic" cały program w karcie.
Zwracało wynik dokładnie w w/w formie. Nawet nie będziesz musiał nic parsować.
Ten sposób wydaje mi się, że jest ok. Karty maja swoje adresy, a dzięki temu skryptowi wszystko w nim definiuje-nr karty i nr przekaźnika i na wyjściu mam już tylko "1:", "2:", itd.
Więc musisz po prostu odczytywać kartą kartę o wszystkie przekaźniki a potem to ładnie skryptem obrobić jeżeli jest potrzeba
Już prawie wszystko mam zrobione. Problemem u mnie okazał się program na karcie przekaźników.
Cezary, możesz mi podpowiedzieć jak to zrobić, aby polecenie w skrypcie:
echo -ne "0112\r" > /dev/ttyACM0 && grep -m1 "" /dev/ttyACM0czekało max 1 sekundę na odpowiedz i zakończyło swoje działanie?
Jeżeli dostanie odpowiedz to natychmiast kończy swoje zadanie, a jak nie dostanie odpowiedzi w określonym czasie to tez kończy swoje zadanie.
grep -m1 "" /dev/ttyACM0 to jest źle. Zamiast "" daj jakiś ciąg tekstu, wtedy w nieskończoność będzie czekało na to.
A czy to jest poprawne?
echo -ne "0112\r" > /dev/ttyACM0 && grep -m1 "1:" /dev/ttyACM0 | sed -e 's/^1://'Karta teraz zwraca "1:on" lub "1:off" sed wycina "1:" i zostaje mi on/off-potrzebuje samo on/off.
Ale nadal skrypt "wisi" jeżeli nie otrzyma "1:on" lub "1:off"
Jak go zatrzymać jeżeli odpowiedz jest inna, brak odpowiedzi czy tam jeszcze coś nie tak przez określony czas?
Bo tak właśnie grep działa - czeka aż sie to pojawi. Możesz przed wykonaniem tego polecenia uruchomić np. (sleep 10; killall grep) & co spowoduje że ubije wszystkie grep po 10s.
Strony Poprzednia 1 … 13 14 15 16 17 … 23 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → USB Relay - plugin do Gargoyle
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc