Witam,
w jaki sposób można sterować stanem przekaźnika z poziomu kodu?
Platforma: Raspberry
Cel: Dodanie polecenia do zadań CRONa żeby włączać/wyłączać lampkę.
Sterowanie zadaniami CRON'a
Należałoby użyć linux-owego klienta supla-client z tym, że to rozwiązanie trochę na około ponieważ wysyła zapytanie do serwera, a serwer do
raspberry.
Można też zmienić stan portu poprzez
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio27value
Mankamentem tego rozwiązania jest to, że aplikacje klienckie nie otrzymają powiadomienia, że np światło zostało wyłączone przez co ikonki się nie zmienią.
Idealne rozwiązanie to wysłanie odpowiedniego komunikatu do demona supla-dev co po pierwsze bezpiecznie zmieni stan portu, a po drugie poinformuje serwer i aplikacje klienckie, że np światło zgasło. To jednak wymaga dodania do kodu małego API. Mogę coś takiego przygotować, ale niestety dopiero na przyszły tydzień.
raspberry.
Można też zmienić stan portu poprzez
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio27value
Mankamentem tego rozwiązania jest to, że aplikacje klienckie nie otrzymają powiadomienia, że np światło zostało wyłączone przez co ikonki się nie zmienią.
Idealne rozwiązanie to wysłanie odpowiedniego komunikatu do demona supla-dev co po pierwsze bezpiecznie zmieni stan portu, a po drugie poinformuje serwer i aplikacje klienckie, że np światło zgasło. To jednak wymaga dodania do kodu małego API. Mogę coś takiego przygotować, ale niestety dopiero na przyszły tydzień.
Tak czy inaczej jak znajdę trochę czasu to dodam takie małe API wraz z przykładem. Pozwoli to na
na sprawdzanie czy kron rzeczywiście wyłączył czy włączył oświetlenie.
na sprawdzanie czy kron rzeczywiście wyłączył czy włączył oświetlenie.
Chodzi o to aby na serwerze była informacja czy światło jest włączone czy wyłączone ?
Jeżeli tak to wolę dodać API o którym pisałem wcześniej. Przygotuje gotowe rozwiązanie z przykładem z tym, że dopiero
początkiem przyszłego tygodnia.
Jeżeli tak to wolę dodać API o którym pisałem wcześniej. Przygotuje gotowe rozwiązanie z przykładem z tym, że dopiero
początkiem przyszłego tygodnia.
A więc tak.
Wszystko co trzeba zrobić to zalogować się przez ssh na uzytkownika "pi" i wykonać następujące polecenia:
cd
git clone https://github.com/SUPLA/raspberry
sudo /etc/init.d/supla-dev stop
sudo cp raspberry/ext01/usr/sbin/supla-dev /usr/sbin/
sudo /etc/init.d/supla-dev start
sudo cp raspberry/scripts/supla-dev-ctrl.php /usr/local/sbin/
rm -rf raspberry
Jeżeli nie ma zainastalowanego php to należy jeszcze wykonać:
sudo apt-get update
sudo apt-get install php5-cli
Teraz przykłady.
Odczytanie stanu kanału nr 7
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-GET-HIVALUE=7
Ustawienie stanu kanału nr 7 na wysoki
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-SET-HIVALUE=7 HI=1
Ustawienie stanu kanału nr 7 na niski
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-SET-HIVALUE=7 HI=0
Wystarczy dodać do CRON-a.
Daj znać jak poszło.
Wszystko co trzeba zrobić to zalogować się przez ssh na uzytkownika "pi" i wykonać następujące polecenia:
cd
git clone https://github.com/SUPLA/raspberry
sudo /etc/init.d/supla-dev stop
sudo cp raspberry/ext01/usr/sbin/supla-dev /usr/sbin/
sudo /etc/init.d/supla-dev start
sudo cp raspberry/scripts/supla-dev-ctrl.php /usr/local/sbin/
rm -rf raspberry
Jeżeli nie ma zainastalowanego php to należy jeszcze wykonać:
sudo apt-get update
sudo apt-get install php5-cli
Teraz przykłady.
Odczytanie stanu kanału nr 7
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-GET-HIVALUE=7
Ustawienie stanu kanału nr 7 na wysoki
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-SET-HIVALUE=7 HI=1
Ustawienie stanu kanału nr 7 na niski
php /usr/local/sbin/supla-dev-ctrl.php CHANNEL-SET-HIVALUE=7 HI=0
Wystarczy dodać do CRON-a.
Daj znać jak poszło.
Potrzebuję dokładną informację jaki błąd się pojawia.