Online parser protokolu Spinel

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, 10copy all

  1.  

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)

Vytvořeno19.11.2021
Na vašem soukromí nám záleží
Tento internetový obchod ukládá soubory cookies, které pomáhají k jeho správnému fungování. Využíváním našich služeb s jejich používáním souhlasíte.
Povolit všePodrobné nastavení