[rešeno] Kako poslat datoteko vsako minuto na server?

Bojan Član
Imam rPi + kamero.
Z ukazom: raspistill -n -hf -vf -o Cirje%%.jpg -t 0 -tl 60000 mi je uspelo naredit, da kamera dela sliko z vedno enakim imenom (Cerje%.jpg) in prepiše prejšnjo. To rabil, da se mi bo na spletni strani osveževala slika. Na strani že imam skripto, kjer se mi osveži samodejno na eno min.

Potem sem iskal po netu in prišel do wput in probal s tem ukazom:

pi@webcam:~ $ wput -u ~/Camera ftp://xxxx:yyyy@ftp-neki-xxx.com/Webcam/Cirje%.jpg/
--14:35:34-- `/home/pi/Camera/Cirje%.jpg'
    => ftp://up.ime:gesloxxxxx@IP_številka:21/Webcam/Cirje%.jpg//home/pi/Camera/Cirje%.jpg
Connecting to IP_številka... connected! encrypted!
Logging in as up.ime ... Logged in!
in seveda šele ko sem probal mi je bilo jasno da je to ukaz za enkrat in se ne ponavlja vsako minuto. Povrh vsega pa še slike ni preneslo na server.

Kar bi rad, če mi poveste kako naj to datoteko /home/pi/Camera/Cirje%.jpg vsako minuto pošiljam na server? Ni treba da je wput, bilokaj samo da dela.

Komentarji

  • Torej ena rešitev je recimo rsync v povezavi s cronjob, ki vsako minuto uskladi/pošlje/prepiše sliko na strežniku. 
  • to je kot za timelapse viudeo samo, da se različne verzije ne shranjujejo: https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=79508

    https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=67109

    glede na to, da se to kar precej dela z RPi je mogoče že kak programček na voljo.

  • CrazyLemon sem na pedeseti strani knjige Command line :)
    Kar si napisal presega moje sposobnosti. Lahko kaj več poveš? Spisat skripto za Cron ali bilo kaj drugega je še daleč.

    Pri rsync pa sem malo gledal navodila, če prav razumem moram tudi na serverju ki je moj imet rsync? Ker server nisem imel v mislih lastnega ampak server za spletno stran.

    gregor3000 ja motion, ampak sem videl, da imajo težavo ker slika samo kadar je gibanje, pa še nevem kaj,...
    Potem probavam še s programom webcam. Ima oboje slika in pošilja na ftp, ampak me muči conf datoteka, ker ne vem kaj nastavit pod input = ???
    Sem odpru post na rpi forumu ma slabo kaže
    https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=136252
  • CrazyLemon Skrbnik
    uredil/-a 15. February, 2016
    Kako pa dostopaš do strežnika za spletno stran? ftp? potem preglej povezave ki jih je @gregor3000 prilepil, tam je opisan postopek s ftpjem. Boš pa v vsakem primeru uporabil cron, ker je to najbolj preprost način.
    Zdaj vidim da te webcam že sam omogoča da vpišeš podatke od ftpja in potem on pošlje na strežnik.
    Torej samo še v script daš ukaz za zalaufat webcam in nato v cron dodaš povezavo do scripta, ki se bo izvršil vsako minuto.
  • Ok sledil sem prvi povezavi in zadnjemu postu, kjer je opisano po vrsti in še vedno mi ne dela. Edina stvar, ki sem jo probal spremenit je jpeg namesto jpg v skripti, ker v navodilih od fswebcam je opisana datoteka jpeg, toda vseeno na serverju ni slike.

    Potem sem probal še ukaz: sudo modprobe bcm2835-v4l2 in še vedno nič.

    crontab:
    1 * * * * /home/pi/SnapShot.sh
    
    če podam ukaz crontab -l, mi še enkrat izpiše crontab. Domnevam, da to pomeni da deluje.

    Skripta:
    #!/bin/bash
    
    #change these parameters to fit your need
    
    IN_LOCAL=Cerje.jpeg
    OUT_REMOTE=Cerje.jpeg
    
    USER=uporabniško ime
    PASSWD=geslo
    SERVERIP=ip od serverja
    
    #do fswebcam twice, the first is to get webcam in stable condition
    fswebcam -r 2000x1500 --no-banner /dev/null -F 3
    sleep 2
    fswebcam -r 2000x1500 --no-banner  $IN_LOCAL
    
    #ok now we will transfer via ftp
    
    /usr/bin/ftp -v -n $SERVERIP <<END_OF_SESSION
    user $USER $PASSWD
    /cd /uporabniško_ime_od_serverja/public_html/Webcam        #tako imam na serverju mapo
    promt off
    binary
    put $SIN_LOCAL $OUT_REMOTE
    bye
    END_OF_SESSION
    SnapShot.sh (END)
    
  • CrazyLemon Skrbnik
    uredil/-a 24. February, 2016
    /cd /uporabniško_ime_od_serverja/public_html/Webcam        #tako imam na serverju mapo

    Ne vem če bo to držalo.

    Ukaz je 'cd', pa prepričaj se da je tudi pot taprava.

    Pa preden dodaš skript v crontab se prepričaj da dela če jo ročno zaženeš. Ker tako ti bo vsako minuto zagnalo skript, ki mogoče tudi ne dela.

  • Brez / spredaj in uporabniškega imena: cd /public_html/Webcam/
    jo naloži na server z ukazom: sh SnapShot.sh

    Sedaj pa imam to težavo
    pi@webcam:~ $ service crond status
    ● crond.service
       Loaded: not-found (Reason: No such file or directory)
       Active: inactive (dead)
    
    Crontab -e:
    1 * * * * /home/pi/SnapShot.sh

  • CrazyLemon Skrbnik
    uredil/-a 25. February, 2016
    Seveda. Težava je da paket ni crond ampak cron :)
  • Nekje sem dobil tisti ukaz pa sem prilepil v terminal :)

    Do zdaj sem naredil naslednje:

    V /etc/modules sem čisto spodaj dodal bcm2835-v4l2 in ponovno zagnal sistem.

    #!/bin/bash
    
    #change these parameters to fit your need
    
    IN_LOCAL=Cerje.jpeg
    OUT_REMOTE=Cerje.jpeg
    
    USER=****
    PASSWD=****
    SERVERIP=********
    
    #do fswebcam twice, the first is to get webcam in stable condition
    fswebcam -r 1000x800 --no-banner /dev/null -F 3
    sleep 2
    fswebcam -r 1000x800 --no-banner  $IN_LOCAL
    
    #ok now we will transfer via ftp
    
    /usr/bin/ftp -v -n $SERVERIP <<END_OF_SESSION
    user $USER $PASSWD
    cd /public_html/Webcam/
    promt off
    binary
    put $SIN_LOCAL $OUT_REMOTE
    bye
    END_OF_SESSION
    SnapShot.sh (END)

    Cron zgleda takole:
    1 * * * * /home/pi/SnapShot.sh

    pi@webcam:~ $ service cron status
    ● cron.service - Regular background program processing daemon
       Loaded: loaded (/lib/systemd/system/cron.service; enabled)
       Active: active (running) since Thu 2016-02-25 16:34:11 CET; 3min 36s ago
         Docs: man:cron(8)
     Main PID: 348 (cron)
       CGroup: /system.slice/cron.service
               └─348 /usr/sbin/cron -f
    
    Ampak na server je ne prenese.
    Povezava z netom deluje.

    sh SnapShot.sh   >>>  deluje, sliko prenese. 

    ls mi pokaže Cerje.jpeg in SnapShot.sh

    Sistem je bil čisto na novo naložen Raspbian Jessie lite (se pravi brez gui) in posodobljen.

    Kaj? Koga? :( 
  • Bojan Član
    uredil/-a 25. February, 2016
    Hmm, bom malo poročal:
    18:01 je zadnji čas datoteke na serverju, sedaj je ura 18:08 in nisem nič tikal, samo na server sem šel pogledat.
    19:01 se je posodobila. Enak čas datoteke je na računalniku.

    Se pravi se posodablja na vsako uro in ne minuto.
    Pomeni, da cron nekaj ne dela prav oziroma sem nekaj narobe napisal?
    Po teh naovdilih bi moralo bit ok
    http://www.adminschoice.com/crontab-quick-reference


    Probal sem tako ma ne dela
    01 * * * * /home/pi/SnapShot.sh
  • Za vsako minuto dej same zvezdice ali pa */1 za minuto.
    Pa pametno bi bilo da bi dal absolutno pot kje je datoteka oz. kje naj se shrani. 
  • */1 * * * * /home/pi/SnapShot.sh
     :D 

    Joj, hvala po enem mesecu končno  :)
  • No super..  poslal sem ti zasebno sporočilo. Priporočam ti da ga upoštevaš :)
Za komentiranje se prijavite ali pa se vpišite.