Sensmos

Twoje czujniki. Twoje dane. Twoja sieć.
Your sensors. Your data. Your network.

Zdecentralizowana sieć małych czujników. Podłączasz urządzenie, ono mierzy otoczenie, dzieli się danymi z siecią i zarabia token GALU — a Ty masz nad tym pełną kontrolę.

A decentralized network of small sensors. You plug in a device, it measures its surroundings, shares data with the network and earns the GALU token — and you stay fully in control.

Czym jest Sensmos

Czujniki, które mierzą Twój realny świat

Sensmos to sieć małych urządzeń (nodów) opartych o ESP32. Każdy node mierzy coś w swoim otoczeniu — jakość sieci energetycznej, siłę sygnału, temperaturę, wilgotność, własne czujniki — pokazuje to na wspólnej mapie i może na tym działać lokalnie (alerty, automatyzacje, integracja z Home Assistant).

To narzędzie użytkowe: dostajesz realne, lokalne dane i automatyzację bez chmury. Token GALU jest silnikiem ekonomicznym sieci — nagrodą za utrzymywanie czujnika online, nie celem samym w sobie. Wszystko jest Twoje: urządzenie, klucz, portfel i dane.

Mierzy

Node zbiera odczyty z czujników i publikuje je jako „encje".

Dzieli się

Dane trafiają do sieci i na żywą mapę; możesz je też udostępniać sąsiadom.

Zarabia

Co dobę naliczane są nagrody GALU proporcjonalnie do wkładu.

Jak to działa

Od czujnika do tokena

Publiczne odczyty są pakowane i wysyłane do backendu. Raz na dobę („epoka") sieć wylicza nagrody i przyznaje GALU.

Node
mierzy otoczenie
Sieć
zbiera i weryfikuje
Epoka
liczy nagrody
GALU
trafia do portfela

Nody potrafią też rozmawiać między sobą (subskrypcje danych) oraz z Home Assistant — bez chmury, lokalnie w Twojej sieci.

Jak zacząć

Uruchom node w 5 minut

Zasil node
Podłącz urządzenie przez USB. Przy pierwszym starcie pojawia się jako urządzenie Bluetooth SENSMOS-xxxxxx.
Otwórz aplikację
W aplikacji Sensmos naciśnij „Połącz node" — włącz Bluetooth w telefonie.
Wybierz node i podaj WiFi
Nazwa sieci 2,4 GHz + hasło. PIN zostaw domyślny i zmień później.
Poczekaj chwilę
Apka konfiguruje node, tworzy lub odzyskuje portfel i łączy urządzenie z WiFi.
Gotowe
Node zaczyna mierzyć i naliczać GALU co dobę. Pojawia się na liście jako online.
Masz już node? Na nowym telefonie wystarczy „Połącz node" — jeśli urządzenie ma kopię portfela, aplikacja zaproponuje jego odzyskanie przez Bluetooth.
Portfel i GALU

Zarabiaj, wydawaj, wypłacaj

Portfel jest tworzony przy pierwszym nodzie i bezpiecznie przechowywany na Twoim telefonie. GALU naliczane są za uptime i aktywność nodów.

Model „bez darmowych punktów"

Nie ma startowych darmowych środków. Możesz korzystać z sieci „na kredyt" (saldo schodzi na minus, do limitu), ale wypłacić możesz dopiero to, co naprawdę zarobisz — najpierw nagrody spłacają dług, nadwyżka jest do wypłaty. To uczciwe i odporne na nadużycia.

Wysłanie wiadomości0.50 GALU
Powiadomienie push0.30 GALU
Subskrypcja danych (doba)7 GALU

Deposit

Wpłać GALU z portfela do sieci — zasila pulę, z której nody płacą za usługi.

Claim

Wypłać zarobione GALU z sieci na swój portfel (on-chain, Polygon).

MetaMask

Wyeksportuj klucz portfela (po PIN-ie noda) i podłącz go do MetaMask.

Co potrafi node

Więcej niż czujnik

Encje

Odczyty publiczne (pub.*) i własne (own.*) — podgląd w aplikacji i na mapie.

Skrypty

Proste automatyzacje na nodzie: „jeśli napięcie spadnie poniżej X → zrób Y" (do 4 kroków).

Akcje wiadomości

Gdy node odbierze wiadomość → wyślij push, zapisz dane lub uruchom skrypt.

Subskrypcje

Kupuj dane innego noda — pojawią się u Ciebie jako osobne encje.

Powiadomienia

Sieć Cię informuje

Gdy zdarzy się coś ważnego (alarm, spadek napięcia, wiadomość), node może wysłać powiadomienie push na Twój telefon. Skonfigurujesz to w sekcji „Akcje" w ustawieniach noda — tytuł i treść z podpowiedziami (np. nadawca, treść wiadomości).

Home Assistant

Integracja bez chmury

Sensmos działa z Home Assistant lokalnie (HACS). Dane nodów pojawiają się jako sensory HA, a dane z HA możesz „wkarmić" do noda — z automatycznym przeliczaniem jednostek. Bez brokera, bez chmury.

Bezpieczeństwo

Twoje klucze, Twoje urządzenie

Klucz na telefonie

Klucz portfela nigdy nie opuszcza Twojego urządzenia; node ma własny klucz generowany lokalnie.

Ceremonia trust

Krótkie potwierdzenie przez Bluetooth, że to fizyczne urządzenie — chroni sieć przed symulatorami.

Kopia portfela

Zaszyfrowaną kopię portfela można trzymać na nodzie i odzyskać przez Bluetooth (po PIN-ie).

Przycisk serwisowy

Przytrzymanie przycisku na nodzie → tryb Bluetooth (zmiana WiFi, odzysk) lub reset.

Dla zaawansowanych

API noda, encje i konfiguracja

Każdy node wystawia w Twojej sieci lokalne HTTP API — możesz nim sterować ze skryptu, integracji lub własnego narzędzia. Wszystkie wywołania (poza /info) wymagają nagłówka Authorization: Bearer <PIN>.

HTTP API (sieć lokalna)
GET/info
device_id, miasto, wersja FW — bez autoryzacji
GET/POST/config
lat/lon/miasto, PIN, push_token, integration_url
GET/data/status
stan buforów: pub / own / pool
GET/data/native
whitelista encji natywnych pub.*
POST/data
{entity_id, value, unit} — dodaj jeden odczyt
POST/data/batch
{entities:[…]} — wiele odczytów naraz
GET/POST/DELETE/config/scripts
skrypty użytkownika
GET/POST/DELETE/config/messages
akcje wiadomości
GET/message/inbox
skrzynka — odbierz wiadomości
POST/message/ack
potwierdź odbiór wiadomości
GET/wallet/balance
saldo (proxy do sieci)
GET/wallet/proof
dowód Merkle do wypłaty
POST/node/ble_mode
restart w tryb Bluetooth (re-atestacja, serwis)
POST/factory-reset
reset fabryczny — czyści konfig, zostawia klucz noda
Przykład. Wstrzyknięcie własnego odczytu z dowolnego urządzenia w sieci:
curl -X POST http://<ip-noda>/data \ -H "Authorization: Bearer 1234" \ -H "Content-Type: application/json" \ -d '{"entity_id":"own.temp_kotlownia","value":21.4,"unit":"°C"}'
Model encji

Encje grupowane są po prefiksie w entity_id — prefiks decyduje, gdzie odczyt trafia i czy idzie do sieci.

pub.*natywne pomiary z whitelisty — widoczne na mapie, liczą się do nagród
own.*Twoje dane / z integracji — wysyłane do sieci, ale nie publiczne na mapie
sub.* · get.* · msg.*subskrypcje, pobrania z web, wiadomości — bufor lokalny
tmp.*bufor roboczy skryptów — znika po restarcie
Skrypty i akcje

Skrypty (do 4 kroków)

Reguła {if, action, cooldown_s, data}. Akcje: webhook, push, send (wiadomość do innego noda), calc, aggregate, ping, fetch, report.

Akcje wiadomości

Trigger po message_id (lub *) → webhook / prefix (zapis do {prefix}.*) / script. Do 3 slotów.

Subskrypcje danych

POST /remote/subscribe {esp_id, days, prefix} — dane innego noda spływają do bufora jako <prefix>.*. Rozliczane dobowo.

Integracja (webhook out)

integration_url — node POST-uje zdarzenia (message_received, batch_sent, sub_received, ws_connected) jako {device_id, action, data}.

Konfiguracja (POST /config)
lat, lon, citypozycja noda na mapie
pinPIN do API i Bluetooth — koniecznie zmień domyślny
push_tokentoken telefonu do powiadomień push
integration_urladres wychodzącego webhooka (np. Home Assistant)
Provisioning i serwis (Bluetooth)

Przy pierwszym starcie (lub po przytrzymaniu przycisku) node wchodzi w tryb BLE jako SENSMOS-xxxxxx. Aplikacja używa komend: auth (PIN, zapamiętywany przy pierwszym połączeniu), register (właściciel + WiFi + podpis challenge-response), trust_round/trust_sign (ceremonia atestacji), factory_reset. WiFi i Bluetooth nigdy nie działają naraz — przełączenie zawsze przez restart urządzenia.

Szczegóły kryptografii (klucze secp256k1, podpisywanie batchy, ceremonia trust przeciw symulatorom) — patrz sekcja Bezpieczeństwo.

FAQ

Częste pytania

Czy potrzebuję wiedzy technicznej?

Nie. Zasilasz node, dodajesz go w aplikacji przez Bluetooth i podajesz WiFi. Resztą zajmuje się aplikacja.

Co jeśli zgubię telefon?

Jeśli wcześniej zapisałeś kopię portfela na nodzie, odzyskasz go na nowym telefonie przez Bluetooth (po PIN-ie noda). Możesz też wyeksportować klucz do MetaMask.

Czy mogę wypłacić GALU od razu?

Możesz wypłacić tylko to, co zarobisz powyżej ewentualnego długu. Nie ma darmowych środków na start.

Czy node musi działać 24/7?

Nie musi, ale im wyższy uptime, tym wyższa nagroda. Node liczony jest proporcjonalnie do czasu online.

Czy moje dane są prywatne?

Publiczne encje trafiają do sieci i na mapę. Dane „własne" zostają lokalnie, chyba że sam je udostępnisz.

Jakiej sieci WiFi potrzebuję?

2,4 GHz. ESP32 nie łączy się z sieciami 5 GHz.

What is Sensmos

Sensors that measure your real world

Sensmos is a network of small ESP32-based devices (nodes). Each node measures something around it — power-grid quality, signal strength, temperature, humidity, your own sensors — shows it on a shared map, and can act on it locally (alerts, automations, Home Assistant integration).

It's a utility: you get real, local data and cloud-free automation. The GALU token is the network's economic engine — a reward for keeping a sensor online, not the point in itself. Everything is yours: the device, the key, the wallet and the data.

Measures

The node collects sensor readings and publishes them as "entities".

Shares

Data flows to the network and the live map; you can also share it with neighbors.

Earns

Every day rewards in GALU are credited proportionally to your contribution.

How it works

From sensor to token

Public readings are batched and sent to the backend. Once a day (an "epoch") the network computes rewards and grants GALU.

Node
measures surroundings
Network
collects & verifies
Epoch
computes rewards
GALU
lands in your wallet

Nodes can also talk to each other (data subscriptions) and to Home Assistant — no cloud, locally on your network.

Get started

Run a node in 5 minutes

Power the node
Plug the device in over USB. On first boot it appears as a Bluetooth device SENSMOS-xxxxxx.
Open the app
In the Sensmos app tap "Connect node" — turn Bluetooth on.
Pick the node and enter WiFi
2.4 GHz network name + password. Leave the default PIN and change it later.
Wait a moment
The app configures the node, creates or restores your wallet and connects the device to WiFi.
Done
The node starts measuring and accruing GALU every day. It shows up online in your list.
Already have a node? On a new phone just tap "Connect node" — if the device holds a wallet backup, the app offers to restore it over Bluetooth.
Wallet & GALU

Earn, spend, withdraw

Your wallet is created with your first node and stored securely on your phone. GALU is earned for node uptime and activity.

The "no free points" model

There are no free starter funds. You can use the network "on credit" (balance goes negative, up to a limit), but you can only withdraw what you genuinely earn — rewards first pay off the debt, the surplus is withdrawable. Fair and abuse-resistant.

Sending a message0.50 GALU
Push notification0.30 GALU
Data subscription (per day)7 GALU

Deposit

Move GALU from your wallet into the network — funds the pool nodes spend from.

Claim

Withdraw earned GALU from the network to your wallet (on-chain, Polygon).

MetaMask

Export your wallet key (behind the node PIN) and import it into MetaMask.

What a node can do

More than a sensor

Entities

Public readings (pub.*) and your own (own.*) — visible in the app and on the map.

Scripts

Simple on-node automations: "if voltage drops below X → do Y" (up to 4 steps).

Message actions

When a node receives a message → send a push, store data or run a script.

Subscriptions

Buy another node's data — it shows up as separate entities on your side.

Notifications

The network keeps you posted

When something important happens (an alarm, a voltage drop, a message), a node can send a push notification to your phone. You configure it in the "Actions" section of the node settings — title and body with handy placeholders (e.g. sender, message content).

Home Assistant

Cloud-free integration

Sensmos works with Home Assistant locally (HACS). Node data shows up as HA sensors, and you can "feed" HA data into a node — with automatic unit conversion. No broker, no cloud.

Security

Your keys, your device

Key on your phone

The wallet key never leaves your device; the node has its own key generated locally.

Trust ceremony

A short Bluetooth proof that it's a physical device — protects the network from simulators.

Wallet backup

An encrypted wallet backup can live on the node and be restored over Bluetooth (behind the PIN).

Service button

Hold the button on the node → Bluetooth mode (change WiFi, recover) or reset.

For power users

Node API, entities & configuration

Every node exposes a local HTTP API on your network — drive it from a script, an integration or your own tool. Every call (except /info) needs the Authorization: Bearer <PIN> header.

HTTP API (local network)
GET/info
device_id, city, FW version — no auth
GET/POST/config
lat/lon/city, PIN, push_token, integration_url
GET/data/status
buffer state: pub / own / pool
GET/data/native
whitelist of native pub.* entities
POST/data
{entity_id, value, unit} — add one reading
POST/data/batch
{entities:[…]} — many readings at once
GET/POST/DELETE/config/scripts
user scripts
GET/POST/DELETE/config/messages
message actions
GET/message/inbox
message inbox
POST/message/ack
acknowledge a message
GET/wallet/balance
balance (proxy to network)
GET/wallet/proof
Merkle proof for claim
POST/node/ble_mode
reboot into Bluetooth mode (re-attest, service)
POST/factory-reset
factory reset — clears config, keeps the node key
Example. Inject your own reading from any device on the network:
curl -X POST http://<node-ip>/data \ -H "Authorization: Bearer 1234" \ -H "Content-Type: application/json" \ -d '{"entity_id":"own.temp_boiler","value":21.4,"unit":"°C"}'
Entity model

Entities are grouped by the prefix in entity_id — the prefix decides where a reading goes and whether it reaches the network.

pub.*native measurements from the whitelist — shown on the map, count toward rewards
own.*your data / integration — sent to the network but not public on the map
sub.* · get.* · msg.*subscriptions, web fetches, messages — local buffer
tmp.*scratch buffer for scripts — cleared on restart
Scripts & actions

Scripts (up to 4 steps)

A rule {if, action, cooldown_s, data}. Actions: webhook, push, send (message to another node), calc, aggregate, ping, fetch, report.

Message actions

Triggered by message_id (or *) → webhook / prefix (store into {prefix}.*) / script. Up to 3 slots.

Data subscriptions

POST /remote/subscribe {esp_id, days, prefix} — another node's data flows into the buffer as <prefix>.*. Billed daily.

Integration (webhook out)

integration_url — the node POSTs events (message_received, batch_sent, sub_received, ws_connected) as {device_id, action, data}.

Configuration (POST /config)
lat, lon, citynode position on the map
pinPIN for API and Bluetooth — change the default
push_tokenphone token for push notifications
integration_urloutgoing webhook address (e.g. Home Assistant)
Provisioning & service (Bluetooth)

On first boot (or after holding the button) the node enters BLE mode as SENSMOS-xxxxxx. The app uses the commands: auth (PIN, remembered on first connect), register (owner + WiFi + challenge-response signature), trust_round/trust_sign (attestation ceremony), factory_reset. WiFi and Bluetooth never run at the same time — switching always goes through a device restart.

Crypto details (secp256k1 keys, batch signing, the anti-simulator trust ceremony) — see the Security section.

FAQ

Common questions

Do I need technical knowledge?

No. Power the node, add it in the app over Bluetooth and enter WiFi. The app handles the rest.

What if I lose my phone?

If you saved a wallet backup on the node, you can restore it on a new phone over Bluetooth (behind the node PIN). You can also export the key to MetaMask.

Can I withdraw GALU right away?

You can only withdraw what you earn above any debt. There are no free starter funds.

Does the node need to run 24/7?

It doesn't have to, but higher uptime means higher rewards. A node is counted proportionally to its online time.

Is my data private?

Public entities go to the network and the map. "Own" data stays local unless you choose to share it.

What WiFi do I need?

2.4 GHz. ESP32 does not connect to 5 GHz networks.