Dopiero zaczynam zabawę w te klocki i myślę, że przy okazji pomogę początkującym takim jak ja, a nie ukrywam, że liczę na pomoc bardziej doświadczonych.
Po zakupie żarówki Yeelight Led do pokoju od syna doszedłem do wniosku, że sterowanie oświetleniem ze smartfona jest fajne, ale przez pierwsze 2 dni, dlatego zaczynam od tego urządzenia. Założenie jest takie, że będą dwa włączniku bezprzewodowe 433mhz na baterie, które mają być wielofunkcyjne (klik, klik klik, przytrzymanie ....itp.). Zaczynam jednak od czujnika ruchu PIR HC-SR501.
Na początku napiszę jak to mam poustawiane, a na końcu będę miał parę pytań.
Najłatwiejszy do zrozumienia podstaw był dla mnie język python, który przypomniał mi programowanie w basic'u (Sinclair ZX81) i Pascalu, z którym miałem kontakt 30 lat temu. Dla młodszych. ZX81 to taki starszy zx spectrum, a dla jeszcze młodszych pozostaje google ;).
Posiłkowałem się trochę internetem i stan aktualny obsługi żarówki za pośrednictwem czujnika ruchu wygląda u mnie tak:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib
sensor = 8
czas = 10
GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)
previous_state = False
current_state = False
while True:
previous_state = current_state
current_state = GPIO.input(sensor)
if current_state != previous_state:
if current_state:
new_state = "HIGH"
httpresponse = urllib.urlopen ("http://192.168.0.228:8084/json.htm?type=command¶m=switchlight&idx=9&switchcmd=On")
start_time = time.time()
c_time = 0
while c_time < czas:
if GPIO.input(sensor):
c_time = 0
c_time = time.time()-start_time
else:
new_state = "LOW"
httpresponse = urllib.urlopen ("http://192.168.0.228:8084/json.htm?type=command¶m=switchlight&idx=9&switchcmd=Off")
print("GPIO pin %s is %s" % (sensor, new_state))
gdzie zmienna "sensor" to pin GPIO,
a zmienna "czas" to czas po jakim czujka po wykryciu ostatniego ruchu ma przejść w stan "LOW" (brak 3,3v na pinie "sensor").
Gdy czas ustawiamy te parametry na czujniku ruchu to wtedy ta część programu jest niepotrzebna, ale mamy większą kontrolę i możemy ustawić czas w sekundach po jakim czujka ma przejść do stany LOW.
Oczywiście adres uruchamiający czujkę:
http://192.168.0.228:8084/json.htm?type=command¶m=switchlight&idx=9&switchcmd=Off
dostosowujemy do swoich potrzeb (fragmenty kolorowe)
W przełączniku PIR (czujka ruchu) w edycji:
Włącz akcję:
http://192.168.0.228:8084/json.htm?type=command¶m=switchlight&idx=8&switchcmd=Set%20Level&level=50
Wyłącz akcję:
http://192.168.0.228:8084/json.htm?type=command¶m=switchlight&idx=8&switchcmd=Set%20Level&level=0
Uwaga j.w.
Pytania dla bardziej doświadczonych:
1. Co jakiś czas czujka bez przyczyny daje sygnał HIGH.
Czy przyczyną może być sama czujka?
2. W domoticzu stan wyświetlany jest z opóźnieniem.
Znany tamat?
3. Krytyka mile widziana, choć proszę wziąć pod uwagę, że w moim wieku, na nauczenie się wszystkiego od podstaw nie starczy mi czasu ;).
@100mek AD 2 Temat znany , interfejs się aktualizuje co interwal 5-10 sek
AD1 Te czujniki są mocno ułomne a GPIO w RBPI jest bardzo czułe , może pomóc odwrócenie logiki samego GPIO czyli stan ON to GPIO- LOW , mozna to zrobić dodając odpowiednie wpisy w /etc/init.d/domoticz.sh.
wtedy między GPIO a 3,3 V w RBPI rezystor 10K i sterowanie podaniem masy z czujnika i tu trzeba dodać transoptor , tak jak na poniższym schemacie tylko zamiast sonoff to RBPI
Dodam dla potomnych, żeby zawsze sprawdzę do jakiego gpio co się podłącza.
Jeśli dobrze pamiętam (jeśli nie to mnie poprawcie) gpio 12 był do tego najlepszy, ale gpio 8 którego użyłeś też jest dobre.
Ale najlepsze co mogę zrobić to odesłać do dokumentacji.
https://www.raspberrypi.org/documentation/usage/gpio/
Ad 3. Może nie krytyka ale nie prościej zakupić prosty esp i użyć oprogramowania AFE? Do którego podłączysz czujnik jak trzeba i zamiescisz go gdzie tylko zasilanie sięgnie.
Niestety czułość gpio w RPi jest za duża.
Czyli podstawa to kupić lepszy czujnik ruchu, żeby nie tracić czasu nad zastanawianiem się nad dziwnym działaniem projektu, a potem wdrożenie lepszej wersji podłączenia. Jest jakiś sprawdzony model czujki, który byłby dobry na początek?
Dlaczego w pulpicie domoticza jest opóźnienie już też wiem. Dzięki.
Jaki prosty esp najlepiej zakupić, aby był dobry na początek nauki, a przy okazji nie generował dużych problemów z Raspberry?
Zanim u mnie domoticz zacznie działać w życiu codziennym to myślę, że jeszcze dużo czasu minie, ale od czegoś naukę trzeba zacząć i na dzień dzisiejszy mój projekt traktuję jako nauka, ale Wasze ukierunkowujące wskazówki są dla mnie cenne bo wiem w jakim kierunku starać się poszerzać wiedzę.
Co do czujników. Wg mojej żony ładne są te od Xiaomi. Z tym że trzeba centralki aby gadały z Domoticzem. Polecam używam.
Co do czujników DIY to które podepniesz do ESP. To nada się każdy.
ESP - na początek aby nie trzeba było zbytnio kombinować - Wemos D1 mini. Podpinany kablem do USB nie potrzeba specjalnych programatorów ani lutowania. Podpinasz po USB wygrywasz soft i działa.
@100mek jak chcesz podpinać czujniki do maliny to kup sobie jeden taki https://botland.com.pl/pl/czujniki-ruchu/10173-dfrobot-gravity-cyfrowy-czujnik-ruchu-pir.html
do esp - wemos mogą być te tańsze , ale z czułością i zasięgiem to nie poszalejesz . Polecam zobaczyć sobie film na kanale Szmala gdzie z dobrego czujnika BOSH robi multisensor i podłącza do domoticza
🙂
Właśnie skończyłem oglądać ten odcinek na YT jak zobaczyłem, że mam odpowiedź na forum.