{"protocolVersion":"0.3.0","name":"HALOWERK solarwerk","description":"HALOWERK solarwerk. Bezahlung über x402 in USDC auf Base Mainnet.","url":"https://solar.halowerk.com","version":"1.0.0","preferredTransport":"JSONRPC","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false},"defaultInputModes":["application/json"],"defaultOutputModes":["application/json"],"skills":[{"id":"lifepo4_cycle_analysis","name":"Evaluates a measured charge or discharge series of a LiFePO4 pack: charge throughput, energy, efficiency, usable capacity, internal resistance and voltage limit violations.","description":"Integrates the supplied current over time by the trapezoidal rule, so the result is only as good as the sampling interval; gaps longer than the stated max_gap_seconds are excluded and reported. Sign convention: positive current is charging, negative is discharging. Internal resistance is estimated from the largest current step in the series and is a rough figure, not a measurement under defined conditions. State of charge from resting voltage is only reported when the series contains samples below the given rest_current_a, and carries a wide band because the LiFePO4 curve is flat between twenty and eighty percent. Cell imbalance cannot be detected from a pack voltage and is never claimed.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"inverter_load_check","name":"Checks a list of appliances against an inverter: continuous load, apparent power, worst-case starting surge, headroom and the resulting DC current from the battery.","description":"Continuous load is the sum of the running watts of all appliances marked as simultaneous. The surge check adds the largest single starting surge on top of the continuous load, which is the case that trips an inverter; simultaneous starts of two motors are reported separately as a second figure. Starting factors and power factors are design rules of thumb per appliance class and are stated in the response, they are not device data. Nothing is measured here: the numbers are only as good as the watt figures supplied.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"clear_sky_pv_yield","name":"Returns the clear-sky yield of a photovoltaic module for a location, date and mounting: irradiance in the module plane over the day, daily energy and peak power.","description":"This is an astronomical and geometric calculation, not a forecast. It assumes a cloudless sky and states the models used; real yield is lower whenever there is cloud, haze, snow, soiling or high cell temperature. The system_derate factor covers cabling, controller and temperature losses as one flat number and defaults to 0.8. Shading is not modelled here. Times are UTC. Use the figure as an upper bound for sizing, not as an expected daily production.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"low_wattage_cooking_estimate","name":"Calculates a theoretical heating floor and a practical energy and time range for low-wattage cooking solely from caller-supplied device and thermal assumptions.","description":"Uses rated electrical power, food mass, start and target temperature, specific heat and an explicit efficiency range supplied by the caller. Optional vessel heat, evaporation and a caller-defined hold phase can be included. It contains no recipes, recipe text, food-specific cooking claims or hidden food database; the output separates the thermodynamic lower bound from the practical range and is not a food-safety clearance.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"victron_log_parse","name":"Turns a VE.Direct text dump from a Victron MPPT charger, BMV monitor or Phoenix inverter into normalised JSON with units applied and state and error codes decoded.","description":"Reads the key-tab-value lines of the VE.Direct text protocol, applies the unit scaling that belongs to each key, and decodes the charger state, tracker state and error number into plain text. Multiple blocks in one dump are returned as separate records in order. Keys that are not in the field table are preserved verbatim under unknown_keys rather than guessed at. The checksum line is not verified, since a text export usually no longer carries the original byte framing. Nothing is fetched from a device or from VRM: the dump is supplied by the caller.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"offgrid_autonomy","name":"Calculates how long an off-grid battery lasts at a given state of charge and load, with and without a stated daily solar input, and what daily input would hold the level.","description":"Daily energy balance and straight run-down from the figures supplied. Solar input is caller data in watt-hours per day; nothing is fetched and no weather is assumed. Time to empty means time to the reserve floor, not to zero. Idle draw and conversion efficiency apply to AC loads only. Ageing, temperature and Peukert behaviour are not modelled, which matters for lead acid far more than for LiFePO4.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"sun_position_shadow","name":"Returns sun position, shadow length and shadow direction of an object over a day, and states when a point at a given distance and bearing lies in that shadow.","description":"Pure astronomy and geometry on level ground: sun position by the NOAA method, shadow length as object height divided by the tangent of the sun elevation. Refraction is only applied to sunrise and sunset. Terrain slope, surrounding buildings, vegetation and diffuse light are not modelled, so a point outside the shadow can still be shaded in reality. Times are UTC. When obstacle_distance_m and obstacle_bearing_deg are given, a point counts as shaded while the shadow reaches at least that far and its direction is within the tolerance.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"panel_tilt_optimiser","name":"Finds the module tilt with the highest clear-sky yield per month, the best fixed tilt for the whole year, a two-position summer and winter setting, and the loss of a tilt the caller already uses.","description":"Evaluates clear-sky irradiance in the module plane for tilt angles from zero to ninety degrees on the fifteenth of each month and sums the days. Because it assumes a cloudless sky, the optimum leans slightly steeper than a real-weather optimum, where diffuse light from an overcast sky rewards flatter angles; in summer the difference is small, in winter months it reaches ten to fifteen degrees, so treat the winter figures as an upper bound. The yield penalty within a few degrees of the optimum is flat. Shading, snow load and mounting constraints are not considered. The azimuth is fixed as given and is not optimised.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"inverter_loss_calc","name":"Splits the DC to AC path into cable loss and inverter loss for a given load, returns overall efficiency, battery current and the smallest cable size that stays inside the allowed voltage drop.","description":"Cable loss uses the DC resistance of the two-way run at twenty degrees Celsius; warm cable in a hot compartment carries roughly four percent more resistance per ten kelvin, which is not applied. Inverter loss follows a three-part model of idle draw, a proportional share and a quadratic share, fitted so that the stated peak efficiency is met near half of the rated power. That mirrors the shape of a real efficiency curve but is not the curve of a specific device; where a datasheet value exists, pass efficiency_at_load to pin the model. Battery internal resistance and controller loss are not included.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"offgrid_weather_alarm","name":"Detects multi-hour low-renewable periods for an off-grid system from the current DWD MOSMIX point forecast and simulates whether the stated battery reaches its reserve.","description":"Uses the nearest current DWD MOSMIX_L station forecast, or a station explicitly supplied by the caller. Global irradiance drives a transparent PV estimate and forecast wind speed drives a stated generic turbine curve; neither replaces a site-specific yield model. A constant hourly load and optional battery are simulated over 12 to 120 hours. The result is an installation-risk signal, not an official weather warning, emergency alert or guarantee of supply.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"building_heat_demand","name":"Estimates annual building heat demand from envelope areas, U-values, air change rate and a user profile, using DWD climate normals and an openly stated degree-day method.","description":"Computes a transparent planning estimate for space-heating demand. The method is not DIN, VDI, GEG or PHPP and must not be used as regulatory proof. It combines transmission heat loss from each envelope component, ventilation heat loss from heated volume and air changes, monthly heating degree days from the nearest DWD 1991-2020 temperature-normal station, stated internal gains and optional domestic hot water. The response names the station, distance and formula terms so another system can audit the result.","tags":["solarwerk"],"examples":[],"inputModes":["application/json"],"outputModes":["application/json"]}],"payment":{"protocol":"x402","network":"eip155:8453","asset":"USDC","recipient":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","manifest":"https://solar.halowerk.com/.well-known/x402"}}