Lese temp fra Ch1 på HEATIT Z-TRM3

{
  "Id": "69afaf40-b6c4-11ed-9350-4d1bed057ca1",
  "ClassId": "69afaf40-b6c4-11ed-9350-4d1bed057ca1",
  "Author": "xxxx@yyyy",
  "Version": 0,
  "CreatedAt": "2023-02-27T17:30:22.132649Z",
  "UpdatedAt": "2023-03-14T22:16:38.599617501+01:00",
  "Name": "når temperaturen på Bad 2 etg Gulvføler er høyere enn 25C",
  "Group": "sensor_temperature",
  "Description": "send oppvarming settpunkt på  Bad 2 etg Termostat   til 21.0 ",
  "Nodes": [
    {
      "Id": "93",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til Bad 2 etg.",
      "SuccessTransition": "101",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:9_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "unit",
        "PropFilterValue": "C",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": "21",
          "nodeName": "temp",
          "nodeType": "temperature"
        },
        "x": 542,
        "y": 214
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "95",
      "Type": "transform",
      "Label": "Bad_2etg_Read_Cnt += 1",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Bad_2etg_Read_Counter + 1",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Bad_2etg_Read_Counter",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 551,
        "y": 693
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "96",
      "Type": "action",
      "Label": "cmd.setpoint.get_report = heat",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:9_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 215,
        "y": 466
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "97",
      "Type": "time_trigger",
      "Label": "Hver 2 min",
      "SuccessTransition": "96",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultMsg": {
          "Value": "",
          "ValueType": ""
        },
        "Expressions": [
          {
            "Comments": "",
            "Expression": "@every 2m",
            "Name": ""
          }
        ],
        "GenerateAstroTimeEvents": false,
        "Latitude": 0,
        "Longitude": 0,
        "SunriseTimeOffset": 0,
        "SunsetTimeOffset": 0
      },
      "Ui": {
        "nodeType": "",
        "x": 211,
        "y": 226
      },
      "TypeAlias": "Time trigger"
    },
    {
      "Id": "101",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "95",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": true,
            "IsTargetVariableInMemory": false,
            "Path": "$.val.temp",
            "TargetVariableName": "Bad_2etg_Temp_str",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 544,
        "y": 468
      },
      "TypeAlias": "Transform"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Hei!

I trigger på evt.setpoint.report, kan du forsøke å fjerne;

"PropFilterName": "unit",
"PropFilterValue": "C",

unit er spesifisert i prop for f.eks sensor_temp (derfor fungerte det), men ikke i setpoint.report da den er en del av val. Dette vil da gjøre at den aldri får “treff” på triggeren.
Du må nok fortsatt gjøre konvertering etter jpath extraction

1 Like

Det fikset biffen :blush:

Da vet man at man må fjerne:
“PropFilterName”: “unit”,
“PropFilterValue”: “C”,

Da gjenstår det bare å eksperimentere videre med å konvertere til float, suptrahere med tre grader, og skrive nytt setpunkt til termostaten. :slight_smile:

Noen som har noen innspill til å typecaste strengen til en float. (Synes ikke det er så enkelt å søke seg frem til syntax i Thingsplex)

Når du nå sitter med variabel verdien, så kan du lage en ny transform etter allerede genererte variabel, som du legger inn i kalkulasjon at du tar variabelnavnet-3 som formel og setter en “result variabel” som er av typen float.

image

PS; Det kan bli en rotete flow, så jeg ville laget en en egen flow for konvertering av de forskjellige temperaturene du vil lese og sette nytt setpunkt på, for så og lage en som kun har effektmålingskriterie og sette payload til de globale variabelene du lager med kalkulerte setpunkt verdier.

Takk for svar. Ja, planen er å utføre innlesning av setpunktet av alle termostater i en separat flow. Har laget en separat Flow som leser av effekten til alle gulv. Har en hoved sekvens som senker temperaturen når gjennomsnittet er over en limit etter prioritert rekkefølge. Den skal da lese disse globale setpunkt temperaturene.

Men det er avlesning av disse setpunktene jeg sliter med å få til å fungere.

Status nå er at jeg klarer å avlese setpunktet til termostatene ved hjelp av en trigger som leser «evt.setpoint.report» (Fungerte etter at “PropFilterName” og “PropFilterValue” ble fjernet fra kildekoden.) Denne returnerte en «str_map». Fikk hentet ut selve temperaturen med Json Path og skrevet denne til en String variabel.

Men så var den konvertering fra string til float. Det har jeg ikke fått til å fungere. Forsøkte følgende:

Den fungerer ikke. Får ingenting inn i variabelen som jeg kalte «Bad_2etg_Temp_float» som er en float. Ser at denne koden ikke blir kjørt. Lagde en variabel som heter «Bad_2etg_Read_Counter», men denne teller ikke opp etter at calculate funksjonen over er blitt kjørt. (Hvis jeg flytte inkrementering av telleren til før Calculate noden, teller denne opp.)

Jeg forstår ikke helt hvordan nodene fungerer. I Json Path f.eks så er «Target variable» satt direkte til en global variabel, allikevel var jeg nødt til å benytte «Set variable» for å skrive verdien til en variabel, hvorfor ?

Med tanke på denne type konverteringen forsøkte jeg forskjellige kombinasjoner uten å lykkes. Denne «Trigger variable» hva er det, siste verdi man har behandlet, verdi fra siste Trigger, noen som vet ?

Noen eksperimenter:

image

Legger også men kildekoden jeg sloss med:

{
  "Id": "69afaf40-b6c4-11ed-9350-4d1bed057ca1",
  "ClassId": "69afaf40-b6c4-11ed-9350-4d1bed057ca1",
  "Author": "ji-gus@frisurf.no",
  "Version": 0,
  "CreatedAt": "2023-02-27T17:30:22.132649Z",
  "UpdatedAt": "2023-03-20T20:44:59.557559837+01:00",
  "Name": "Leser temperaturen fra alle termostater",
  "Group": "sensor_temperature",
  "Description": "Les temperaturen fra termostater og lagre i globale variabler.",
  "Nodes": [
    {
      "Id": "93",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til Bad 2 etg.",
      "SuccessTransition": "101",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:9_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": "21",
          "nodeName": "temp",
          "nodeType": "temperature"
        },
        "x": 384,
        "y": 239
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "95",
      "Type": "transform",
      "Label": "Bad_2etg_Read_Cnt += 1",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Bad_2etg_Read_Counter + 1",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Bad_2etg_Read_Counter",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 387,
        "y": 1124
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "96",
      "Type": "action",
      "Label": "Bad2 cmd.setpoint.get_report = heat",
      "SuccessTransition": "107",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:9_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 63,
        "y": 420
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "97",
      "Type": "time_trigger",
      "Label": "Hver 5 min",
      "SuccessTransition": "96",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultMsg": {
          "Value": "",
          "ValueType": ""
        },
        "Expressions": [
          {
            "Comments": "",
            "Expression": "@every 5m",
            "Name": ""
          }
        ],
        "GenerateAstroTimeEvents": false,
        "Latitude": 0,
        "Longitude": 0,
        "SunriseTimeOffset": 0,
        "SunsetTimeOffset": 0
      },
      "Ui": {
        "nodeType": "",
        "x": 54,
        "y": 238
      },
      "TypeAlias": "Time trigger"
    },
    {
      "Id": "101",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "108",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": true,
            "IsTargetVariableInMemory": false,
            "Path": "$.val.temp",
            "TargetVariableName": "Bad_2etg_Temp_str",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 381,
        "y": 422
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "103",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til Bad 1 etg.",
      "SuccessTransition": "104",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:7_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 670,
        "y": 236
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "104",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "105",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": true,
            "IsTargetVariableInMemory": false,
            "Path": "$.val.temp",
            "TargetVariableName": "Bad_1etg_Temp_str",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 660,
        "y": 423
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "105",
      "Type": "set_variable",
      "Label": "Write to Bad_1etg_Temp_str",
      "SuccessTransition": "106",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": false,
        "Name": "Bad_1etg_Temp_str",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 671,
        "y": 617
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "106",
      "Type": "transform",
      "Label": "Bad_1etg_Read_Cnt += 1",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Bad_1etg_Read_Counter + 1",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Bad_1etg_Read_Counter",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 658,
        "y": 792
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "107",
      "Type": "action",
      "Label": "Bad1 cmd.setpoint.get_report) = heat",
      "SuccessTransition": "113",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:7_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 55,
        "y": 599
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "108",
      "Type": "set_variable",
      "Label": "Write to Bad_2etg_Temp_str",
      "SuccessTransition": "119",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": false,
        "Name": "Bad_2etg_Temp_str",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 382,
        "y": 611
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "109",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til Gang termostat",
      "SuccessTransition": "110",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:6_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 962,
        "y": 231
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "110",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "111",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": true,
            "IsTargetVariableInMemory": false,
            "Path": "$.val.temp",
            "TargetVariableName": "Entre_Temp_str",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 967,
        "y": 426
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "111",
      "Type": "set_variable",
      "Label": "Write to Entre_Temp",
      "SuccessTransition": "112",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": false,
        "Name": "Entre_Temp_str",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 972,
        "y": 621
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "112",
      "Type": "transform",
      "Label": "Entre_Power_Read_Counter +=1",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Entre_Power_Read_Counter + 1",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Entre_Power_Read_Counter",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 957,
        "y": 806
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "113",
      "Type": "action",
      "Label": "Gang cmd.setpoint.get_report = heat",
      "SuccessTransition": "114",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:6_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 55,
        "y": 779
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "114",
      "Type": "action",
      "Label": "Vaskerom cmd.setpoint.get_report = heat",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:8_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 46,
        "y": 969
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "115",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til vaskerom termostat",
      "SuccessTransition": "116",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:8_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 1248,
        "y": 231
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "116",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "117",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": true,
            "IsTargetVariableInMemory": false,
            "Path": "$.val.temp",
            "TargetVariableName": "Vaskerom_Temp_str",
            "TargetVariableType": "string",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 1249,
        "y": 420
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "117",
      "Type": "set_variable",
      "Label": "Write to Vaskerom_Temp",
      "SuccessTransition": "118",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": false,
        "Name": "Vaskerom_Temp_str",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 1252,
        "y": 619
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "118",
      "Type": "transform",
      "Label": "Vaskerom_Power_Read_Counter +=1",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Vaskerom_Power_Read_Counter + 1",
        "IsLVariableGlobal": false,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Vaskerom_Power_Read_Counter",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 1253,
        "y": 805
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "119",
      "Type": "transform",
      "Label": "Temp - 3",
      "SuccessTransition": "120",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "Bad_2etg_Temp_str-3",
        "IsLVariableGlobal": true,
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": true,
        "IsTargetVariableInMemory": false,
        "LVariableName": "Bad_2etg_Temp_str",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "Bad_2etg_Temp_float",
        "TargetVariableType": "float",
        "Template": "Bad_2etg_Temp_float := Bad_2etg_Temp_str",
        "TransformType": "calc",
        "ValueMapping": [
          {
            "LValue": {
              "Value": "123.4",
              "ValueType": "string"
            },
            "RValue": {
              "Value": 123.5,
              "ValueType": "float"
            }
          }
        ],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 380,
        "y": 787
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "120",
      "Type": "set_variable",
      "Label": "Write to Bad_2etg_Temp_float",
      "SuccessTransition": "95",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": false,
        "Name": "Bad_2etg_Temp_float",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 379,
        "y": 959
      },
      "TypeAlias": "Set variable"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "keep_first"
}

{
  "Id": "Xy782oZR2xLEcIe",
  "ClassId": "69afaf40-b6c4-11ed-9350-4d1bed057ca1",
  "Author": "ji-gus@frisurf.no",
  "Version": 0,
  "CreatedAt": "2023-03-21T20:17:14.653288632+01:00",
  "UpdatedAt": "2023-03-21T21:43:54.081849083+01:00",
  "Name": "Leser temperaturen fra alle termostater",
  "Group": "sensor_temperature",
  "Description": "Les temperaturen fra termostater og lagre i globale variabler.",
  "Nodes": [
    {
      "Id": "93",
      "Type": "trigger",
      "Label": "Leser termostat set punkt til Stue",
      "SuccessTransition": "101",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:thermostat/ad:11_1",
      "Service": "thermostat",
      "ServiceInterface": "evt.setpoint.report",
      "Config": {
        "InputVariableType": null,
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": ""
        },
        "ValueJPath": null,
        "ValueJPathResultType": null,
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "papp": {
          "customValues": null,
          "nodeId": "21",
          "nodeName": "temp",
          "nodeType": "temperature"
        },
        "x": 384,
        "y": 239
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "96",
      "Type": "action",
      "Label": "Stue cmd.setpoint.get_report = heat",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:11_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "heat",
          "ValueType": "string"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 63,
        "y": 420
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "97",
      "Type": "time_trigger",
      "Label": "Hvert min",
      "SuccessTransition": "96",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultMsg": {
          "Value": "",
          "ValueType": ""
        },
        "Expressions": [
          {
            "Comments": "",
            "Expression": "@every 1m",
            "Name": ""
          }
        ],
        "GenerateAstroTimeEvents": false,
        "Latitude": 0,
        "Longitude": 0,
        "SunriseTimeOffset": 0,
        "SunsetTimeOffset": 0
      },
      "Ui": {
        "nodeType": "",
        "x": 54,
        "y": 238
      },
      "TypeAlias": "Time trigger"
    },
    {
      "Id": "101",
      "Type": "transform",
      "Label": "Json Path",
      "SuccessTransition": "102",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "",
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": true,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "",
        "TargetVariableType": "",
        "Template": "",
        "TransformType": "jpath",
        "ValueMapping": [],
        "XPathMapping": [
          {
            "IsTargetVariableGlobal": false,
            "Path": "$.val.temp",
            "TargetVariableName": "stue_setpoint2",
            "TargetVariableType": "float",
            "UpdateInputVariable": false
          }
        ]
      },
      "Ui": {
        "nodeType": "",
        "x": 381,
        "y": 422
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "102",
      "Type": "transform",
      "Label": "sett 3 grader lavere temp",
      "SuccessTransition": "103",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "(stue_setpoint2) - 3",
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "stue_setpoint2_low",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 393,
        "y": 633
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "103",
      "Type": "transform",
      "Label": "sett 3 grader høyere temp",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": "(stue_setpoint2) + 3",
        "IsRVariableGlobal": false,
        "IsTargetVariableGlobal": false,
        "IsTargetVariableInMemory": false,
        "LVariableName": "",
        "RValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "RVariableName": "",
        "Rtype": "var",
        "TargetVariableName": "stue_setpoint2_high",
        "TargetVariableType": "float",
        "Template": "",
        "TransformType": "calc",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 706,
        "y": 694
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "104",
      "Type": "action",
      "Label": "Send nytt setpoint",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:thermostat/ad:11_1",
      "Service": "thermostat",
      "ServiceInterface": "cmd.setpoint.set",
      "Config": {
        "DefaultValue": {
          "Value": "",
          "ValueType": ""
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "stue_setpoint2_strmap",
        "VariableType": "str_map",
        "VirtualServiceGroup": "ch1",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 1349,
        "y": 632
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "105",
      "Type": "transform",
      "Label": "Lag strmap",
      "SuccessTransition": "104",
      "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": "stue_setpoint2_strmap",
        "TargetVariableType": "str_map",
        "Template": "{\r\n    \"temp\": \"{{variable \"stue_setpoint2_high\" false}}\",\r\n    \"type\": \"heat\",\r\n    \"unit\": \"C\"\r\n}",
        "TransformType": "template",
        "ValueMapping": [],
        "XPathMapping": []
      },
      "Ui": {
        "nodeType": "",
        "x": 1356,
        "y": 397
      },
      "TypeAlias": "Transform"
    },
    {
      "Id": "106",
      "Type": "vinc_trigger",
      "Label": "TEST TRIGGER",
      "SuccessTransition": "105",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "EventType": "shortcut",
        "IsValueFilterEnabled": false,
        "Timeout": 0,
        "ValueFilter": "12"
      },
      "Ui": {
        "nodeType": "",
        "x": 1287,
        "y": 221
      },
      "TypeAlias": "Home event"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_first"
}

Denne koden er testet og fungerer hos meg hvertfall.

Supert, tusen takk. Det skal bli spennende å teste denne koden når jeg får tid.
Det ser ut til at din Json Path transform konverterer direkte fra «str_map» til «float». Det ser jo elegant ut.

        "TargetVariableName": "stue_setpoint2",
        "TargetVariableType": "float",

Jeg fikk ut en string jeg ikke kom videre med.