Používáte Spinel? Pracujete na implementaci a potřebujete rychle ověřit, jestli máte datový paket validní? Parser na téhle stránce se Vám bude určitě hodit. Zde je jednoduchý parser a validátor Spinelu, který v textu najde pakety Spinelu a přehledně je vypíše. Paket Spinelu umí také vygenerovat ze zadaných dat. Není třeba nic instalovat - funguje online.
Pokud náhodou nevíte čemu říkáme Spinel, tak jde o binární komunikační protokol, který už léta používáme ve spoustě našich zařízení. Je zdarma k volnému použití i ve Vašich zařízeních. Více obecných infromací o protokolu Spinel je uvedeno na stránce programu SpinelTerminal, což je desktopová aplikace pro ladění komunikací v protokolu Spinel. Pro vývojáře je k dispozici také .NET SDK v C# na GitHubu nebo komponenty Spinelu pro NodeRED. Detailní informace o implementaci Spinelu jsou také uvedeny vždy v manuálu u konkrétního zařízení.
Vstupní data
Do následujícího pole vložte text v některém z uvedených formátů. U každého formátu jde zobrazit konkrétní příklad kliknutím na "příklad". Nalezené pakety Spinelu se při každé změně zadávacího pole aktualizují v části Pakety Spinelu níže.
- Parser Spinelu: Text obsahující pakety Spinelu s byty zapsanými ve formátu 0xAB nebo ABH. Oddělovač může být mezera nebo čárka. Čísla bez prefixu 0x nebo suffixu H budou považována za dekadická. příklad 1
- Parser Spinelu: Text obsahující pakety Spinelu s byty zapsanými v hexadecimálním tvaru jako dvojice znaků (např. 05, A2, CB, apod.). Oddělovač může být mezera nebo čárka. příklad 2
- Generátor Spinelu: Text ve formátu JSON obsahující základní části paketu Spinelu. příklad 3 příklad 4
Pakety Spinelu
Výpis obsahuje platné pakety nebo pakety s chybným kontrolním součtem. Chyby jsou zvýrazněné červeně, po najetí myší se zobrazí správná hodnota:
Nastavení zobrazení: labels, 0x0B, 0BH, 0B, 10 • copy all
-
Struktura paketu Spinelu
Detailní popis struktury paketu Spinelu je vždy v manuálu ke konkrétnímu zařízení. Zde uvádíme jen základní popis dat.
Dotaz:
PRE |
FRM |
NUM |
NUM |
ADR |
SIG |
INST |
DATA... |
SUM |
CR |
Odpověď:
PRE |
FRM |
NUM |
NUM |
ADR |
SIG |
ACK |
DATA... |
SUM |
CR |
- PRE 1 Byte Prefix, 0x2A (znak “*“).
- FRM 1 Byte Číslo formátu 97 (0x61).
- NUM 2 Byty Počet bytů v instrukci od následujícího bytu do konce zprávy.
- ADR 1 Byte Adresa zařízení, kterému je posílán dotaz nebo který posílá odpověď.
- SIG 1 Byte Podpis zprávy. SIG poslané v dotazu, se vrátí v odpovědi. Jde tak poznat ke kterému dotazu patří odpověď.
- INST 1 Byte Kód instrukce (0x10 až 0xFF).
- ACK 1 Byte Potvrzení dotazu (0x00 až 0x0F) informuje zda byl dotaz přijat, nastala chyba, jde o automatickou zprávu, ...
- DATA x Byte Data. Délka se liší podle konkrétní instrukce.
- SUM 1 Byte Kontrolní součet.
- CR 1 Byte Zakončovaní znak (Carriage Return, 0x0D, \r).
NUM: Počet bytů od ADR (včetně), až po CR (včetně). Jde o dva byty, takže NUM může být až 65535. Minimum je 5, což odpovídá instrukci, která neobsahuje žádná data. Je-li NUM menší než 5, není paket platný. Horní byte je MSB, dolní je LSB. Je-li počet bytů menší než 256, je horní byte nulový.
ADR: Adresa zařízení může být z rozsahu 0x00 až 0xFD (253). Následující adresy jsou rezervovány pro speciální použití:
- 0xFF (255) je broadcast. To znamená, že pokud zařízení přijme zprávu s touto adresou, zařízení se chová jako by šlo o jeho adresu, instrukci provede, ale nepošle žádnou odpověď. S touto adresou nelze provádět konfiguraci.
- 0xFE (254) je univerzální adresa. Pokud zařízení přijde zpráva s touto adresou, zařízení se chová jako by šlo o jeho adresu, instrukci provede, a pošle odpověď. Univerzální adresa se dá použít jen v případě, že je na komunikační lince jen jedno zařízení. S touto adresou nelze provádět konfiguraci.
ACK (acknowledge) je v odpovědi na stejném místě jako je v dotazu INST. Je z rozsahu 0x00 až 0x0F. Tímto bytem zařízení informuje o tom jak dopadlo přijetí poslední přijaté instrukce. Vyhrazené kódy ACK jsou tyto:
- 0x00 Vše v pořádku: Instrukce byla přijata a provedena.
- 0x01 Obecná chyba: Blíže nespecifikovaná chyba.
- 0x02 Neznámý kód INST: Kód instrukce zařízení nezná.
- 0x03 Chyba v datech: DATA mají nečekanou délku nebo obsahují nečekanou hodnotu.
- 0x04 Nedovoleno z některého z těchto důvodů:
- Pokus o změnu nastavení bez předcházejícího Povolení konfigurace.
- Pokus o zápis do nepřístupné paměti.
- Požadovanou funkci zařízení není možné provést, protože pro to nejsou splněné podmínky. Například je potřeba vyšší komunikační rychlost.
- Přístup do paměti chráněné heslem.
- 0x05 Porucha:
- Zařízení vyžaduje servisní zásah.
- Chyba vnitřní paměti zařízení nebo paměti nastavení.
- Chyba některé vnitřní periferie zařízení.
- Jakákoli jiná chyba ovlivňující správnou funkci zařízení.
- 0x06 Nejsou k dispozici žádná data: Například krátce po zapnutí zařízení ještě nemusí být k dispozici hodnoty z externích senzorů, atp.
- 0x0A až 0x0F jsou zprávy, které zařízení poslalo automaticky bez dotazu z nadřízeného systému. Například notifikace o změně na vstupu, periodické měření, logy, atd.
SUM je kontrolní součet. Na zprávu s chybným kontrolním součtem se neodpovídá. Na příjem CR se čeká, i pokud přijde nesprávný kontrolní součet. Počítá se takto: SUM = 0xFF – ((PRE + FRM + ((NUM & 0xFF00) >> 8) + (NUM & 0xFF) + ADR + SIG + ACK_INST + DATA) & 0xFF)