Forum

Forum

UDP virtuální vstup...
 
Notifications
Clear all

UDP virtuální vstupy, Rozeznání příkazu

30 Posts
6 Users
4 Likes
4,161 Views
(@acerot)
New Member
Joined: 7 years ago
Posts: 1
Topic starter  

Zdravím,

jsem nováček, příští rok začínám budovat nástavbu na RD, takže na Loxone se dostane za rok, dva, tři. Miniserver nemám, takže si to nemůžu zkoušet. Zatím teda jen teoreticky studuju. Jsem zastáncem názoru Loxone na hlavní věci, zbytek ‚hračiček‘ přes Raspberry/Arduino/Node-red/MQTT/Aliexpress apod.

Řeším teď UDP virtuální vstupy. Dostal jsem se k položce „Rozeznání příkazu“ a zjistil jsem, že tomu dost nerozumím 😮. Nápověda na webu Loxone nic moc, žádné komentované příklady atd. Googlil jsem, pročetl i fóra, ale našel jsem vždycky jen útržky, které mi celkový obraz nedokázaly sestavit.

Byl bych rád, kdybychom tu na jedno místo mohli dát dohromady, co kdo víme o fungování UDP virtuálních vstupů a hlavně o Rozeznání příkazu, jak funguje, co se s ním dá dělat a nejlépe i s nějakými příklady.

Otázky mi vytanuly v tomhle duchu:

Když pošlu do Loxone UDP datagram, dejme tomu třeba s textovým obsahem „A_B_100_1“ s tím, že:

  • A – adresa/ID odesílacího zařízení
  • B – kód operace „změna stavu vstupu“
  • 100 – vstup číslo 100
  • 1 – změna vstupu z 0 na 1

, tak do rozpoznání příkazu v Loxone UDP virtuálním vstupu musím napsat přesně „A_B_100_1“? A pak UDP virtuální vstup pozná, že je to pro něho sepne a na něj se naváže Loxone Virtuální vstup?

Jestli ano, platilo by, že můžu poslat třeba datagram s textem „AhojKarle“ a když budu vědět, že tento text v datagramu znamená změnu vstupu číslo 100 z 0 na 1 na zařízení s ID „A“, tak do rozeznání příkazu v Loxone napíšu jednoduše „AhojKarle“?

Takže ke každé změně na vstupu nějakého IO modulu přicházející UDP paketem musím udělat v Loxone jeden UDP virtuální vstup? Takže na 100 vstupů 100 UDP virtuálních vstupů? Nebo dokonce 200: 100 pro změnu stavu z 0 na 1 a 100 pro změnu z 1 na 0? Nebo se tu dá využít escap /v na rozpoznání té 0 nebo 1 na konci?

S tím souvisí otázka, jak přesně fungují ty escapy /v /1 /2 /3 /4 (a i ty další)? Dá se vyrobit virtuálních UDP vstupů míň a pomocí escapů z nich extrahovat hodnoty a ty pak logikou dál posílat na správná místa dle struktury v configu?

A jak se udělá analogový UDP virtuální vstup? Můžu pomocí /v /1 /2 /3 /4 načíst analogovou hodnotu a tu dál poslat po trasách Loxone configu?

Jak escap /v hodnotu v datagramu pozná, musí začínat a končit mezerou nebo jiným oddělovačem?

Omlouvám se za tolik otázek, to jen abyste viděli, jak to začátečníkovi může až nedocvakávat  😉 


   
Quote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

Tak jsem ten dotaz prolitl trochu detailneji a par info.

- UDP parsery stojej za vyliz****. Nefungujou nikdy jak maji. Chybne interpretuji \n \t a podobne.

- spravne by to melo fungovat tak, ze lze zadat bud absolutni znaky, nebo escapnute sekvence tak jak je v dokumentaci  https://www.loxone.com/enen/kb/communication-with-udp/

Ja osobne sem s tim parkrat neco zkousel, a radsi to vzdal. nestoji to za tu namahu. 

Pokud pobezi NodeRED, radeji parsovat na urovni NodeRED a do Loxone cpat uz jako hotovy virtualni vstup pres http/udp pres nejakou fixni hodnotu.


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

Jo, a ad ty vicenasobne hodnoty, tak tam to imho s tim UDP nijak nejde. Nenapada mne, jak by se to melo zapsat, aby vedel co za hodnoty z toho vzit. To je dalsi duvod, proc to vubec nepouzivat.

Predparsovat pres NodeRED, pres JS upravit hodnoty dle potreby a pak pres http vsutpy uz cpat finalni hodnotu

A nebo parsovat pres PicoC a sockety, ale to je uz opravdu pro labuzniky (delal jsem nad tim ten Quido mustek a presne tak funguje. Ve smycce ceka na UDP spojeni, nacte ho jako buffer, zpracuje a pak na vystup LoxProgramu uz dava finalni hodnoty). 


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 7 years ago
Posts: 1870
 

wtf?

Ved ja to takto pouzivam na mojich doskach. Vstupy riesim bud ako digital, kde sa exaktne matchuje retazec "im0 b2 i3 1", alebo ako analog "im0 b2 i3 \v", kde to posledne cislo sa nacita ako analogova hodnota. Vystupy normalne poslem "om0 b2 i3 1" a "om0 b2 i3 0".

Problem byva s fragmentaciou packetov, pretoze to flakaci v loxone zase nedotiahli do konca, takze ten input prikaz nesmie prist nasegmentovany v dvoch packetoch (ale to sa da zabezpecit na odosielacej strane).

Je ale otazka, kam sa to za tie 1-2-3 roky nez to kupis posunie, ci to opravia, alebo rovno pre istotu zatrhnu. Mentalny vyvoj loxone ide vcelku milovimi krokmi do prdele, tak je to otazne.


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

Ty pouzivas ten retardovanej UDP parser? Sem myslel, ze to mas nejak jinak ;-).

A kdyz mas ve vyrazu vic nez jeden \v \v treba, tak jak urcis, ktera z hodnot leze ven? Nebo lze pouzit v parseru vzdy jen jeden \x priznak?

ad fragmentace, ono i kdyz to prijde v kuse, ale jsou tam escape znaky, tak to pro zmenu loxone rozseka vic nez ma. A tusim, ze rozsekava jeste znak \0.

Ja jsem kvuli tomuhle uplne vzdal nejakou logiku v loxonu, a radsi mu to predzvejkavam jinde. Ale to si muzu dovolit u ruznych teplot a blbinek z venku. U ovladani svetel a jinejch kritickejch veci bych to asi pres NodeRED tahat nechtel.


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 7 years ago
Posts: 1870
 

Bohuzial. Neparsujem z toho viac ako 1 hodnotu, takze si vystacim. Ale pravda je, ze nejaku dobu som zapasil nez som trafil spravnu formu komunikacie ktoru ten zeleny kokot dokaze spolahlivo rozparsovat.


   
L reacted
ReplyQuote
kraliczech
(@kraliczech)
Eminent Member
Joined: 5 years ago
Posts: 24
 

Ahoj chlapi!

Omlouvám se, že píšu sem, ale snad to nebude překážet. Zrovna se zabývám UDP vstupy (vím že UDP je fuj) v Loxone a něco dělám blbě. Zatím jsem rozběhal, že když dostanu hodnotu - třeba teplotu, tak to promítnu do vizualizace a je to OK.

Teď bojuju s následujícím... Z řídící desky Tecomatu vyčítám přes jejich PLCprogram Telnetem 🙂 hodnoty a následně posílám Nod Redem do Loxone. Jak někdo psal výše, jednudušší by bylo servírovat Loxounu hotové, nicméně snad to musí jít i skrze UDP, jen něco dělám blbě. Příklad..... na UDP monitoru dostanu "GET:P4.SIG_KOMPRESORU,0\r\n"  pro stav off, anebo "GET:P4.SIG_KOMPRESORU,1\r\n" pro ON. V Loxone rozeznávám příkaz "GET:P4.SIG_KOMPRESORU," kde jsem zato zkoušel cpát vše možné od "\v" po "\x" a všechno je špatně. Přes \v (variable) dostanu 0 nebo 1, pokud ale nastavím vstup jako digitální tak jsem v prde..... Loxone nerozezná hodnotu za čárkou

Red Node jsem rozchodil v neděli, takže si s tím ještě hraju a přes Loxone taky nejsem přeborník, tudíž se mi hodí každá dobře mířená rada a dokumentace zrovna příklady nerozhazuje. 

Díky moc

 


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

Vykasli se na to a vydej se cestou NodeRED. Toto v Loxonu podle mne neudelas. A kdyz nahodou jo, tak to za cas prestane fungovat, nebo narazis na jinej problem. 

Loxone potrebuje jednoduche vstupy/vystupy, jinak zkolabuje.


   
ReplyQuote
kraliczech
(@kraliczech)
Eminent Member
Joined: 5 years ago
Posts: 24
 

Díky 🙂

inu uvidím co zmůžu, zatím jsem nikde nenašel, jak odpověď z předchozího TCP requestu poslat jako HTTP 🙁

Ted dělám inject "GET:BIVALENCE_1", jdu přes funkci (msg.payload = msg.payload + '\n') na tcp reguest pak jdu na fkci parse (msg.payload = msg.payload.toString('utf8');) a to vše mi vrátí odpověď pro Loxouna ( GET:P4.SIG_KOMPRESORU,0\r\n )

To vypadá zase na pár večerů studování 🙁


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

no tak to uz to skoro mas. ted jen ten payload posles do http outputu.

Mrkni na blog, nekde sem to primo popisoval, kdyz sem delal ovladani vanocniho stromecku


   
ReplyQuote
kraliczech
(@kraliczech)
Eminent Member
Joined: 5 years ago
Posts: 24
 

"Jako jo, šlo by to asi o něco jednodušeji, ale takhle je to prostě cooool 😉"

jo, to asi jooo 🙂


   
ReplyQuote
kraliczech
(@kraliczech)
Eminent Member
Joined: 5 years ago
Posts: 24
 

...nakonec jsem použil v NR fkci "change" pro kosmetiku a v Loxounu jsem vypnul příznak digitálního vstupu u UDP vstupu. Pak jsem na vstup připojil virtuální status a ten posílám do vizualizace jako ON/OFF. A funguje.....Třeba to časem předělám, ale teď to potřebuju funkční

Prostě jsem do http ještě nedorostl 🙂

Ale i tak dík

 

 


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

Tak sem se dostal do stavu, kdy potrebuju ty dementni UDP vstupy a co byste rekli. Nejede mi to.

Ja nevim, bud mi to nefunguje v mym miniserveru, nebo proste nechapu jak se to ma ovladat, nebo fakt nevim.

Kdyz je to jen digitalni vstup, tak poslu treba "blablabla" a to stejne dam do "Rozeznani prikazu". To mi jede.

Ted se snazim predat pres ten UDP vstup dovnitr hodnoty nactene z teplomeru ze zigbe. A proste to nejde

Posilam to uplne stejne jako ten digital, akorat tam navic posilam cislo. Tzn posilam

msg.payload = "temperature 20";
return msg;

V loxone mam UDP vstup, v nem UDP prikaz.

mam odsktrnuto "pouzit jako digital", takze predpokladam, ze by mel byt jako analog.

prikaz rozeznani mam "temperature \v", zkousel sem i "temperature \#" coz by melo byt "libovolne cislo". A taky nic.

A proste ani za zlaty prase se to nenacte.

LoxoneConfig 2018 11 29 20 43 26

Co tam mam prosimvas spatne? nebo by to melo jet?


   
ReplyQuote
(@smotek7)
Member
Joined: 7 years ago
Posts: 1886
 

Skus "temperature <v>"


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 9 years ago
Posts: 3059
 

to taky nic nedela, ja fakt nevim


   
ReplyQuote
Page 1 / 2
Share: