# Prime Gate Agent: reference configuration for an Africell-type site # (Megmeet MC2900 rectifier controller, Deepsea DSE7420 MK II genset, # Advantech ADAM-4055 DI/DO module, DIN-rail Modbus meter, fuel probe on a # 4-20 mA input). Register addresses are placeholders: verify against the # vendor maps before commissioning (Karim's record, section 7.2). server_url: https://rms.primerp.ai gateway_name: KIN-001-GW poll_interval_sec: 60 # telemetry fast_poll_interval_sec: 3 # digital inputs -> alarms on occurrence heartbeat_interval_sec: 300 buffer_retention_hours: 96 # >= 72 h store-and-forward devices: - id: rs485 # one multi-drop Modbus RTU bus, unique slave ids driver: modbus params: { transport: rtu, port: /dev/ttyUSB0, baudrate: 9600, parity: N, stopbits: 1, timeout: 1.5 } - id: mc2900 # rectifier controller over SNMP (Ethernet) driver: snmp params: { host: 192.168.10.2, community: public, version: 2c } points: # --- SNEL / grid (3-phase Modbus RTU meter, slave 1) --- - { key: grid.v_l1, driver: modbus, device: rs485, name: Grid voltage L1, unit: V, domain: grid, params: { unit: 1, table: input, address: 0, type: float32 }, thresholds: { major: { lt: 180 }, minor: { gt: 250 } } } - { key: grid.v_l2, driver: modbus, device: rs485, name: Grid voltage L2, unit: V, domain: grid, params: { unit: 1, table: input, address: 2, type: float32 } } - { key: grid.v_l3, driver: modbus, device: rs485, name: Grid voltage L3, unit: V, domain: grid, params: { unit: 1, table: input, address: 4, type: float32 } } - { key: grid.i_l1, driver: modbus, device: rs485, name: Grid current L1, unit: A, domain: grid, params: { unit: 1, table: input, address: 6, type: float32 } } - { key: grid.frequency, driver: modbus, device: rs485, name: Grid frequency, unit: Hz, domain: grid, params: { unit: 1, table: input, address: 70, type: float32 }, thresholds: { minor: { lt: 49.0, gt: 51.0 } } } - { key: grid.kw, driver: modbus, device: rs485, name: Grid active power, unit: kW, domain: grid, params: { unit: 1, table: input, address: 52, type: float32 } } - { key: grid.kwh, driver: modbus, device: rs485, name: Grid energy, unit: kWh, kind: counter, domain: grid, params: { unit: 1, table: input, address: 72, type: float32 } } - { key: grid.pf, driver: modbus, device: rs485, name: Power factor, unit: "", domain: grid, params: { unit: 1, table: input, address: 62, type: float32 } } - { key: grid.available, driver: modbus, device: rs485, name: Mains available, kind: digital, domain: grid, params: { unit: 1, table: input, address: 0, type: float32 }, scale: 1, thresholds: { major: { eq: 0 } } } # --- Rectifier / MPPT (Megmeet MC2900 over SNMP; OIDs from the vendor MIB) --- - { key: rect.dc_v, driver: snmp, device: mc2900, name: DC bus voltage, unit: V, domain: dc, params: { oid: 1.3.6.1.4.1.44010.1.1.1.0 }, scale: 0.01, thresholds: { critical: { lt: 44 }, major: { lt: 46, gt: 57.5 } } } - { key: rect.dc_i, driver: snmp, device: mc2900, name: DC load current, unit: A, domain: dc, params: { oid: 1.3.6.1.4.1.44010.1.1.2.0 }, scale: 0.1 } - { key: rect.alarm, driver: snmp, device: mc2900, name: Rectifier alarm status, kind: digital, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.2.1.0, fast: true }, thresholds: { major: { eq: 1 } } } - { key: solar.kw, driver: snmp, device: mc2900, name: Solar power, unit: kW, domain: solar, params: { oid: 1.3.6.1.4.1.44010.1.3.1.0 }, scale: 0.001 } - { key: batt.soc, driver: snmp, device: mc2900, name: Battery SOC, unit: "%", domain: battery, params: { oid: 1.3.6.1.4.1.44010.1.4.1.0 }, thresholds: { critical: { lt: 20 }, major: { lt: 35 }, warning: { lt: 50 } } } - { key: batt.temp, driver: snmp, device: mc2900, name: Battery temperature, unit: C, domain: battery, params: { oid: 1.3.6.1.4.1.44010.1.4.2.0 }, scale: 0.1, thresholds: { major: { gt: 50 } } } # --- Genset (Deepsea DSE7420 MK II, Modbus RTU slave 10; GenComm map) --- - { key: gen.running, driver: modbus, device: rs485, name: Genset running, kind: digital, domain: genset, params: { unit: 10, table: holding, address: 1024, bit: 0, fast: true } } - { key: gen.rpm, driver: modbus, device: rs485, name: Engine speed, unit: rpm, domain: genset, params: { unit: 10, table: holding, address: 1030 } } - { key: gen.oil_bar, driver: modbus, device: rs485, name: Oil pressure, unit: bar, domain: genset, params: { unit: 10, table: holding, address: 1024 }, scale: 0.01, thresholds: { critical: { lt: 1.0 } } } - { key: gen.coolant_c, driver: modbus, device: rs485, name: Coolant temperature, unit: C, domain: genset, params: { unit: 10, table: holding, address: 1025 }, thresholds: { major: { gt: 98 } } } - { key: gen.batt_v, driver: modbus, device: rs485, name: Starting battery, unit: V, domain: genset, params: { unit: 10, table: holding, address: 1029 }, scale: 0.1, thresholds: { major: { lt: 11.5 } } } - { key: gen.hours, driver: modbus, device: rs485, name: Run hours, unit: h, kind: counter, domain: genset, params: { unit: 10, table: holding, address: 1798, type: uint32 }, scale: 0.0002778 } - { key: gen.mode, driver: modbus, device: rs485, name: Control mode, kind: text, domain: genset, params: { unit: 10, table: holding, address: 772 } } - { key: gen.fail_start, driver: modbus, device: rs485, name: Failed to start, kind: digital, domain: genset, params: { unit: 10, table: holding, address: 2048, bit: 3, fast: true }, thresholds: { critical: { eq: 1 } } } - { key: gen.cmd_start, driver: modbus, device: rs485, name: Genset start command, kind: digital, domain: genset, controllable: true, params: { unit: 10, table: holding, address: 4104, write_fn: holding } } # --- Fuel (4-20 mA probe on a Modbus analog input module, slave 20) --- - { key: fuel.level_pct, driver: modbus, device: rs485, name: Fuel level, unit: "%", domain: fuel, params: { unit: 20, table: input, address: 0 }, scale: 0.0061, offset: -25, thresholds: { critical: { lt: 10 }, major: { lt: 20 }, warning: { lt: 30 } } } # --- Environment and security (ADAM-4055, slave 30; DI 0-7, DO 16-23) --- - { key: env.door, driver: modbus, device: rs485, name: Cabinet door, kind: digital, domain: security, params: { unit: 30, table: discrete, address: 0 }, thresholds: { minor: { eq: 1 } } } - { key: env.smoke, driver: modbus, device: rs485, name: Smoke, kind: digital, domain: env, params: { unit: 30, table: discrete, address: 1 }, thresholds: { critical: { eq: 1 } } } - { key: env.pir, driver: modbus, device: rs485, name: Intrusion PIR, kind: digital, domain: security, params: { unit: 30, table: discrete, address: 2 }, thresholds: { major: { eq: 1 } } } - { key: env.water, driver: modbus, device: rs485, name: Water leak, kind: digital, domain: env, params: { unit: 30, table: discrete, address: 3 }, thresholds: { major: { eq: 1 } } } - { key: env.tamper, driver: modbus, device: rs485, name: Cabinet tamper, kind: digital, domain: security, params: { unit: 30, table: discrete, address: 4 }, thresholds: { major: { eq: 1 } } } - { key: env.gate, driver: modbus, device: rs485, name: Main gate, kind: digital, domain: security, params: { unit: 30, table: discrete, address: 5 } } - { key: aviation.light_ok, driver: modbus, device: rs485, name: Aviation light OK, kind: digital, domain: aviation, params: { unit: 30, table: discrete, address: 6 }, thresholds: { major: { eq: 0 } } } - { key: ctl.elock, driver: modbus, device: rs485, name: E-lock release, kind: digital, domain: security, controllable: true, params: { unit: 30, table: coil, address: 16, pulse_ms: 800 } } - { key: ctl.load_shed_1, driver: modbus, device: rs485, name: Load shed group 1, kind: digital, domain: dc, controllable: true, params: { unit: 30, table: coil, address: 17 } } - { key: env.temp_c, driver: modbus, device: rs485, name: Cabinet temperature, unit: C, domain: env, params: { unit: 30, table: input, address: 8 }, scale: 0.1, thresholds: { major: { gt: 45 }, critical: { gt: 55 } } } - { key: env.humidity, driver: modbus, device: rs485, name: Cabinet humidity, unit: "%", domain: env, params: { unit: 30, table: input, address: 9 }, scale: 0.1 } # --- Gateway health --- - { key: rms.cpu_pct, driver: sysinfo, name: Gateway CPU, unit: "%", domain: rms, params: { metric: cpu_pct } } - { key: rms.temp_c, driver: sysinfo, name: Gateway temperature, unit: C, domain: rms, params: { metric: temp_c } } - { key: rms.uplink_ms, driver: sysinfo, name: Uplink latency, unit: ms, domain: rms, params: { metric: ping_ms, host: 8.8.8.8 } } - { key: rms.rssi, driver: sysinfo, name: Cellular RSSI, unit: dBm, domain: rms, params: { metric: rssi_dbm }, thresholds: { warning: { lt: -100 } } } - { key: rms.eth_up, driver: sysinfo, name: Ethernet link, kind: digital, domain: rms, params: { metric: link_up, iface: eth0 } } # --- ATS / AMF (Modbus RTU slave 40) --- - { key: ats.position, driver: modbus, device: rs485, name: ATS position, kind: text, domain: ats, params: { unit: 40, table: input, address: 0 } } - { key: ats.on_grid, driver: modbus, device: rs485, name: On grid source, kind: digital, domain: ats, params: { unit: 40, table: discrete, address: 0 } } - { key: ats.on_gen, driver: modbus, device: rs485, name: On generator source, kind: digital, domain: ats, params: { unit: 40, table: discrete, address: 1 } } - { key: ats.transfer_fail, driver: modbus, device: rs485, name: Transfer failure, kind: digital, domain: ats, params: { unit: 40, table: discrete, address: 2, fast: true }, thresholds: { major: { eq: 1 } } } # --- Rectifier per-module currents (Megmeet MC2900 over SNMP; load-share/failure) --- - { key: rect.mod_1_i, driver: snmp, device: mc2900, name: Rectifier module 1 current, unit: A, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.5.1.1 }, scale: 0.1 } - { key: rect.mod_2_i, driver: snmp, device: mc2900, name: Rectifier module 2 current, unit: A, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.5.1.2 }, scale: 0.1 } - { key: rect.mod_3_i, driver: snmp, device: mc2900, name: Rectifier module 3 current, unit: A, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.5.1.3 }, scale: 0.1 } - { key: rect.mod_1_fault, driver: snmp, device: mc2900, name: Rectifier module 1 fault, kind: digital, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.5.2.1, fast: true }, thresholds: { major: { eq: 1 } } } - { key: rect.comm, driver: snmp, device: mc2900, name: Rectifier comm OK, kind: digital, domain: rectifier, params: { oid: 1.3.6.1.4.1.44010.1.2.9.0 }, thresholds: { major: { eq: 0 } } } # --- Solar / MPPT detail --- - { key: solar.pv_v, driver: snmp, device: mc2900, name: PV voltage, unit: V, domain: solar, params: { oid: 1.3.6.1.4.1.44010.1.3.2.0 }, scale: 0.1 } - { key: solar.pv_i, driver: snmp, device: mc2900, name: PV current, unit: A, domain: solar, params: { oid: 1.3.6.1.4.1.44010.1.3.3.0 }, scale: 0.1 } - { key: solar.kwh_day, driver: snmp, device: mc2900, name: Solar energy today, unit: kWh, kind: counter, domain: solar, params: { oid: 1.3.6.1.4.1.44010.1.3.4.0 }, scale: 0.01 } - { key: solar.mppt_fault, driver: snmp, device: mc2900, name: MPPT fault, kind: digital, domain: solar, params: { oid: 1.3.6.1.4.1.44010.1.3.9.0, fast: true }, thresholds: { major: { eq: 1 } } }