niedziela, 27 września 2015

Domoticz i uruchamianie programów w Pythonie

W Domoticz możemy aktywować przyciskiem uruchomienie dowolnego programu napisanego w Pythonie.
Mamy dzięki temu duże możliwości wykorzystania, np. możemy napisać program, który po wykryciu ruchu na czujniku pir aktywuje alarm lub po wykryciu światła na czujniku światła podnosi nam żaluzje, mamy pełną dowolność wykorzystania.

Pokażę na przykładzie programu mis napisanego w pythonie, który powoduje ruch serwa i miganie diodami.

Najpierw tworzymy sobie katalogi python i lua w katalogu domoticz/scripts, uruchamiamy program Bitvise wchodzomy do domopticz/scripts i dodajemy katalogi, w m moim przypadku takie katalogi już były.


Program mis.py wygląda tak:
#/usr/bin/python
print"Mis rusza reka"
import time
import RPi.GPIO as GPIO
#import biblotek time i GPIO
GPIO.setmode(GPIO.BCM)
#ustawienie pinow wg numeracji BCM
GPIO.setwarnings(False)

GPIO.setup(18,GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
#ustawienie pinow 18 i 17 jako wyjscia

p = GPIO.PWM(18, 50)
p.start(2.5)

while (True):
GPIO.output(17, True)
p.ChangeDutyCycle(2.5) #pozycja 0 stopni serwa
time.sleep(1)
GPIO.output(17, False)
p.ChangeDutyCycle(7.5) #pozycja 90 stopni serwa
time.sleep(1)

W programie wykorzystno piny GPIO 17, 18, ustawione są jako wyjścia i w pętli wykonywane jest miganie diodą i ruch serwa o 90 stopni co sekundę.

Skrypt lua będzie uruchamiał program po włączeniu przycisku i zabijał proces pythona poleceniem pkill po wyłączeniu przycisku.
Skrypt wygląda tak:
commandArray = {}

if (devicechanged['MIS'] == 'On') then
os.execute ("sudo python /home/pi/python/mis.py")
end
if (devicechanged['MIS'] == 'Off') then
os.execute("sudo pkill -9 -f /home/pi/python/mis.py")
end

return commandArray

Programy w pythonie umieściłem sobie w /home/pi/python i skrypt uruchamia program mis poleceniem:
sudo python /home/pi/python/mis.py

Teraz tworzymy skrypt lua i zapisujemy go w /home/pi/domoticz/scripts/lua.

W linijce:
if (devicechanged['MIS'] == 'On') then

wpisujemy nazwę naszego przycisku jaki dodamy w Domoticz, ja nazwałem sobie go MIS.

Do edycji plików tekstowych i napisanych programów używam program Notepad++, możemy go sobie pobrać stąd -> https://notepad-plus-plus.org/

Skypt i program możemy sobie pobrać stąd -> Link

Jak już mamy pliki umieszczone w odpowiednich katalogach, uruchamiamy nasz panel Domoticz.
Wchodzimy w Ustawienia -> Sprzęt i tworzymy wirtualny przycisk, z listy wybieramy Dummy


Wpisujemy nazwę, ja wpisałem Wirtualny i klikamy Dodaj, zobaczymy go na liście rekordów.
Teraz klikamy Utwórz wirtualne sensory


Wybieramy przełącznik i klikamy OK


Wchodzimy w Ustawienia -> Urządzenia, szukamy nasz utworzony przycisk Wirtualny i klikamy w zieloną strzałkę


Wpisujemy nazwę, ja wpisałem MIS i klikamy Dodaj urządzenie


Teraz w menu Przełączniki mamy nasz nowo dodany przycisk, po kliknięciu uruchomi się nasz program w pythonie, a po wyłączeniu, wykonywanie program zostanie zatrzymane.


Miś uruchamiany przyciskiem wygląda tak


Budowa misia

3 komentarze:

  1. Cześć. Fajny blog prowadzisz.
    Czy jest szansa wyeliminować opóźnienia w domoticz? Mam przekaźnik połączony z malina na rf433 skryptem lua uruchamiam program w pythonie wyl/wl. Czas reakcji bywa bardzo różny od 1s do 8s. Jest to zwiecha domoticza. Jak przez kondole uruchamiam programy to opóźnień nie ma. mam pi2

    OdpowiedzUsuń
  2. Cześć. Fajny blog prowadzisz.
    Czy jest szansa wyeliminować opóźnienia w domoticz? Mam przekaźnik połączony z malina na rf433 skryptem lua uruchamiam program w pythonie wyl/wl. Czas reakcji bywa bardzo różny od 1s do 8s. Jest to zwiecha domoticza. Jak przez kondole uruchamiam programy to opóźnień nie ma. mam pi2

    OdpowiedzUsuń
  3. Witam,
    pomógł byś mi napisać program w Pythonie obsługujący ModBus RTU RS485?

    Idea była by ta sama, z tym, że po wciśnięciu przycisku skrypt lua ma uruchamiać program w pythonie wysyłający komendę do pewnego urzadzenia.
    Nawet odpłatnie.
    Proszę o kontakt
    maciejgapinski.am@gmail.com

    OdpowiedzUsuń