5 Projek IoT Rare: Sensor Industrial + AWS + Linux yang Jarang Orang Buat

Kenapa Sensor Industrial?

Kebanyakan projek IoT hobby guna DHT11, PIR sensor, soil moisture. Benda tu dah biasa sangat. Kalau ko nak buat sesuatu yang actually meaningful, sensor dari dunia industrial jauh lebih menarik dari segi data quality dan use case.

Aku tengok katalog Supmea, sebuah syarikat process automation dari China. Sensor dorang cover pH, conductivity, turbidity, dissolved oxygen, residual chlorine, dan flow. Semua ada RS-485 output dengan Modbus-RTU protocol. Maknanya senang sangat nak integrate dengan Raspberry Pi atau ESP32, then pipe data ke AWS.

Ni 5 idea projek yang aku rasa jarang orang buat, tapi ada real-world value.

1. River / Longkang Quality Monitor dengan pH + Turbidity Sensor

Guna SUP-PH6.0 (pH sensor) dan SUP-PTU300 (turbidity sensor). Both support RS-485 Modbus-RTU. Connect ke Raspberry Pi, baca data setiap 5 minit, hantar ke AWS IoT Core.

# Baca Modbus RTU dari pH sensor
python3 -m pip install minimalmodbus

# sensor_read.py
import minimalmodbus
import time

instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 1)
instrument.serial.baudrate = 9600
instrument.serial.timeout = 1

while True:
    ph_value = instrument.read_register(0x0000, 2)
    temp = instrument.read_register(0x0001, 2)
    print(f"pH: {ph_value}, Temp: {temp}C")
    time.sleep(300)

Data masuk AWS IoT Core, store dalam Amazon Timestream (time-series database), pastu visualize guna Grafana yang run kat EC2.

Decision use case: alert bila pH drop bawah 6.5 atau turbidity naik mendadak, trigger Lambda yang hantar Telegram notification ke group komuniti setempat. Bukan sekadar monitor, tapi ada actionable alert.

2. Realtime Conductivity Monitor untuk Sistem Aquaponics

Conductivity sensor dari Supmea (model SUP-TDS210-B) boleh detect TDS dalam air. Untuk aquaponics, conductivity level kena dalam range tertentu untuk ikan dan pokok sihat.

Setup: ESP32 + RS-485 module baca sensor setiap minit. Data hantar ke AWS IoT Core via MQTT over TLS.

# mosquitto_pub test dari Linux
mosquitto_pub \
  -h your-endpoint.iot.ap-southeast-1.amazonaws.com \
  -p 8883 \
  --cafile root-CA.crt \
  --cert device.pem.crt \
  --key private.pem.key \
  -t 'aquaponics/conductivity' \
  -m '{"ec": 1.8, "unit": "mS/cm", "ts": 1720000000}'

Kat AWS side, guna IoT Rules Engine untuk route data ke DynamoDB. Kalau EC naik luar range, trigger auto-dosing relay via balik response ke ESP32.

Decision use case: sistem boleh decide sendiri sama ada nak tambah nutrient atau flush air, tanpa kena monitor manually 24/7.

3. Dissolved Oxygen Logger untuk Kolam Ikan Komersial

DO (dissolved oxygen) adalah antara parameter paling kritikal untuk ikan. Bila DO drop, ikan stressed, FCR (feed conversion ratio) naik, profit turun. Tapi jarang orang buat monitoring DO secara automated.

Supmea universal controller SUP-DC2000 support DO measurement (0-20 mg/L) dan ada 4-20mA analog output. Ko boleh baca signal 4-20mA guna MCP3208 ADC dengan Raspberry Pi.

# Convert 4-20mA ke DO value
def ma_to_do(ma_value):
    # 4mA = 0 mg/L, 20mA = 20 mg/L
    do = (ma_value - 4) / 16 * 20
    return round(do, 2)

# Baca dari ADC, convert, hantar ke CloudWatch
import boto3
cw = boto3.client('cloudwatch', region_name='ap-southeast-1')

cw.put_metric_data(
    Namespace='Aquaculture/Pond1',
    MetricData=[{
        'MetricName': 'DissolvedOxygen',
        'Value': ma_to_do(current_ma),
        'Unit': 'None'
    }]
)

Dengan data dalam CloudWatch, ko boleh set alarm kalau DO drop bawah 5 mg/L dan auto-start aerator pump via IoT shadow.

Decision use case: correlate DO level dengan feeding schedule. Kalau DO tinggi pagi, feeding boleh tambah. Kalau DO rendah, skip feeding untuk elak water quality degradation lagi teruk.

4. Industrial Wastewater pH Compliance Logger

Untuk kilang yang kena comply dengan standard DOE, pH effluent kena dalam range 6.0-9.0. Buat selalu dorang hire orang untuk manual check atau pasang sistem mahal.

Dengan pH controller SUP-PH (CCEP) yang ada RS-485 Modbus-RTU, ko boleh bina low-cost compliance logging system sendiri.

# systemd service untuk continuous logging
# /etc/systemd/system/ph-logger.service

[Unit]
Description=pH Compliance Logger
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/ph_logger/main.py
Restart=always
RestartSec=10
User=pi

[Install]
WantedBy=multi-user.target
sudo systemctl enable ph-logger
sudo systemctl start ph-logger

Data hantar ke S3 setiap jam dalam format JSON. Guna Lambda untuk generate daily compliance report, email ke environmental officer automatically.

Decision use case: kalau pH keluar range 3 kali berturut-turut dalam 30 minit, system auto-alert dan log incident dengan timestamp untuk audit trail. Kilang ada evidence kalau DOE datang check.

5. Turbidity-Based Water Treatment Dosing Optimizer

Water treatment plant guna coagulant (alum) untuk settle suspended solids. Dos coagulant selalu based on experience operator, bukan data. Ada gap besar kat sini.

Guna turbidity sensor SUP-PTU300 (accuracy ±0.015 NTU) kat inlet dan outlet. Banding kedua-dua reading, calculate removal efficiency, then suggest optimal coagulant dose.

# Lambda function untuk calculate optimal dose
import json
import math

def lambda_handler(event, context):
    inlet_ntu = event['inlet_turbidity']
    outlet_ntu = event['outlet_turbidity']
    flow_rate_lpm = event['flow_rate']
    
    removal_efficiency = (inlet_ntu - outlet_ntu) / inlet_ntu * 100
    
    # Simple Jar Test correlation model
    # Ko kena calibrate dengan actual data dari plant ko
    if inlet_ntu < 10:
        base_dose = 10  # mg/L alum
    elif inlet_ntu < 50:
        base_dose = 20
    elif inlet_ntu < 200:
        base_dose = 35
    else:
        base_dose = 50
    
    # Adjust based on removal efficiency
    if removal_efficiency < 85:
        recommended_dose = base_dose * 1.15
    elif removal_efficiency > 95:
        recommended_dose = base_dose * 0.9
    else:
        recommended_dose = base_dose
    
    return {
        'removal_efficiency': round(removal_efficiency, 2),
        'recommended_dose_mg_l': round(recommended_dose, 1),
        'flow_rate_lpm': flow_rate_lpm
    }

Over time, ko boleh train ML model guna SageMaker dengan historical data untuk dos prediction yang lebih accurate. Ini dah masuk territory yang water utilities besar spend berjuta nak buat.

Common Stack untuk Semua Projek Ni

  • Sensor: RS-485 Modbus-RTU atau 4-20mA output
  • Edge device: Raspberry Pi 4 atau ESP32 dengan RS-485 module
  • Protocol ke cloud: MQTT over TLS ke AWS IoT Core
  • Storage: Amazon Timestream untuk time-series, S3 untuk raw archive
  • Alerting: Lambda + SNS atau Telegram Bot API
  • Visualisation: Grafana on EC2, atau Amazon Managed Grafana
  • Linux service: systemd untuk pastikan reader script auto-restart

Soal Penting Sebelum Pilih Projek

Tanya diri sendiri: siapa yang akan guna data ni, dan apa decision yang akan berubah sebab data tu? Kalau jawapan tu kabur, projek tu akan jadi exercise dalam data collection je, bukan decision support system.

Pilih projek yang ada clear feedback loop. Data masuk, alert keluar, tindakan berlaku, outcome boleh diukur. Baru worth the effort.

Leave a Comment