X
Jak pomalý je Loxone? Hodně!

Jak pomalý je Loxone? Hodně!

K dnešnímu článku mne motivovaly události posledních dnů, kdy jsem ladil můstek mezi Loxone a Quidem. Níže popsané zkušenosti jsou s původním miniserverem verze 1. U verze 2 je mnohem silnější čtyřjádrový procesor s mnohem větším množstvím paměti a tak není s výkonem ani můstkem žádný problém.

Ovšem problém je to, že Loxone diky updatům stále více a více zhoršuje výkonnost miniserveru verze 1. To, že se s každou verzí snižuje výkon o cca 1-2%, je bohužel už známý a otestovaný fakt.

Ačkoli primárně řeším výkonnost PicoC kódu, tak problém už zdaleka není jen v bloku “Program” a případně mém můstku. Problém je už také s originálními Loxone extensions, kde přestávají fungovat například dvoukliky. A bohužel, jak ukážu v dnešním článku, problém už je tak velký, že se začínají rozsynchronizovávat i stavy prvků.

A o tom chci dneska psát. Je to něco, nad čím jsem strávil poslední dva týdny několik desítek hodin.

Problém začal vcelku nevinně. Jeden z uživatelů mého můstku reportoval, že když zkusí zapnout/vypnout více relé najednou, občas nezmění stav všech relé jak by mělo. Zdálo se to jako nesmysl.

Jako první jsem tipoval chyby v UDP či chybný Quido modul. Jenže tím to nebylo. Chovalo se tak více modulů a UDP pakety po prověření ve Wiresharku chodily správně.

Tak že by chyba v programu? Vždyť můstek mezi Loxone a Quidem již používají desítky lidí a nikdo doposud problém nehlásil a to mám zprávy, že jsou i tací, co na to pověsí třeba 3x-4x 2/32 Quido modul, tzn. ovládají 128 relátek skrz můstek a bez problémů.

A tak jsem hledal dál. Dokonce jsem volal do Papoucha, povedlo se mi spojit s hlavním vývojářem Quida, se kterým jsem si opravu pěkně pokecal. Navzájem jsme si sdělili chyby, o kterých víme, dokonce mám příslib, že bude snad i slíbená změna ve firmware na zrychlení vstupů. Jenže s tímto náhodným spínáním si ani u nich nevěděli rady.

A tak jsem do můstku dodělal další logování výstupů (defaultně vypnuto), abych přesně trasoval, co se z Loxone odešle. A tady, když se udělalo víc zapnout/vypnout operací, se začaly ukazovat chyby. Loxone občas odesílal naprosto jiná data, než jaká měl vzhledem k Loxconfigu mít.

Není možné, zdálo se. Jedno tlačítko, ze kterého vede 32 propojení na 8 logických členů AND, které pak vedou na jednotlivé vstupy v programu. Jak to, že když zmáčknu tlačítko, do programu jsou nastaveny různé hodnoty, a ne vždy samé 1 či 0?

Že by chyba v programu? Nebo PicoC? A jak to, že to na verzi 8.1.11.11 nedělá? A tak jsem hledal dál.

PicoC nabízí na práci se vstupy/výstupy programu jen pár funkcí. Funkci getinputevent(), která vrátí počet změněných vstupů programu a funkci getinput(n), která vrátí stav daného vstupu.

Program samotný nedělá v tomto ohledu nic složitého. Jelikož PicoC ani Loxone neumožnuje nějaké event-driven programování, neboli čekat na to, až se něco stane, je potřeba periodicky zjišťovat, že se na vstupu něco změnilo. To se dělá jednoduše takto:

Když se něco změní, funkce jednorázově vrátí pomocí getinputevent() seznam vstupů, kde se změna stala. Když se pak zavolá tato funkce znova, vrátí zase 0 do té doby, než se změní něco dalšího.

A tady je zakopaný pes. Teda, v případě Loxone asi spíš stádo bernardýnů.

Loxone je totiž už tak pomalý, že nezvládá v reálném čase nastavit stavy z tlačítka na všechny vstupy programu. To vede k situacím, kdy celá vnitřní logika Loxone je v naprosto nesynchronních a náhodných stavech, když část vstupů je již nastavena při stisku na 1, zatímco jiná část na 0.

A v okamžiku, kdy se program zeptá, co se na vstupech změnilo, Loxone vrátí jen tu část, která již nastavena je. Ačkoli je tedy všude nastavená binární 1, Loxone vrátí náhodně 0101101001… A co je horší, když už Loxone konečně milostivě donastaví i zbylé stavy, funkce getinputevent() již tyto změny nedetekuje. Tváří se, že už žádná další změna nenastala.

Pokud by někdo z Vás začal tento problém mít, je v můstku fix. Oprava spočívá v tom, že v případě, že Loxone detekuje změnu, tak se při dalším cyklu (po 100ms) natvrdo načtou znovu všechny vstupy (i když Loxone tvrdí, že k žádné změně nedošlo) a stav všech výstupů se znovu pošle do Quida. Díky tomu se nejpozději do 100ms opraví stav všech relátek. Bohužel, oprava může způsobit delší prodlevu při rychlém zapínání a vypínání relé. Takže nastavení c_resend_all_outputs používat až jako poslední možnost.

Jak jsem ale psal, nejde jen o můstek. Toto celé totiž znamená, že pokud máte složitější Loxconfig, může se dost dobře stát, že se Vám vše začne chovat úplně náhodně. Protože namísto toho, aby hodnoty na jednotlivých blocích byly v konzistentním stavu, může se stát, že část vstupů je již aktualizována a část ne.

Výstup na AND prvku vpravo může mít hodnotu FALSE i v případě, že je tlačítko zapnuto.

V extrému si to představte třeba tak, že přenos mezi bloky nahoře (každý čára) trvá 1 sekundu. Pokud na dané cestě bude více prvků, do cílové čáry (v tomto případě AND prvek) se spodní signál dostane o 2s dřív než signál na horní cestě, který jde přes dva NOT prvky.

Jenže díky tomu, jak je už stav pomalý, Loxone vyhodnotí AND nejprve tak, že I1=false a I2=true a za další 2sekundy pak I1=true, ale I2=false (protože tlačítko není stisknuto celé 2s, ale třeba méně). Tím pádem se může stát, že v logice budete vyhodnocovat nekompletní stavy, které Vám způsobí třeba chybné topení, vypnutí kritických relátek a kdovíco ještě.

Jak jsem psal, není to problém konkrétní verze Loxconfigu. Je to problém všech nových verzí Loxconfigu. Každá verze více a více zpomaluje Váš miniserver. Pro srovnání. Verze 8.1.11.11 zvládne v PicoC odbavit stovky událostí za sekundu. Ten stejný program nasazený na poslední verzi Loxconfigu (aktuálně 10.3.11.27) jich zvládne 1.5/sekundu.  Ano, jeden a půl!.

Bohužel, na toto nemáte téměř šanci přijít. Když se Vám začnou věci chovat divně, těžko budete předpokládat, že je to způsobeno tím, že už je Loxone tak pomalý, že nezvládá ani elementární věci, jako je nastavování stavů prvků.

Dobře si proto rozmyslete, jestli opravdu potřebujete každou další zpackanou verzi, kterou Loxone vydá. Každá další verze totiž znamená, že se Vám celý Váš dům více a více zpomaluje. A nejde jen o to, jestli používáte můj můstek mezi Loxone a Quidem. To stejné se týká Vás, kdo používáte třeba dvouklik tlačítka na originálních Loxone komponentách (což je vcelku elementární věc), nebo třeba těch z Vás, kdo máte složitější Loxplany.

PS: Všechny výše uvedené změny jsou již dostupné v nové verzi můstku (verze v17). Verze je jako vždy ke stažení v Dropboxu.

 

Pomohl Vám náš blog? Chcete nás podpořit? I málo udělá radost 😉
Become a patron at Patreon!
0 0 votes
Hodnocení články
Subscribe
Notify of
guest

30 Komentáře
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Aleq
Guest
Aleq
4 years ago

To je děsivý. To na té 8.3 zůstanu už asi vážně navždy… 🙁

Richard
4 years ago

diky, zajimave 🙂

Dusan
Guest
Dusan
4 years ago

Pokial skutocne ten push-not-not-and robi to co popisujes, tak to by snad ani neslo vyvojarov loxone sw nazvat programatormi, ale uplnymi amaterskymi kokotmi. Je to uz dlha doba co som programoval svoj proof-of-concept noloxone, ale presne tento problem s predbiehanim sprav som musel pokryt ako uplne prvu a elementarnu vec, pretoze to tak bije do oci ze az. Riesenie je kupodivu uplne trivialne – KAZDY blok musi pri KAZDEJ zmene svojich vstupov (alebo vnutorneho stavu) vyslat spravu na vystup. Ta sprava sa spracuje nasledovnym blokom a ten znovu vysle novy vystup. A takto dokola. To samozrejme moze sposobit dalsi nepekny problem – stav posledneho prvku sa moze na velmi kratky cas prepnut do nechcenej hodnoty (tak ako postupne dotekaju informacie z jednotlivych vetvi). Tymto ale principialne trpia vsetky taketo kreslitka, urcite aj nodered. Uplna eliminacia tohoto problemu by (teoreticky) mohla byt riesitelna jedinym sposobom – tie spravy by netiekli z lava doprava, ale z prava do lava. Tzn. AND by sa opytal na (oboch vstupoch) prvkov pred nim, aky ze maju stav (a tento dotaz by sa kaskadovo siril az k tomu push buttonu). Az v momente ked by prisla posledna odpoved z poslednej vetvy, vyhodnotil by sa ten AND. Neviem domylsiet dopad na vykon, ale ak sa k tomu niekedy vratim, skusim to takto reimplementovat a uvidime.

Milan Čížek
Guest
Milan Čížek
4 years ago

Drsný. Jsem docela rád, že už se těmito loxoními duchy zabývat nemusím. 🙂

Dáda
4 years ago

Pěkný článek.. já jsem rovnou přešel na nový MS2 a starý prodal. Tady už snad běží nějaký linux …
mělo by snad nějak přistupovat skrze telnet nebo ssh
Na ftp je tam
220———- Welcome to Pure-FTPd [privsep] [TLS] ———-

Dáda
4 years ago
Reply to  L

jasný chápu, od nějaké té 8ky se v Rakousku mění lidi a vývoj je jaký je…
Uvidíme, až ten MS2 někdo otevře, pak třeba pujde instalovat balicky a pujde vymyslet plno veci

Dáda
4 years ago
Reply to  L

presne to myslim 🙂 a nejaky vpn…… vymyslelo by se plno veci.. podle me to nebude nic sloziteho

Dáda
4 years ago
Reply to  L

V dokumentaci je nějaká zmínka o telnetu
/dev/cfg/ftllocalonly

https://www.loxone.com/cscz/kb/api-webservices/

nešlo by to nejak skrze to ?

Matěj Vála
Guest
Matěj Vála
4 years ago

Ahoj, předem se velmi omlouvám za velké otravování, ale potřebuji si udělat trochu víc jasno. Váš blok sleduji už hodně dlouho a já osobně budu stavbu domu řešit v dubnu 2021, takže ohledně elektroinstalace a loxone mám ještě slušné mezery, ale díky Vám jsem se toho už hodně naučil. Bohužel mě trochu přepadl táta, který má už postavenou část hrubé stavby a ukacal jsem ho do loxone, aby se s nima spojil a vše prokonzultoval (momentálně tedy kabeláž atd.). Nicméně táta po mě bude chtít, abych vše vyřizoval já a s tím je trochu problém, jelikož nemám uplně vše od Vás ještě nastudované – ohledně loxone. (za tu dobu to tu hodně narostlo, a kvůli zastarávání technologií, věřím, že ne vše je již uplně aktuální – viz zigbee atd). A proto bych se Vás potřeboval zeptat na pár informací. Vím, že se Vám to nebude moc hodit, ale opravdu by mi to velmi pomohlo.
1) Měli bychom začít rovnou uvažovat nad pořízením 2. generace miniserveru? Nebo je lepší pořád 1. generace a downgradnout jí na 8? Vím, že zásadní rozdíl je právě u těch KNX, ale moc tomu ještě nerozumím a nevím, jestli KNX budeme potřebovat nebo ne.
2) Ohledně quida mi je to jasné, ale je možné jej napojit i na 2. generaci? Budeme potřebovat i nějaké originální extensiony, nebo je možné vše napojit rovnou na quida a díky tomu za extensiony ušetřit? Samozřejmě uvažujeme o zakoupení vašeho programu na propojení.
3) Už jsem to nakousl v bodě jedna. Mám docela bordel v těch světlech (originální loxone dimmer, DMX triaky čína, zigbee, KNX (jsem z toho jelen). Táta by samozřejmě u nějakých světel chtěl využít změnu intenzity a možná i barvy, ale drahé dimmery od Loxone, no nevím no. Mohl byste mi prosím nějak jednoduše poradit, co tedy použít na ta světla?. Samozřejmě jsem pochopil, že 2. generace nepodporuje KNX, takže je KNX technologie potřeba, nebo jak to zkrátka vyřešit?
4) Abych nepsal nějak moc otázek, vlastně jednoduše by mě zajímalo, co od Loxone má smysl originálně kupovat a co ne (co je možné nahradit něčím levnějším-viz další extension (Relay, modbus atd. – chápu, že tree a air jsou asi zbytečné pořizovat) – vím, že už je to tu na blogu napsané hodněkrát, ale, jak říkám, vše najít a udělat si v tom pořádek a jasno, je opravdu pakárna (opravdu nic ve zlém) a hlavně si to tak nějak sjednotit (Loxone komponenty). Nejvíce jasno mám v tom quidu.

Ještě jednou se moc omlouvám, samozřejmě bych byl ochoten za odpověď zaslat i nějakou kompenzaci, jelikož mi to teď hodně ušetří čas.

Děkuji moc 🙂 Matěj
PS: neobtěžoval bych Vás tím a snažil bych se tu vše nějak postupně dohledat, ale díky tátovi mě tlačí čas.

Milan Čížek
Guest
Milan Čížek
4 years ago
Reply to  Matěj Vála

I k miniserveru v2 lze mít KNX, prodávají jej v podobě extension, ale ta cena je dost mimo. 🙁

Richard
Guest
Richard
4 years ago
Reply to  Matěj Vála

Pokud muzu prispet – jeste zvazte teplotni senzory. Pak vychazi investice do 1wire, do DMX, Quido a je to resitelne pro instalaci v rodinnem dome. (pokud ne arduino). Jsou jedinci, co i relatka ovladaji pres DMX.

Matěj
Guest
Matěj
4 years ago
Reply to  Richard

Ahoj, jen pro pradek tedy, takže pokud to bude druhá generace serveru (1. Mi táta řekl že nechce) tak cca 1 nebo 2 originální extensiony na vstupy 1 nebo 2 originální relay extension na vystupy a na teplotní vstupy 1 wire od loxone ? Četl jsem, že se tam mohou napojit všechny teplotní senzory. Musíme koupit i dmx extension (jelikož ho právě 2. Generace už v sobě nema)? Pak teda samozřejmě quido vstupy a výstupy na ne core systémy a zigbee. Pořád akorát moc nerozumím těm svetlum, jestli kupovat originál dimmer extension nebo jestli to řešit jinak (triak) o knx vim ještě uplne prd. Kdyžtak děkuji za odpověď. Chtěl jsem dotaz (nějakej obsáhlejší na toto téma napsat na fórum, ale ještě jsem se k tomu nedostal)

Matěj
Guest
Matěj
4 years ago
Reply to  L

Děkuju děkuju, tohle mi hodně pomohlo, omlouvám se, nějak jsem si právě zapletl zkratky knx a dmx. Zigbee gateway přes rapsbery jsem si tu už procital a věřím, že se mi to v budoucnu podaří nějak rozchodit do loxone díky vašemu super návodu. Stmivani a barvy světel právě taky beru jako něco navíc a kupovat kvůli tomu extension se mi právě nechce. Ještě jednou moc děkuju a knx fakt asi řešit nebudu. Pokud bych však v budoucnu z nějakého důvodu chtěl tak mohu jen přikoupit knx extension a knx vstupy atd.

maf raf
Guest
maf raf
4 years ago
Reply to  Matěj Vála

Na KNX je dobrá Logic Machine – openrb.com, u nás prodává Premisa TZB. Server je docela dražší, ale má hodně periferií a je to vše programovatelné v Lue.

Matěj Vála
Guest
Matěj Vála
4 years ago

Děkuji moc za odpověď 🙂 samozřejmě, že na jeden dům jeden program, to je mi jasné. Něco na účet určitě pošlu. Hezký den

Matěj Vála
Guest
Matěj Vála
4 years ago

Dobře, raději to napíšu i tam. Jen ještě otázka, quidem lze nahradit i relay extension nebo?

pepop
Guest
pepop
4 years ago

No, tady se ukazuje slabina Loxone. To jsou malovátka v LoxPlanu. Je to jako když programujete něco ve windows a PicoC je BashShell. Pro pár základních přednastavených funkcí dobrý, ale dál se to neposunulo a lepší procesor a paměti zvedá i nároky na spotřebu a spolehlivost, Pěkný článek, díky!

Ján
Guest
Ján
4 years ago

Dobrý deň, čím je to spomaľovanie podľa vás spôsobené? Píšete, že každá nová verzia viedla k miernemu spomaleniu, tak mi napadá, či to nie je staré dobré kurvítko, aby klienti prechádzali na novší model.

Loxone aktuálne zvažujem do nového domu, ale som ohľadom toho veľmi skeptický, pretože chcem robustné riešenie a nie predražený zlý vtip, ktorý laguje pri dvojklikoch aj na ich vlastnej zbernici.

30
0
Would love your thoughts, please comment.x
()
x