V čem naprogramovat meteostanici na Raspberry Pi2?

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #150 kdy: 08. 01. 2017, 11:03:30 »
Startup scripty se na Raspberry Pi davaji do /etc/rc.local dolu pred "exit 0".
Jak uz bylo receno, pouzij tmux nebo screen, v nich pobezi tvuj program a pak se na to muzes kdykoliv pripojit.
Ja pouzivam tmux, do rc.local pred exit 0 bych dal
Kód: [Vybrat]
tmux new -d -s meteostanice '/cesta/k/programu'
To vytvori novou tmux session (pojmenovanou meteostanice, neni treba jestli tmux pouzijes jenom na tohle), spusti v ni tvuj program a odpoji se. Ty se tam pak pripojis pomoci
Kód: [Vybrat]
sudo tmux attach -t meteostaniceTakle se to spousti pod rootem, jestli nepotrebujes roota tak tmux v rc.local spust napr. pomoci sudo -u ... jako jiny uzivatel. Se screenem to bude podobny, ale nevim jak presne, nepouzivam ho.

Děkuji, šlape to, zatím jen z příkazového řádku, po startu to dám později. Spouštím přes:

Kód: [Vybrat]
tmux new -d -s meteostanice -c '/home/pi/Meteo' 'python weatherbh.py'
aby mi to startovalo v mém adresáři Meteo.

Chtěl bych se zeptat k tomu ještě na 1 věc:

1) jak vyskočím z TMUXu zase do příkazové řádky, aniž bych ukončil běžící pythoní program?


A našel jsem si
Kód: [Vybrat]
tmux list-sessions (to měla být druhá otázka-se sudo na začátku to nefunguje), to vypíše, jaké sessions jsou spuštěné. Může se hodit.


Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #151 kdy: 08. 01. 2017, 11:13:06 »
edit, už to vím:

Kód: [Vybrat]
CTRL-b d

nobody(ten pravej)

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #152 kdy: 08. 01. 2017, 20:02:52 »
doporucuju vyzkouset Byobu, jde o pohodlnejsi/funkcnejsi nadstavbu Tmux nebo Screen: https://cs.wikipedia.org/wiki/Byobu

nobody(ten pravej)

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #153 kdy: 08. 01. 2017, 20:05:06 »
ad byobu: napoveda F9, opusteni bez ukonceni F6...

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #154 kdy: 09. 01. 2017, 07:14:11 »
Díky. Já bych ještě potřeboval poradit s tím tmuxem-jsem zjistil, že vydrží běžet různě dlouho a pak se session ukončí, nevím proč. Předtím program běžel ve smyčce 2-3 dny a žádný problém, teď to vydrží různě dlouho, hodinu, 10 minut, tak nevím.

to "ctrl-b d" je dobře?


Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #155 kdy: 28. 03. 2021, 18:01:01 »
Tu meteostanici jsem tehdy nedorazil do úspěšného finále. Zlobilo mi čidlo BME280, tak jsem to odložil.
Teď se to snažím rozchodit znova, čerstvá instalace Raspbian Buster. Kameru jsem vyměnil, místo Hikvision jsem dal starlight Dahua. A s touhle výměnou jsem se zasekal na celý den a už to vzdávám, prostě nevím, jak na to.

  • Mám nainstalovaný Pillow, vč. knihoven na JPEG, PNG a TT fonty.
  • Změnil jsem URL obrázku z kamery Hikvision na kameru Dahua.
  • Program spadne na tom, že "IO Error: cannot identify image file <_io.BytesIO object at 0x75c37f30>"
  • Že kamera dodává snímek jsem ověřil z RPI přes wget url - stáhne se soubor snapshot.cgi, což je JPEG obrázek
  • Že problém není s formátem snímku jsem si ověřil tím, že jsem ho nahrál na svůj server a místo z kamery jsem ho načetl ze serveru. Normálně programem prošel.
  • Tedy jsem vydedukoval, že problém bude s příponou .cgi. Ale prostě jsem nevygooglil, jak donutit program, aby to považoval za JPEG.

Kód:
Kód: [Vybrat]
response=requests.get("http://uzivatel:heslo@10.0.0.75/cgi-bin/snapshot.cgi", timeout=(7, 7))
img=Image.open(io.BytesIO(response.content))
...

na tom druhém řádku to spadne. Poradíte mi prosím?

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #156 kdy: 28. 03. 2021, 18:29:56 »
Máš na té malině potřebné knihovny pro obrázkové formáty? https://pillow.readthedocs.io/en/latest/installation.html

Než přes wget bych zkusil uložit ten response.content do souboru (abys měl jistotu, že to je přesně stejné) a ten teprve analyzovat třeba přes mediainfo.

_Jenda

  • *****
  • 771
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #157 kdy: 28. 03. 2021, 18:45:17 »
Kód:
Kód: [Vybrat]
response=requests.get("http://uzivatel:heslo@10.0.0.75/cgi-bin/snapshot.cgi", timeout=(7, 7))
img=Image.open(io.BytesIO(response.content))
...

na tom druhém řádku to spadne. Poradíte mi prosím?
Zapiš response.content do souboru (f = open("/tmp/aaa.jpg", "wb"); f.write(response.content); f.close()) a podívej se, jestli to je validní JPEG. Následně ho zkus z toho souboru, nikoli přímo z té URL, udělat Image.open.

Můžeš mít blbě autentizaci, Accept hlavičku, nebo z nějakého jiného důvodu dostáváš přes pythoní requests jiný výsledek než wgetem.

_Jenda

  • *****
  • 771
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #158 kdy: 28. 03. 2021, 19:37:16 »
Mimochodem náhodou zrovna teď tohle řeším, a na mé Dahue mi tahle adresa vrací HTTP 500. Musel jsi někde něco speciálně nastavovat, aby to ten snapshot udělalo? Video mi funguje, ale já dělám časosběrné záběry a tak by mi stačil jednou za 20 sekund obrázek. (alternativa je pustit si FTP server a nechat to nahrávat tam)

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #159 kdy: 28. 03. 2021, 20:30:21 »
v Dahue musí být v System-Safety-System service povoleno CGI-Service
zkoušel bych to pod adminem, ale když si založíš uživatele, tak musí mít povoleno: File Backup, Storage, User, Live.

Jinak na Dahuu je víc možností, jak se na ni dobouchat, podle typu. Vydá to na několik stránek. Myslím ale, že v návodu k typu to je.

Mě fungují 2 metody, u první na mě vyskočí okýnko s přihlášením, kdy i když to mám v URL, tak to stejně chce přihlásit a při tom, co jsem popsal výše, to zobrazí rovnou obrázek (tedy podle browseru, FF si řekne o potvrzení, Opera o celý login a Vivaldi ho rovnou zobrazí. IE samozřejmě netrefí na adresu a hodí chybu..).

Ten save přímo z response zkusím.

A pro redustin: jo, knihovny mám (bojoval jsem s tím dlouho, ale mám), to by jinak nezobrazilo pojmenovaný jpeg.

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #160 kdy: 28. 03. 2021, 21:13:52 »
Zapiš response.content do souboru (f = open("/tmp/aaa.jpg", "wb"); f.write(response.content); f.close()) a podívej se, jestli to je validní JPEG. Následně ho zkus z toho souboru, nikoli přímo z té URL, udělat Image.open.

Můžeš mít blbě autentizaci, Accept hlavičku, nebo z nějakého jiného důvodu dostáváš přes pythoní requests jiný výsledek než wgetem.

No, tak ten soubor je prázdný - nula bajtů. :-O

EDIT: tak já už vidím tu strašlivou zradu. Wget se tam prostě probije, i přes stížnost kamery 401 Unauthorized. Python samozřejmě ne.. :-/

Kód: [Vybrat]
pi@raspberrypi:~ $ wget http://uzivatel:heslo@10.0.0.75/cgi-bin/snapshot.cgi
--2021-03-28 21:14:22--  http://meteo:*password*@10.0.0.75/cgi-bin/snapshot.cgi
Connecting to 10.0.0.75:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Syntax error in Set-Cookie: secure; HttpOnly at position 7.
Authentication selected: Digest realm="Login to 6bnějakýstrašlivýkóde8", qop="auth", nonce="21224249", opaque="71dalšítajnéhesloproakcie3"
Connecting to 10.0.0.75:80... connected.
HTTP request sent, awaiting response... 200 OK
Syntax error in Set-Cookie: secure; HttpOnly at position 7.
Length: 215628 (211K) [image/jpeg]
Saving to: ‘snapshot.cgi’

snapshot.cgi        100%[===================>] 210.57K  --.-KB/s    in 0.02s

2021-03-28 21:14:23 (10.4 MB/s) - ‘snapshot.cgi’ saved [215628/215628]
« Poslední změna: 28. 03. 2021, 21:21:56 od PedroKV »

Re:V čem naprogramovat meteostanici na Raspberry Pi2?
« Odpověď #161 kdy: 28. 03. 2021, 21:35:01 »
Tak už to šlape, ufff. Celý den jsem nad tím strávil. Nápověda je zde:
https://docs.python-requests.org/en/master/user/authentication/

tedy nejdřív:
Kód: [Vybrat]
from requests.auth import HTTPDigestAuth
A můj request vypadá nyní takto:
Kód: [Vybrat]
response=requests.get("http://uzivatel:heslo@10.0.0.75/cgi-bin/snapshot.cgi", auth=HTTPDigestAuth('uzivatel', 'heslo'), timeout=(7, 7))s tím, že v URL by to uživatelské jméno a heslo nejspíš být nemuselo.

JENDO, MOC DÍKY ZA POMOC!