New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Tyler W.

tyler22

@walker-t · Joined June 2025

Newcomer

Data analyst · manufacturing

Topics
3
Replies
15
Points
0
Newcomer10 points to Member

Forum Replies Created

Viewing 15 posts – 1 through 15 (of 15 total)

What Carlos said, here’s the version I use for our line counters (an Uno doing the counting, a bigger board doing the network). Send binary, fixed size, in one struct, and use onReceive for commands.

Shared struct, in both sketches:

struct Reading {
  int16_t moisture;   // raw ADC
  int16_t temp_x10;   // 21.5 C -> 215
  int16_t flow_x10;   // L/min x10
};

Uno (slave):

volatile Reading r;
volatile bool openValve = false;

void requestEvent() { Wire.write((const uint8_t*)&r, sizeof(r)); }   // one write
void receiveEvent(int n) { if (Wire.available()) openValve = Wire.read() == 1; }

void setup() { Wire.begin(8); Wire.onRequest(requestEvent); Wire.onReceive(receiveEvent); }
void loop() {
  Reading tmp = { readMoisture(), (int16_t)(readTemp() * 10), (int16_t)(readFlow() * 10) };
  noInterrupts(); r = tmp; interrupts();
  digitalWrite(VALVE_PIN, openValve);
}

Mega (master):

Reading r;
if (Wire.requestFrom(8, (int)sizeof(r)) == sizeof(r)) Wire.readBytes((uint8_t*)&r, sizeof(r));
float tempC = r.temp_x10 / 10.0;

Wire.beginTransmission(8); Wire.write(1); Wire.endTransmission();   // open valve

Both are AVR, so byte order and int sizes match and the struct goes across as-is. The ÿ you saw is 0xFF, what the master reads when the slave has nothing left to send. Asking for exactly sizeof(r) fixes that too.

Accepted solution♥ 9

Works. My only snag: the catalogue doesn’t have light.set, our integrator called it relay.set with a param called state (0 or 1). The rpc-commands call showed it straight away. First binding was Super+L which of course locks the screen, it’s on Super+F9 now.

♥ 0

Works. First call came back 403 because I had only ticked the send permission and not iot_rpc.read. After adding it the lamp clicks and the call returns 200 / SUCCESSFUL in about 300 ms. I also put a Switch card on the operators’ board bound to relay, so they see the state. Thanks both.

♥ 1

Flashed it with a borrowed FTDI adapter, took me three tries to get it into boot mode (hold the button while plugging in). It now connects to Hermetry with its own access token and sends {"relay": 0} every minute. So the sending part is done. What about switching it?

♥ 1

Careful, I don’t think there’s a download-and-run image. The plans page says on-premises installs are agreed with their sales team, same as Enterprise plans, so that’s a conversation, not a button.

For the other two questions you can answer him today, I did exactly this for our compliance people:

Where the data is: every organisation has one home region, EU, US or Turkiye, picked when it was created. Devices, telemetry, alarms, boards, flows, audit log all live there. As owner or admin open Settings, then Residency (it’s at /admin/settings/residency). It shows the home region, any residency requirement, the region facts, the sub-processors and where backups are kept. I screenshotted that page and that was most of the answer.

Getting it out is two parts. An owner can pull a JSON export of the organisation (devices, boards, members, settings, webhooks, part of the audit log). Telemetry history goes separately, with the history API or the download on a chart card, and board files you download one board at a time. I wrote a little script that pulls hourly averages per device into CSV every month, so we always have our own copy.

Page I sent our IT: Regions and data residency, plus the “Export your data and close your organisation” one.

Accepted solution♥ 2
Viewing 15 posts – 1 through 15 (of 15 total)