Internetové radio - Raspberry pi - problém s lcdproc

dustin

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #60 kdy: 26. 12. 2017, 19:02:13 »
Ono to chce trochu přemýšlet, pohrát si s tím a ne hned kopat kolem sebe. Když něco neumím, snažím se to naučit, pokud to potřebuju. Není to až tak složité.

Víš, co leze z check_output? Kdyby ses podíval dokumentace, viděl bys "return its output as a byte string". Víš, co má lézt do lcd_display_string? Díval ses do zdrojáku https://gist.github.com/vay3t/8b0577acfdb27a78101ed16dd78ecba1#file-i2c_lcd_driver-py-L148 ? Přímo ti to píše, kde je chyba - jednotlivý prvek v proměnné text očekává jednoprvkový string. Ale co tam pouštíš ty? Pole bajtů. Tedy jeden prvek je bajt = číslo - přesně co ti píše, na něm ord nepustíš https://docs.python.org/2/library/functions.html#ord .

Takže potřebuješ to byte array zkonvertovat do stringu. Hoď si do googlu, jak to v pythonu zkonvertovat, je to triviální. A použij při hledání python 2, ať se ti to netříská s pythonem 3 (nevím, zda je tam rozdíl, ale pro jistotu, tak už to u pythonu bohužel chodí). https://stackoverflow.com/questions/606191/convert-bytes-to-a-string/38102444 https://stackoverflow.com/questions/2502833/store-output-of-subprocess-popen-call-in-a-string

A dobře ti radím, abys na ten string před předáním lcd aplikoval ten unidecode, jinak ti to vyhnije na češtině a budeš zase řešit nějaké kraviny. Podívej se na příkaz pip, tím si jej můžeš nainstalovat.

Užívej si krásy jazyka s neuvedenými typy, pro začátečníka opravdová radost...


marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #61 kdy: 26. 12. 2017, 19:24:16 »
Včak to celou dobu dělám, hledám na googlu řešení, co mám jinýho dělat, když je tu milion programátorů a jediný co ti nápíšou, je že si mám koupit rádio v tescu bo co.

Co bys jim na to řekl ty ? Děkuju ?

Takže tohle ('echo "currentsong" | nc localhost 6600 | grep -e "^Title: "', shell=True)

se má převést ?



dustin

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #62 kdy: 26. 12. 2017, 19:30:14 »
Ani ses nepodíval na ty stackoverflow linky, kde je to přesně tohle řešené https://stackoverflow.com/questions/2502833/store-output-of-subprocess-popen-call-in-a-string#comment53530956_2502883 . Nejsem chůva, snaž se trochu sám, máš mozek stejně jako ostatní.

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #63 kdy: 26. 12. 2017, 19:36:23 »
Já na to koukal. Ale vidím to prvně v životě no.

Takže takhle ?
Kód: [Vybrat]
subprocess.check_output('echo "currentsong" | nc localhost 6600 | grep -e "^Title: "', shell=True).decode("utf-8")

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #64 kdy: 26. 12. 2017, 19:55:59 »
Takhle to funguje. Ale chtělo by to odstranit to
Kód: [Vybrat]
Name: abych viděl jenom název stanice.

Když to vymažu hlásí

Kód: [Vybrat]
returned non-zero exit status 1


marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #65 kdy: 26. 12. 2017, 20:05:30 »
A další věc strašně dlouho to načítá ten název. Dá se to nějak doladit ?

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #66 kdy: 26. 12. 2017, 21:13:56 »
Tak po googlování jsem to vymyslel jinak.

Kód: [Vybrat]
import I2C_LCD_driver
import time
import subprocess
mylcd = I2C_LCD_driver.lcd()


while True:
    text = subprocess.check_output('mpc | head -n 1 | cut -c1-16', shell=True).decode("utf-8")
    mylcd.lcd_display_string(text, 2)
   
    mylcd.lcd_display_string("Date: %s" %time.strftime("%m/%d/%Y"), 1)
   


Jose D

  • *****
  • 912
    • Zobrazit profil
Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #67 kdy: 26. 12. 2017, 21:24:04 »
hledám na googlu řešení
no to je právě slepá ulička. Buď máš ochotu se na to kouknout, a naučit se princip, a nebo naslepo budeš copypastovat nějaký věci z internetů, a nepoběží ti to nikdy - pak je prostě lepší rádio z obchodu.
Otázka je jen, kdy ti nějaký troll nahodí příkaz, který ti to celý brickne a budeš mít hotovo.

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #68 kdy: 26. 12. 2017, 21:54:03 »
Ty to nechápeš. Proč bych se měl kvůli tomu, že někdo dal na internet nefunkční návod, (podle kterého by celá ta věc trvala 5 minut) měl učit dva nebo tři roky programovat ?

Od toho ty návody jsou ne ? Aby to i laik pochopil. Je Vás tady jak psů, všichni tomu hrozně rozumíte, ale poradit to ne.

Těm třem zúčastněným mockrát děkuji.

Je to skoro funkční. Akorát ta čeština. Ale jelikož 90% názvů těch rádií nemá diakritiku, tak na to asi kašlu.

dustin

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #69 kdy: 26. 12. 2017, 22:35:24 »
Stačí trochu přemýšlet, roky učení na to nepotřebuješ. A nekopat kolem sebe, to se na tebe každý vybodne.

Ad čeština - řekl jsem ti, jak na to. Pokud nejsi schopný nainstalovat modul unidecode pomocí nástroje pip (googluješ, tak si vygoogluj, jak se pip používá, návodů a ukázek je spoustu) a triviálně ten string obalit metodou unidecode, pak ti opravdu není pomoci.

dustin

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #70 kdy: 26. 12. 2017, 22:38:57 »
Ještě se podívej na zátěž tvého CPU, zda náhodou při tom spuštěném skriptu nejede naplno. Pokud ano, zkus použít mozek a přijít na to, čím by to mohlo být.

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #71 kdy: 26. 12. 2017, 22:50:01 »
Nekopu kolem sebe, jenom nemám rád arogantní pitomce.

Těm co mi pomohli jsem poděkoval, těm, co žádnou snahu pomoct neměli a ješte měli blbý kecy jsem vynadal. Všechno je, jak má být.

Netvrdím, že to neumím nainstalovat, ještě jsem to nezkoušel, protože to pro mě nebyla priorita. Všechno popořadě.
Hlavně, že to funguje. Tohle už je detail.

Cpu jede max na 40-50 %

dustin

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #72 kdy: 26. 12. 2017, 22:57:25 »
Jediný arogantní jsi tu ty. Neumíš nic a jenom si stěžuješ. Ostatní neměli jenom neměli trpělivost. A vůbec se jim nedivím.

Možná, kdybys tu smyčku netočil neustále dokola bez jakéhokoliv čekání, měl bys load řádově nižší. Jedno jádro CPU ti nejede na 100% jenom proto, že I2C komunikace s displejem chvilinku trvá.

marty

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #73 kdy: 26. 12. 2017, 23:07:13 »
No tak to mám dost. Já si stěžuju ? Já jsem chtěl poradit na foru, které je k tomu určené.

Příklad :
Otázka : Ahoj, jak se prosím dělá to a to, děkuji
Odpověď : Ser na to, nic neumíš, radši nic nedělej.

Jenom takové zamyšlení, kdo z těch dvou je arogantní ? Nápověda, já rozhodně ne.

Takže si sím chtěl říct, že tam mám dát zpátky time.sleep ?

Tomáš Bláha

Re:Internetové radio - Raspberry pi - problém s lcdproc
« Odpověď #74 kdy: 27. 12. 2017, 09:44:33 »
Určitě tam dej time.sleep třeba s těmi třemi sekundami (nebo i méně), ale je důležité, aby program neběžel v nekonečné smyčce stylem "co to dá" a nevyžíral výkon zbytečně jen pro sebe. Co by bylo ještě určitě dobré se podívat, že na tom raspberry nic neloguje šíleně často do logů. Ony ty paměťové kartičky, které se tam používají, nemají zrovna průmslovou odolnost a časté zápisy jim úplně nesvědčí.

Co se týče návodů na internetu, tak k nim se musí přistupovat trochu s opatrností - ono je hodně verzí těch různých raspberry, hodně různých displejů, hodně různých verzí softwaru k tomu a leckdy se něco mírně změní nebo návod neřekne přesně, s jakou verzí čeho pracoval, takže pak člověk naráží na různé problémy. Na druhou stranu to k tomu patří, získáš nějaké zkušenosti. Pro zasmání: http://geek-and-poke.com/geekandpoke/2016/11/27/good-questions

Co se týče Pythonu, tak mě tam nejvíc zarazil ten problém s ljust, to jsem nedokázal nijak zopakovat a poradit, bylo v tom něco, co jsem na dálku nedokázal poznat, to mě trochu vykolejilo. Co se týče češtiny a unicode, zkus to někdy rozběhat pod trojkovým pythonem. Dost možná ho tam i máš a spouští se příkazem "python3". Ve dvojce byla práce s unicode dost šílená. Ve trojce by pak mohlo fungovat jednoduché a snadno pochopitelné message = message.replace("á", "a") atd.

Co se týče trolů na rootu, s tím se musí počítat. Však to také byla výjimka, že jsem tu něco psal, zaujalo mě téma. Ale obvykle to nemá moc smysl :-)