Guld – Basal Script Opbygning

Script opbygning

Start

Simple kommandoer for toggle relæ, eller On/Off

// Toggler relæ
Shelly.call("switch.toggle", {id:0})

// Sætter relæ til ON
Shelly.call("switch.set", {id:0, on:true})

// Sætter relæ til OFF
Shelly.call("switch.set", {id:0, on:false})

 →

// Intet i loggen

↓

Shelly.Call med function for at får data tilbage, men shelly sriver kun de sidste 8 linjer, derfor skal vi bruge  print(JSON.stringify(res))

// Hente status på Switch
Shelly.call("switch.getstatus", {id:0}, function(res){
  print(res)
})


 →

  // Shelly skriver kun de sidste 8 linjer
  "aenergy": { "total": 0,
    "by_minute": [ 0, 0, 0 ],
    "minute_ts": 1780527540 },
  "ret_aenergy": { "total": 0,
    "by_minute": [ 0, 0, 0 ],
    "minute_ts": 1780527540 },
  "temperature": { "tC": 68.9, "tF": 156.1 }
 }

↓

Med JSON.stringify

Nu kan vi se hvad der fortæller status på relæ. Det er “output”, som pt. er slukket.

// For at få alt data må vi bruge JSON. stringify
Shelly.call("switch.getstatus", {id:0}, function(res){
  print(JSON.stringify(res))
})


 →

{"id":0,"source":"loopback","output":false,"apower":0,"voltage":243.4,"freq":50,"current":0,
"aenergy":{"total":0,"by_minute":[0,0,0],"minute_ts":1780528200},
"ret_aenergy":{"total":0,"by_minute":[0,0,0],"minute_ts":1780528200},
"temperature":{"tC":68.6,"tF":155.5}}

↓

Nu  kender vi Nøglen vi skal kigge på for at får status på relæ. 
Definere vi ved at bruge res.output.

// For at få alt data må vi bruge JSON

Shelly.call("switch.getstatus", {id:0}, function(res){
  print(res.output)
})


 →

// Fortæller relæ er slukket ved at angive false
false

↓

Hvis man skal bruge res.output flere gange, eller hvis udtrykket havde været langt.
Kan det være en fordel at tilføje værdien til en variabel.

// For at få alt data må vi bruge JSON

Shelly.call("switch.getstatus", {id:0}, function(res){
  let status = res.output
  print(status)
})


 →

// Fortæller relæ er slukket ved at angive false
false

↓

For at få noget til at ske baseret på denne staus skal vi bruge if/else



Shelly.call("switch.getstatus", {id:0}, function(res){
  let status = res.output
  print(status)
  if (status == true) {
    print("Er tændt, så slukker"),
    Shelly.call("switch.toggle", {id:0})
  } else {
    print("Er slukket, så tænder"),
    Shelly.call("switch.toggle", {id:0})
  }
  
})


 →

true
Er tændt, så slukker

↓

Tilføje timer så det  auto køre i interval.
Pakket det tidligere ind i en function, så den nemt kan kaldes.
og tilføjet Timer.set, der køre funktion hvert 5 sek.

function tid() {
  Shelly.call("switch.getstatus", {id:0}, function(res){
      if (res.output == true) {
      print("Er tændt, så slukker"),
      Shelly.call("switch.toggle", {id:0})
    } else {
      print("Er slukket, så tænder"),
      Shelly.call("switch.toggle", {id:0})
    }
  });
}

//functionen er sat in her for at den skal køre med det samme når script starter
tid();


// Timer er sat ind og kalder functionen tid(), hvert 5 min
Timer.set(5000, true, function(){
  tid();
})

 →

Er slukket, så tænder
02:46:23
Er tændt, så slukker
02:46:26
Er slukket, så tænder
02:46:31
Er tændt, så slukker
02:46:36
Er slukket, så tænder