Błąd AquaPi z RelayBoard

52 views
Skip to first unread message

Tomasz Jastrzębski

unread,
Aug 11, 2015, 11:48:38 PM8/11/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć

Mam AquaPi z RelayBoard i co jakiś czas (około 36 godzin) występuje błąd jak z załączonego obrazka.
Ustępuje po restarcie samego deamona AquaPi (/etc/init.d/aquapi.rc stop, /etc/init.d/aquapi.rc start).
Proszę o pomoc w zdiagnozowaniu i naprawieniu problemu.
Z góry dzięki.

Tomasz

aquapi error.jpg

Lexx

unread,
Aug 12, 2015, 8:27:56 AM8/12/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi

Cześć,

Próbowałeś w połączeniu z dontfork w aquapi.ini?

Tomasz Jastrzębski

unread,
Aug 21, 2015, 12:46:08 PM8/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć,
Dzisiaj ponownie wystąpił ten sam błąd.
Poniżej podaję zrzut z konsoli po włączeniu donfork:

[code]
[18:43:42] DEVEL Wersja klienta MySQL: 5.5.44
[18:43:42] WARN  Daemon uruchomiony
[18:43:42] DEVEL Kompilacja daemona: Aug  6 2015 13:01:44
[18:43:42] DEVEL Wykryty osprzęt: Raspberry Pi rewizja: 2
[18:43:42] DEVEL Odczyt konfiguracji
[18:43:42] DEVEL Wczytanie interface'ów
[18:43:42] DEVEL Wczytanie timerów
[18:43:42] DEVEL Konfiguracja odczytana
[18:43:46] INFO  Przechodzę w tryb dzień
[18:43:46] CRIT  Błąd TCPIP: Address already in use
[/code]

Proszę o pomoc.

W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:

Lexx

unread,
Aug 21, 2015, 3:56:27 PM8/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć,

To wygląda teraz tak, jakbyś po wystąpieniu błędu zresetował daemona i pokazał log z outputu (kill nie zamyka socketa tcpip wiec błąd wynika ze zbyt szybkiego odpalenia instancji).
Tak więc nie ma rady, ten log raczej nie pomoże w diagnozowaniu blędu.
Powinieneś odpalić daemona (np. na screenie) z dontfork i detachować. Potem podłączyć się do screena jak przestanie działać i wtedy sprawdzić wynik.

Mam natomiast pomysł jak przyspieszyć proces, tzn. nie czekać 36h - zmień częstotliwość odczytywania temperatury - redukcja powinna przyspieszyć czas "zgonu".
Mam też jedno podejrzenie, w którejś z wersji aquapi był błąd (aczkolwiek zakładałem że usunięty) który powodował że daemon nie zamykał otwartego pliku i system w pewnym momencie dochodził do limitu otwartych jednocześnie plików i nie mógł otworzyć kolejnego. Tutaj w diagnozie może Ci pomóc lsof -p <pid_daemona>. Jeśli liczba użytych descryptorów będzie wzrastać wraz z czasem, to winy trzeba będzie szukać tutaj - system dojdzie w pewnym momencie do limitu i nie będzie mógł otworzyć kolejnego pliku.

Tomasz Jastrzębski

unread,
Sep 21, 2015, 6:19:34 AM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć

myślałem, że problem znikną, ale niestety powrócił.
Sprawdziłem tak jak pisałeś, w załączeniu przesyłam plik z konsoli.
Chyba jednak jest błąd w kodzie.
Proszę o pomoc.
Tomek


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:
konsola.txt

Lexx

unread,
Sep 21, 2015, 1:59:12 PM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć,,

Co masz wpięte w /dev/ttyUSB0?

Tomasz Jastrzębski

unread,
Sep 21, 2015, 2:56:43 PM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Kartę RelayBoard na USB dedykowaną do wersji oprogramowania "testing".


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:

Tomasz Jastrzębski

unread,
Sep 21, 2015, 3:06:51 PM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Dorzucam jeszcze wynik "lsof -p" dla aquapi.
Dano po restarcie dzisiaj koło 12.


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:
aquapi.txt

Lexx

unread,
Sep 21, 2015, 3:12:03 PM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Ok,
Tak jak myślałem to będzie błąd związany z tym że otwierany jest port (plik) a potem nie jest zamknięty.
Spróbuję przejrzeć kod i znaleźć błąd - chociaż sam nie mam relayboard więc może być ciężko.

Jarek - ty miałeś relayboard, u Ciebie też był ten błąd?

Tomasz Jastrzębski

unread,
Sep 21, 2015, 3:57:41 PM9/21/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Sprawdziłem, i zwiększa się dla /dev/ttyUSB0/


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:

Lexx

unread,
Sep 24, 2015, 2:21:29 PM9/24/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Spróbuj zmienić:

w pliku outputs.c oba wystąpienia:

RelayBoardPortClose();

na

RelayBoardPortClose(device_path);

oraz w pliku RelayBoard/rb.c procedurę:

uint8_t RelayBoardPortClose()
{
//    return fclose(fPort);
    CloseComport();
    return 0x00;
}

na:

uint8_t RelayBoardPortClose(char* portName)
{
//    return fclose(fPort);
    CloseComport(portName);
    return 0x00;
}

Przekompiluj, i daj znać czy coś się zmieniło.

Tomasz Jastrzębski

unread,
Sep 24, 2015, 2:29:34 PM9/24/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć

Dzięki za odpowiedź.
Jak byś mógł mnie jeszcze poinstruować jak mam "przekompilować"?
Czy da się to zrobić na tym co teraz "pracuje", czy mam wgrać wszystko od nowa tylko wcześniej poprawić te dwa pliki?



W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:

Lexx

unread,
Sep 26, 2015, 2:37:44 PM9/26/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Zrób tak:
Zacznij od kopii pliku /usr/local/aquapi/aquapi (to jest twój aktualny daemon, przywróć go sobie jak by coś z "nowym" było nie tak).
A potem po poprawieniu plików o których mówiłem wcześniej zrób:
make clean
make
make install

i uruchom ponownie daemona.
Ps. nie mam relayboard, więc zmiany robiłem "na czuja".

Tomasz Jastrzębski

unread,
Sep 27, 2015, 12:13:21 PM9/27/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć, dzięki za poprzednią pomoc.
Zrobiłem tak jak napisałeś, ale nic nie pomogło (tak mi się wydaje).
Uruchomiłem daemon'a o 13:37 dzisiaj i już jest ~100 wystąpień /dev/ttyUSB0 (plik w załączniku - zrzucony o 18:10).
Czekam na dalszą pomoc.
Z góry dzięki.






W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:
aquapi.txt

Tomasz Jastrzębski

unread,
Oct 10, 2015, 2:08:25 AM10/10/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć, czy udało się Wam dojść do tego, gdzie w kodzie występuje ten błąd?


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:

Lexx

unread,
Oct 18, 2015, 2:17:21 PM10/18/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Hej,

Przyznam szczerze - patrzyłem kilka razy na kod - jednak nie mam pomysłu skąd to mogło by się brać.
Nie mam niestety relayboarda więc mogę tylko domniemywać gdzie leży błąd.
Powiedz jeszcze, używasz najnowszej wersji ściągniętej z githuba?

Tomasz Jastrzębski

unread,
Oct 18, 2015, 4:04:19 PM10/18/15
to AquaPi - komputer akwariowy oparty o Raspberry Pi
Cześć, używam najnowszej wersji.


W dniu środa, 12 sierpnia 2015 05:48:38 UTC+2 użytkownik Tomasz Jastrzębski napisał:
Reply all
Reply to author
Forward
0 new messages