Page 1 of 1

Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by Snoopy

Code: Select all

// tänder enhet 16 i 10s när enhet 26 tänts.
//  Sedan släcks enhet 16 och 26.
    dummy1 = "26"; // device villkor
    relay = "16"; // device to turn on
    timeout = 10; // seconds to keep light on
    if (executedByCmd()) {
       if (deviceIsOff(relay)) { // check if relay is off
          if (timerIsRunning(dummy1)) {
             stopTimer(dummy1);
          }
          if (deviceIsOn(dummy1) && deviceIsOff(relay)) {
             deviceOn(relay);
             startTimer(dummy1, timeout);
          }
       }
    } else if (executedByTimer()) {
       if (deviceIsOn(relay)) {
          deviceOff(relay);
	  deviceOff(dummy1);
       }
    }
Scriptet 26.bsh fungerar om jag klickar med musen på enhet 26 i Nexahome.
Jag ser att enheterna och timern aktiveras i konsolen.
Om jag däremot använder en fjärrkontroll att tända enhet 26 så reagerar inte Nexahome
mer än tänder symbolen för dummy1 (enhet 26). Scriptet körs inte, ingen reaktion i konsollen
när jag vill se vad som händer.
Hur löser man detta? :?:

Re: Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by hekj
Snoopy wrote:

Code: Select all

// tänder enhet 16 i 10s när enhet 26 tänts.
// Sedan släcks enhet 16 och 26.
dummy1 = "26"; // device villkor
relay = "16"; // device to turn on
timeout = 10; // seconds to keep light on
if (executedByCmd()) {
   if (deviceIsOff(relay)) { // check if relay is off
      if (timerIsRunning(dummy1)) {
         stopTimer(dummy1);
      }
      if (deviceIsOn(dummy1) && deviceIsOff(relay)) {
         deviceOn(relay);
         startTimer(dummy1, timeout);
      }
   }
} else if (executedByTimer()) {
   if (deviceIsOn(relay)) {
      deviceOff(relay);
      deviceOff(dummy1);
   }
}
Scriptet 26.bsh fungerar om jag klickar med musen på enhet 26 i Nexahome.
Jag ser att enheterna och timern aktiveras i konsolen.
Om jag däremot använder en fjärrkontroll att tända enhet 26 så reagerar inte Nexahome
mer än tänder symbolen för dummy1 (enhet 26). Scriptet körs inte, ingen reaktion i konsollen
när jag vill se vad som händer.
Hur löser man detta? :?:
Jag kanske har modifierat NH till det sämre när det gäller metoderna executedByTimer och executedByCmd, testa utan executedByCmd.

26.bsh

Code: Select all

// Tänder enhet 16 i 10s när enhet 26 tänts, därefter släcks enhet 16 och 26.
dummy1 = "26"; // device villkor
relay = "16"; // device to turn on
timeout = 10; // seconds to keep light on
if (executedByTimer()) {
   if (deviceIsOn(relay)) {
      deviceOff(relay);
      if (deviceIsOn(dummy1)) {
         deviceOff(dummy1);
      }
   }
} else {
   if (timerIsRunning(dummy1)) {
      stopTimer(dummy1);
   }
   if (deviceIsOn(dummy1)) {
      if (deviceIsOff(relay) {
         deviceOn(relay);
      }
      startTimer(dummy1, timeout);
   } else if (deviceIsOn(relay)) {
      deviceOff(relay);
   }
}

Re: Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by Snoopy
Tyvärr.
Det händer inget alls vare sig med eller utan fjärrkontroll. :(
Problemet är väl att NH ska känna fjärrkontrollen, men det gör det
ju på något vis. Dummy1-symbolen tänds ju men scriptet startar inte.

Re: Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by Snoopy
Testade lite... om jag byter executedByCmd() mot deviceIsOn(dummy1) så tänds enhet 16 när enhet 26
tänts med fjärrkontrollen (eller klicka på symbolen) men timern tycks inte starta eftersom
ingen enhet släcks efter 10s. :shock:
Med det gick (lite) åt rätt håll.

Re: Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by hekj
Snoopy wrote:Testade lite... om jag byter executedByCmd() mot deviceIsOn(dummy1) så tänds enhet 16 när enhet 26
tänts med fjärrkontrollen (eller klicka på symbolen) men timern tycks inte starta eftersom
ingen enhet släcks efter 10s. :shock:
Med det gick (lite) åt rätt håll.
Om du lägger in en utskrift (echo) i början i bsh filen så vet du iaf när filen exekveras.

Code: Select all

echo("26.bsh executed");
Följande kodsnutt skriver ut "anropskedjan".

Code: Select all

echo(getExecutedBy());
Förklaring av vad bokstäverna betyder:
public static final String EXECUTED_BY_COMMAND = "C";
public static final String EXECUTED_BY_EVENT = "E";
public static final String EXECUTED_BY_TIMER = "T";
public static final String EXECUTED_BY_UPDATE = "U";
public static final String EXECUTED_BY_WEB = "W";
public static final String EXECUTED_BY_BSH = "B";
public static final String EXECUTED_BY_MENUITEM = "I";
public static final String EXECUTED_BY_START = "S";
public static final String EXECUTED_BY_MODE = "M";
public static final String EXECUTED_BY_ATTRIBUTE = "A";
public static final String EXECUTED_BY_EXCEPTION = "X";

Re: Hur få fjärrkontrollen att aktivera enheter????

Posted: Fri Mar 17, 2023 9:45 am
by Snoopy
Testade och fick följande:
När jag aktiverade med musen i NH blev svaret [echo, CBT] (allt fungerar här)
och när jag använde fjörrkontrollen fick jag [echo,U].
Men att timern inte startar visste jag ju. Undrar bara varför.