Skocz do zawartości

Problem z Maliną po jakimś czasie lub resecie nie działa program


Brendy

Pomocna odpowiedź

Mam problem ze swoim raspberry pi zero 2w. Po wgraniu programu malina działa po jakimś czasie przestaje działać program muszę ponownie wgrać program i wszystko jest ok. Ta sama sytuacja dotyczy resetu wyłączę ją od zasilania włącze ponownie i program nie działa muszę wgrać na nowo i wtedy działa.

Ma ktoś jakiś pomysł co może być przyczyną?

Edytowano przez Brendy
Link do komentarza
Share on other sites

A co to według Ciebie oznacza "wgrać program" dla RPi. Na Arduino i podobnych konstrukcjach wgranie programu to zaprogramowanie modułu,  zapis programu do pamięci flash i jego autostart po reset. A dla RPi? Tu masz mikrokomputer z systemem operacyjnym i jak dla mnie wgranie programu to jego zapis w systemie plików RPi (na karcie SD). Uruchomienie programu, jego autostart przy starcie systemu to zupełnie inna sprawa. No ale co Ty masz na myśli to nie wiem.

Edytowano przez Belferek
Link do komentarza
Share on other sites

Źle to ująłem dlatego że mam styczność ESP/Attiny, a malina to coś innego, nowego dla mnie dopiero zaczynam.

Po ponownym uruchomieniu maliny, systemu program nie wykonuje się, nie ma autostartu programu muszę ponownie wykonać zapis do plików rpi przez Thonny Python IDE, żeby np zamigać diodą.

Link do komentarza
Share on other sites

Nie musisz nic wgrywać, masz go uruchomić.

Pomyśl: czy jeśli odpalisz swojego windowsa to za każdym razem instalujesz przeglądarkę żeby wejść na forum, czy może wystarczy kliknąć w ikonkę i uruchomić przeglądarkę  która już jest zainstalowana? Tu masz dokładnie to samo.

A o autostarcie pogadamy jak już nauczysz się podstaw, bez tego to nie ma żadnego sensu.

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie, źle kombinujesz.

Najpierw dowiedz się, jak uruchamiane są programy w Linuksie  (system operacyjny malinki to właśnie Linux), jak działa system operacyjny, a potem dopiero wybierzesz jakąś metodę automatyczego startu (cron, systemd, rc.local to takie najpopularniejsze). 

Autorun to w tym przypadku automatyczne uruchomienie aplikacji w środowisku graficznym po zalogowaniu (np. uruchomienie przeglądarki czy programu pocztowego) czyli zupełnie coś innego niż chcesz.

Link do komentarza
Share on other sites

Metoda automatycznego startu po ponownym uruchomieniu maliny działa program wykonuje się jeszcze będę testował ale myślę że jest ok zrobiłem parę testów.

Mam inne pytanie czy malina po jakimś czasie wchodzi w jakiś stan uśpienia? Po 15-20 min program przestaje działać? Są jakieś komendy żeby to wyłączyć? Np jakbym chciał żeby program cały czas pracował.

Link do komentarza
Share on other sites

Uruchom program z terminala (przez ssh) i zobacz co wypisze jak się skończy.

Jaką metodą zrobiłeś autostart?

Aha, i pokaż może ten program.

 

Edytowano przez ethanak
Link do komentarza
Share on other sites

import telepot
from picamera import PiCamera
import RPi.GPIO as GPIO
import time
from time import sleep
import datetime
from telepot.loop import MessageLoop
from subprocess import call

PIR = 4
camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 25

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIR, GPIO.IN)

motion = 0
motionNew = 0


def handle(msg):
    global telegramText
    global chat_id

    chat_id = msg['chat']['id']
    telegramText = msg['text']

    print('Message received from ' + str(chat_id))

    if telegramText == '/start':
        bot.sendMessage(chat_id, 'Security camera is activated.')  # Put your welcome note here

    while True:
        main()


bot = telepot.Bot('')
bot.message_loop(handle)


def main():
    global chat_id
    global motion
    global motionNew

    if GPIO.input(PIR) == 1:
        print("Wykryto Ruch")
        motion = 1
        if motionNew != motion:
            motionNew = motion
            sendNotification(motion)


    elif GPIO.input(PIR) == 0:
        print("Brak Wykrycia Ruchu")
        motion = 0
        if motionNew != motion:
            motionNew = motion


def sendNotification(motion):
    global chat_id

    if motion == 1:
        filename = "./video_" + (time.strftime("%y%b%d_%H%M%S"))
        camera.start_recording(filename + ".h264")
        sleep(5)
        camera.stop_recording()
        command = "MP4Box -add " + filename + '.h264' + " " + filename + '.mp4'
        print(command)
        call([command], shell=True)
        bot.sendVideo(chat_id, video=open(filename + '.mp4', 'rb'))
        bot.sendMessage(chat_id, 'Uwaga Złodziej!')


while 1:
    time.sleep(10)

Program kamery który po wykryciu ruchu wysyła nagrany 5s filmik na tel przez apke telegram wykorzystując bota.

Utknąłem ponieważ przestaje działać po 10 min i musze ponownie uruchamiać malinę.

 

Autostart tak zrobiłem i działa dobrze po resecie maliny program się wykonuje czyli czujka ruchu i zdj na tel.

mkdir /home/raspberry/.config/autostart
nano /home/raspberry/.config/autostart/clock.desktop

[Desktop Entry]
Type=Application
Name=Clock
Exec=/usr/bin/python3 /home/raspberry/teleg.py

 

Link do komentarza
Share on other sites

A możesz jednak zrobić to o co prosiłem, czyli odpalić program z palca w terminalu, poczekać aż zdechnie i pokazać co tam mądrego ponawypisywał?

BTW lepiej zrobić autostart przez systemd, masz wtedy pełną  kontrolę nad programem (nie musisz ponownie uruchamiać malinki, linux to nie windows, wystarczy zrobić restart przez systemctl). No i nie musisz odpalać całego graficznego interfejsu - maszynka ma 512 MB RAM, z czego co najmniej 128 zżera kamera

 

Link do komentarza
Share on other sites

Ok odpalę go w terminalu jak zalecileś.

Ethanak czy nie lepiej jakbym zmienił system na wersję lite dla maliny pi zero?

Bo ona ma mniej RAMu czy to może mieć wpływ na działanie i zachowanie jak wcześniej opisałem? 

Link do komentarza
Share on other sites

8 minut temu, Brendy napisał:

czy nie lepiej jakbym zmienił system na wersję lite dla maliny pi zero

Teoretycznie nie musisz zmieniać - możesz po prostu nie uruchamiać środowiska graficznego. Natomiast jeśli nic ważnego tam jeszcze nie masz to fakt, wersja lite będzie lepsza choćby z tego powodu,  że nie będziesz miał niepotrzebnych pakietów związanych właśnie z tym środowiskiem i system będzie zajmował mniej miejsca.

11 minut temu, Brendy napisał:

ona ma mniej RAMu czy to może mieć wpływ na działanie i zachowanie jak wcześniej opisałem

Może, ale nie musi. Dopóki nie dowiemy się co powoduje zatrzymanie się programu - możemy sobie równie dobrze wróżyć z fusów. Powiem tyle, że środowisko graficzne (LXDE konkretniej) zainstalowałem sobie kiedyś z ciekawości na mojej pierwszej malince, od tego czasu wszystkie (a mam ich kilka) działają na lite.

Link do komentarza
Share on other sites

Próbuje zrobić odczyt tego co pisałeś żebyśmy mogli coś ustalić dlaczego tak się dzieje.

Zainstalowałem tego lite. Podłączyłem się konwerterem i na terminalu putty obserwuje co się dzieje jak wciskam przycisk i powinno być zdj wysłane i nic nie ma, a wcześniej jak miałem tryb graficzny i wygrywałem przez  Thonny python IDE w trybie graficznym to program działał że była ta fotka jak był wcisniety przycisk.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.