Erstatning for Tibber API

Jeg har som mange andre byttet ut Tibber til fordel for Vibb, jeg må derfor retenke alle styringsflows jeg har i FutureHome.

Den enkleste løsningen min vil nok være å bruke FutureHome sin integrasjon mot Nordpool direkte, så få denne til å sette globale variabler tilsvarende de Tibber brukte. Da blir jeg heller ikke gift med en strømleverandør.

NORMAL
The price is greater than 90 % and smaller than 115 % compared to average price.

CHEAP
The price is greater than 60 % and smaller or equal to 90 % compared to average price.

VERY_CHEAP
The price is smaller or equal to 60 % compared to average price.

EXPENSIVE
The price is greater or equal to 115 % and smaller than 140 % compared to average price.

VERY_EXPENSIVE
The price is greater or equal to 140 % compared to average price.

Men jeg kan ikke se at bruk av Nordpool integrasjonen til FutureHome er dokumentert noen steder, er det noen som har laget noe tilsvarende?

er egentlig bare å se på automasjonen som lages som standard , og så modifisere.

Har lagt mine forsøk på Best Practice Development - #7 by ThomasR

Men jeg stusser på bruk av % . Ja som en del av regel , men vi hadde noen dager med 3-4 øre per kwH , med % skrudde alt seg av da prisen gikk fra 3-6 øre… Så jeg har lagt til at billig også har en prisverdi…

Tror dette blir noe annet, målet mitt var at en gang i timen så skal jeg polle FH sin Nordpol integrasjon, for så sette en global variabel.

Eksempel om timen er høyere enn 140% av daglig gjennomsnitt settes den til VERY_EXPENSIVE, om den er 115-140% EXPENSIVE, NORMAL om den er 90-115%, CHEAP om den er 60-90% og VERY_CHEAP om den er under 60%

Det er det den gjør ! Pris og middel oppdateres en gang i timen ! Så selv om standard HAN automasjonen leser pris hver gang , så er jo de ikke noe du trenger å gjøre .

{
  "Id": "c6d39a50-602b-11ed-8d5c-8768919e1f06",
  "ClassId": "c6d39a50-602b-11ed-8d5c-8768919e1f06",
  "Author": "your name ",
  "Version": 0,
  "CreatedAt": "2022-11-09T12:41:05.397368Z",
  "UpdatedAt": "2022-11-09T15:17:21.332519779+01:00",
  "Name": "Strømpris",
  "Group": "energy_price",
  "Description": "Oppdateres på hele time ",
  "Nodes": [
    {
      "Id": "f5bbce09-dd1d-44c0-b6a8-27a84da03a83",
      "Type": "trigger",
      "Label": "HAN",
      "SuccessTransition": "1",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:energy_guard/ad:1",
      "Service": "energy_price",
      "ServiceInterface": "evt.energy_price.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": null
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "energy",
          "nodeType": "energy"
        },
        "x": 100,
        "y": 200
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "1",
      "Type": "transform",
      "Label": "get average",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "Path": "$.average",
            "TargetVariableName": "average",
            "TargetVariableType": "int",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "value",
          "nodeType": "energy"
        },
        "x": 100,
        "y": 400
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "2",
      "Type": "trigger",
      "Label": "Han 2 ",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:energy_guard/ad:1",
      "Service": "energy_price",
      "ServiceInterface": "evt.energy_price.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": null
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "energy",
          "nodeType": "energy"
        },
        "x": 500,
        "y": 200
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "3",
      "Type": "transform",
      "Label": "get price",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "Path": "$.price",
            "TargetVariableName": "price",
            "TargetVariableType": "int",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "value",
          "nodeType": "energy"
        },
        "x": 506,
        "y": 361
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "4",
      "Type": "wait",
      "Label": "Wait 1s for variable",
      "SuccessTransition": "7",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 1000,
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": null,
          "nodeName": "wait",
          "nodeType": "energy"
        },
        "x": 506,
        "y": 550
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "6",
      "Type": "transform",
      "Label": "",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "price*1.00",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "price",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "PowerPrice",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 495,
        "y": 924
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "7",
      "Type": "transform",
      "Label": "",
      "SuccessTransition": "6",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "average*1.00",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "average",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "PowerAverage",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 501,
        "y": 739
      },
      "TypeAlias": "Transform"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}

Hm, ja, men jeg forstår ikke helt hva du gjør her. Kunne ikke se at du satte noen variabler eller tilsvarende ut i fra nivået på strømprisen.

Jeg har noen greier som virker jeg også, men det virker unødvendig komplekst, så jeg er egentlig ute etter en bedre måte å gjøre det på.

Lagrer pris og average , og benytter disse som variable i annen flow. Prøv er å legge all basis IO i enklest mulig flow, og så dytte i en global variable.

Jeg trengte en dropin replacement, slik at jeg ikke måtte skrive om et titalls flows, men den fungerer forsåvidt greit den jeg allerede har laget. Jeg styrer både ut i fra priskategorisering ut i fra snittprisen for døgnet, snittforbruk, ute temperatur og rene kroner og øre.

Tibber regner ut i fra siste 3 døgn, men det får greie seg med inneværende døgn.