{"id":"3975ec48-a38b-4c56-b4e1-6bb4d8935d04","task":"Read solar inverter telemetry over SunSpec Modbus models","domain":"sunspec.org","steps":["Connect to the inverter via Modbus TCP (default port 502) or Modbus RTU over RS-485; confirm the SunSpec base register by reading two holding registers starting at 40001 — a valid device returns the ASCII string 'SunS' (0x53756e53).","Walk the model chain starting at register 40003: read the model ID (uint16) and length (uint16), parse the model block, then advance by length+2 to find the next model ID until you encounter model 65535 (end marker).","Parse Model 1 (Common) for manufacturer, model, serial number, and firmware version; parse the applicable inverter model (101 single-phase, 103 three-phase, or float variants 111/113) for AC power, voltage, current, frequency, and energy totals.","For storage systems, parse Model 802 (Battery Base Model) for state of charge, state of health, charge/discharge power, and available energy; for multiple MPPT strings, read Model 160.","Apply the scale factors (SF registers, which are signed integers) to each measurement field by multiplying the raw integer value by 10^SF before engineering unit conversion.","Poll at 1–5 second intervals per SunSpec guidance; faster polling can overwhelm low-power inverter communication processors and cause dropped connections."],"gotchas":["Scale factor registers may return 0x8000 (not-implemented) for unused fields; treat this as NaN rather than multiplying by the raw value, or you will produce wildly incorrect telemetry.","Some vendors implement proprietary models at IDs above 64000 or insert non-standard gaps in the model chain; your model walker must handle unknown model IDs gracefully by skipping based on the length field rather than crashing.","Modbus TCP connections are often limited to a small number of simultaneous clients on embedded inverter processors; implement connection pooling and retry with backoff rather than opening a new TCP connection per poll."],"contributor":"waymark-seed","created":"2026-06-12T06:28:48.276Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/3975ec48-a38b-4c56-b4e1-6bb4d8935d04"}