Skapa och använda ett eget funktionsbibliotek

Moderators: hekj, Telldus

Post Reply
Mikkar
Posts: 6
Joined: Thu Jan 18, 2018 11:08 am

Skapa och använda ett eget funktionsbibliotek

Post by Mikkar » Thu Jan 18, 2018 11:08 am

Min tanke vara skapa en fil med olika funktioner, tex en log funktion och en mail funktion. För att sedan göra funktionsanrop från de bsh filer som jag skapat i Nexahome, text 1.bsh. Har gjort några tester men inte fått det att fungera. Funktionerna som ligger i en annan fil hittas inte. Är det någon som gjort något liknande och lyckats?

hekj
Posts: 988
Joined: Thu Jan 18, 2018 11:08 am
Location: Stockholm
Contact:

Re: Skapa och använda ett eget funktionsbibliotek

Post by hekj » Thu Jan 18, 2018 11:08 am

Att anropa andra bsh filer och skicka med parametrar.

Code: Select all

execFile("level_cmd.bsh");
execParam("set");
execParam("15");
execParam("50%");

execFile("level_cmd.bsh");
execParam("set");
execParam("5");
execParam("on");
level_cmd.bsh

Code: Select all

bsh_file = "level_cmd";
params = getData(bsh_file + ".params_");
if (params != null) {
   var len = Integer.parseInt(params);
   if (len >= 2) {
      String cmd = getData(bsh_file + ".param1_");
      String device = getData(bsh_file + ".param2_");
      if (cmd.equals("set") && len >= 3) {
         levelNew = getData(bsh_file + ".param3_").toLowerCase();
         percent = levelNew.endsWith("%");
         levelCurrent = getDeviceLevel(device);
         if (percent) {
            levelCurrent = levelCurrent + "%";
         } else {
            if (levelCurrent.equals("100")) {
               levelCurrent = "on";
            } else {
               levelCurrent = "off";
            }
         }
         setData(level_cmd + "." + device + ".level", levelCurrent);
         if (percent) {
            deviceLevel(device, levelNew);
         } else if (levelNew.equals("on")) {
            deviceOn(device);
         } else {
            deviceOff(device);
         }
      } else if (cmd.equals("restore")) {
         levelPrevious = getData(level_cmd + "." + device + ".level");
         if (levelPrevious != null) {
            percent = levelPrevious.endsWith("%");
            if (percent) {
               deviceLevel(device, levelPrevious);
            } else if (levelPrevious.equals("on")) {
               deviceOn(device);
            } else {
               deviceOff(device);
            }
         }
      }
   }
}

Post Reply