Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - PedroKV

Stran: 1 ... 3 4 [5]
61
áha, ok.

No já mám kameru 4:3 - 1280x960 a resizuju na 800x600, takže u mě je to buřt. ;-)

62
Díky. Thumbnail a resize jsem zjistil, že je to to samé, jen jedno musí do proměné.

S tím obdélníkem pod písmem to jde řešit i výpočtem délky řetězce a podle toho určit koncovou "x" souřadnici (pravý dolní roh) obdélníku, tedy délku obdélníku. Ale už to nechám. Přesto díky

63
Nechám to takhle, jak to je (http://meteo.pozorka88.cz). Nechci měnit design a outline ve velikosti písma 11 by asi bylo dost nečitelné. Jinak proužek, i třeba se sníženou průhledností řešením je.

64
PedroKV: ok když má kamera přímo url tak je to ideální.
Na stahování snímků netřeba volat wget, (netřeba ukládat mezisoubor na disk) ale pokud teda bude script v Pythonu tak šáhni po knihovně requests, zachází se s ní jednoduše, celé  by to mohlo vypadat např takto:

Kód: [Vybrat]
response = requests.get(url_kamery, auth=(login, heslo))
if not response.status_code == requests.codes.ok:
    print("Nepodarilo se stahnout obrazek.")
    sys.exit(1)

img = Image.open(BytesIO(response.content)) # Nacte obrazek
img.thumbnail(size=(640, 480)) # Zmensi
draw = ImageDraw.Draw(img)
draw.text((10, 10), "Teplota: {}°C".format(get_temperature())) # Vepise text
img.save("/home/pi/kamera.jpg", format="JPEG") # Ulozi

Co se týče názvu obrázku atp tak si to naformátuj např pomocí datetime pak lze vytvářet strukturu jako /rok/měsíc/den/hodina.

Dokázal byl vepsat do obrázku hodnoty tak, aby se vepsaly černým písmem na bílém pozadí, tj. aby pod písmenkem automaticky vznikl bílý obdélníček. Nebo musím taky nejdřív nakreslit bílý obdelník a na něj pak napsat text? Googlil jsem teď chvíli info k PIL a nic kloudného jsem nevygooglil.. :-(

Aktuálně to mám přes convert takhle:

Kód: [Vybrat]
  cmd=("convert camerasmall.png -fill white -draw 'rectangle 648,6,793,17 rectangle 684,19 793,30 rectangle 684,32 781,43 rectangle 684,45 763,56' -pointsize 10 -fill black -font DejaVu-Sans -annotate +650+16 'snímek: %s' -annotate +686+29 'barometr: %s hPa' -annotate +687+42 'teploměr: %s °C' -annotate +685+55 'vlhkoměr: %s %s' camerasmall.jpg" % (timedata,relative_pressure1,temperature1,humidity0,percent))

tak momentálně to mám takhle:
Kód: [Vybrat]

import requests
import PIL
import io
from PIL import Image,ImageDraw,ImageFont

  response=requests.get("adresaobrázkuzkamery")
  if not response.status_code==requests.codes.ok:
    print (timenow()+" Unable to download image")
    sys.exit(1)
  img=Image.open(io.BytesIO(response.content))
  img=img.resize(size=(800,600),resample=1)
  draw=ImageDraw.Draw(img)
  draw.rectangle([648,6,793,17],fill="white")
  draw.rectangle([684,19,793,30],fill="white")
  draw.rectangle([684,32,781,43],fill="white")
  draw.rectangle([684,45,763,56],fill="white")
  font=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf',11, encoding="unic")
  draw.text((650,7), (u"snímek: "+timedata),font=font, fill="black")
  draw.text((686,20), ("barometr: "+str(relative_pressure1)+" hPa"),font=font, fill="black")
  draw.text((687,33), (u"teploměr: "+str(temperature1)+" °C"),font=font, fill="black")
  draw.text((685,46), (u"vlhkoměr: "+str(humidity0)+" %"),font=font, fill="black")

černý text na bílém pozadí asi psát nejde, jediná šance je zjistit šířku textu vypsání do obrázku a podle toho udělat šířku bílého obdélníku. Nakonec na to kašlu a nechám délku obdélníku statickou. Trochu mě potrápilo, že přes convert jsem měl font užší. Ač jsem měl specifikovaný font DejaVuSans, convert používal Condensed verzi. A díky quality=90 v image.save (stejné nastavení kvality, jako mám nyní na PC), se text v boxíkách zčitelnil. image.thumbnail a image.resize dělají to samé, jen každý s jiným defaultním filtrem. Použil jsem image.resize a resample=1, přijde mi, že to dává nejhezčí výsledek. No musím se podívat ještě na denní snímek.

65
PedroKV: ok když má kamera přímo url tak je to ideální.
Na stahování snímků netřeba volat wget, (netřeba ukládat mezisoubor na disk) ale pokud teda bude script v Pythonu tak šáhni po knihovně requests, zachází se s ní jednoduše, celé  by to mohlo vypadat např takto:

Kód: [Vybrat]
response = requests.get(url_kamery, auth=(login, heslo))
if not response.status_code == requests.codes.ok:
    print("Nepodarilo se stahnout obrazek.")
    sys.exit(1)

img = Image.open(BytesIO(response.content)) # Nacte obrazek
img.thumbnail(size=(640, 480)) # Zmensi
draw = ImageDraw.Draw(img)
draw.text((10, 10), "Teplota: {}°C".format(get_temperature())) # Vepise text
img.save("/home/pi/kamera.jpg", format="JPEG") # Ulozi

Co se týče názvu obrázku atp tak si to naformátuj např pomocí datetime pak lze vytvářet strukturu jako /rok/měsíc/den/hodina.

Dokázal byl vepsat do obrázku hodnoty tak, aby se vepsaly černým písmem na bílém pozadí, tj. aby pod písmenkem automaticky vznikl bílý obdélníček. Nebo musím taky nejdřív nakreslit bílý obdelník a na něj pak napsat text? Googlil jsem teď chvíli info k PIL a nic kloudného jsem nevygooglil.. :-(

Aktuálně to mám přes convert takhle:

Kód: [Vybrat]
  cmd=("convert camerasmall.png -fill white -draw 'rectangle 648,6,793,17 rectangle 684,19 793,30 rectangle 684,32 781,43 rectangle 684,45 763,56' -pointsize 10 -fill black -font DejaVu-Sans -annotate +650+16 'snímek: %s' -annotate +686+29 'barometr: %s hPa' -annotate +687+42 'teploměr: %s °C' -annotate +685+55 'vlhkoměr: %s %s' camerasmall.jpg" % (timedata,relative_pressure1,temperature1,humidity0,percent))

66

ale to mi ted na RPi nejak nefunguje(osobne to nepouzivam protoze mam system na SSD, takze mozna sem jen neco prehlid :) kazdopadne klasicke pridani do fstab mi funguje:
Kód: [Vybrat]
tmpfs     /tmp tmpfs     nodev,nosuid,size=20%,mode=1777    0    0


tak mě to nejde, nabootuju do root@raspberrypi a journalctl -xb vypíše:
Kód: [Vybrat]
tmp.mount mount process exited, code=exited status=32
failed to mount /tmp
:-(

ovšem odkomentování v etc/default/tmfps funguje a /tmp je ramdisk

A jinak pozitivní je, že jsem vyměnil ovládací část programu pro bme280 za ten adafruití program (
https://github.com/MS3FGX/Adafruit_Python_BME280
)

a už to měří jak má. Ony jsou ty obě části hodně podobné, ale nejsem tak zdatný, abych našel chybu v tom mém původním.

67
děkuji, funguje, jen je třeba před to mount hodit SUDO. Co jsem do adresáře /Ramdisk nahrál tam po restartu není-tedy ok. Udělal jsem si tenhle adresář, protože jako nelinuxák budu i za půl roku vědět, že tohle je ramdisk, spíš než kdesi ve var/....

Co se vlhkoměru týče, tak jsem vypozoroval, že:
1) po zapnutí RPi a spuštění původního skriptu odsud:
http://www.raspberrypi-spy.co.uk/2016/07/using-bme280-i2c-temperature-pressure-sensor-in-python/
se ukáže vlhkost 65%
2) po opakovaném spuštění skriptu se ukáže to samé
3) po spuštění mého prográmku to dělá to samé (65%), no logicky, já jen upravil zobrazování výstupu a čtení z kamery
4) spustím-li skript od Adafruit, načtou se stejné hodnoty teploty a tlaku (+- šum), ale vlhkoměr +-40%
od té doby už měří dobře i skript 1 a můj, jak na to dýchnu, vlhkost vyletí třeba na 80%.

68
ok, díky. Mohl bys mi prosím, jak pro blbce napsat příkazovou řádku, díky které přesměruju TMP do ramdisku (tmpfs) a to samé adresář home/pi/ramdisk? Děkuji pěkně ;-)

Jinak mi to nedalo,trošku jsem zalaboroval a nainstaloval ovladaš na Adafruit bme280 a přišel na to, že v tom mém programu je něco špatně. Vlhkost v bytě máme cca 41% a po dýchnutí to vyletí na 80%. Ne tak ovšem v mém programu. :-/ Přitom já v části, kde se čte senzor, nic neměnil.

69
Tak SFTP jsem v totalu rozběhal, nainstaloval plugin, pak hledal,co a jak a nakonec jsem to našel v okolních počítačích. Paráda, šlape.

Co se cronu týče, ok, jen data posílám co minutu. Z webkamery má obrázek za vteřinu, to jde po lokální gbit síti, nějaké úpravy a čtení čidla další vteřina dvě, pak poslat 250kB obrázek+CSV soubor na ftp, to by se dalo do 20s stihnout (mám problem s wifi providerem, moc mu to nechodí, ale nic jiného u nás nejde (krom LTE) a navíc mám od něj veřejnou statickou IP adresu-to jinde nedostanu :-( ). Takže snad se to do další celé minuty stihne.

Co se ramdisku týče, vygooglil jsem toto: http://www.zdnet.com/article/raspberry-pi-extending-the-life-of-the-sd-card/
Rád bych si vytvořil v /home/pi adresář RAMDISK, stačí mi třeba 10MB a do něj dával mezisoubory-obrázky z kamery a CSV soubor. CSV soubor by pak cron po půlnoci (až bude celý) zkopíroval na SD kartu do YYYY/MM/DD.

Má taky smysl dát do ramdisku adresář TMP a LOGy? Protože jsem četl, že když se smaže adresář s logy, tak nemusí dělat dobrotu.


Na čidlo jsem dýchal. Výsledkem je zvýšení teploty a jen zcela nepatrná změna vlhkosti +1%. Taky se mi úplně nezdá ten vzorec na výpočet relativního tlaku. Když jsem včera BME280 hodil do otevřeného okna, teplota slezla o asi 13°C a tlak vzrostl o 3hPa (relativní).
Přitom ale když se podívám na graf teploty/rel.tlaku na stávající meteostanici, tak je tam jen minimální souvislost, přestože vzorec je tam stejný:
Delphi:
P := (P*ASL*9.80665/(287.04*(273.15+T+(ASL/400))))+P;

Python:
relative_pressure=(pressureAVG*ASL*9.80665/(287.04*(273.15+temperatureAVG+(ASL/400))))+pressureAVG

ASL je nadmořská výška, tlak/teplota AVG je průměrná hodnota z 5 měření.

Teď jsem znova cvičně dýchnul na čidlo, vlhkost +1%, teplota +asi 4°C a tlak -0,9hPa. Navíc si myslím, že po dýchnnutí by mělo čidlo víc zareagovat co se vlhkosti týče.

70
requests vypadá zajímavě. Ušetřil bych si tělocvik se soubory, i když teď mi to funguje v pohodě. Googlím jak vytvořit RAMdisk, ale tohle vypadá čistě. Příležitostně to otestuju.

SFTP-musím vygooglit, neznám. Pro mě na windows je pohodlné v total commanderu dát ctrl-f a připojit se na ftp server a na disk si vykopírovat obrázky.

rsync-netřeba. Když nepoběží proud/internet, tak prostě nebudou snímky. Data budou (půjde-li proud), protože se appendují do souboru a ten se průběžně nahrává.

Jinak to, jak funguje původní meteostanice-PCčko s Tincam a ovladačem barometru/teploměru v Delphi je k vidění na meteo.pozorka88.cz. Nahrává se tam obrázek a CSV soubor s daty, obrázek se zobrazí a CSV soubor se na serveru parsuje a z něj dělá graf. Některé grafy si tahají hodnoty z WeatherUnderground (teplota za posledních x měsíců). Snímky za posledních 24h si vyrábí cron na serveru.

S pythoním prográmkem jsem zatím ve stavu, kdy to čte z BME280 hodnoty, ukládá do CSV souboru, vkládá do obrázku a ten posílá na FTP server. U toho FTP serveru jsem zvládl i ošetřit chybové stavy. Až na původní kostru ovládající BME280 je to zatím řádek po řádku, měl bych to rozsekat na "def" sekce a v mainu pak volat jednotlivé akce a dorazit ošetření chybových stavů u všeho-aby to někde nevyhnilo

Skoro si říkám, jestli by nebylo lepší, aby ten python běžel furt a ne volaný cronem. Když bude automaticky spuštěn po spuštění RPI, poběží na pozadí nebo napopředí?

A ještě jedna věc: přijde mi, že bme280 měří pořád vlhkost jako 65-66%, je mi divné, že bysme doma měli furt takhle konstantě. Máte někdo tohle čidlo? Leží mi to na stole, zatím jsem to nezkoušel přenést k oknu a otevřít ho. Program jsem převzal odsud: http://www.raspberrypi-spy.co.uk/2016/07/using-bme280-i2c-temperature-pressure-sensor-in-python/

Stran: 1 ... 3 4 [5]