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 - Jiří Něměc

Stran: [1]
1
Server / MongoDB - specifikovat konkrétní pole v $text search
« kdy: 29. 05. 2020, 11:06:56 »
Zdravím, nikde na webu jsem nenašel opověď, respektive, našel jsem odpovědi, že to nejde, nebo že to jde jen přes ElestacSearch. Nicméně protože s MongoDB teprve začínám, napadlo mě, že se zeptám i tady.
Takže: dejme tomu, že máme něco jako slovník, tedy pole "eng" a pole "cze", vypadá to nějak takto:
Kód: [Vybrat]
{''eng': 'nějaký text', 'cze': 'nějaký jiný text'}a těch rádků je samozřejmě mraky.
Podle manuálu k MongoDB, tak nemůžu vytvořit více $text indexů, ale můžu vytvořit index, který pokrývá více polí (v mém případě tedy "eng" i "cze"), třeba nějak takto:
Kód: [Vybrat]
create_index([('eng', 'text'), ('cze', 'text')])Jenže já pak neumím vyhledávat pouze a jenom v poli "eng" a nebo pouze a jenom v poli "cze", vyhledávám prostě v celém $text indexu, třeba takhle:
Kód: [Vybrat]
find({ "$text": { "$search": "something" } } )Pokud ten $text index pustím jen na pole "eng" a nebo jen na pole "cze", tak jsou ty výsledky fakt božsky srovnané, nemusím používat ani nějaké speciální metascore sorting, prostě je to automaticky srovnané podle nejlepší shody a opravdu parádně to funguje. Ale já bych rád, aby to takto fungovalo jak pro pole "eng", tak pro "cze", tedy aby jednou vyhledával pouze češtinu a jednou pouze angličtinu (nikoliv najednou).
Napadlo mě pouze, že bych udělal dvě stejné databáze a v každé bych indexoval jeden field, ale to mi přijde na houby.
Opravdu s MongoDB začínám, takže se omlouvám, pokud je dotaz nějak mimo, ale fakt by se mi hodila rada. Díky za každou relevantní odpověď.

Jiří

2
Pane Křišťane Přijmení :),
to je prostě perfektní vysvětlení a ten Váš script funguje úplně bez chyby na první dobrou. Napsal jste to prostě dokonale. Díky tomu Vašemu komentáři to najednou i chápu ... :). Ještě si tedy musím nastudovat to adresování raději ....
Mám jen jedinou připomínku a to, že prodejce mi říkal, že v tomto případě stačí pouze přímé připojení a nic dalšího, tedy jsem PIN ADDR nespojoval s GND externě, mám jen 4 žíly mezi převodníkem a modulkem. Podle schématu je to přes malý 1k odpor propojeno interně:
http://mbitech.ru/images/userfiles/image/BH1750.jpg
Toto píšu proto, aby to případně dalším čtenářům pomohlo.

Ještě jednou moc děkuji.
PS: Nebál bych se Vás nazvat SW/HW bohem a to i z důvodu, že včera večer jsem měl Skype session s člověkem, který se něčím podobným profesionálně živí a nedal to dohromady i se vzdáleným přistupem k zařízení a Vy jste to dal jen podle datasheetů ...... fakt smekám.

3
Zdravím, od té sekvence jsem očekával, že mi to dá hodnotu, kterou bych pak přepočetl na Luxy. Zkoušel jsem to i v různých variantách za sebou, tedy:
ser.write(bytearray([0x55, 0x23, 0x00]))
ser.write(bytearray([0x55, 0x23, 0x01]))
ser.write(bytearray([0x55, 0x23, 0x20, 0x04]))
ser.write(bytearray([0x55, 0x23, 0x00]))
a s nějakou prodlevou pak ser.read(). Ale pořád buď žádná hodnota nebo nějaká ta 255.
Přiznám se na rovinu, že I2C sběrnici vůbec nerozumím a mým účelem je prostě si jen vyrobit ten regulátor podsvícení pro monitor a pak už se k takové věci okolo HW asi nedostanu.
I když to udělám podle toho odkazu, tak jsou výsledky stejné ...

4
Zdar,

mám tato zařízení:

USB-I2C převodník: https://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm

GY-30 I2C modul: https://5.imimg.com/data5/TY/AK/MY-1833510/gy-30-bh1750-intensity-digital-light-sensor-module.pdf

A modul GY-30 je se snímačem okolního osvětlení BH1750: https://www.mylms.cz/wp-content/uploads/2017/07/bh1750-datasheet.pdf

Potřeboval bych z toho BH1750 vyčítat Luxy. Cílem je, abych si pak napsal SW, který mi bude automaticky regulovat podsvícení monitoru.

S převodníkem komunikovat umím, přes pyserial na něm umím zhasnout tu kontrolní LEDku a nebo si nechat zobrazit jeho verzi.

Co u ale neumím, to je určit správnou sekvenci bytů (bajtů), aby mi ten BH1750 poslal ty Luxy. Mám to testovně napsané nějak takto:

Kód: [Vybrat]
import serial
ser = serial.Serial(port="/dev/ttyUSB0",
                    baudrate=19200,
                    parity=serial.PARITY_NONE,
                    stopbits=serial.STOPBITS_TWO,
                    bytesize=serial.EIGHTBITS,
                    timeout=0.500,
                    )

ser.flushInput()
ser.flushOutput()

ser.write(bytearray([0x55, 0x23, 0x11, 0x01]))
test = ser.read()

Zkoušel jsem různé posloupnosti, samozřejmě nejdřív ten BH1750 přes 0x01 zapnout, resetovat a tak dále. Ale ono se to k němu prostě nějak asi nedostane, vůbec to nereaguje, zkoušel jsem i jiné adresy, na všech adresách ale stejná odezva. Něco jakoby vyčtu, ale je to třeba jen číslo 255 a bohužel to Luxy opravdu nejsou.

Umí s tím někdo a byl by mi ochoten pomoci? Buď samozřejmě takhle přes fórum a nebo klidně sdílení přes ssh a nebo nějaká session.

Díky za případné reakce.

Jiří

5
Hardware / eMMC a nepřístupné RPMB oddíly
« kdy: 02. 10. 2014, 18:56:27 »
 Ahoj,
mám takový problém. Koupil jsem si tento týden notebook Acer Aspire E11 a má v sobě 32GB eMMC disk na kterém jsou zřejmě dvě něpřístupné části - RPMB (hlásí mi to "mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900" a tak podobně - relevantní odkaz zde). Toto počítač velmi zpomaluje a instalace Linuxu je prostě dlouhá a celkově je to utrpení.
 Toto je výpis z fdisk -l:
Kód: [Vybrat]
Device            Start      End  Sectors  Size Type
/dev/mmcblk0p1     2048 16779263 16777216    8G EFI System
/dev/mmcblk0p2 16779264 58722303 41943040   20G Linux filesystem
/dev/mmcblk0p3 58722304 61079518  2357215  1.1G Microsoft basic data

Disk /dev/mmcblk0boot1: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mmcblk0boot0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 7.6 GiB, 8127315968 bytes, 15873664 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x2d20bb88
Nejdou nějak prostě kompletně zablokovat ty dva disky, které dělají ty problémy? Pracovat s nimi nepotřebuji (stejně mají jen pár MB), klidně ať o nich vůbec nevím. Předem děkuji za nějaký nápad a tady ještě přidávám pár relevantních odkazů:
Asus T100 má stejné problémy
Tady alespoň radí jak kompletně zablokovat to eMMC, takže kdyby nebylo zbytí, tak ho mohu kompletně odstřihnout
Tady to řeší kluci z Intelu a už evidentně připravují nějaký patch do jádra, už jsem jim psal, jestli pro mě není nějaké provizorní použitelné řešení.
 

6
Hardware / Re: Na novějším jádře nelze spustit AP
« kdy: 03. 02. 2011, 22:38:26 »
VYŘEŠENO: na nejnovějším jádře musí být modul rt2860sta přidán do blacklistu a pak je použit open source rt2x00 modul, ktery funguje bezproblemove.

7
Hardware / Na novějším jádře nelze spustit AP
« kdy: 01. 02. 2011, 20:40:19 »
Zdravim,

mam kartu Linksys WMP600N s chipem RT2860. Do ted jsem spokojene na tete karte provozoval AP pres hostapd s nastavenym driverem nl80211 na Arch Linuxu - pouzival jsem jadro 2.6.37-1 z Testingu. Jadro 2.6.37-5 uz se dostalo i do Stable repozitare, takze jsem upgradeoval a na tomhle jadre uz mi AP nejde pustit.
Hostapd hlasi:

Kód: [Vybrat]
nl80211: Failed to set interface wlan0 into AP mode
nl80211 driver initialization failed.
ELOOP: remaining socket: sock=4 eloop_data=0xe46410 user_data=0xe46b40 handler=0x42dad0
ELOOP: remaining socket: sock=6 eloop_data=0xe49140 user_data=(nil) handler=0x436c00

Na jadru 2.6.37-1 jsem nepouzival zadnou konfiguraci modulu, proste vsechno fungovalo automaticky. Vypis z lsmod | grep -i rt na jadre 2.6.37-1:
Kód: [Vybrat]
exportfs                3482  1 nfsd
rt2860sta             526851  0
rt2800pci               8235  0
rt2800lib              29907  1 rt2800pci
crc_ccitt               1347  2 rt2860sta,rt2800lib
rt2x00pci               4670  1 rt2800pci
rt2x00lib              28214  3 rt2800pci,rt2800lib,rt2x00pci
mac80211              199564  3 rt2800lib,rt2x00pci,rt2x00lib
cfg80211              139317  2 rt2x00lib,mac80211
parport_pc             31800  1
eeprom_93cx6            1360  1 rt2800pci
parport                30087  3 ppdev,parport_pc,lp

A vypis z toho stejneho prikazu na jadre 2.6.37-5, kde to nejede:
Kód: [Vybrat]
exportfs                3482  1 nfsd
rt2800pci               8235  0
rt2800lib              29907  1 rt2800pci
rt2x00pci               4670  1 rt2800pci
rt2x00lib              28214  3 rt2800pci,rt2800lib,rt2x00pci
mac80211              199564  3 rt2800lib,rt2x00pci,rt2x00lib
cfg80211              139317  2 rt2x00lib,mac80211
eeprom_93cx6            1360  1 rt2800pci
rt2860sta             526851  1
parport_pc             31800  1
parport                30087  3 ppdev,lp,parport_pc
crc_ccitt               1347  2 rt2800lib,rt2860sta
Absotlutne netusim, kde by mohl byt problem. Zkousel jsem i dle navodu blacklistovat moduly "rt2800pci rt61pci rt2x00pci rt2800usb rt2800lib rt2x00usb rt2x00lib", ale vysledek je porad stejny, tedy Wifi funguje, ale hostapd ne.
Ma nekdo nejaky napad? Predem diky.

Stran: [1]