Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 lip 2025, o 07:20


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 15 wrz 2018, o 11:28 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Witam szanownych kolegów.
    Od jakiegoś czasu "męczę" się z pewnym projektem. Obecnie na obiekcie jest układ załączający i wyłączający światło na parkingu. Układ ten reaguje na czujkę zmierzchową i po godzinie 21 ręcznie wyłączamy dwa obwody światła. Ale wiadomo, że raz przypomni się o 21 a raz o godzinie 24 i wtedy wyłącza się światło. Zbudowałem układzik oparty na atmedze 8 i DS1307, który podaje mi czas nawet po wyłączeniu prądu i podaje mi stan niski na PD7(LED_IN) atmegi. Właściwie to wszystko działa ale chciałbym zapytać szanownych kolegów czy można inaczej a przede wszystkim prościej sformułować warunki podawania tego stanu niskiego (wyłączenia światła). Ja powołałem sobie takie zmienne "hours_al = 21" i "minutes_al = 20 " godzina i minuta wyłączenia i "zalacz_hours = 11", która daje mi możliwość załączenia światła czyli podaje stan wysoki na LED_IN i po zadziałaniu zmierzchówki włączy światło na parkingu oraz hours, minutes.
    Fragment kodu odpowiedzialny za wyłączanie:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I teraz zadam powyższe pytanie czy można prościej inaczej a może powinienem iść całkowicie inną drogą?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 wrz 2018, o 13:29 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    zubik napisał(a):
    No ale co chcesz uprościć? Możesz rozpisać to na kolejne if-y ale czy ja wiem czy to coś zmieni, jeśli ten warunek jest dla ciebie czytelny to w porządku

    Warunki są czytelne i do mojego projektu pasują bo stan niski na PD7 ma mi się pojawić po godzinie 21 i załączyć możliwość załączenia światła w ciągu dnia (przed zmrokiem) i tak jest. Jednakże nie są to warunki uniwersalne bo jak hours_al ustawię na 00 to już mi to nie działa. Myślałem, że ktoś miałby pomysł nie na if-ach i mnie naprowadził.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 wrz 2018, o 16:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1978
    Lokalizacja: Lipsko
    Pomógł: 125

    Daj warunek w programie, który sprawdza i zamienia 00 na 24, który widoczny będzie tylko dla programu. To chyba najprostsze rozwiązanie.


    Autor postu otrzymał pochwałę

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 wrz 2018, o 14:40 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    A nie lepiej ustawić flagę ze światło jest włączone, a potem tylko sprawdzać ją? W ten sposób tylko raz wejdziesz do bloku wykonawczego.

    Wysłane ze srajfona

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 wrz 2018, o 19:40 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Po pierwsze to muszę napisać, że nie jestem biegły w te klocki i każdy problem muszę dużo wałkować aby zrozumieć i rozwiązać.
    wachcio napisał(a):
    Warunki sprawdzasz co minutę czy sekundę lub częściej?
    Warunki przedstawione powyżej mam w pętli głównej i można by powiedzieć sprawdzam ciągle. Dokładność i szybkość działania nie jest mi potrzebna bardziej pewność działania.
    Harry napisał(a):
    A nie lepiej ustawić flagę ze światło jest włączone, a potem tylko sprawdzać ją? W ten sposób tylko raz wejdziesz do bloku wykonawczego.
    Jeśli to jest klucz do stworzenia lepszego uniwersalnego warunku a także nauczenia się czegoś nowego to muszę to zgłębić tylko od czego zacząć?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 wrz 2018, o 03:35 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    Miałem na myśli coś w tym stylu, ale musisz oczywiście sprawdzić
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    mam nadzieję że zrozumiesz coś z tego

    sorry za formatowanie, ale o 3:30 poprostu mi się nie chce :P

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 wrz 2018, o 08:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 lis 2015
    Posty: 1448
    Lokalizacja: okolice Warszawa
    Pomógł: 149

    Witam,
    Strasznie dużo tego && || :/
    Myślę że znacznie uprości logikę,
    wkiteanie minut i godzin w jedną zmienną.
    Cztery starsze bity to godziny a młodsze to minuty. (Przesunięcie bitowe).
    Łatwiej jest tak sklejony czas porównywać.
    Oczywiście sklejanie bieżącego czasu i porównywanie co minutę, a sklejanie ustawionego w momencie ustawiania.
    Taka myśl.
    Możliwe że coś nie doczytałem. :?
    Pozdrawiam.

    Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka


    Autor postu otrzymał pochwałę


    Ostatnio edytowano 18 wrz 2018, o 10:47 przez Daro69, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 wrz 2018, o 10:39 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    A może od razu z "detekcją" przejścia przez północ

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Ostatnio edytowano 7 paź 2018, o 09:39 przez Harry, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 wrz 2018, o 11:27 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Daro69 Harry to może być to :) muszę to jeszcze prześledzić jak będę miał chwilę wolną. Dam znać co z tego wyszło. Dzięki chłopaki. No i przede wszystkim muszę to zrozumieć, na razie założenia rozumiem, jeszcze raz dziękuję.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 paź 2018, o 09:38 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Chciałem odpowiedzieć co wyszło z moich wypocin i kolegów podpowiedzi. Przede wszystkim chciałem Wam podziękować za podpowiedzi. Trzy razy zamieniłem dwie zmienne w jedną i dużo to uprościło kod. Nie działa mi to jeszcze gdy czas wyłączenia światła mam ustawiony po północy ale w tym projekcie nie jest mi to potrzebne i na razie to zostawię wstawię kandę i w przyszłości może wgram coś lepszego.
    Tak wygląda moja funkcja:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Jest chyba prościej prawda?
    Harry poznajesz ten kodzik?
    Jeszcze raz dzięki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 paź 2018, o 09:45 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    Nie musisz kopiować całości, ale chociaż zastosuj flagi, bo teraz z każdym obiegiem pętli wysyłasz tekst na wyświetlacz. Obawiam się że przy takiej eksploatacji padnie po max kilku miesiącach.

    Wysłane ze srajfona

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 paź 2018, o 09:58 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2017
    Posty: 99
    Lokalizacja: Piła
    Pomógł: 4

    Funkcja jest wywoływania w przerwaniu i jest wywoływania co 1 sek, nie wiem czy to jest dobrze? Wyświetlacz będzie w urządzeniu tylko kontrolne powinno to działać. Dioda i wyjście na moduł przekaźnika jest na stałe. Ale może jeszcze coś poćwicze z flagą.
    Dzięki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 paź 2018, o 10:49 
    Offline
    Użytkownik

    Dołączył(a): 14 sie 2016
    Posty: 905
    Pomógł: 39

    Jeżeli odświeżasz wyświetlacz tylko co sekundę, to i tak daje Ci to 86400 razy na dobę, ogólnie żywotność wyświetlaczy to jakieś 50-100 tysięcy godzin, pytanie tylko czy ilość odświeżeń nie skróci ich żywotności.
    Generalnie w przerwaniu nie powinno być obsługi wyświetlaczy, ani innych zasobożernych operacji.
    Obliczenia czasów włączenia/wyłączenia wyrzuć sobie z pętli, bo to niema żadnego sensu - przecież nie przestawiasz zegara co sekundę, a tam zostaw tylko czas aktualny.

    _________________
    Moje porady są błędne,nie czytać,zbanować od razu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 17 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO