BF Summer sales
Pouze tento týden sleva až 80 % na HTML & CSS a JavaScript
80 % bodů zdarma na online výuku díky naší Letní akci!
Avatar
Zdeněk Hrnčárek:12.4.2019 17:22

Ahoj, snažím se rozchodit zobrazování hodnot z čidla od solidustechu a asi dělám někde chybu v parsingu. Používám na test tento script viz níže. payload je 98 FF 01 13 80 64 v payloadu vidím 0x0113 což je 275 takže teplota 27.5 ,ale decoder v ttn ukazuje 14.7 stupňů. Kde dělám chybu a jak správně tu hodnotu zobrazit ?

Zkusil jsem: function Decoder(bytes, port) {
var celsiusInt = (bytes[3]) | bytes[4];

return {
temperature: celsiusInt / 10
}
}

 
Odpovědět
12.4.2019 17:22
Avatar
Daniel
Redaktor
Avatar
Daniel:15.4.2019 15:51

Můžu se zeptat to je Java nebo JavaScript?

 
Nahoru Odpovědět
15.4.2019 15:51
Avatar
Daniel
Redaktor
Avatar
Daniel:15.4.2019 15:52

Nebo to je jiný programovací jazyk?

 
Nahoru Odpovědět
15.4.2019 15:52
Avatar
Odpovídá na Daniel
Zdeněk Hrnčárek:15.4.2019 17:57

Javascript a jedná se o The things network.

 
Nahoru Odpovědět
15.4.2019 17:57
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Zdeněk Hrnčárek
Taskkill:15.4.2019 22:08
0x13 | 0x80 = 147

jen strilim od boku, ale hadam ze jde o spatne indexy(?)
zkus

bytes[2] | bytes[3]
Editováno 15.4.2019 22:08
 
Nahoru Odpovědět
15.4.2019 22:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.4.2019 7:26

0x0113 hex = 275 dec - ok, podle kalkulacky ve win (jenze ta je nespolehliva)
98 FF 01 13 80 64
98 = bytes[0]
FF = bytes[1]
01 = bytes[2]
13 = bytes[3]
...

 
Nahoru Odpovědět
16.4.2019 7:26
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.4.2019 7:33

mimochodem, viz taskkill

0x13 | 0x80 = 0001 0011 | 1000 0000 = 1001 0011 = 147 dec
0x01 | 0x13 = 0000 0001 | 0000 1011 = 0000 1011 = 13 dec

takze ta operace je samozrejme od zacatku spatna. Potrebujes tam shift.

(0x01<<8) | 0x13 = 0000 0001 0000 0000 | 0000 1011 = 0000 0001 0000 1011 = 0x1380
Editováno 16.4.2019 7:34
 
Nahoru Odpovědět
16.4.2019 7:33
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Zdeněk Hrnčárek
Vladislav Ladicky:16.4.2019 15:18

Prevod zo šestnástkovej do desiatkovej sústavy sa v JS robí ľahko:

let temp = parseInt('0x0113', 16) / 10

Jediný problém je, že si najskôr musíš z tých bajtov vyskladať ten šestnástkový string.

 
Nahoru Odpovědět
16.4.2019 15:18
Avatar
 
Nahoru Odpovědět
16.4.2019 17:12
Avatar
Odpovídá na Zdeněk Hrnčárek
Vladislav Ladicky:16.4.2019 18:34

To záleží od toho, v akom tvare ti prídu tie dáta s teplotou. Lebo neviem či dostaneš array, či string, či čo. Napíš bližšie ako si pýtaš tie dáta. Ajaxom? Ak áno, napíš presne čo ti príde v odpovedi.

 
Nahoru Odpovědět
16.4.2019 18:34
Avatar
Odpovídá na Vladislav Ladicky
Zdeněk Hrnčárek:16.4.2019 19:25

Zatím si tvořím testovací decoder payloadu přímo v konzoli TTN v Javascriptu. Tam vidím payload např tenhle 98 FF 01 13 80 64 a ten musím dekodovat podle toho budu pak dělat dotazy a zapís do DB. A ještě řeším jeden problém jak rozlišit payload od ruzných device protože každý senzor používá jiné byte pro ruzné hodnoty.

 
Nahoru Odpovědět
16.4.2019 19:25
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.4.2019 7:52

To cidlo ti posila data pres nejakou ip adresu. Tu muzes odesilat tomu js take, ne? Pripadne schovat do hlavicek, headers.
Mozna mas nekde pole, seznam ip, na kterych mas cidla. Stacilo by odeslat poradove cislo misto ip.

echo $poradove_cislo.file_get_contents($url);

Nebo, vubec netusim, jak to cele komunikuje. Mozna mas tu tabulku adres primo v js. Ale to neni moc dobry napad. Treba v pripade videokamer si muze kazdy z takoveho js precist ip adresy.

 
Nahoru Odpovědět
17.4.2019 7:52
Avatar
Odpovídá na Peter Mlich
Zdeněk Hrnčárek:17.4.2019 12:00

Ty čidla komunikují přes síť the Things network nemají ip adresy jsou to Lorawan čidla.

Editováno 17.4.2019 12:00
 
Nahoru Odpovědět
17.4.2019 12:00
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Zdeněk Hrnčárek
Peter Mlich:17.4.2019 12:55

To mi stejne nic nerika :) Cidla jsem zatim nepripojoval.

 
Nahoru Odpovědět
17.4.2019 12:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.