While obnizOS automatically handles communication with the obnizCloud, you have the flexibility to filter transmitted data, modify its content, or change the transmission timing.
Note: This section covers advanced, low-level mechanisms of the system.
on_upstream()
By defining the on_upstream() function, you can intercept data just before obnizOS adds it to the transmission queue for the cloud.
The function must return an integer that determines how the data should be processed:
| Return Value | Description |
|---|---|
| 0 | Discard: The data will not be sent. |
| 1 | Normal: The data is added to the queue and sent according to the standard queue timing. |
| 2 | Immediate: The data is added to the queue, and the queue is flushed (sent) immediately. |
Example
-- Parameters: func(int), module(int), data(string as uint8 array)
function on_upstream(func, module, data)
if necessary then
-- Proceed with standard transmission
return 1;
elseif rightnow then
-- Send immediately
return 2;
elseif mustDrop then
-- Discard original data and send custom data instead
cloud.upstreamEnqueue(1, 2, "modified data");
cloud.upstreamFlush(); -- Optional: Trigger immediate send
return 0;
end
end
cloud.upstreamEnqueue(function, module, data)
This function manually inserts data into the cloud transmission queue. When used in combination with on_upstream(), it allows you to filter outgoing data, convert it into different commands, or apply custom compression.
Usage
-- Inserts specific data into the upstream queue
cloud.upstreamEnqueue(1, 2, "my data");
cloud.upstreamFlush()
This function forces the system to immediately transmit all data currently stored in the upstream queue.
Usage
-- Trigger an immediate upload of the current queue
cloud.upstreamFlush()