尖竹汶府(Chanthaburi)有海岸线,呵叻府(Nakhon Ratchasima)没有——最近的海水也要开车将近五个小时。但如果真想做,完全可以在呵叻附近的厂房里养殖亚洲海鲈(Lates calcarifer,即钢鲈/金目鲈),并把它作为真正的海水鱼卖出去。从来不是生物学层面的障碍。海鲈是广盐性鱼类——从全浓度海水到淡水都能适应自如,这也是泰国河口网箱早已在养殖这个品种的原因。真正的障碍在于,养殖池没有一整片海洋那样庞大的水量,能悄悄稀释掉每一次操作失误。
在开放海域,投喂失误、氨氮飙升或溶解氧下降,会被流经网箱的数百万升海水自然缓冲。但在一个120平方米的循环水养殖系统(RAS)里,情况完全不同——问题会持续恶化,直到"有人发现"为止。而现实中,这个"发现"往往不是仪表盘上的一条报警,而是一次批量死亡。
这是一个控制系统问题,不是一个养殖问题
泰国国家科技发展局(NSTDA)旗下MTEC已经验证了生物学与经济性两个层面:一套自动化RAS系统,以40公斤/立方米的密度运行6个养殖池养殖海鲈,月产量约340公斤,同时相比流水式系统节水94%。东南亚RAS市场规模预计将从2026年的约17亿美元增长到2035年的26亿美元。市场需求和生物学可行性,都已经是确定的答案。
尚未解决的——在大多数内陆RAS项目中悄悄失效的部分——是控制层。有四项参数必须持续维持在一个很窄的区间内,而这里没有大海替你兜底容错:
- 溶解氧(DO):养殖密度高时会快速下降,并把整池鱼一起拖垮
- 氨氮/亚硝酸盐:在两次投喂之间悄悄累积,靠人工检测发现时鱼群往往已经处于应激状态
- 盐度:随补水和蒸发而波动,海鲈能耐受一定范围,但超出范围后并不会"手下留情"
- 投喂时机与投喂量:喂多了会污染水质,直接冲击上面三项指标;喂少了则只是白白损失饲料成本
这和工厂车间的问题在结构上完全一致:分布式传感器、无论是否有人盯着都必须按计划运行的控制回路,以及一种在代价高昂之前完全不可见的故障模式。这也是我们此前写车间OT协议碎片化、以及真空炉热监测这两篇文章的原因——无论容器里装的是熔融金属还是海水,传感器、控制逻辑和告警机制,本质上是同一套工程纪律。
系统实际需要做到什么
flowchart TD
SENS["传感器
DO · pH · 氨氮 · 盐度 · 水温"] --> CTRL["控制回路
阈值逻辑 · 投喂调度"]
CTRL --> FEED["自动投喂机
定时 / 按需投喂"]
CTRL --> AER["增氧机 / 水泵
DO校正"]
CTRL --> ALERT["告警
短信 / LINE通知运维人员"]
SENS --> LOG[("时序日志
只读")]
CTRL --> LOG
FEED --> LOG
classDef sense fill:#0f172a,stroke:#eab308,stroke-width:1px,color:#fde68a;
classDef core fill:#082f49,stroke:#38bdf8,stroke-width:1px,color:#bae6fd;
classDef act fill:#052e16,stroke:#22c55e,stroke-width:1px,color:#bbf7d0;
classDef data fill:#134e4a,stroke:#14b8a6,stroke-width:1px,color:#99f6e4;
class SENS sense;
class CTRL core;
class FEED,AER,ALERT act;
class LOG data;
这里面没有什么奇特的技术。它就是一组传感器(DO、pH、氨氮、盐度、水温——与水处理和工业过程监测中使用的探头是同一类),一个决定何时投喂、何时校正的控制回路,一层执行机构(投喂电机、增氧机、水泵),以及一条能在死鱼事件发生之前、而不是之后,把告警推送到运维人员手机上的通道。最容易踩的坑,是把投喂机当成一个独立的定时器,而不是持续读取水质数据的控制回路的一个输出——这正是"自动投喂机"和"自动化养殖系统"之间的区别。
具体的软件技术栈
上图中的每一层,都对应一套刻意选得"朴素成熟"的Python工具链——这里不适合追求新奇,因为新奇往往意味着控制回路的漏洞要靠一次死鱼事件才能被发现。
边缘层(每个养殖池一套,运行在现场设备上) 工业级DO、pH、盐度探头大多输出模拟信号(4–20mA)或Modbus RTU,而不是干净的数字总线。因此边缘控制器根据探头等级,要么是运行标准Python的树莓派(Raspberry Pi),要么是运行MicroPython的ESP32:
pymodbus—— 轮询Modbus RTU/TCP探头(工业级DO/pH变送器的常见输出方式)smbus2/adafruit-circuitpython-*驱动 —— 用于没有Modbus接口的廉价I²C传感器板gpiozero或RPi.GPIO—— 驱动投喂电机、增氧机继电器和加药泵的输出asyncio—— 在单台设备上并发运行传感器轮询、控制回路和执行器写入,互不阻塞
传输层 传感器读数和执行事件通过MQTT发布,而不是点对点轮询——这和车间的做法一致,也是我们此前那篇"五种方言"协议碎片化文章里提到的解法:在边缘层就把所有信号归一化到同一条总线上,不要让后端去讲Modbus这种"方言"。
paho-mqtt—— 将各养殖池控制器的读数发布到本地Mosquitto消息代理orjson—— 对传感器数据做高速序列化
控制回路 这一层必须在本地运行,不能等网络往返:
# 运行在每个养殖池的边缘控制器上,每30秒执行一次
async def control_tick(tank: TankState) -> None:
reading = await read_sensors(tank) # pymodbus / smbus2
if reading.do_mg_l < tank.thresholds.do_min:
await actuate("aerator", tank.id, on=True)
if reading.salinity_ppt < tank.thresholds.sal_min:
await actuate("brine_dose", tank.id, ml=tank.dose_step)
if feed_scheduler.due(tank): # 由APScheduler驱动
await actuate("feeder", tank.id, grams=tank.feed_ration)
await publish(reading, tank) # paho-mqtt → broker
if reading.breaches_critical(tank.thresholds):
await alert(tank, reading) # LINE Notify / Twilio
APScheduler—— 控制每个养殖池的投喂时机(既支持按时间点,也支持按需调度,而不只是固定间隔)pydantic—— 在任何数据被允许触发执行器动作之前,校验每一条传感器数据和阈值配置
后端与仪表盘 使用与simpliDepot相同的Django 5技术栈,把高频时序数据与事务性数据分开存储,而不是硬塞进同一套表结构:
Django+djangorestframework—— 管理养殖池配置、阈值、投喂计划以及场站管理Django Channels—— 通过WebSocket将实时池况数据推送到运维仪表盘influxdb-client(或通过psycopg2/asyncpg连接的TimescaleDB)—— 存储不该塞进关系型OLTP表结构的高频传感器时序数据celery—— 定时报表、每日饲料转化率(FCR)汇总,以及所有不必在30秒周期内完成的任务
告警 使用requests调用LINE Notify或Twilio API——与simpliDepot通知农户和买家所用的渠道一致,运维人员可以在日常已经打开的应用里直接收到养殖池告警。
在系统真正接触活鱼之前,控制回路会先在模拟养殖池上验证——用simpy对投喂/DO/氨氮的动态做离散事件仿真,或用numpy简单模拟传感器读数,针对相当于一整个养殖季的波动数据验证阈值逻辑,确认无误后才会放心让它在无人值守的夜间独立运行。
为什么这对计划出海布局的中国企业有意义
中国国内的陆基工厂化循环水养殖("智慧渔业")近年发展迅速,相应的传感、控制与数据化经验已经相当成熟。对于计划在东南亚布局产能、寻求水产品新货源,或评估与泰国合作伙伴开展技术输出/联合运营的企业而言,这套内陆RAS控制系统提供的是一套现成的、可复用的工程范式,而不需要从零摸索。另一方面,若目标是把泰国内陆养殖的海鲈产品出口至中国市场,系统自动记录的DO、水温、盐度时序数据,天然对应海关总署(GACC)对进口水产品追溯与质量记录的要求——这是一份可核验的连续记录,而不是每天早上手工填一次、指望夜间数据不出问题的台账。
对于评估该赛道的企业来说,真正要问的不是"要不要买一套养殖平台",而是:生物学已经验证可行,市场需要比沿海网箱养殖成本更低的内陆海鲈供应,唯一还没解决的,是一套不会让人靠早上数死鱼才发现问题的控制系统。
常见问题
只能用来养海鲈吗
不是。海鲈是最直接的首选品种,因为它在泰国已有成熟的商业化养殖先例,且能耐受养殖池系统现实可维持的盐度范围。同样的传感器/控制/投喂架构,也适用于其他有本地市场、能耐受盐度波动的广盐性鱼种。
必须用人工海水盐,还是可以用车运卤水
两种方式在实际操作中都有采用,这是每个场站基于成本和物流做出的选择,而不是控制系统本身的技术限制。无论盐分来自哪种来源,系统都需要把盐度控制在目标区间内——本质上都是传感与加药的问题。
如果乡村场站断网会怎样
控制回路(传感器→阈值→执行)必须在本地独立运行,不依赖网络连接状态——是否启动增氧机的判断,不能等待一次云端往返请求。网络连接是用于日志记录、告警和远程监控的,而不是那条直接关系到安全的核心回路本身。这与我们为网络不稳定的乡村depot场站所做的"离线优先"设计前提是一致的。
这已经是一个真实的产品了吗
这目前是一个正在评估范围的概念,基础是已被验证的RAS经济性数据,以及我们在IMCS/OT监测方面已有的工程经验——还不是已经交付的平台。如果您正在运营或规划内陆RAS项目,想具体聊聊您的场站需要什么样的控制系统,欢迎联系我们。
资料来源: NSTDA/MTEC 集约化养殖自动RAS系统; 东南亚RAS市场, GM Insights; 亚洲海鲈/金目鲈养殖, Global Seafood Alliance
最新文章
- 现场笔记:跨后端、网页与移动端运营电商平台 July 27, 2026
- EUDR即将影响泰国天然橡胶和棕榈油——贸易商和加工商的供应链,收购站的台账准备好了吗? July 26, 2026
- 你的SOC盯着员工,却没盯着供应商 July 23, 2026
- Build vs Buy:本地化部署LLM应该自建,还是找合作伙伴? July 22, 2026
- 为什么你的 RAG 管道仍在泄露不该泄露的数据:检索层(Retrieval Layer)的访问控制 July 18, 2026
- 工厂为何害怕ERP项目失败——一套同步层如何化解这个风险 July 15, 2026
