Skocz do zawartości

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


Brendy

Pomocna odpowiedź

A w ogóle komunikuje się z telegramem?

Nie znam API telegrama, ale na Twoim miejscu zacząłbym od kodu realizującego wyłącznie nagrywanie filmu. Potem PIR, potem telegram, a nie wszystko na raz bo nie wiadomo o co mu chodzi.

Link do komentarza
Share on other sites

(edytowany)

Tak jest komunikacja z telegramem w kodzie który wysłalem jest taka linia if telegramText == '/start':  i jak w tel z apki wysyłam /start to otrzymuje odpowiedź Security camera is activated. Bot jest prawidlwo skonfigurowany.

Edytowano przez Brendy
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

(edytowany)

Przejrzałeś mnie😄 przycisk. Jesli nie jest wcisniety na konsoli komunikat Brak Wykrycia Ruchu a jak wciśnięty Wykryto Ruch.

PIR.png

Edytowano przez Brendy
Link do komentarza
Share on other sites

Ech... teraz dopiero dokładniej spojrzałem w ten kod. Skąd to cudo wziąłeś?

Zauważ: program dochodzi do message_loop i tam sobie siedzi (i coś tam wykonuje). Jeśli z jakichś przyczyn pętla zostanie przerwana, program idzie sobie dalej, dochodzi do bardzo inteligentnej części:

while 1:
    time.sleep(10)

i tam sobie kręci się w kółko nie robiąc nic. Ponieważ nie wiesz, czy program dalej działa (nie sprawdzasz tego, a przecież działa, chociaż nie tak jak sobie wymarzyłeś) odnosisz wrażenie, że program się skończył. Ponieważ nie masz zielonego pojęcia co z tym zrobić, resetujesz malinkę (jak znam życie to nie przez "sudo reboot" tylko fizyczne odcięcie zasilania, co za jakiś czas skończy się koniecznością przeflashowania lub nawet wymiany karty).

Weź na początek:

Wywal te ostatnie linijki z kodu, a w ich miejsce wstaw np.

print("Oj, coś jest nie tak")

Odpal putty, zaloguj się przez ssh na malinkę, wydaj polecenie:

python3 teleg.py

(czy jak tam się ten Twój program nazywa)

i wtedy zacznij wysyłać jakieś wiadomości telegramem i wciskać przyciski.

Patrz co program wypisuje.

A przede wszystkim naucz się podstaw obsługi Linuksa, bo jeśli nie potrafisz stwierdzić czy program w ogóle działa to nie wróżę sukcesów w uruchamianiu.

Przy okazji - poczytaj sobie o uprawnieniach w Linuksie, o tym co decyduje czy program jest wykonywalny i o tajemniczym słówku "shebang".

 

 

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('5505291139:AAFHTCB0lOxoUfNons-I1IWGGGBfkwjrXUA')
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!')
        
        print("Oj, coś jest nie tak")

Ok wywyaliłem tą linie na koncu wstawiłem tak. Czyli to while 1: time.sleep(10) mogło zamrażac mój program? odpaliłem program i czekam...

Jak uruchomiłem python3  pir.py to mam coś takiego

Jako osoba z tylu letnim doświadczeniem i ogromną wiedzą coś byś polecał na początek jakie zagadnienia zacząć linux/python jakieś książki?

Wiem, że rzuciłem się na głęboką wodę bardzo bym chciał tą fotopułapkę zrobić ponieważ mam problem ktoś mi coś niszczy tutaj fajnie to działa w sensie że jest odrazu info na tel. W między czasie na pewno będe wczytywał się w temat. Dziękuje że poświęcasz swój czas i chcesz pomoć bardzo to doceniam.

 

IMG_20220724_093254.jpg

Link do komentarza
Share on other sites

49 minut temu, Brendy napisał:

Jak uruchomiłem python3  pir.py to mam coś takiego

Brak zasobów... sprawdź czy kamera działa normalnie przez raspivid czy raspistill.

Ile masz ustawione pamięci dla GPU?

Jaką wersję systemu instalowałeś (buster czy boolseye)? Z tego co pamiętam bullseye ma jakieś problemy z kamerą.

Co do książek... no cóż, nie bardzo mogę coś polecić, ja się uczyłem Linuksa dość dawno i nie pamiętam jaka to była książka... na 100% jest dziś nieaktualna i niedostępna. O Pythona zapytaj lepiej kogoś kto niedawno zaczął.

Link do komentarza
Share on other sites

(edytowany)

Tak przez raspistill działa po wywowaniu komendy raspistill -o test.jpg obraz pokazuje się i po chwili znika.

Pamięć GPU 128 tak mam ustawione.

 

IMG_20220724_105732.jpg

Edytowano przez Brendy
Link do komentarza
Share on other sites

(edytowany)

Wymieniłem zasilacz na inny 5.2V 3A nie jakiś chińczyk i dalej to samo.

Widać nawet po zielonej diodzie na malinie jak działało świeciła się po godz dioda zaczęła mrugać i wciśnięcie przycisku nic nie daje nawet muszę robić reset żeby uruchomić terminal jakaś straszna lipa. Mocna zwiecha następuje.

Edytowano przez Brendy
Link do komentarza
Share on other sites

Nareszcie coś ruszyło. Przepisałem program tak, żeby zamiast nagrywania filmiku 10s zrobił zdjęcie i wysłał na telegram i ważna uwaga autostart który mi zalecileś przez systemd u mnie nie działa jak zmieniłem na metodę która wrzuciłem jak na pierwszej stronie tematu działa na niej po reboocie program działa testuję 4h i narazie jest ok zostawiam do rana zobaczymy.

Link do komentarza
Share on other sites

sudo nano /etc/systemd/system/malina.service

[Unit]
Description=malina Service
After=multi-user.target

[Service]
Type=idle
User=pi
ExecStart=/usr/bin/python3 /home/pi/bb.py
Restart=always

[Install]
WantedBy=multi-user.target

sudo chmod 644 /etc/systemd/system/malina.service
sudo systemctl daemon-reload
sudo systemctl enable malina.service

 

Link do komentarza
Share on other sites

Czemu idle a nie simple?

Wywal After na wszelki wypadek, systemd sobie poradzi bez tego

Dodaj jeszcze:

RestartSec=10

tak na wszelki wypadek, żeby nie wariował jeśli program wywali błąd przy starcie.

Rozumiem że spróbowałeś wystartować program przez

sudo systemctl start malina

i potem obejrzałeś sobie stan programu przez

sudo systemctl status malina

Coś tam było interesującego?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.