Forum
Dobre rano panove,
ackoli se dobre bavim nad idiotismes nejakeho Ondreje vpodstate me to netrapi, tak jako to, ze nemuzu zaboha rozchodit vycitani stringu...
pro zjednoduseni jsem to rozjel na internim webserveru pro zkoumani, proc to sakra nejede...
1. web server: http://interni_ip/test.txt pro HTTP INPUT v loxone
2. nactena stranka vypada takto: {"status":true,"data":238}
3. a ja potrebuji vycist data 238
4. coz jsem udelal uplne "jednoduse" takto: "data":/v
nicmene result je stale nula. Zkousel jsem retezec zjednodusit (odebrat dvojtecky, uvozovky atd...) a pak to jednou jede a jednou ne... prijde mi ze dvojtecka to zmrvi urcite
nevite co stim?
DIKY!
Kuba
Ja sem kdysi presne tohle resil, kdyz sem delal ten mustek na Quida. Chtel sem to parsovat pres HTTP vstupy (pak i TCP/UDP), ale chovalo se to dost nahodne.
Co jsem vysledoval, tak obcas se stazeny/obdrzeny retezec zpracoval jako jeden radek, obcas jako dva radky. Hodne zlobil znak novy radek \n, ten to zpusoboval.
Zkus mrknout, jeslti v tom test.txt neni zakonceno pomoci \n, nebo \r\n, atd.
Pokud do test.txt das jen hodnotu "238" a nactes to bez parseru naprimo, tak to tu hodnotu vraci?
Jo a jeste mam pocit, ze se ty vstupy obcas cachovaly, takze vracely stara data. To byla taky lahudka. S tim bojovoval tusim i @Kolda
Nemělo by být před tím v zpětné lomítko místo normálního?
sorry, jasne lomitko musi byt zpetne...
takze jsem zkusil znovu krok po kroku a problem je dvojtecka pred cislem. na parsovani prikazu to nema vliv.
funguje: "data":\v tak i "data"\v
ale data vycita jen kdyz je tam: {"status":true,"data"238}
ve chvili kdy pridat dvojtecku pred cislo tak je loxone v prdeli 🙁
coz je nahovno, protoze samozrejme chci vycitat neco z internetoveho API, kde si to jaksi nezmenim
neni dvojtecka nejaky zastupny znak pro neco v tom parseru?
co kdyz das "data"\:\v ?
pripadne pak jeste ty uvozovky, takze zkusiut neco jako \"data\"\:\v treba ?
\"data\"\:\v - toto neudela vubec nic a zustanou tam data z cache... WTF?
nicmene neco to udelalo... kdyz jse ted vratil k puvodni formuly: "data":\v tak to zacalo fungovat...... WTFFFF?
ta dvojtecka nema problem v nastaveni parseru, ta dvojtecka ma problem ve zdrojove strance...
zacinam premyslet nad tim, jeslti neni problem v copy&paste ruznych znaku, ktere se pak tvari obcas "jinak" nez vypadaji
no, to je totiz problem te cache, ze ona nejakou dobu vraci puvodni hodnoty. Takze ty vlastne nikdy nezjistis, jestli ten novej parsovaci vzorec je ok nebo ne 😉
Uz si zacinam vzpominat, proc jsem se na to tenkrat vykaslal a radsi si to napsal cele sam 😉
no je to fakt divny, protoze u cisteho stringu ta cache nic nekazi, ale jakmile je to slozitejsi tak se to chova divne... takze ja dycky na testovani menim i to cislo abych videl, ze se to fakt meni 🙂
no nic, budu zkouset dal hned vedle hrani si s xiaomi :)) hehe
tak jsem si ten jednoduchej parser napsat v ASPX abych mel cista data pro loxone, ale ono to stejne nejede... nejede uz ani vycitani z txt...
je to UPLNE mimo, nepomuze ani prevytvoreni HTTP INPUTU v loxonu, takze cache v tom nemuze hrat roli 🙂
jsme smutnej
Welcome to Loxone hell...... ;-(
Používám něco podobného, kdy vyčítám hodnotu z txt souboru, který mi vrací web server nějakého ESPčka s připojenými teploměry (adresa http://IPadr/data.txt).
V texťáku je je více řádků, co čidlo teploty to řádek.
Jeden z řádků je: Bazen03-solarOUT=34.628 (nemám to teď před sebou, je to pouze část řádku)
V Loxone configu používám Virtuální vstup HTTP příkazu.
V "Rozeznání příkazu" mám syntaxi: Bazen03-solarOUT=\v
A výsledek zobrazuji ve virtuálním statusu.
Vše funguje dobře, až na jeden malý detail. Pokud to zařízení není dostupné, vrací mi to poslední hodnotu. Ale to by šlo v LC jistě ještě nějak upravit, nedořešil jsem to.
hm, to pouzivam/snazim se pouzivat uplne stejne 🙂 fungovalo vse az na tu dvojtecku, to uz je u vyvojaru z loxone, pry tam nasli chybu v kodu nebo co...
problem je, ze co jsem si stim hral mi to prestalo fungovat i pro TXT nebo ASPX v ramci mistni site 🙂
toto bych ocekaval, ze bude fungovat na 100%... takze jakmile se to jednou/2x/15x skobrtne jsem z toho spatnej
Ahojte. Je nejaka rozumna a jednoducha cesta ako pri HTTP vstupe obist ten minimalny dotazovaci cyklys 10s prosim Vas? Potrebujem to mat hned a nie kontrolovat stav kazdych 10s!
Neviem ci sa to tu riesilo ale existuje nieco ako http converzia do udp kedze udp ide hned alebo cez co sa to da vyriesit prosim Vas?
inak povedne:
Je mozne "niecim" dotatovat zariadenie cez http a ked sa vrati odpoved, poslat to do MS cez UDP?
napriklad kazdu sekundu
Vdaka za kazdu radu...