Категории

Выживание в России 2040: как я закопал продовольственный кластер с IoT-мониторингом

2025-10-15 14:07:41 | Статья из категории: 2040
iot мониторинг запасов еды

«Да ладно тебе, всё нормально будет! У нас же пашни — от Урала до Камчатки!» — слышу я от коллег, когда рассказываю, что закапываю бочки с тушенкой и гречкой.

Но давайте вспомним: в 1990-х в России реально голодали. Не в смысле «не хватило авокадо в смузи», а в смысле «дети ели хлеб с солью по полгода». И это — в стране с самыми большими запасами пахотных земель в мире. Абсурд? Да. Реальность? Тоже да.

Сегодня — климатические аномалии, деградация почв, нестабильные цепочки поставок, санкции, контрсанкции, «временные трудности»… А завтра? А завтра может не быть «автоматической доставки из Ozon Fresh». И тогда окажется, что самый надёжный продакшен — это твоя собственная бочка под яблоней.

Я — айтишник. Я не верю в «авось пронесёт». Я верю в резервирование, мониторинг и SLA. Поэтому я собрал и закопал продовольственный кластер с IoT-архитектурой. Вот как.

Шаг 1. Стратегия: не «закопал и забыл», а «закопал и наблюдаю»

Многие думают: «купил 500 банок тушенки — и спокоен на 10 лет». Но:

Поэтому я решил: мой запас должен быть observable. Как любой уважающий себя микросервис.

Шаг 2. Архитектура: 4 бочки = 4 микросервиса

Я разделил запас на категории — чтобы не вскрывать всё сразу и не терять резерв при частичной компрометации.

Всё уложено в 200-литровые пищевые еврокубы с плотными крышками. Внутри — толстый пищевой вкладыш, силикагель и картонные прокладки между слоями.

Сколько еды закапывать? Нормы на 1 человека на 1 год

Многие думают: «куплю 300 банок тушенки — и готов». Но без углеводов, витаминов и жиров вы быстро выдохнетесь. Вот сбалансированный минимум, проверенный выживальщиками и военными. Всё рассчитано на умеренную активность (не стройка, но и не лежание в бункере).

Категория Продукт Количество на год Почему нужно Срок хранения (в прохладе)
Белок / Жир Тушенка (говядина/свинина) 150 банок (330 г) Основной источник животного белка и жира 4–7 лет
Рыбные консервы 30 банок Омега-3, разнообразие, йод 3–5 лет
Растительное масло 5 литров Калории! 1 ст.л. = 120 ккал 1–2 года (в тёмной таре)
Углеводы Гречка 25 кг Белок + медленные углеводы, не требует дрожжей 2–5 лет (в гермоупаковке — 10+)
Рис / перловка 15 кг Энергия, сытость 2–4 года
Макароны 10 кг Быстро варятся, дешево 3–5 лет
Сухой картофель / крупа «Дружба» 5 кг Клетчатка, витамины 2–3 года
Мораль / Витамины Сахар 8 кг Глюкоза, энергия, консервация Вечно
Чай / кофе 1–2 кг Психологическая поддержка 2–3 года
Сухофрукты / мёд 3–5 кг Витамины, железо, вкус 1–3 года
Быт / Здоровье Соль 3 кг Электролиты, консервация Вечно

Итого на двоих: ~600 банок консервов + 100–120 кг сухих продуктов. Всё это помещается в 3–4 еврокуба по 200 л.

⚠️ Важно: это минимум. Если есть возможность — добавьте сухое молоко, витамины (особенно C и B), дрожжи (для выпечки) и мыло. И не забывайте: лучший запас — тот, что вы регулярно ротируете и частично съедаете.

Шаг 3. Утепление и закапывание: как не дать системе замёрзнуть

Глубина закладки — 1.5 метра. Это ниже глубины промерзания в большинстве регионов РФ (кроме вечной мерзлоты, но там, честно, другие проблемы).

Но чтобы точно не рисковать:

Результат: даже при -35°C на поверхности, внутри бочки держится +4…+7°C. А это — идеальные условия для хранения консервов (по ГОСТ: от 0 до +15°C).

Шаг 4. IoT-нода: мониторинг без Wi-Fi и проводов

Wi-Fi под землёй — миф. Поэтому я собрал ultra-low-power ноду на базе:

Схема работы:

  1. Раз в 48 часов TPL5110 подаёт питание на ESP32.
  2. ESP32 включается, читает датчики, отправляет данные по Bluetooth LE.
  3. Подаёт сигнал «DONE» → TPL5110 отключает питание.
  4. Потребление в простое — 0 мА (только 35 нА у самого TPL5110).

Данные ловит BLE-шлюз (Raspberry Pi Zero W в сарае), который пересылает их в мою самописную IoT-систему. Там — дашборд, алерты и логирование в InfluxDB.

Расчётный срок работы от батареи — 5–7 лет. Но я планирую проверять бочки каждые 3 года: съесть часть запаса, обновить аккумулятор, убедиться, что банки целы.

Шаг 5. Почему именно 3 года?

Срок годности тушенки по ГОСТ — 2–4 года. Но при правильном хранении она живёт и 7 лет. Однако:

Это как CI/CD для выживания: Consume It / Deploy new.

Заключение: это не паранойя — это DevOps для реальной жизни

Меня спрашивают: «Ты что, боишься апокалипсиса?»

Нет. Я просто знаю, что в России стабильность — это исключение, а хаос — правило. И если в 90-х голод был реальностью, то в 2040-м он может вернуться в новой упаковке — с QR-кодом и блокчейном.

А мой продовольственный кластер — это не бункер. Это резервная копия цивилизации на случай, если продакшен упадёт.

P.S. Если вдруг начнётся «чёрный день» — знайте: у меня есть тушенка, гречка, и Grafana с температурой в бочке. Приходите — SLA на сытость действует для всех.

IoT-нода внутри бочки: код для ESP32

Вот минимальный, но рабочий скетч для ESP32, который раз в 48 часов включается (благодаря TPL5110), считывает температуру и влажность с датчика SHT45, отправляет данные по Bluetooth LE и подаёт сигнал на TPL5110 для отключения питания. Всё это потребляет меньше 0.01 мА·ч в сутки.


/*
 * Продовольственная IoT-нода для закопанной бочки
 * ESP32 + SHT45 + TPL5110
 * Режим: ultra-low-power, BLE-рассылка раз в 48 часов
 */

#include <Wire.h>
#include <Adafruit_SHT4x.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLEAdvertising.h>

#define DONE_PIN 25        // Пин для сигнала TPL5110 "DONE"
#define SHT45_ADDR 0x44    // Адрес датчика SHT45

Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup() {
  pinMode(DONE_PIN, OUTPUT);
  digitalWrite(DONE_PIN, LOW);

  // Инициализация датчика
  if (!sht4.begin(SHT45_ADDR)) {
    sendBLEData(-999, -999); // ошибка
    signalDone();
    return;
  }

  delay(50);
  sensors_event_t humidity, temp;
  sht4.getEvent(&humidity, &temp);

  sendBLEData(temp.temperature, humidity.relative_humidity);
  delay(2000);
  signalDone();

  while (1) delay(1000); // ждём выключения
}

void sendBLEData(float temp, float hum) {
  BLEDevice::init("FoodVault");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService("4fafc201-1fb5-459e-8fcc-c5c9c331914b");
  BLECharacteristic *pChar = pService->createCharacteristic(
    "beb5483e-36e1-4688-b7f5-ea07361b26a8",
    BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
  );
  pService->start();
  BLEAdvertising *pAdv = BLEDevice::getAdvertising();
  pAdv->addServiceUUID("4fafc201-1fb5-459e-8fcc-c5c9c331914b");
  BLEDevice::startAdvertising();

  String payload = "{\"temp\":" + String(temp, 1) + ",\"hum\":" + String(hum, 1) + "}";
  pChar->setValue(payload.c_str());
  pChar->notify();
}

void signalDone() {
  digitalWrite(DONE_PIN, HIGH);
  delay(100); // по даташиту TPL5110 — минимум 10 мс
}

void loop() {}

Шлюз (например, Raspberry Pi Zero W в сарае) ловит BLE-рекламу от устройства с именем FoodVault и пересылает данные в твою самописную IoT-систему. А TPL5110, получив сигнал DONE, разрывает цепь питания — ESP32 выключается полностью. Следующее включение — только через 48 часов (настраивается резистором на самом TPL5110).

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


Кто я | Контакты и регион

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA