Hva har du automatisert i dag?

Har lenge irritert meg over at temperaturen faller mye over natta og dagene vi er borte pga at vi har stor stue med åpen løsning mot kjøkken og gang, og det blir for lite bevegelse i lufta.
Vil ikke ha så høy viftestøy til vanlig, og da blir det til at den varme lufta blir stående rett under der varmepumpen er når vi ikke er hjemme, og det tar tid før vi får jevn varme i huset igjen (Utrolig hva en 1-åring og 5-åring hjelper med å få sirkulert lufta :laughing:).

Har derfor satt opp en flow som setter viftehastighet til medium når vi sover, og high når vi er borte, og synes det fungerer veldig bra :slight_smile:

4 Likes

Jeg har automatisert min Panasonic Varmepumpe som bruker appen Comfort Cloud. Så nå kan jeg justere temperaturen via FH Appen istedenfor (savner dog at vifte + modus er tilgjengelig i FH app)

Jeg har også lagt opp en automasjon for Verisure alarmen, når helsikring aktiveres settes FH i bortemodus og når den deaktiveres settes den i hjemmemodus + at sovemodus settes når skallsikring aktiveres. Kanskje jeg kommer til å legge til at feriemodus skal aktiveres når alarmen har helsikring om natta eller har vært aktivert i 2+ dager.

Hvis noen er interessert, så er Flow’en nedenfor, brukernavn og passord må legges til i “setting” inne på flow’en.

{
    "Id": "d76e6920-372f-11eb-80f7-61ab9f19a667",
    "ClassId": "d76e6920-372f-11eb-80f7-61ab9f19a667",
    "Author": "lostfields",
    "Version": 0,
    "CreatedAt": "2020-12-05T19:26:58.227115Z",
    "UpdatedAt": "2020-12-06T20:35:39.811106625+01:00",
    "Name": "verisure",
    "Group": "timer",
    "Description": "",
    "Nodes": [
      {
        "Id": "25",
        "Type": "action",
        "Label": "Run mode: sleep",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
        "Service": "vinculum",
        "ServiceInterface": "cmd.pd7.request",
        "Config": {
          "DefaultValue": {
            "Value": {
              "cmd": "set",
              "component": "mode",
              "id": "sleep",
              "param": {},
              "requestId": 566
            },
            "ValueType": "object"
          },
          "IsVariableGlobal": null,
          "Props": null,
          "RegisterAsVirtualService": false,
          "ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
          "VariableName": null,
          "VirtualServiceGroup": null,
          "VirtualServiceProps": null
        },
        "Ui": {
          "nodeType": "",
          "papp": {
            "nodeId": "sleep",
            "nodeName": "modes",
            "nodeType": null
          },
          "x": 28,
          "y": 1153
        },
        "TypeAlias": "Action"
      },
      {
        "Id": "26",
        "Type": "time_trigger",
        "Label": "every minute",
        "SuccessTransition": "48",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "DefaultMsg": {
            "Value": "",
            "ValueType": ""
          },
          "Expressions": [
            {
              "Comments": "",
              "Expression": "*/1 * * * *",
              "Name": ""
            }
          ],
          "GenerateAstroTimeEvents": false,
          "Latitude": 0,
          "Longitude": 0,
          "SunriseTimeOffset": 0,
          "SunsetTimeOffset": 0
        },
        "Ui": {
          "nodeType": "",
          "x": 1634,
          "y": 115
        },
        "TypeAlias": "Time trigger"
      },
      {
        "Id": "27",
        "Type": "rest_action",
        "Label": "get installations",
        "SuccessTransition": "33",
        "TimeoutTransition": "",
        "ErrorTransition": "32",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Auth": {
            "ClientID": "",
            "ClientSecret": "",
            "Enabled": false,
            "GrantType": "basic",
            "Password": "",
            "Scope": "",
            "Url": "",
            "Username": ""
          },
          "Headers": [],
          "HeadersVariableName": "headers",
          "LogResponse": true,
          "Method": "GET",
          "RequestPayloadType": "json",
          "RequestTemplate": "",
          "ResponseMapping": [
            {
              "IsVariableGlobal": false,
              "Name": "",
              "Path": "$[0].giid",
              "PathType": "json",
              "TargetVariableName": "installation_giid",
              "TargetVariableType": "string"
            }
          ],
          "Url": "https://e-api02.verisure.com/xbn/2/installation/search?email={{ setting \"username\" }}"
        },
        "Ui": {
          "nodeType": "",
          "x": 1282,
          "y": 912
        },
        "TypeAlias": "HTTP msg"
      },
      {
        "Id": "28",
        "Type": "rest_action",
        "Label": "login",
        "SuccessTransition": "31",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Auth": {
            "ClientID": "",
            "ClientSecret": "",
            "Enabled": false,
            "GrantType": "password",
            "Password": "",
            "Scope": "",
            "Url": "http://",
            "Username": ""
          },
          "Headers": [],
          "HeadersVariableName": "headers_credentials",
          "LogResponse": true,
          "Method": "POST",
          "RequestPayloadType": "json",
          "RequestTemplate": "",
          "ResponseMapping": [
            {
              "IsVariableGlobal": false,
              "Name": "",
              "Path": "$.cookie",
              "PathType": "json",
              "TargetVariableName": "cookie",
              "TargetVariableType": "string",
              "UpdateTriggerMessage": false
            }
          ],
          "Url": "https://e-api02.verisure.com/xbn/2/cookie"
        },
        "Ui": {
          "nodeType": "",
          "x": 1287,
          "y": 579
        },
        "TypeAlias": "HTTP msg"
      },
      {
        "Id": "31",
        "Type": "transform",
        "Label": "set header",
        "SuccessTransition": "27",
        "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": "headers",
          "TargetVariableType": "str_map",
          "Template": "{\"Cookie\":\"vid={{ variable \"cookie\" false }}\", \"Content-Type\":\"application/json\", \"Accept\": \"application/json\"}",
          "TransformType": "template",
          "ValueMapping": [],
          "XPathMapping": []
        },
        "Ui": {
          "nodeType": "",
          "x": 1288,
          "y": 737
        },
        "TypeAlias": "Transform"
      },
      {
        "Id": "32",
        "Type": "rate_limit",
        "Label": "",
        "SuccessTransition": "53",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Action": "skip",
          "Limit": 1,
          "TimeInterval": 60
        },
        "Ui": {
          "nodeType": "",
          "x": 1490,
          "y": 1312
        },
        "TypeAlias": "Rate limit"
      },
      {
        "Id": "33",
        "Type": "rest_action",
        "Label": "get overview",
        "SuccessTransition": "37",
        "TimeoutTransition": "",
        "ErrorTransition": "32",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Auth": {
            "ClientID": "",
            "ClientSecret": "",
            "Enabled": false,
            "GrantType": "basic",
            "Password": "",
            "Scope": "",
            "Url": "",
            "Username": ""
          },
          "Headers": [],
          "HeadersVariableName": "headers",
          "LogResponse": false,
          "Method": "GET",
          "RequestPayloadType": "json",
          "RequestTemplate": "",
          "ResponseMapping": [
            {
              "IsVariableGlobal": false,
              "Name": "",
              "Path": "$.armState.statusType",
              "PathType": "json",
              "TargetVariableName": "current_armState_statusType",
              "TargetVariableType": "string"
            }
          ],
          "Url": "https://e-api02.verisure.com/xbn/2/installation/{{variable \"installation_giid\" false}}/overview"
        },
        "Ui": {
          "nodeType": "",
          "x": 1629,
          "y": 1075
        },
        "TypeAlias": "HTTP msg"
      },
      {
        "Id": "36",
        "Type": "if",
        "Label": "if alarm armed home",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": false,
              "LeftVariableName": "current_armState_statusType",
              "Operand": "eq",
              "RightVariable": {
                "Value": "ARMED_HOME",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "",
          "TrueTransition": "50"
        },
        "Ui": {
          "nodeType": "",
          "x": 33,
          "y": 289
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "37",
        "Type": "if",
        "Label": "if alarm disarmed",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": false,
              "LeftVariableName": "current_armState_statusType",
              "Operand": "eq",
              "RightVariable": {
                "Value": "DISARMED",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "39",
          "TrueTransition": "44"
        },
        "Ui": {
          "nodeType": "",
          "x": 955,
          "y": 109
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "38",
        "Type": "action",
        "Label": "Run mode: home",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
        "Service": "vinculum",
        "ServiceInterface": "cmd.pd7.request",
        "Config": {
          "DefaultValue": {
            "Value": {
              "cmd": "set",
              "component": "mode",
              "id": "home",
              "param": {},
              "requestId": 566
            },
            "ValueType": "object"
          },
          "IsVariableGlobal": null,
          "Props": null,
          "RegisterAsVirtualService": false,
          "ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
          "VariableName": null,
          "VirtualServiceGroup": null,
          "VirtualServiceProps": null
        },
        "Ui": {
          "nodeType": "",
          "papp": {
            "nodeId": "sleep",
            "nodeName": "modes",
            "nodeType": null
          },
          "x": 970,
          "y": 1157
        },
        "TypeAlias": "Action"
      },
      {
        "Id": "39",
        "Type": "if",
        "Label": "if alarm armed away",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": false,
              "LeftVariableName": "current_armState_statusType",
              "Operand": "eq",
              "RightVariable": {
                "Value": "ARMED_AWAY",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "36",
          "TrueTransition": "45"
        },
        "Ui": {
          "nodeType": "",
          "x": 511,
          "y": 281
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "40",
        "Type": "action",
        "Label": "Run mode: away",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "pt:j1/mt:cmd/rt:app/rn:vinculum/ad:1",
        "Service": "vinculum",
        "ServiceInterface": "cmd.pd7.request",
        "Config": {
          "DefaultValue": {
            "Value": {
              "cmd": "set",
              "component": "mode",
              "id": "away",
              "param": {},
              "requestId": 566
            },
            "ValueType": "object"
          },
          "IsVariableGlobal": null,
          "Props": null,
          "RegisterAsVirtualService": false,
          "ResponseToTopic": "pt:j1/mt:rsp/rt:app/rn:tpflow/ad:1",
          "VariableName": null,
          "VirtualServiceGroup": null,
          "VirtualServiceProps": null
        },
        "Ui": {
          "nodeType": "",
          "papp": {
            "nodeId": "sleep",
            "nodeName": "modes",
            "nodeType": null
          },
          "x": 629,
          "y": 1152
        },
        "TypeAlias": "Action"
      },
      {
        "Id": "44",
        "Type": "if",
        "Label": "if mode home",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "tpflow",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": true,
              "LeftVariableName": "fh.home.mode",
              "Operand": "eq",
              "RightVariable": {
                "Value": "home",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "38",
          "TrueTransition": ""
        },
        "Ui": {
          "nodeType": "",
          "papp": {
            "nodeId": "home",
            "nodeName": "If",
            "nodeType": "modeTrigger"
          },
          "x": 962,
          "y": 526
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "45",
        "Type": "if",
        "Label": "if mode away",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "tpflow",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": true,
              "LeftVariableName": "fh.home.mode",
              "Operand": "eq",
              "RightVariable": {
                "Value": "away",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "40",
          "TrueTransition": ""
        },
        "Ui": {
          "nodeType": "",
          "papp": {
            "nodeId": "home",
            "nodeName": "If",
            "nodeType": "modeTrigger"
          },
          "x": 512,
          "y": 535
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "46",
        "Type": "if",
        "Label": "if installation_giid",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": false,
              "LeftVariableName": "installation_giid_mapped",
              "Operand": "eq",
              "RightVariable": {
                "Value": "",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "33",
          "TrueTransition": "27"
        },
        "Ui": {
          "nodeType": "",
          "x": 1638,
          "y": 740
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "48",
        "Type": "transform",
        "Label": "installation_giid",
        "SuccessTransition": "46",
        "TimeoutTransition": "",
        "ErrorTransition": "46",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": "",
          "IsRVariableGlobal": false,
          "LVariableName": "",
          "RValue": {
            "Value": "",
            "ValueType": "string"
          },
          "RVariableName": "",
          "Rtype": "var",
          "TargetVariableName": "installation_giid_mapped",
          "TargetVariableType": "string",
          "Template": "\"{{ variable \"installation_giid\" false }}\"",
          "TransformType": "template",
          "ValueMapping": [],
          "XPathMapping": []
        },
        "Ui": {
          "nodeType": "",
          "x": 1636,
          "y": 309
        },
        "TypeAlias": "Transform"
      },
      {
        "Id": "50",
        "Type": "if",
        "Label": "if mode home",
        "SuccessTransition": "",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "BooleanOperator": "",
              "LeftVariableIsGlobal": true,
              "LeftVariableName": "fh.home.mode",
              "Operand": "eq",
              "RightVariable": {
                "Value": "home",
                "ValueType": "string"
              }
            }
          ],
          "FalseTransition": "51",
          "TrueTransition": "52"
        },
        "Ui": {
          "nodeType": "",
          "x": 28,
          "y": 532
        },
        "TypeAlias": "If condition"
      },
      {
        "Id": "51",
        "Type": "iftime",
        "Label": "morning",
        "SuccessTransition": "44",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Expression": [
            {
              "Action": "a",
              "From": "05:00",
              "To": "06:00",
              "Weekday": "1"
            },
            {
              "Action": "a",
              "From": "05:00",
              "To": "06:00",
              "Weekday": "2"
            },
            {
              "Action": "a",
              "From": "05:00",
              "To": "06:00",
              "Weekday": "3"
            },
            {
              "Action": "a",
              "From": "05:00",
              "To": "06:00",
              "Weekday": "4"
            },
            {
              "Action": "a",
              "From": "05:00",
              "To": "06:00",
              "Weekday": "5"
            },
            {
              "Action": "a",
              "From": "06:00",
              "To": "07:00",
              "Weekday": "6"
            },
            {
              "Action": "a",
              "From": "06:00",
              "To": "07:00",
              "Weekday": "0"
            }
          ]
        },
        "Ui": {
          "nodeType": "",
          "x": 260,
          "y": 758
        },
        "TypeAlias": "Time filter"
      },
      {
        "Id": "52",
        "Type": "rate_limit",
        "Label": "",
        "SuccessTransition": "25",
        "TimeoutTransition": "",
        "ErrorTransition": "",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "Config": {
          "Action": "skip",
          "Limit": 1,
          "TimeInterval": 43200
        },
        "Ui": {
          "nodeType": "",
          "x": 30,
          "y": 756
        },
        "TypeAlias": "Rate limit"
      },
      {
        "Id": "53",
        "Type": "transform",
        "Label": "username & password",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "SuccessTransition": "54",
        "ErrorTransition": "",
        "Config": {
          "TargetVariableName": "credentials",
          "TargetVariableType": "object",
          "IsTargetVariableGlobal": false,
          "TransformType": "template",
          "Rtype": "var",
          "IsRVariableGlobal": false,
          "IsLVariableGlobal": false,
          "Expression": "",
          "RValue": {
            "ValueType": "int",
            "Value": 0
          },
          "RVariableName": "",
          "LVariableName": "",
          "ValueMapping": [],
          "XPathMapping": [],
          "Template": "{ \"username\": \"{{ setting \"username\" }}\", \"password\": \"{{ setting \"password\" }}\" }"
        },
        "Ui": {
          "x": 1281,
          "y": 116,
          "nodeType": ""
        },
        "TypeAlias": "Transform"
      },
      {
        "Id": "54",
        "Type": "exec",
        "Label": "base64 credentials",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "SuccessTransition": "55",
        "ErrorTransition": "",
        "Config": {
          "ExecType": "python",
          "Command": "",
          "ScriptBody": "import json\nimport sys\nimport base64\n\ninMsg=json.loads(sys.argv[1])\n\ndef credentials():\n   print('{}'.format(\n      base64.b64encode(\n         'CPE/{username}:{password}'.format(\n            username=inMsg[\"username\"],\n            password=inMsg[\"password\"]\n         ).encode('utf-8')\n      ).decode('utf-8')\n   ), end = '')\n\ncredentials()",
          "InputVariableName": "credentials",
          "IsInputVariableGlobal": false,
          "OutputVariableName": "credentials_base64",
          "IsOutputVariableGlobal": false,
          "IsOutputJson": false,
          "IsInputJson": true
        },
        "Ui": {
          "x": 1276,
          "y": 262,
          "nodeType": ""
        },
        "TypeAlias": "Run script"
      },
      {
        "Id": "55",
        "Type": "transform",
        "Label": "set credential header",
        "Address": "",
        "Service": "",
        "ServiceInterface": "",
        "SuccessTransition": "28",
        "ErrorTransition": "",
        "Config": {
          "TargetVariableName": "headers_credentials",
          "TargetVariableType": "str_map",
          "IsTargetVariableGlobal": false,
          "TransformType": "template",
          "Rtype": "var",
          "IsRVariableGlobal": false,
          "Expression": "",
          "RValue": {
            "ValueType": "int",
            "Value": 0
          },
          "RVariableName": "",
          "LVariableName": "",
          "ValueMapping": [],
          "XPathMapping": [],
          "Template": "{ \"Authorization\": \"Basic {{ variable \"credentials_base64\" false }}\", \"Accept\": \"application/json\" }"
        },
        "Ui": {
          "x": 1283,
          "y": 425,
          "nodeType": ""
        },
        "TypeAlias": "Transform"
      }
    ],
    "Settings": {
      "password": {
        "Value": "",
        "ValueType": "string",
        "Key": "password"
      },
      "username": {
        "Value": "",
        "ValueType": "string",
        "Key": "username"
      }
    },
    "IsDisabled": false,
    "IsDefault": false,
    "ParallelExecution": "keep_last"
  }
3 Likes

Jeg laget en helt enkel flow i dag, siden jeg fikk varsel fra tibber om unormal høy strømpris i morgen, 132øre/kWh.

Laget to snarveier, Høy strømpris, normal strømpris. Disse setter global variabel strømpris høy eller normal.

Denne trigger foreløpig blokkering av strøm til VVB og senker temperaturen i styrte gulv når variabelen = høy.

Så gjenstår det å se resultatet. :upside_down_face:

3 Likes

Et lite tips: Hvis du bruker node-red, så kan du få inn “price level” automatisk👍🏻 Jeg har testet det på VVB en stund nå, og det fungerer bra😊 tror ikke det er så veldig mye å spare på det, men alt hjelper jo på👍🏻

1 Like

Kjekt tips @lgrubbmo!
Er det fra tibber integrasjonen i NodeRED? Eller er det nordpool sin?

Her er forøvrig resultatet fra lastforskyvingen i dag og bildet under som gårsdagens referanse:

1 Like

Jeg bruker tibber integrasjonen ja😊
Hadde prisene variert så mye daglig, så hadde det blitt litt å spare på styringa ja😁

Vi har et eldre bad uten baderomsvifte. Åpner vinduet når vi dusjer, og glemmer noen ganger å stenge det så det blir stående åpent natta over, og får et iskaldt bad som resultat🙈
Har nå satt opp en flow som sender push varsel hvis vindu har stått åpent 45min, hvis ikke det stenges innen 15 min kommer nytt push varsel osv.
Ved aktivering av natt, borte eller feriemodus sendes det varsel uavhengig av hvor lenge det er siden det ble åpnet👍🏻

Håper nå at vi slipper iskaldt bad flere morgener :grin::joy:

3 Likes

Lyst til å dele denne flowen? :blush:

Selvfølgelig:)

{
  "Id": "RZkpMjqqct8va82",
  "ClassId": "RZkpMjqqct8va82",
  "Author": "lgrubbmo",
  "Version": 0,
  "CreatedAt": "2020-12-10T15:15:01.104436689+01:00",
  "UpdatedAt": "2020-12-10T15:36:45.066968198+01:00",
  "Name": "Vindu Bad",
  "Group": "Varsel",
  "Description": "Varsler om vindu er glemt åpent",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Vindu bad",
      "SuccessTransition": "5",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:sensor_contact/ad:154_0",
      "Service": "sensor_contact",
      "ServiceInterface": "evt.open.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": "bool"
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 190,
        "y": 150
      },
      "TypeAlias": "Trigger"
    },
    {
      "Id": "2",
      "Type": "if",
      "Label": "open/close",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "3"
      },
      "Ui": {
        "nodeType": "",
        "x": 162,
        "y": 496
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "3",
      "Type": "wait",
      "Label": "45 min",
      "SuccessTransition": "4",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 2700000,
      "Ui": {
        "nodeType": "",
        "x": 161,
        "y": 656
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "4",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "9",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "Config": {
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Baderomsvindu er åpent!!",
            "SiteId": "059CDE55-3F6F-4384-9385-305BC3964806"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 483,
        "y": 834
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "5",
      "Type": "set_variable",
      "Label": "",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "Name": "Vindu Bad",
        "UpdateGlobal": false,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 174,
        "y": 325
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "7",
      "Type": "if",
      "Label": "Vindu åpent?",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "Vindu Bad",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "4"
      },
      "Ui": {
        "nodeType": "",
        "x": 607,
        "y": 491
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "8",
      "Type": "if",
      "Label": "fortsatt åpent?",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "Vindu Bad",
            "Operand": "eq",
            "RightVariable": {
              "Value": true,
              "ValueType": "bool"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "4"
      },
      "Ui": {
        "nodeType": "",
        "x": 476,
        "y": 1183
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "9",
      "Type": "wait",
      "Label": "15 min",
      "SuccessTransition": "8",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": 900000,
      "Ui": {
        "nodeType": "",
        "x": 464,
        "y": 1014
      },
      "TypeAlias": "Delay"
    },
    {
      "Id": "10",
      "Type": "vinc_trigger",
      "Label": "Home event trigger",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "SuccessTransition": "11",
      "ErrorTransition": "",
      "Config": {
        "Timeout": 0,
        "ValueFilter": "",
        "IsValueFilterEnabled": false,
        "EventType": "mode"
      },
      "Ui": {
        "x": 615,
        "y": 158,
        "nodeType": ""
      },
      "TypeAlias": "Home event"
    },
    {
      "Id": "11",
      "Type": "if",
      "Label": "Natt/Ferie/Borte",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "SuccessTransition": "",
      "ErrorTransition": "",
      "Config": {
        "TrueTransition": "",
        "FalseTransition": "7",
        "Expression": [
          {
            "Operand": "eq",
            "LeftVariableName": "fh.home.mode",
            "LeftVariableIsGlobal": true,
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            },
            "BooleanOperator": ""
          }
        ]
      },
      "Ui": {
        "x": 623,
        "y": 320,
        "nodeType": ""
      },
      "TypeAlias": "If condition"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}

Tusen takk :star_struck:

Hei. Ny til FH og har satt opp hele huset og garasjen. Totalt rundt 50 enheter. Skulle gjerne lært litt mer om automatisering og Thingsplex hvor jeg skjønner man kan gjøre enda mer enn hva som ligger default i appen. Ønsker blant annet å kunne få beskjed på telefonen når sistemann reiser og trykker på «bortemodus» på modusbryteren hvis noen har glemt å lukke en dør. Har Sensetive strips på alle dører.

Kan noen hjelpe meg med flow til dette? Finner lite informasjon om hvordan man egentlig bruker Thingsplex…

Dokumentasjon for Thingsplex og Flow kan finnes her; Thingsplex UI - docs

2 Likes

Burde være ganske rett frem. Les dokumentasjon og betydning av false/true på diverse sensorer osv på github.

Blir noenlunde slik vil jeg tro:

-home event (away)
IF (true)
Så alle sensorene på dører du mener skal være lukket og en false/true der og tror jeg (husker ikke, sjekke github)
Send push notification

Fruen har fått eget planterom - i den anledning er vekstlys under bordet styrt med develco zigbee plugg, ledstripene på 4000k er 24v, så kjøpte like godt en 30w ikea trådfri driver, og koblet dem på den, og google home er i hjørnet av bordet. Det som ikke er så synlig er et glasskap, med en 230V AC ledstripe limt rundt inni skapet, en vifte i bunn, og en USB luftfukter fra biltema. Disse forsynes av en forgrener, som er z-wave plugg på, slik at lys, fukter og vifte er på samtidig. Hun har også hengt opp to E27 vekstlys, som går på hver sin ikea plugg.

Alt dette er bunnet opp mot 2 scenebrytere, der den ene har 4 knapper. Den slår på lys under pulten, og resten i rommet hver for seg, og av såklart.
Videre står en scenebryter i stuen, som slår av/på alle lys utenom under pulten, OG 5stk ikea vekstlys på separate ikea plugger, i stuen :blush:

Taklyset er satt som eget rom, sammen med ovn/varmestyring slik at dette styres på bevegelse og temp mot et neo coolcam øye, uavhengig av resten.

9 Likes

Da har et av pappaperm prosjektene ferdigstilt :smiley: DIY Ambient Light til TV!
Styres av en RaspberryPi Zero og HDMI Capture “card”. RaspPi, strømplugg, hurtigkobling til LED stripe & USB hub er montert i egetdesignet boks som jeg 3D printet. Fornøyd med resultatet så langt, men litt småjusteringer gjenstår.
Satt opp kommunikasjon mellom software på RaspPi til Futurehome (virtual device) og Logitech Harmony via NodeRED.
D4107294-4A85-4CE1-BCBB-A0648DAD0E60 (1)





12 Likes

La oss få litt liv i denne tråden igjen :smiley:
Poster et “prosjekter” jeg har automatisert litt tilbake i tid, så blir ikke “idag” :sweat_smile:
forøvrig utvided jeg nylig med samme flow også for tørketrommel og oppvaskmaskin :slight_smile:

3 Likes

Custom notifications (egen app) som jeg også har testet ut;

Ser at det er mye opensource programmer som har integrert pushover, som gjør at man kan bruke den til flere andre prosjekter også - f.eks bruker jeg også pushover for notifikasjoner for 3D printeren :nerd_face:

3 Likes

Jeg har endelig fått lagt til mere Tibber data i FH.
Henter nå inn prisnivå og pris for hver time. Printer disse i timeline i appen og importerer pris for bruk i Grafana.

Har tenkt på muligheten å automatisere VVB og andre større strømkilder basert på dette, men syntes ikke kvaliteten på prisnivå dataen fra Tibber er god nok enda.


6 Likes

Nice. Vil du dele flowen hvor du får opp prisen fra tibber?