Три Raspberry Pi и правило «работает без интернета»
Мозги контейнерной фермы — три одноплатника в тройном резервировании, в офлайн-первом режиме. Ферма продолжает работать при потере связи с внешним миром.
В серверной стойке технического контейнера стоят три Raspberry Pi 4. Не сервер, не промышленный контроллер, не облако — три одноплатника по цене хорошего смартфона, работающие в схеме с тройным резервированием.
Такое решение принято объяснять экономией. Экономия здесь побочный эффект; причина другая.
Офлайн-первый режим
Ферма продолжает работать при потере связи с внешним миром. Это не обещание доступности, а требование к архитектуре, из которого следует всё остальное.
Растение не умеет ждать восстановления канала. Полив, климат и фотопериод должны выполняться по расписанию независимо от того, доступен ли кто-то снаружи. Значит, вся логика, от которой зависит жизнь культуры, обязана жить на площадке — и решение о том, включить насос, не может требовать сетевого запроса.
Из этого требования вытекает выбор железа, а не наоборот. Если решения принимаются локально, то нужен не мощный узел с надёжным каналом, а несколько дешёвых узлов, которые переживут друг друга.
Почему три, а не два
Два узла обнаруживают расхождение, но не умеют его разрешить. Когда два контроллера с равными правами дают противоположные ответы, надо выбирать, и выбирать нечем.
Три узла позволяют выбрать большинством. Это старая и скучная схема, и она работает без арбитра со стороны — что как раз и требуется, потому что арбитр со стороны означает сеть, а сеть мы только что объявили ненадёжной.
Что это не решает
Тройное резервирование защищает от отказа узла. Оно не защищает от одинаковой ошибки на всех трёх узлах: если логика неверна, три копии повторят её единогласно и с полной уверенностью.
Поэтому резервирование здесь не главный защитный механизм, а гигиена. Главный — защитные правила, которые останавливают процесс при выходе показателей за границы, и карантин на живой химии. Три одноплатника лишь гарантируют, что эти правила продолжат исполняться, когда один из них умрёт.
Отдельно про полевые узлы
Три Raspberry Pi — это надзорный уровень. Ими не управляются насосы напрямую. Каждый исполнительный узел фермы имеет собственный микроконтроллер, и у него своя логика безопасности.
Это разделение важнее, чем кажется. Если надзорный уровень целиком отключить, узлы не начнут делать глупости — они продолжат держать последнее безопасное состояние. Такая структура называется деградацией, и она устроена так, чтобы каждый следующий отказ отнимал возможности, а не добавлял риска.
Что даёт удешевление
Раз узлы дешёвые, их не жалко держать в тройном количестве и не страшно заменить. На объекте, до которого ехать полдня, это качество важнее производительности: запасной одноплатник можно положить в тот же шкаф, а запасной промышленный контроллер обычно заказывают.
Мы не выдаём это за инженерную доблесть. Просто когда требование «работает без интернета» стоит на первом месте, дальше почти все решения выводятся из него сами.