Skip to content

Commit 73e5903

Browse files
authored
Merge pull request #1 from Rightech/release1_0
Release1 0
2 parents 853f908 + d3d5e66 commit 73e5903

35 files changed

+2380
-1
lines changed

.images/Logo_Rightech.svg

Lines changed: 43 additions & 0 deletions
Loading

README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,19 @@
1-
# ric-public
1+
<p align="center">
2+
<a href="http://rightech.io">
3+
<img
4+
alt="Rightech IoT Cloud"
5+
src="./.images/Logo_Rightech.svg"
6+
width="200"
7+
/>
8+
</a>
9+
</p>
10+
11+
Rightech IoT Cloud (RIC) — это облачная платформа Интернета Вещей, выступающая в качестве связующего звена при разработке IoT-решений. Для получения более подробной информации посетите [портал rightech.io](http://rightech.io)
12+
13+
### Полезные ссылки
14+
- [Платформа](https://dev.rightech.io)
15+
- [Release 1.0](./release-notes/v1_0.md)
16+
- [Документация](https://rightech.io/developers/introductions/)
17+
- [Видеоуроки](https://rightech.io/video-tutorials/)
18+
- [Группа Telegram](https://t.me/rightech_iot)
19+
- [Сообщество ВК](https://vk.com/rightech)

examples/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Rightech IoT Examples
2+
3+
## MQTT
4+
- [Examples](./mqtt/)
5+
6+
## Handlers
7+
8+
- [Basic examples](./handlers/basic)
9+
- [Parse LoRa payloads](./handlers/lora)

examples/handlers/basic/events.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const events = require('@ric/handler/events');
2+
3+
/**
4+
* Generate event if value more than 20
5+
* @param {number} value some
6+
*/
7+
function process(value) {
8+
if (value > 20) {
9+
events.gen('something-happened', { message: 'Do somethig!', value });
10+
}
11+
}

examples/handlers/basic/history.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const history = require('@ric/handler/history');
2+
3+
/**
4+
* Makes the sum of last 10 x'es
5+
* @param {number} x first
6+
*/
7+
function process(x) {
8+
const sum = history.get(['x'], 10)
9+
.map(({ x }) => Number(x))
10+
.reduce((acc, val) => acc + val, 0);
11+
12+
return { sum };
13+
}

examples/handlers/basic/sum.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* Makes the sum of two numbers
3+
* @param {number} a first
4+
* @param {number} b second
5+
*/
6+
function process(a, b) {
7+
const sum = a + b;
8+
return { sum };
9+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
const { Buffer } = require('buffer');
2+
3+
/**
4+
* possible binary number payload parsers
5+
*
6+
* @param {number} int8 signed 8-bit integer
7+
* @param {number} int16be signed 16-bit big-endian integer
8+
* @param {number} int16le signed 16-bit little-endian integer
9+
* @param {number} int32be signed 32-bit big-endian integer
10+
* @param {number} int32le signed 32-bit little-endian integer
11+
*
12+
* @param {number} uint8 unsigned 8-bit integer
13+
* @param {number} uint16be unsigned 16-bit big-endian integer
14+
* @param {number} uint16le unsigned 16-bit little-endian integer
15+
* @param {number} uint32be unsigned 32-bit big-endian integer
16+
* @param {number} uint32le unsigned 32-bit little-endian integer
17+
*
18+
* @param {number} float32be 32-bit big-endian float
19+
* @param {number} float32le 32-bit little-endian float
20+
* @param {number} double64be 64-bit big-endian double
21+
* @param {number} double64le 64-bit little-endian double
22+
*/
23+
function process(
24+
int8,
25+
int16be,
26+
int16le,
27+
int32be,
28+
int32le,
29+
30+
uint8,
31+
uint16be,
32+
uint16le,
33+
uint32be,
34+
uint32le,
35+
36+
float32be,
37+
float32le,
38+
double64be,
39+
double64le,
40+
) {
41+
return {
42+
int8 : Buffer.from(int8).readInt8(),
43+
int16be: Buffer.from(int16be).readInt16BE(),
44+
int16le: Buffer.from(int16le).readInt16LE(),
45+
int32be: Buffer.from(int32be).readInt32BE(),
46+
int32le: Buffer.from(int32le).readInt32BE(),
47+
48+
uint8 : Buffer.from(uint8).readUInt8(),
49+
uint16be: Buffer.from(uint16be).readUInt16BE(),
50+
uint16le: Buffer.from(uint16le).readUInt16LE(),
51+
uint32be: Buffer.from(uint32be).readUInt32BE(),
52+
uint32le: Buffer.from(uint32le).readUInt32BE(),
53+
54+
float32be : Buffer.from(float32be).readFloatBE(),
55+
float32le : Buffer.from(float32le).readFloatLE(),
56+
double64be: Buffer.from(double64be).readDoubleBE(),
57+
double64le: Buffer.from(double64le).readDoubleLE(),
58+
};
59+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
const { Buffer } = require('buffer');
2+
3+
/**
4+
* Parse Vega SI-11 (Вега СИ-11) Payload
5+
* https://en.iotvega.com/product/si11
6+
* From LoRa Server project
7+
* https://www.loraserver.io/
8+
*
9+
* @param {string} loraData raw
10+
*/
11+
function process(loraData) {
12+
const buffer = Buffer.from(loraData, 'base64');
13+
const bytes = [...buffer];
14+
15+
let offset = 0;
16+
const event = bytes[offset++];
17+
const battery = bytes[offset++];
18+
offset++; // skip config byte
19+
20+
let eventin = -1;
21+
if (event === 2) {
22+
eventin = bytes[offset++];
23+
}
24+
let devtime = buffer.readInt32LE(offset); offset += 4;
25+
devtime = devtime * 1000;
26+
let temp;
27+
if (event === 1) {
28+
temp = bytes[offset++];
29+
}
30+
31+
const in1 = buffer.readInt32LE(offset); offset += 4;
32+
const in2 = buffer.readInt32LE(offset); offset += 4;
33+
const in3 = buffer.readInt32LE(offset); offset += 4;
34+
const in4 = buffer.readInt32LE(offset); offset += 4;
35+
36+
return { event, battery, temp, eventin, devtime, in1, in2, in3, in4};
37+
}
38+
39+
40+
/**
41+
@test loraData 'AWMMgHV1WJwAAAAAAAAAAAAAAAAAAAAA'
42+
*/
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
const { Buffer } = require('buffer');
2+
3+
function bit(value, bit) {
4+
return ((value) & (1 << bit)) !== 0;
5+
}
6+
7+
/**
8+
* Parse Vega TD-11 (Вега ТД-11) Payload
9+
* https://en.iotvega.com/product/td11
10+
* From LoRa Server project
11+
* https://www.loraserver.io/
12+
*
13+
* Sample model for this example:
14+
* https://github.com/Rightech/ric-examples/blob/master/.ric-models/mqtt-loraserver-td11.ric-model.json
15+
*
16+
* @param {string} loraData raw
17+
*/
18+
function process(loraData) {
19+
const bytes = [...Buffer.from(loraData, 'base64')];
20+
const [, b1, , b3, b4, b5, b6] = bytes;
21+
22+
const temp = ((b4 << 8) | b3) / 10;
23+
const security = bit(b6, 0);
24+
const tamper = bit(b6, 1);
25+
const hall1 = bit(b6, 2);
26+
const hall2 = bit(b6, 3);
27+
28+
return { battery: b1, temp, security, tamper, hall1, hall2 };
29+
}
30+
31+
32+
/**
33+
@test loraData 'AWIIIQEADw=='
34+
*/

examples/handlers/ric-handler.d.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
declare module "@ric/handler/reject" {
2+
function reject(): void;
3+
export = reject;
4+
}
5+
6+
declare module "@ric/handler/split" {
7+
interface Split<T> { };
8+
function split<T>(packets: T[]): T;
9+
export = split;
10+
}
11+
12+
declare module "@ric/handler/events" {
13+
export function gen<T>(name: string, payload?: T): void;
14+
}
15+
16+
declare module "@ric/handler/history" {
17+
export function get<T extends string>(params: Array<T>, count?: number): { [K in T]: number | string | boolean }[];
18+
export function last<T extends string>(params: Array<T>): { [K in T]: number | string | boolean };
19+
}

0 commit comments

Comments
 (0)