Power.Dev Optimization Services

<back to all web services

TODOptimizerRequest

The following routes are available for this service:
POST/optimizer/tod
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AnnualRateItem:
    year: int = 0
    value: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class YoyFactorOptimizarItem:
    year: int = 0
    factor: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TodOptimizerRequestItem:
    year: int = 0
    month: int = 0
    hour: int = 0
    week_day: int = 0
    energy_price: Decimal = decimal.Decimal(0)
    capacity_price: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TodOptimizerRequestBase:
    project_id: Optional[str] = None
    charge_discharge_limit: Decimal = decimal.Decimal(0)
    battery_capacity: Decimal = decimal.Decimal(0)
    charge_efficiency: Decimal = decimal.Decimal(0)
    discharge_efficiency: Decimal = decimal.Decimal(0)
    paracitic_losses_operation: Decimal = decimal.Decimal(0)
    paracitic_losses_resting: Decimal = decimal.Decimal(0)
    hvac_losses: Decimal = decimal.Decimal(0)
    ac_cabling_losses: Decimal = decimal.Decimal(0)
    transformator_losses: Decimal = decimal.Decimal(0)
    thermal_losses: Decimal = decimal.Decimal(0)
    unavailability_loss: Decimal = decimal.Decimal(0)
    other_losses: Decimal = decimal.Decimal(0)
    enable_capacity: bool = False
    energy_schedule: Optional[List[AnnualRateItem]] = None
    capacity_schedule: Optional[List[AnnualRateItem]] = None
    yoy_factors: Optional[List[YoyFactorOptimizarItem]] = None
    data: Optional[List[TodOptimizerRequestItem]] = None
    api_action_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TODOptimizerRequest(TodOptimizerRequestBase):
    pass


class ApiResponseStatus(IntEnum):
    UNDEFINED = 0
    SUCCESS = 1
    PENDING = 10
    FAILED = 100


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TodOptimizerResponseItem(TodOptimizerRequestItem):
    charge_state: Decimal = decimal.Decimal(0)
    charging: Decimal = decimal.Decimal(0)
    loss: Decimal = decimal.Decimal(0)
    charge_rate: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TodOptimizerResponse:
    status: Optional[ApiResponseStatus] = None
    message: Optional[str] = None
    api_action_id: Optional[str] = None
    test_items: Optional[List[TodOptimizerResponseItem]] = None

Python TODOptimizerRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /optimizer/tod HTTP/1.1 
Host: dev-optimization.power.dev 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"projectId":"00000000000000000000000000000000","chargeDischargeLimit":0,"batteryCapacity":0,"chargeEfficiency":0,"dischargeEfficiency":0,"paraciticLossesOperation":0,"paraciticLossesResting":0,"hvacLosses":0,"acCablingLosses":0,"transformatorLosses":0,"thermalLosses":0,"unavailabilityLoss":0,"otherLosses":0,"enableCapacity":false,"apiActionId":"00000000000000000000000000000000"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"status":"Undefined","message":"String","apiActionId":"00000000000000000000000000000000","testItems":[{"chargeState":0,"charging":0,"loss":0,"chargeRate":0,"year":0,"month":0,"hour":0,"weekDay":0,"energyPrice":0,"capacityPrice":0}]}