# Restore Homey Pro 2023 backup to Homey Pro 2019?

**URL:** <https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490>\
**Category:** Questions & Help\
**Tags:** homey-pro\
**Created:** [February 20, 2024, 6:23pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490 "2024-02-20T18:23:41Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![TKroon](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tkroon/32/9504_2.png) [@TKroon](https://community.homey.app/u/TKroon)\
**Post date:** [February 20, 2024, 6:23pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/1 "2024-02-20T18:23:41Z")

</div>

Is it possible to restore a backup made on a 2023 Homey Pro, on my old 2019 Homey Pro? I don’t need zigbee or any directly connected device, just my flow cards, variables, etc.

---

<div class="post-metadata">

**Author:** ![Sharkys](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sharkys/32/54029_2.png) [@Sharkys](https://community.homey.app/u/Sharkys)\
**Post date:** [February 20, 2024, 7:28pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/2 "2024-02-20T19:28:31Z")

</div>

I would say not

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [February 21, 2024, 2:09am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/3 "2024-02-21T02:09:31Z")

</div>

You can copy advanced flows per “Device Capabilities” app

Translated quote:

> [@Flow's naar m/n tweede homey zonder overkloppen?](https://community.homey.app/t/flows-naar-m-n-tweede-homey-zonder-overkloppen/104304/5):
>
> On Homey 1, go to the DC app settings and click export. Select the appropriate flow(s) and click Create Echange File.  
> The TEF is now under your clipboard/paste.
> 
> Now go to Homey 2, the DC app settings and click import.  
> Paste the TEF and click Read Flows.  
> Change the devices/ zones/etc.  
> Then click Update text (the script is already on your clipboard/paste again), then click the link to the playground, paste the script and press Run.
> 
> Done!

.

Better Logic variables can be exported and imported, but it’s of no use when you use only Homey logic variables.

.

You can consider using the 2019 model as satellite of the 2023 model (as controller), by using the **Homesh app set** :

> [@\[APP\]\[Pro\] Homesh Controller & Homesh Satellite - Connect Homey Pro 2023 to Homey Pro for Led, Speaker, Zwave(satellite) and network resource](https://community.homey.app/t/app-pro-homesh-controller-homesh-satellite-connect-homey-pro-2023-to-homey-pro-for-led-speaker-zwave-satellite-and-network-resource/70369):
>
> If you want the development of two Apps to connect two Homey Pro’s, one as Controller and one as Satellite (for it’s LED, Speaker, ZWave, Network resource, etc), click the Like heart button! Wauw, 99 likes! i guess the Apps are going public! slight_smileThey are Live: [Homesh Controller](https://homey.app/a/nl.qluster-it.HomeshController/)[Homesh Satellite](https://homey.app/a/nl.qluster-it.HomeshSatellite/) Thanks @johan_bendz for the lovely icons and imagery! And thanks @Caseda for the excellent name! Hello all, With the news of the new Homey Pro Early 2023, there are …

---

<div class="post-metadata">

**Author:** ![TKroon](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tkroon/32/9504_2.png) [@TKroon](https://community.homey.app/u/TKroon)\
**Post date:** [February 21, 2024, 9:53am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/4 "2024-02-21T09:53:25Z")

</div>

Thank you Peter for your reply. Unfortunately I don’t use better logic, but Homey’s own variables. Satelite mode isn’t my solution, because I wanted to offload a lot of calculations done by Homey to a second Homey. Also some apps check periodically at fixed intervals data which has to be processed. At those times my lighting can be a little slow (delay of 1-2 seconds), which can be annoying. For example IcalCalendar checks every 15 minutes and processes all icals. It doesn’t take that long, but in those 20-30 seconds, Homey’s load is high.

It would take me tens of hours to copy every flow, so it would be much easier to buy a second Pro 2023 and restore a backup.

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [February 21, 2024, 6:37pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/5 "2024-02-21T18:37:46Z")

</div>

> [@TKroon](#):
>
> It would take me tens of hours to copy every flow

How so? For all of your advanced flows it can be done in one go, like explained in my earlier post

> [@Flow's naar m/n tweede homey zonder overkloppen?](https://community.homey.app/t/flows-naar-m-n-tweede-homey-zonder-overkloppen/104304/5):
>
> Select the appropriate flow( **s** )

_Additional screenshot:_

> ![Screenshot_20240221-194042_Homey](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/3/1/311f970e813bfa76fe409b369d7b5aee221fd62e.jpeg)

.

> [@TKroon](#):
>
> For example IcalCalendar checks every 15 minutes and processes all icals. It doesn’t take that long, but in those 20-30 seconds, Homey’s load is high

That’s really odd, just _one_ app should not cause a high load during checks, and slow down other Homey actions.  
What does the developer think about that? Did you report this phenomenon to him?

Also a hint, many users seem to do “every hour”, “every X minutes” checks.  
To spread the load, I use “every 3601 seconds” (hour + one second), or “every 899 seconds” (15 minutes -/- 1 second)

> [@TKroon](#):
>
> it would be much easier to buy a second Pro 2023 and restore a backup.

That’s the easiest way indeed 👍😉

---

<div class="post-metadata">

**Author:** ![Arie\_J\_Godschalk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arie_j_godschalk/32/63027_2.png) [@Arie\_J\_Godschalk](https://community.homey.app/u/Arie_J_Godschalk)\
**Post date:** [February 21, 2024, 9:00pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/6 "2024-02-21T21:00:34Z")

</div>

> [@TKroon](#):
>
> Satelite mode isn’t my solution, because I wanted to offload a lot of calculations done by Homey to a second Homey

You could, with the Homesh apps. You can start flows from one homey on the other homey.

---

<div class="post-metadata">

**Author:** ![TKroon](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tkroon/32/9504_2.png) [@TKroon](https://community.homey.app/u/TKroon)\
**Post date:** [February 22, 2024, 11:01am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/7 "2024-02-22T11:01:32Z")

</div>

The problem is recreating the flows. I’ve had two old Homey Pro’s 2019 running in parallel, communicating via MQTT to keep each other up-to-date.

---

<div class="post-metadata">

**Author:** ![TKroon](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tkroon/32/9504_2.png) [@TKroon](https://community.homey.app/u/TKroon)\
**Post date:** [February 22, 2024, 11:08am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/8 "2024-02-22T11:08:21Z")

</div>

I will try it, thank you. Although I must say, updating to 10.3.0 (from 10.1.4) seems to have reduced the load on Homey. I experienced regular (but not at the same time, because I use the irregular intervals for “regular” flows) spikes in system load.

 ![Scherm­afbeelding 2024-02-22 om 12.04.55](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/2/6/263a5eec4b3755223f04f77f7dccc4c4f7001506.jpeg)  
Be aware: the graph of the past 7 days uses averaged data of one hour, so a spike of 60% could be 20 minutes of 140% and 40 minutes of 20%.

Sadly, I can’t prioritize calculations. Lighting should respond immediately, while calculations for my heatpump for example can be done a few seconds later.

---

<div class="post-metadata">

**Author:** ![Jamie](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jamie/32/5274_2.png) [@Jamie](https://community.homey.app/u/Jamie)\
**Post date:** [February 22, 2024, 11:30am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/9 "2024-02-22T11:30:58Z")

</div>

To answer the original question last answer I heard for restoring on HP19 from HP23 backup

“When hell freezes over”

---

<div class="post-metadata">

**Author:** ![Arie\_J\_Godschalk](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/arie_j_godschalk/32/63027_2.png) [@Arie\_J\_Godschalk](https://community.homey.app/u/Arie_J_Godschalk)\
**Post date:** [February 22, 2024, 11:36am UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/10 "2024-02-22T11:36:52Z")

</div>

> [@TKroon](#):
>
> The problem is recreating the flows. I’ve had two old Homey Pro’s 2019 running in parallel

Advanced flows can be exported and imported with the Device Capabilities app.

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [February 22, 2024, 6:46pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/11 "2024-02-22T18:46:27Z")

</div>

Told him already, Arie 😉

---

<div class="post-metadata">

**Author:** ![TKroon](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tkroon/32/9504_2.png) [@TKroon](https://community.homey.app/u/TKroon)\
**Post date:** [February 22, 2024, 7:06pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/12 "2024-02-22T19:06:16Z")

</div>

Haha yes, you both did. But you said it doesn’t work with Homey variables, so I’ll see how that goes. Will get back to you when I’ve got the time to test! Thank you both 🙂

---

<div class="post-metadata">

**Author:** ![Peter\_Kawa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/peter_kawa/32/173848_2.png) [@Peter\_Kawa](https://community.homey.app/u/Peter_Kawa)\
**Post date:** [February 22, 2024, 8:02pm UTC](https://community.homey.app/t/restore-homey-pro-2023-backup-to-homey-pro-2019/104490/13 "2024-02-22T20:02:33Z")

</div>

YW. Dunno how much variables you need on the Pro 2019, but you will have to re-create them, before proceeding with the import of the exported flows.

To make life easier, you can export the variable _ **names** _ with HomeyScript, see below.  
Then, you only need to copy/paste each new variable’s _name_ while creating them.

Now, when you’ve re-created all needed variables, you can start the _Device Capabilities_ app’s flow import procedure, and all the right variables should be added to the flows they were in.

Script:  
Just add a new Homeyscript, and copy/paste the code below.  
Then just run the script; be patient though, it takes quite some time to run completely.

_EDIT: I just noticed this is now only usable for standard flows…_

I tried to replace

```auto
const flows = await Homey.flow.getFlows(); 

```

by

```auto
const flows = await Homey.flow.getAdvancedFlows();

```

but this results in error…

```auto
// FindLogicsVarsInFlows.js
//
// Script to find Homey Logics Variables in Flows, and orphaned Variables (by RonnyW)
//
const flows = await Homey.flow.getFlows();
const logicVars = await Homey.logic.getVariables();
let flowMatches;
let varUsed;
let position = [];
let results2Var; // To be able to build a string to output the results to 
                 // a variable [FoundLogicsVarsInFlows], for usage in flows
results2Var = (" ***Logics Variables found in Flows*** \n\n script: FindLogicsVarsInFlows.js\n\n");                 

for (var iLogicVar in logicVars){
  results2Var = results2Var + "\n **VARIABLE:** ["+logicVars[iLogicVar].name + "]\n";
  let logicVar = logicVars[iLogicVar].name;
  let logicVarId = logicVars[iLogicVar].id;
  varUsed = false;

  for (var iFlow in flows){
    flowMatches = false;
    position = [];
    // Search for variable name in Triggers
    if (flows[iFlow].trigger.uri == "homey:manager:logic"){
      for (var iArgs in flows[iFlow].trigger.args){
        if ( flows[iFlow].trigger.args[iArgs].name == logicVar
             || flows[iFlow].trigger.args[iArgs].id == logicVarId){
          position.push("Trigger card (IF)");
          flowMatches = true;
        }
      }
    }
    // Search for variable name in Condition cards
    for(var iCond in flows[iFlow].conditions){
      if ( flows[iFlow].conditions[iCond] &&
          flows[iFlow].conditions[iCond].uri == "homey:manager:logic"){
        //log(flows[iFlow].conditions[iCond].args);
        for (var iArgs in flows[iFlow].conditions[iCond].args){
          if ( flows[iFlow].conditions[iCond].args[iArgs].name == logicVar
                || flows[iFlow].conditions[iCond].args[iArgs].id == logicVarId ){
            position.push("Condition (AND) - direct reference");
            flowMatches = true;
          }
        }
      }
      for (var iArgs in flows[iFlow].conditions[iCond].args){
        if ( flows[iFlow].conditions[iCond].args[iArgs] &&
            JSON.stringify( flows[iFlow].conditions[iCond].args[iArgs] ).indexOf( logicVarId ) > 0 &&
            JSON.stringify( flows[iFlow].conditions[iCond].args[iArgs] ).indexOf( "homey:manager:logic" ) > 0 ){
          position.push("Condition (AND) - indirect reference (Tag)");
          flowMatches = true;
        }
      }
    }
    // Search for variable name in Action cards
    for(var iAct in flows[iFlow].actions){
      if ( flows[iFlow].actions[iAct] &&
          flows[iFlow].actions[iAct].uri == "homey:manager:logic"){

        for (var iArgs in flows[iFlow].actions[iAct].args){
          if ( flows[iFlow].actions[iAct].args[iArgs].name == logicVar
                || flows[iFlow].actions[iAct].args[iArgs].id == logicVarId ){
            position.push("Action (THEN) - direct reference");
            flowMatches = true;
          }
        }
      }
      for (var iArgs in flows[iFlow].actions[iAct].args){
        if ( flows[iFlow].actions[iAct].args[iArgs] &&
            JSON.stringify( flows[iFlow].actions[iAct].args[iArgs] ).indexOf( logicVarId ) > 0 &&
            JSON.stringify( flows[iFlow].actions[iAct].args[iArgs] ).indexOf( "homey:manager:logic" ) > 0 ){
          position.push("Action (THEN) - indirect reference (Tag)");
          flowMatches = true;
        }
      }
    }

  // Results of Flows found:
    if (flowMatches == true){
      varUsed = true;
      results2Var = results2Var + " - ";
      results2Var = results2Var + " **Flowname:** (" + flows[iFlow].name + ") \n";
      results2Var = results2Var +" -Position: \n";
      for (iPos in position){
        results2Var = results2Var + " -" +position[iPos] + " / \n";
      }
    }
  }
  if (!varUsed){
    results2Var = results2Var +" ***NOT FOUND IN FLOWS*** \n\n";
  } 
}

//
// Output
console.log(results2Var)
return(true);

```
