Strømforbruk Status Flow

Hei.
Jeg har laget en flow som bytter farge på ei lyspære basert på strømforbruket fra HAN sensoren. Denne driver og stopper opp med ujevne mellomrom uten at jeg helt forstår hvorfor.
Er det noen av dere smarte hoder som kan hjelpe meg med hva som er feil?

{
  "Id": "WYwGfkN9yzntlvt",
  "ClassId": "X1omxozqlvwXR4c",
  "Author": "Alexander Waaland",
  "Version": 0,
  "CreatedAt": "2024-01-08T16:05:12.709470297+01:00",
  "UpdatedAt": "2024-01-09T14:31:16.41031355+01:00",
  "Name": "Strømforbruk Fargekode 3500 W",
  "Group": "",
  "Description": "Skifter mellom rødt og grønnt over/under 3500 watt",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "HAN sensor",
      "SuccessTransition": "3",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zigbee/ad:1/sv:meter_elec/ad:51_2",
      "Service": "meter_elec",
      "ServiceInterface": "evt.meter.report",
      "Config": {
        "ConnectorID": "",
        "InputVariableType": "",
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "PropFilterName": "",
        "PropFilterValue": "",
        "RegisterAsVirtualService": false,
        "Timeout": 0,
        "ValueFilter": {
          "Value": null,
          "ValueType": "float"
        },
        "ValueJPath": "",
        "ValueJPathResultType": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": null
      },
      "Ui": {
        "nodeType": "",
        "x": 1034,
        "y": 285
      },
      "TypeAlias": "Trigger",
      "LastValue": "2510 W"
    },
    {
      "Id": "3",
      "Type": "if",
      "Label": "Modus Home",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "fh.home.mode",
            "Operand": "eq",
            "RightVariable": {
              "Value": "home",
              "ValueType": "string"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "5"
      },
      "Ui": {
        "nodeType": "",
        "x": 812,
        "y": 461
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "5",
      "Type": "if",
      "Label": "Over 3501",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "",
            "Operand": "gt",
            "RightVariable": {
              "Value": 3501,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "6",
        "TrueTransition": "9"
      },
      "Ui": {
        "nodeType": "",
        "x": 370,
        "y": 606
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "6",
      "Type": "if",
      "Label": "Under 3500",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": false,
            "LeftVariableName": "",
            "Operand": "lt",
            "RightVariable": {
              "Value": 3500,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "5",
        "TrueTransition": "8"
      },
      "Ui": {
        "nodeType": "",
        "x": 861,
        "y": 794
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "8",
      "Type": "action",
      "Label": "New Green",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zigbee/ad:1/sv:color_ctrl/ad:38_1",
      "Service": "color_ctrl",
      "ServiceInterface": "cmd.color.set",
      "Config": {
        "DefaultValue": {
          "Value": {
            "green": 254
          },
          "ValueType": "int_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 844,
        "y": 1023
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "New Red",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zigbee/ad:1/sv:color_ctrl/ad:38_1",
      "Service": "color_ctrl",
      "ServiceInterface": "cmd.color.set",
      "Config": {
        "DefaultValue": {
          "Value": {
            "red": 254
          },
          "ValueType": "int_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 377,
        "y": 1025
      },
      "TypeAlias": "Action"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}

Jeg har hatt noen flows som kjører for fort og feilet pga den ikke fikk verdien brukt i if setning riktig. Du kan prøve å legge In et 1000 ms wait mellom trigger og if setningen.

1 Like

1.Fjern loopen du har laget tilbake til første if-node. Denne vil kun lage krøll.

2.Flowen er satt opp til å kjøre i paralell, sett den til å kjøre “keep last”

3.Etter action nodene så burde du også sette en variabel til en verdi (string med fargen som tekst f.eks), som du sjekker i if-nodene dine før du kjører kommando. Med dette oppsettet sender du kommando til lyspæren ved hver endring i Watt fra HAN-sensor. Ved å benytte en variabel, så sender du da ikke kommandoen ut til lyspæren om den allerede er rød og effekten er over 3500.

Ved å gjøre disse grepene, så tenker jeg problemet er løst.

3 Likes

Kunne ikke sagt det bedre selv @M.Stensrod :slight_smile:
Jeg vil også tro at disse endringene som er foreslått her vil løse problemene du opplever.

2 Likes

Takk for tipset.

Kan du fortelle meg hvordan jeg fjerner den loopen? Jeg klarer ikke å finne ut hvordan jeg fjerner forbindelsene eller hva jeg skal kalle det, utenom å flytte den til en annen plass og så slette en av endene hvis det var forståelig?

Jeg skal gjøre de andre endringene som du foreslår og prøve.

Takk for tipset. La inn en delay mellom If Home og If Condition før helgen og den har kjørt siden.
Jeg skal uansett teste det andre tipset også, både for læringens del, og for å få en mest mulig effektiv flow.

1 Like

Det er akkurat hvordan man må gjør det - lage en action, ta flow til den og da slett actionen.

Hvis du blar deg nedover i scriptet for flowen, og finner “id”=“6” og blar enda litt lenger ned, så sletter du innholdet mellom anførsel etter “falseTransition”.
Lagre etterpå.

1 Like

Hei igjen.

Har lagt inn punkt 1 og 2 og flow har kjørt uten et eneste feilslag nå i en uke, så dette løste problemet for min del.
Punkt 3 har jeg ikke lagt inn, da jeg rett og slett ikke forstår helt hvordan jeg skal gjøre det.

Tusen takk for hjelpen.

2 Likes

Det er bra, bare hyggelig :slight_smile: Punkt 1 og 2 var det jeg regnet med skulle løse utfordringene, punkt 3 er for å avlaste ZigBee/Z-Wave nettverket. For når du kjører kommando hvert 2.5 sekund (rapporteringsintervall Effekt for HAN-port) så kjøres det mye unødvendig trafikk som kan gi deg problemer nå/senere. Hvis du ønsker og implementere punkt 3, så kan jeg hjelpe deg med dette.

Siden du ønsket og lære med om temaet (nevnt i tidligere innlegg): Som en tommelfinger regel, så alltid sjekk status for utstyr før du kjører kommando, da sender du ikke kommando unødvendig. Hvis du ønsker å kjøre timer funksjoner, så benytt “Keep first” eller “Keep Last”, dette for å starte timer på nytt ved ny rapportering (Keep last), eller å forkaste ny rapportering (Keep last first). “Parallell” benyttes kun for automasjoner som skal kjøre igjennom og ikke har en høy rapporteringsfrekvens.

2 Likes