Fibaro Roller Shutter 3 med Flow for styring av screens - problem

Hei

Noen som kan hjelpe litt spesifikt med et problem med flow for styring av screens?

Starter med litt bakgrunnsinformasjon:

Hovedårsaken til at jeg investerte i Futurehome, var at jeg skulle etablere en smart styring av screens som vi investerte i mai i fjor.

Så langt har jeg ikke greid å etablere annet enn en simpel tidsstyring. Årsakene til det kan være flere, men her følger hovedårsaken til at jeg ikke ser ut å komme videre:

Elektriker har koblet Fibaro Roller Shutter 3 (FRS3) mellom fjærbelastede brytere og motor på screen. Jeg antar at dette er koblet riktig og iht. skjema i manual (se bilde nedenfor) - bryterne (opp og ned) fungerer som de skal og “opp”-bryter er koblet til S1. Jeg har sjekket koblingene fysisk, og de ser ut til å følge manualen (for standard blinds) til punkt og prikke.

Jeg har videre knyttet FRS3 til Futurehome, også iht manual. Etter å ha lagt til de aktuelle FRS3 har jeg kjørt kalibrering iht manual (trykke S1 i tre sekunder tre suksessive ganger) og kontrollert at nivå på screens blir riktig ved styring fra FH-appen. So far so good.

Jeg hadde i en periode en enkel tidsstyring hvor screen gikk ned når klokka tilsa at det kunne bli solskinn på vinduene, og opp når sola forsvant bak fjellet - en løsning jeg bare lagde med fasilitetene i FH-appen. Fungerte fint det, uten problemer i ganske lang tid, men da går screens ned uavhengig av om det er sol eller ikke. Det er naturligvis ikke ønskelig, så jeg ønsket å avansere, selv om metoden ga automatisering som fungerte.

Så, som tenkt hele tiden, fikk jeg etter hvert plassert ut en lyssensor. Jeg valgte en utendørssensor fra Philips Hue, ettersom det virket å være den mest robuste og lettest tilgjengelige utendørssensoren. Den fungerer fint og rapporterer lysintensitet som forventet, enn om litt tid mellom rapportene, etter at jeg la den direkte til i FH (ikke via Philips Hue hub). Så har jeg satt meg litt inn i Thingsplex og laget en veldig enkel flow som kjører screens ned dersom lux > 35 000 og opp dersom lux < 30 000. Klok av skade tester jeg nå flowen kun på en screen. Se bilde av flow nedenfor. Blokkene til høyre er noe jeg begynte på, men gikk bort ifra da jeg fikk problemer, så det kan sikkert ses bort ifra. Kildekoden (som jeg for øvrig ikke har særlig mye forhold til) er satt inn i bunn av innlegget.

Det som nå har skjedd, og som skjedde for en tid tilbake da jeg testet dette sist, er at den aktuelle screen er kjørt ut, ut og ut, slik at screen er spolet inn i feil retning.
Sist gang fikk jeg leverandøren av screensa til å komme å fikse det, fordi jeg tenkte det var en feil med motorene (grunnet fuktighet og/eller kulde etc.). Jeg hadde veldig vanskelig for å se for meg at det kunne være FRS3, eller styringa av denne, som kunne medføre en slik feil. Screensa er levert med en Selve Elektronik ZipScreen motor (SEZ) som er fasilitert med:

  • “Obstacle detection downwards”
  • “Reverse function: Releiving after running onto an obstacle downwards (up to 3 times)”
  • “Overload protection upwards if the torque is too high, (also say “freezing protection”)”
  • “Automatic detection of up- and downwards direction”
  • “Automatic setting of the lower end position”
  • “Automatic setting of trhe upper end position and release”
  • “Switch-off bottom: fixed point”
  • “Switch-off top: fixed point”
    Montørene definerte øvre og nedre grenser som motoren da er satt til å overholde, og har overholdt helt til min lille flow kommer inn i bildet.

Flowen ser med første øyekast ut til å fungere som tiltenkt. Når lysverdien blir høy nok går screen ned, og blir den lavere går screen opp.
Men så skjer det noe merkverdig rart, og det har skjedd på kveldstid når det er mørkt, begge ganger. Nå sist skjedde det mellom klokka 19 og 19:30 kun bevitnet av min samboer: screen begynner å gå øyensynlig tilfeldig og helt uten referanse til betingelsene som er satt i flowen. Screen går helt ned, og nødvendigvis lengre ned enn nedre grense satt for motoren, før den, antageligvis i samme bevegelse (altså ned), ruller screenen opp igjen. Stopper litt midtveis og står der noen minutter/sekunder, før den ruller videre opp og helt inn. Screen er nå spolet inn i feil retning. En og annen gangen forsøker screen å kjøre ut igjen, men stopper etter noen få centimeter, antageligvis pga for stor motstand, men kanskje også pga at gjeldende endestopp nå har havnet helt på avveie. Uansett blir jeg nødt til å åpne og resette screen og motor, få den spolt riktig vei og definere endestopp på nytt. Forhåpentligvis får jeg til dette selv, for jeg tror ikke jeg kan kreve at leverandøren kommer og fikser dette igjen nå som jeg er sikker på at det er flowen/FRS3 som er kilden til problemet.

Legger til at jeg tenker å utvide flowen med et begrenset tidsrom hvor den skal gjøre seg gjeldende, ekstra betingelser tilknyttet innetemperatur, vindforhold og mulighet for overstyring etc, men det må komme etterhvert, og først når jeg er sikker på at jeg ikke krøller screensa til ytterligere ved å legge til flere finnesser i flowen. Jeg bør sikkert ha noe i koden/flowen som sørger for at feiloperasjon ikke oppstår, men jeg vet ikke helt hva det skulle være, og jeg har uansett vanskelig for å forstå hvordan programmet kan gi dette utslaget, tydeligvis som en naturlig følge, siden det skjer to ganger (det har nok skjedd på kveldstid rett etter at flow har blitt aktivert begge ganger, men sist gang tok det ganske lang tid før jeg oppdaget det).

Kan noen fortelle meg hva som foregår her og hvorfor flowen føkker opp min screen?
Hva er løsninga for å få en sikker og god måte å styre screensa på?

På forhånd takk!

{

  "Id": "OlN5AinFeXivDjO",
  "ClassId": "OlN5AinFeXivDjO",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2022-01-02T13:43:04.834935708+01:00",
  "UpdatedAt": "2022-03-09T15:49:46.036567674+01:00",
  "Name": "Screen sørvegg",
  "Group": "Screens",
  "Description": "",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Lyssensor sørvegg",
      "SuccessTransition": "2",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:hue/ad:1/sv:sensor_lumin/ad:s233_0",
      "Service": "sensor_lumin",
      "ServiceInterface": "evt.sensor.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": 380,
        "y": 38
      },
      "TypeAlias": "Trigger",
      "LastValue": "231 Lux"
    },
    {
      "Id": "2",
      "Type": "if",
      "Label": "Lux høy",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableName": "",
            "Operand": "gt",
            "RightVariable": {
              "Value": 35000,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "3",
        "TrueTransition": "7"
      },
      "Ui": {
        "nodeType": "",
        "x": 244,
        "y": 294
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "3",
      "Type": "if",
      "Label": "Lux lav",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableName": "",
            "Operand": "lt",
            "RightVariable": {
              "Value": 30000,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "9"
      },
      "Ui": {
        "nodeType": "",
        "x": 634,
        "y": 304
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "7",
      "Type": "action",
      "Label": "Screen stue ned",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:52_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 59,
        "y": 534
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "Screen stue opp",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:52_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 100,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 622,
        "y": 536
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "12",
      "Type": "time_trigger",
      "Label": "Every minute",
      "SuccessTransition": "13",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultMsg": {
          "Value": "",
          "ValueType": ""
        },
        "Expressions": [
          {
            "Comments": "",
            "Expression": "@every 1m",
            "Name": "Every minute"
          }
        ],
        "GenerateAstroTimeEvents": false,
        "Latitude": 0,
        "Longitude": 0,
        "SunriseTimeOffset": 0,
        "SunsetTimeOffset": 0
      },
      "Ui": {
        "nodeType": "",
        "x": 1293,
        "y": 155
      },
      "TypeAlias": "Time trigger"
    },
    {
      "Id": "13",
      "Type": "action",
      "Label": "",
      "SuccessTransition": "14",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:hue/ad:1/sv:sensor_lumin/ad:s233_0",
      "Service": "sensor_lumin",
      "ServiceInterface": "evt.sensor.report",
      "Config": {
        "DefaultValue": {
          "Value": "",
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 1299,
        "y": 366
      },
      "TypeAlias": "Action",
      "LastValue": "231 Lux"
    },
    {
      "Id": "14",
      "Type": "set_variable",
      "Label": "Lux sørvegg",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": true,
        "Name": "lux_sør",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 1305,
        "y": 577
      },
      "TypeAlias": "Set variable"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "parallel"
}```

Høyrest mest ut som ein feil på motorkonfigurasjon, eller at den har blitt påvirka av vind el. slik at den har rulla inn litt feil og at den derfor har mistolka sin eigen posisjon. Riktig som du er inne på - om den er konfigurert riktig skulle ikkje dette gå an. Når det er sagt så vil eg anbefala å legga inn ein if betingelse relatert til posisjon på screens,slik at du ikkje “spammar” RS3 med mange unødvendige kommandoar kvar gong det kjem ei ny måling. Kva er oppdateringsintervallet for lux-sensoren? Send meg pm med di epostadresse så kan eg senda deg dokumentasjon på eit fungerande avansert oppsett :slightly_smiling_face:

Hei Jon!

Jeg har seks screens. Første gang feilen oppstod hadde jeg brukt aktuelle flow på tre av dem - samme feilen oppstod på de tre og ingen andre, i en rolig (men ganske våt og kald) værperiode. Da hadde alle screens fungert normalt i over et halvt år med en enkel tidsstyring. Etter utbedring har alle screens fungert normalt en god stund før jeg prøvde på nytt. Jeg gjorde noen mindre endringer på aktuelle flow før jeg aktiverte den kun for en (1) screen. Samme kveld oppstår akkurat samme feil på denne ene screen’en, som oppstod på de tre sist gang. Alle andre screens fungerer normalt. Værforholdene var stille, tørr og mild denne gangen - ingenting som skulle påvirke screen i noen grad. Så jeg kan ikke (nå) se for meg at det har med motorkonfigurasjonen utført av leverandør å gjøre (selv om jeg tenkte det måtte være noe der sist gang - da oppdaget jeg ikke feilen før en god del dager etter jeg hadde aktivert flow, mest fordi det ikke var noe sol som screensa skulle reagere på i en lengre periode). Rotasjonsretning og endestopp var stabil og lik i lang tid før feilen oppstod. Lite vær som skulle tilsi forstyrrelser av screen i periodene feil har oppstått. Så jeg knytter det direkte til flow nå etter at identisk feil oppstod samme kveld som jeg aktiverte flow for den ene screen’en.

Men jeg kan ha konfigurert FRS3 feil? All informasjon jeg sitter på tilsier imidlertid at dette er “standard blinds”. Alternativet er “blinds with built in driver”, men jeg er ganske overbevist om at det ikke er noe innebygd driver tilknyttet disse motorene…? Kalibreringsmetoden for “standard roller blind positioning” fungerer fint, og FRS3 adopterer da endestopp definert i motor - det er helt likt med kalibrert FRS3 som før FRS3 er implementert i det hele tatt. Jeg kunne benyttet kalibreringsmetoden for “roller blinds with built-in driver positioning”, men metoden ser ut til å være ment for systemer som ikke har definerte endestopp i motoren - en definerer da endestopp i FRS3 ser det ut til. Måten motoren er koblet på samsvarer som sagt også med “standard blinds”, ikke med " blinds with built-in driver". Så jeg har ikke prøvd det. Burde jeg det?

Har vært inne på tanken du nevner om å begrense kommandoer til FRS3 - det skal jeg få inn! Mulig det er nok med en if-sats slik du beskriver for å løse utfordringa i det store og hele? Mener oppdateringsintervallet er 4 eller 5 minutter, mulig oftere ved store endringer, så det blir jo en del kommandoer, alle med en viss risiko for å produsere feil. Tenkte også å lage en kode som gjør at verdi fra lyssensor hentes oftere, type hvert minutt, men ikke sikkert dette er nødvendig. Det vil i så fall øke antall kommandoer ytterligere, uten begrensningen du nevner.

(I min begrensede kunnskap om programmering mener jeg å ha hørt at en med fordel kan legge inn kode som hindrer utførelse annet enn det som ønskes, f.eks. dersom det gis kommandoer som ikke samsvarer med det som forventes, så skal koden sørge for at det ikke krasjer programmet eller gir en uventet/uønsket hendelse. Jeg har imidlertid liten peiling på hvordan jeg skal legge inn noe sånt i flow, og så må en vel være ganske treffsikker på hvilke feil en ønsker å unngå…)

Jeg har bestilt en testkabel jeg trenger for å resette den aktuelle screen’en og definere endestopp på nytt. Når jeg får denne og (forhåpentligvis) får fiksa screen’en kan jeg prøve på nytt - jeg vil ikke teste på noen andre før jeg vet at jeg får definert screen tilbake slik den skal være først.

Jeg har allerede fått ditt fungerende avanserte oppsett for en tid tilbake, tusen takk! Det tok en stund før jeg fikk tid til å se på det, men har etter hvert brukt litt tid på å prøve å gjøre meg kjent med det. Det jeg imidlertid har konkludert med er at det er for komplisert til å starte med. Jeg får ikke din flow til å fungere i mitt system uten å vite hva alt du har gjort er for noe (slik at jeg kan tilpasse det til mitt system), og det vet jeg ikke. Jeg må starte såre enkelt og bygge meg oppover, så kan jeg bruke din flow for ideer til løsninger etterhvert som jeg forstår mer. Det jeg har vanskelig for å forstå med min foreløpige flow er akkurat hva som gir det utslaget jeg nå har sett to ganger. Uten å forstå det kan jeg ikke vite hva jeg skal gjøre for å unngå det heller. Men å redusere antall kommandoer til FRS3 er helt sikkert en god start :+1:

Andre konkrete tips og opplysninger mottas med takk! :blush:

Hvis skjermene fungerte tilfredstillende med den enkle tidsstyringen, så er det lurt og ta ett steg tilbake. Hvordan så logikken ut med den enkle tidsstyringen?

Edit; Mistenker problemet er at du kjører ny kommando for hver lux oppdatering. Ved tidsinntilling kjører du kun en kommando ved gitt tid. Og kun kjøre en kommando ved målt lux er en enkel justering i programmet du har laget. Forøvrig burde programmet kjøre “keep new” og du burde slette overflødig vissvass til høyre i programmet.

Ja, jeg skal legge inn en if-sats ift. posisjonen på screen slik at det kun gis kommando dersom posisjonen skal endres, slik Jon også foreslår. Mulig det bare er det som skal til.

Vissvasset til høyre skal fjernes. Det er i og for seg inaktivt slik det står nå - jeg brukte det, i en litt annen utforming, til å hente luxverdi via en variabel i et prøveoppsett for litt siden, men gikk bort fra det igjen. Den koden var for øvrig ikke med sist gang feilen oppstod, så tror ikke det har noe med det å gjøre.

“Keep new” skal jeg sjekke nærmere :+1:

Har fortsatt vanskelig for å forstå hvordan utfallet blir som det blir, men jeg skal kanskje ikke henge meg altfor mye opp i det…

Tusen takk for tips!

Har du prøvd og kjøre kommando for 100/0 etter hverandre for og fremprovosere oppførselen?

Du har programmert Fibaro enheten med manuelle set-punkt, som i utgangspunktet ikke skal gå videre enn begrensningen som er satt via motor, men det er noe som skjer i automasjonen din som kludrer hele sol-skjermen, og da tenker jeg at enkle kommandoer via variabler i if-noden er en enkel vei å gå for og ettermake flowen du har hatt som virker.

1 Like

Hvordan ser dette oppsettet ut? Koden kan legges ut i forum ved å bruke “performatted text” i svare feltet.

Har ikke prøvd å gjenskape feilen - feilen medfører tiltak jeg foreløpig mangler utstyr for å utføre, for å få screen tilbake i funksjon. Får dette utstyret antageligvis i slutten av neste uke og vil da prøve på nytt med noen ekstra if-noder for å betydelig begrense antall kommandoer til FRS3. Hvis det fungerer over litt tid, så slår jeg meg til ro med det. Dersom det fortsatt mot formodning skulle være problemer så får jeg prøve å gjenskape feilen for å finne ut hva som får dette til å skje. :+1:

Hei

Jeg har nå utbedra flowen til noe som ser ut til at det kan fungere (jeg kan poste flow og kildekode her etterhvert).

Men en ting jeg har gjort er å lage en global variabel hvor jeg lagrer nivået for en gitt screen. Dette nivået hentes gjennom en separat flow med en time trigger hvert minutt. Jeg fikk det til å fungere litt i begynnelsen, men nå virker det umulig å motta level report fra Fibaro Roller Shutter 3. Receive-noden (wait for event) går alltid i timeout. Noen som har tips til hvordan jeg kan få fatt i nivået fra FRS3 på en god og stabil måte?

Jeg registrerer for øvrig at nivået som vises for screens (eller FRS3) i appen veldig ofte er feil, så jeg mistenker at det ikke nødvendigvis er rett fram å få rapportert nivået? Det burde egentlig være noe FH fikk ordna i, slik at en til enhver tid kan stole på nivået som vises i appen.

Ellers så bruker jeg channel 0 på FRS3 (det er kun den som vises i lista over enheter som er lagt til. Men er det slik at jeg egentlig alltid bør benytte channel 1?

Her kommer separat flow og kildekode for å innhente data til global variabel “Screen_verandadør_lvl”. Har lagt til unødvendig mange push-varsler for å ha mulighet til å følge med på hvor det stopper - og det stopper i “wait for event”-noden hver gang, denne går til timeout. Flowen har fungert helt i begynnelsen, men nå er det bom stille fra FRS3 - det returneres ingen event report til “wait for event”-noden. Er det noen som kan fortelle meg hva jeg gjør feil/hva jeg skal gjøre for å få dette til?

Kildekode:

{
  "Id": "8IBgz7LHka4rxT3",
  "ClassId": "8IBgz7LHka4rxT3",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2022-04-05T23:34:19.554529717+02:00",
  "UpdatedAt": "2022-04-07T22:09:30.052835921+02:00",
  "Name": "Screens level",
  "Group": "Variabler",
  "Description": "",
  "Nodes": [
    {
      "Id": "2",
      "Type": "action",
      "Label": "Get level report screen verandadør",
      "SuccessTransition": "7",
      "TimeoutTransition": "",
      "ErrorTransition": "6",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:basic/ad:57_0",
      "Service": "basic",
      "ServiceInterface": "cmd.lvl.get_report",
      "Config": {
        "DefaultValue": {
          "Value": "",
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 261,
        "y": 307
      },
      "TypeAlias": "Action",
      "LastValue": ""
    },
    {
      "Id": "5",
      "Type": "time_trigger",
      "Label": "Hvert minutt",
      "SuccessTransition": "11",
      "TimeoutTransition": "",
      "ErrorTransition": "8",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultMsg": {
          "Value": "",
          "ValueType": ""
        },
        "Expressions": [
          {
            "Comments": "",
            "Expression": "* * * * *",
            "Name": "default"
          }
        ],
        "GenerateAstroTimeEvents": false,
        "Latitude": 0,
        "Longitude": 0,
        "SunriseTimeOffset": 0,
        "SunsetTimeOffset": 0
      },
      "Ui": {
        "nodeType": "",
        "x": 430,
        "y": 4
      },
      "TypeAlias": "Time trigger"
    },
    {
      "Id": "6",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Get level report failed",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 507,
        "y": 468
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "7",
      "Type": "receive",
      "Label": "Receive level report screen verandadør",
      "SuccessTransition": "12",
      "TimeoutTransition": "9",
      "ErrorTransition": "10",
      "Address": "pt:j1/mt:evt/rt:dev/rn:zw/ad:1/sv:basic/ad:57_0",
      "Service": "basic",
      "ServiceInterface": "evt.lvl.report",
      "Config": {
        "IsValueFilterEnabled": false,
        "LookupServiceNameAndLocation": false,
        "RegisterAsVirtualService": false,
        "Timeout": 60,
        "ValueFilter": {
          "Value": "",
          "ValueType": "int"
        },
        "VirtualServiceGroup": "ch_0",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 256,
        "y": 467
      },
      "TypeAlias": "Wait event"
    },
    {
      "Id": "8",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Time trigger failed",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 585,
        "y": 159
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Receive level report timeout",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 464,
        "y": 659
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "10",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Receive level report error",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 706,
        "y": 666
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "11",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "2",
      "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": "Time trigger sendt",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 356,
        "y": 155
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "12",
      "Type": "set_variable",
      "Label": "Screen verandadør level",
      "SuccessTransition": "13",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": ""
        },
        "IsVariableInMemory": true,
        "Name": "Screen_Verandadør_lvl",
        "UpdateGlobal": true,
        "UpdateInputMsg": false
      },
      "Ui": {
        "nodeType": "",
        "x": 215,
        "y": 656
      },
      "TypeAlias": "Set variable"
    },
    {
      "Id": "13",
      "Type": "action",
      "Label": "Push notification",
      "Address": "pt:j1/mt:evt/rt:app/rn:kind_owl/ad:1",
      "Service": "kind-owl",
      "ServiceInterface": "evt.notification.report",
      "SuccessTransition": "",
      "ErrorTransition": "",
      "Config": {
        "VariableName": "",
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {},
        "DefaultValue": {
          "Value": {
            "EventName": "custom",
            "MessageContent": "Variabel er satt",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        }
      },
      "Ui": {
        "x": 205,
        "y": 815,
        "nodeType": "notification_action"
      },
      "TypeAlias": "Notification"
    }
  ],
  "Settings": null,
  "IsDisabled": false,
  "IsDefault": false,
  "ParallelExecution": "keep_first"
}

Her kommer oppdatert flow for styring av screens - denne tar inn i seg den globale variabelen definert i flowen over her. Har også lagt inn noen ekstra notifikasjoner her for å holde øye med hvor det eventuelt går galt. Primært har det gått galt når screen kjører opp og ny level report fra FRS3 ikke mottas og lagres i den globale variabelen. Da er situasjonen den samme som før, at det stadig sendes kommando om å kjøre screen opp, selv om screen er oppe fra før.

Dumt å bombardere FRS3 med forespørsler om event report også, kanskje? Men hvordan bør jeg løse dette?

Kildekode:

{
  "Id": "OlN5AinFeXivDjO",
  "ClassId": "OlN5AinFeXivDjO",
  "Author": "",
  "Version": 0,
  "CreatedAt": "2022-01-02T13:43:04.834935708+01:00",
  "UpdatedAt": "2022-04-06T21:14:31.254037625+02:00",
  "Name": "Screen sørvegg",
  "Group": "Screens",
  "Description": "",
  "Nodes": [
    {
      "Id": "1",
      "Type": "trigger",
      "Label": "Lyssensor sørvegg",
      "SuccessTransition": "29",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:evt/rt:dev/rn:hue/ad:1/sv:sensor_lumin/ad:s233_0",
      "Service": "sensor_lumin",
      "ServiceInterface": "evt.sensor.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": 380,
        "y": 9
      },
      "TypeAlias": "Trigger",
      "LastValue": "231 Lux"
    },
    {
      "Id": "2",
      "Type": "if",
      "Label": "Lux > 45 000 lux",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableName": "",
            "Operand": "gt",
            "RightVariable": {
              "Value": 45000,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "3",
        "TrueTransition": "12"
      },
      "Ui": {
        "nodeType": "",
        "x": 229,
        "y": 328
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "3",
      "Type": "if",
      "Label": "Lux < 40 000",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableName": "",
            "Operand": "lt",
            "RightVariable": {
              "Value": 40000,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "",
        "TrueTransition": "16"
      },
      "Ui": {
        "nodeType": "",
        "x": 490,
        "y": 332
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "7",
      "Type": "action",
      "Label": "Screen verandadør ned",
      "SuccessTransition": "27",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:57_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 0,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 58,
        "y": 649
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "9",
      "Type": "action",
      "Label": "Screen verandadør opp",
      "SuccessTransition": "28",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:dev/rn:zw/ad:1/sv:out_lvl_switch/ad:57_0",
      "Service": "out_lvl_switch",
      "ServiceInterface": "cmd.lvl.set",
      "Config": {
        "DefaultValue": {
          "Value": 100,
          "ValueType": "int"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "ResponseToTopic": "",
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "",
        "x": 510,
        "y": 651
      },
      "TypeAlias": "Action"
    },
    {
      "Id": "12",
      "Type": "if",
      "Label": "Screen ikke helt nede",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "Screen_Verandadør_lvl",
            "Operand": "gt",
            "RightVariable": {
              "Value": 5,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "13",
        "TrueTransition": "7"
      },
      "Ui": {
        "nodeType": "",
        "x": 164,
        "y": 488
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "13",
      "Type": "action",
      "Label": "Screen verandadør er allerede nede",
      "SuccessTransition": "",
      "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": "Screen verandadør er allerede nede, så kommandoen er stoppet.",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 283,
        "y": 655
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "16",
      "Type": "if",
      "Label": "Screen ikke helt oppe",
      "SuccessTransition": "",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "Config": {
        "Expression": [
          {
            "BooleanOperator": "",
            "LeftVariableIsGlobal": true,
            "LeftVariableName": "Screen_Verandadør_lvl",
            "Operand": "lt",
            "RightVariable": {
              "Value": 95,
              "ValueType": "int"
            }
          }
        ],
        "FalseTransition": "17",
        "TrueTransition": "9"
      },
      "Ui": {
        "nodeType": "",
        "x": 534,
        "y": 499
      },
      "TypeAlias": "If condition"
    },
    {
      "Id": "17",
      "Type": "action",
      "Label": "Screen verandadør er allerede oppe",
      "SuccessTransition": "",
      "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": "Screen verandadør er allerede oppe, så kommandoen er stoppet.",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 736,
        "y": 649
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "24",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Screen verandadør gikk ned grunnet høy lux.",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 55,
        "y": 953
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "25",
      "Type": "action",
      "Label": "Push notification",
      "SuccessTransition": "",
      "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": "Screen verandadør gikk opp pga. redusert lux.",
            "SiteId": "2a0f20ed-428a-45db-8ba3-876248227918"
          },
          "ValueType": "object"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "notification_action",
        "x": 522,
        "y": 957
      },
      "TypeAlias": "Notification"
    },
    {
      "Id": "27",
      "Type": "action",
      "Label": "Publish timeline",
      "SuccessTransition": "24",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:app/rn:time_owl/ad:1",
      "Service": "time_owl",
      "ServiceInterface": "cmd.timeline.set",
      "Config": {
        "DefaultValue": {
          "Value": {
            "message_en": "Screen veranda gikk ned pga. høy lux",
            "message_no": "-",
            "sender": "flow"
          },
          "ValueType": "str_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "timeline_action",
        "x": 53,
        "y": 799
      },
      "TypeAlias": "Timeline"
    },
    {
      "Id": "28",
      "Type": "action",
      "Label": "Publish timeline",
      "SuccessTransition": "25",
      "TimeoutTransition": "",
      "ErrorTransition": "",
      "Address": "pt:j1/mt:cmd/rt:app/rn:time_owl/ad:1",
      "Service": "time_owl",
      "ServiceInterface": "cmd.timeline.set",
      "Config": {
        "DefaultValue": {
          "Value": {
            "message_en": "Screen veranda gikk opp pga. redusert lux",
            "message_no": "-",
            "sender": "flow"
          },
          "ValueType": "str_map"
        },
        "IsVariableGlobal": false,
        "Props": {},
        "RegisterAsVirtualService": false,
        "VariableName": "",
        "VirtualServiceGroup": "",
        "VirtualServiceProps": {}
      },
      "Ui": {
        "nodeType": "timeline_action",
        "x": 509,
        "y": 802
      },
      "TypeAlias": "Timeline"
    },
    {
      "Id": "29",
      "Type": "iftime",
      "Label": "",
      "Address": "",
      "Service": "",
      "ServiceInterface": "",
      "SuccessTransition": "2",
      "ErrorTransition": "",
      "Config": {
        "Expression": [
          {
            "Weekday": "1",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "2",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "3",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "4",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "5",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "6",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          },
          {
            "Weekday": "0",
            "From": "08:00",
            "To": "20:00",
            "Action": "a"
          }
        ]
      },
      "Ui": {
        "x": 312,
        "y": 169,
        "nodeType": ""
      },
      "TypeAlias": "Time filter"
    }
  ],
  "Settings": null,
  "IsDisabled": true,
  "IsDefault": false,
  "ParallelExecution": "keep_last"
}```

Har du prøvd med kanal 1? Jeg bruker kanal 1 (det er kun den som har strømmåling), og har aldri opplevd problem med at nivå i appen er feil

1 Like

Eg har gått heilt bort frå å bruka Wait node. Legg heller den som ein trigger-node. (Eg har ikkje satt meg inni koden din, men generelt, erstatt bruk av Inputvariabel med definerte variablar og sett Run in parallel, så skal det gå like fint)

1 Like

Om du erstattar Wait noden med ein trigger skal du ikkje ha behov for dei 4 øverste nodane. Du treng ikkje “intervjua” RS3 for nivå - lvl vert sendt ut automatisk kvar gong den blir operert.

Har prøvd med kanal 1 nå - det fungerer mye bedre! Nå får jeg øyensynlig riktig status til enhver tid i appen, og rapporteringa til variabel har fungert fint :+1:

1 Like

Jeg får ikke trigger-noden til å fungere slik du beskriver @jon. Bruker du da en vanlig generisk trigger-node med basic service og evt.lvl.report functionality, og signalet fra denne direkte inn i en variabel?