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 w 2025? 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 18 maja 2025, o 11:07


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
    Autor Wiadomość
    PostNapisane: 24 kwi 2020, o 18:35 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    =Witam

    Po dłuższej przerwie powracam z pasja do uC. A spowodowane jest to projektem który muszę zrealizować w domu. Mianowicie automatyczny podlewak roślin :D W zasadzie cała elektronika i większość kodu już jest przemyślane, głowię się tylko nad kwestią jak łatwo i przyjemnie zorganizować sobie kwestie planowania godzin podlewania.

    Założenia są takie że użytkownik za pośrednictwem apki na telefonie będzie mógł ustawiać kiedy i na jak długo ma się załączyć pompka. Powiedzmy ze maksymalnie chciałbym móc ustawić 10 harmonogramów i w każdym z nich do ustawienia: godzina, minuta (czas w którym uruchomi się podlewanie), czas trwania podlewania, dni w których dane podlewanie ma się odbyć.

    Czy ktoś ma jakiś pomysł, albo sam już zastosował coś takiego w swoich projektach?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 kwi 2020, o 18:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    To moze zrob 10 struktur w ktorych zapiszesz dzien godzine itp i cyklicznie sprawdzaj czy wlaczyc



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 kwi 2020, o 18:51 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Akurat taki harmonogram to nie problem. Problem jest inny. Mianowicie po co podlewać jeśli pada deszcz, padał deszcz lub będzie padał? Musisz przewidzieć chociaż sensor wilgotności gleby ,który jeden z problemu wyeliminuje. To chyba jeden z ważniejszych aspektów automatycznego podlewania. Godzina podlewania to akurat sprawa prosta. Jeśli nie masz nawadniania kropelkowego podlewa sie pomiędzy zachodem ,a wschodem słońca. I tu w sumie wystarczy sobie jedna godzinę wybrać. Druga sprawa głupio by bylo gdyby nawadnianie sie włączyło gdy robisz grilla wiec pewnie jakiś czujniki ruchu by sie przydały. Mimo ,ze temat wydaje sie dosyć prosty to żeby miał sens musi być dosyć skomplikowany.Chyba ,ze wodę do podlewania masz z jeziora i nie zależy ci na kosztach to wtedy lej na maxa. Trawa lubi wodę :) Pomysły na appke pewnie sa, tylko musisz cokolwiek sam zacząć i napisać w razie co w czym problem. Bo tak to trochę rzucanie kula w plot,bo nawet nie napisałeś w jakim języku chcesz to robic.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 kwi 2020, o 22:04 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    Spokojnie to już wszystko jest przetestowane i przez rok na pająku działało na sztywno zadeklarowanymi godzinami. Poza tym najważniejsze to ma podlewać roślinki na balkonie wiec wpływ deszczu żaden ;) Ale pomysł i wykonanie już w większości zrobione tylko godziny narazie na sztywno ustawione wiec nie rzucam kulą w płot bo chciałbym tylko poradzić się czego najlepiej użyć do tego zadania. Moze nie najlepiej wyraziłem się chodzi o oczywiście o obsługę AVR w języku C i to tam che rozwiązać temat harmonogramu, apka to tylko dodatek który po UART będzie wysyłał nastawy użytkownika.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 07:37 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Ja apki na telefon pisze sobie w B4a . W samym sterowniku zapisuje sobie tylko godzinę minute i porównuje z aktualna . W sumie jeśli masz na sztywno zapisane i działa to tak samo będzie działać jeśli wyślesz sobie dane przez uart i zapiszesz w eeprom nowe nastawy. Niestety ,ale nie wiem w czym problem. Filmiki jak zrobic taka appke i wysylac dane masz w mirkowych poradnikach. Jedno co moge podpowiedzieć, to godziny minuty i sekundy mnożę przez siebie i wysyłam jako jedna zmienna, chyba 6 Byte wychodzi. W procku godzinę aktualna tak samo robie i wtedy porównuje. Zajmuje to w eeprom troche pamięci ale robiłem tak 64 nastawy i działa bardzo dobrze. Dni tygodnia to akurat 1 Byte i wystarczy tez sprawdzić czy odpowiedni bit zaznaczony. Gdzieś na forum tu o b4a podpytywałem jak przeliczać te godziny. Napisz dokładnie z czym masz problem ,bo nie wiem co doradzać skoro masz działający projekt.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 09:15 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    Ale kolega dalej nie rozumie. Nie chodzi mi o kwestie apki w B4A to juz mam zrobione i wysyłam pojedynczą godzinę i minute do włączania podlewania ten temat zostawmy bo to ogarniam i problemu nie mam. Zagwozdkę mam tylko z tym jak po stronie uC w języku C ogarnąć ładnie i przejrzyście nastawy włączania podlewania żeby nie robić tego w 20 zmiennych zapisywanym do EEPROMU, tylko np z wykorzystaniem struktury w której będzie godzina, minuta włączenia, dni tygodnia dla których ma zadziałać ten harmonogram no i jak długo w sekundach ma trwać podlewanie. I chętnie przyjrzał bym się rozwiązanią innych osób które też robiły harmonogram.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 11:33 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 771
    Pomógł: 40

    Ok. Teraz rozumiem. Nie znam C ale chyba bez zapisu godzin w eeprom nie da się(chyba ze nie przewidujesz wyłączania urządzenia). W bascomie robię to w petli for ,która porównuje co sekunde czy nastawy się zgadzają w tablicy i włącza lub wyłącza.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 13:19 
    Offline
    Użytkownik

    Dołączył(a): 17 mar 2020
    Posty: 70
    Pomógł: 5

    Krok po kroku:
    - potrzebujesz dodać harmonogram
    - każdy alarm ma jakieś swoje ustawienia

    Zacznijmy od ustawień:


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


    I to jest żywcem to co napisałeś w poście zmienione na kod. I teraz harmonogramy - co musi mieć każdy harmonogram:
    - swoje ustawienie
    - i tu dodatkowo np swój stan - czy jest aktywny, czy nie
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I na to dokładasz logikę potem porównywania z aktualnym czasem dla wszystkich alarmów jakie masz itp.
    Ustawienia dla poszczególnych harmonogramów musisz gdzieś przechować - może być EEPOROM - więc potrzebujesz jeszcze funkcje odczytu/zapisu do tego.

    Rozrysuj sobie to wszystko najpierw na kartce.

    Bo możesz chcieć jeszcze jakieś dodatkowe rzeczy typu - co jak ktoś włączy urządzenie w czasie aktywnego harmonogramu - czy powinien się włączyć, czy urządzenie powinno reagować tylko na pierwszy "event" - to już Ty musisz zdecydować.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 14:28 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    O coś takiego chodziło panie kolego :) Czy jest jakaś funkcja która zwraca od razu wielkość danej struktury? w sensie ile takich harmonogramów jest utworzone? Tak by ułatwic sobie jakąś pętlę sprawdzającą czy któryś z elementów struktury spełnia warunek godziny i minut.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 kwi 2020, o 14:35 
    Offline
    Użytkownik

    Dołączył(a): 17 mar 2020
    Posty: 70
    Pomógł: 5

    To już musisz sobie nabudować "poziom wyżej" - czyli zrobić tablicę z takimi strukturami - no i wtedy jej rozmiar jest znany dla Ciebie - bo to Ty go definiujesz.

    Pewnie znowu zostanę za to "zjedzony" - ale polecam do sobie napisać i przetestować najpierw w C na PC i potem przenieść na atmege - chodzi mi o te strukturki i logikę ich działania potem.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2020, o 19:54 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    landrynek napisał(a):
    To już musisz sobie nabudować "poziom wyżej" - czyli zrobić tablicę z takimi strukturami - no i wtedy jej rozmiar jest znany dla Ciebie - bo to Ty go definiujesz.

    Pewnie znowu zostanę za to "zjedzony" - ale polecam do sobie napisać i przetestować najpierw w C na PC i potem przenieść na atmege - chodzi mi o te strukturki i logikę ich działania potem.


    Jestem już na etapie rozpisywania tego na czysto i wymyślenia najlepszego sposobu zapisy i odczytu i tu mam jeden pomysł tylko nie do końca wiem jak go w łatwy sposób wykorzystać.
    Otóż chciałbym zapisać dni tygodnia w których dni alarmu mają być włączone w formie binarnej 00000001 miał by oznaczać tylko poniedziałek, 00000010 tylko wtorek itd itd. I teraz jak najlepiej było by to wyłuskać ze struktury i sprawdzić czy danego dnia alarm może być aktywowany?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2020, o 20:09 
    Offline
    Użytkownik

    Dołączył(a): 17 mar 2020
    Posty: 70
    Pomógł: 5

    Opcji masz tu mega dużo. Załóżmy że dzień tygodnia masz jako uint8_t licząc od zera - poniedziałek. To sobie na te dni robisz enuma, żeby było czytelnie i potem jak chcesz ustawić na jakiś dzień alarm to sobie robisz coś takiego:
    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.


    to tylko jedna z mnóstwa propozycji.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2020, o 20:43 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    Dzięki bardzo teraz czas to sprawdzić :) Włączanie i wyłączanie będę robił po stronie apki na Androida i ona będzie już wysyłać po UARCIE bezpośrednio binarke gotową dla całego alarmu. A po stronie AVR będę tylko sprawdzał czy jest w ten dzień aktywny alarm.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2020, o 17:55 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2012
    Posty: 712
    Lokalizacja: Opole
    Pomógł: 23

    Wróciłem do twojego pomysłu ogarnięcia Harmonogramu.
    Stworzyłem taką oto strukturę którą wykorzystuje 5 razy dla 5 Timerów. Czy to dobre podejście czy lepiej wszystko wrzucić do jednej struktury? Bo w tym wypadku mam zagwozdkę jak najlepiej dobrać się w pętli do struktur o nazwach HARM0_ram, HARM1_ram itd. tak by cześć inkrementowana w pętli była częścią nazwy HARM i gdzie cyfra to np. i z pętli

    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.


    landrynek napisał(a):
    Krok po kroku:
    - potrzebujesz dodać harmonogram
    - każdy alarm ma jakieś swoje ustawienia

    Zacznijmy od ustawień:


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


    I to jest żywcem to co napisałeś w poście zmienione na kod. I teraz harmonogramy - co musi mieć każdy harmonogram:
    - swoje ustawienie
    - i tu dodatkowo np swój stan - czy jest aktywny, czy nie
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I na to dokładasz logikę potem porównywania z aktualnym czasem dla wszystkich alarmów jakie masz itp.
    Ustawienia dla poszczególnych harmonogramów musisz gdzieś przechować - może być EEPOROM - więc potrzebujesz jeszcze funkcje odczytu/zapisu do tego.

    Rozrysuj sobie to wszystko najpierw na kartce.

    Bo możesz chcieć jeszcze jakieś dodatkowe rzeczy typu - co jak ktoś włączy urządzenie w czasie aktywnego harmonogramu - czy powinien się włączyć, czy urządzenie powinno reagować tylko na pierwszy "event" - to już Ty musisz zdecydować.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sie 2020, o 23:22 
    Offline
    Użytkownik

    Dołączył(a): 17 mar 2020
    Posty: 70
    Pomógł: 5

    a może tablica struktur/wskaźników na struktury? wtedy możesz po iteratorze sobie jechać w pętlach itp.

    Od siebie jeszcze dodam, że wydaje mi się, że lepiej inicjalizować pola struktur ze składnią ".nazwaPola" - o wiele czytelniejsze to jest niż "kolejne elementy" - o odporności na błędy już nie wspomnę.



    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: 15 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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