SHARE
TWEET

Untitled

a guest Jun 10th, 2017 80 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --[[
  2. %% properties
  3. 71 value
  4. %% globals
  5. --]]
  6.  
  7. ---------------------------------------------------
  8. --------- Verwendung ------------------------------
  9. --[[
  10. Push-Benachrichtigung wenn die Waschmaschine, der Trockner oder die Spülmaschine fertig ist.
  11. Inklusive Report zur Laufzeit und dem Verbrauch.
  12.  
  13. Es wird benötigt: Fibaro Wallplug
  14.  
  15. --]]
  16.  
  17. ---------------------------------------------------
  18. --------- Schleifenschutz -------------------------
  19.  
  20. if (fibaro:countScenes()>1) then
  21. fibaro:debug('Kill the second scene!');
  22. fibaro:abort();
  23. end
  24.  
  25. ---------------------------------------------------
  26. ------------- Config ------------------------------
  27.  
  28. device              = 'Die Waschmaschine'
  29. deviceID            = 71
  30. minPower            = 3
  31. minIntervals        = 5
  32. energyRate          = 0.26
  33. currency            = 'EUR'
  34. pushDevices         = {74,12}
  35. advDebug            = true
  36. version             = 'v1.0'
  37.  
  38. ---------------------------------------------------
  39. --------- Farbiges Debug --------------------------
  40. function debug( color, message )
  41.     fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span"));
  42. end
  43.  
  44. ---------------------------------------------------
  45. ------------- stime -------------------------------
  46. -- Funktion zum Umrechnen von Uhrzeiten in Sekunden seit 0 Uhr
  47. ---------------------------------------------------
  48. function stime(s)
  49.     local pattern = "(%d+):(%d+):(%d+)"
  50.     local hours, minutes, seconds = string.match(s, pattern)
  51.     return (hours*3600)+(minutes*60)+seconds
  52. end
  53.  
  54. ---------------------------------------------------
  55. ------------- secToTime ---------------------------
  56. -- Sekunden in eine Uhrzeit wandeln
  57. ---------------------------------------------------
  58. function secToTime(s)
  59.     return string.format("%.2d:%.2d:%.2d", s/(60*60), s/60%60, s%60)
  60. end
  61.  
  62. ---------------------------------------------------
  63. --------- Send Push -------------------------------
  64. function sendPopUp(title)
  65.     energyMeasure   = fibaro:getValue(deviceID, "energy") - (startMeasure)
  66.     energyPrice     = energyMeasure * energyRate
  67.     duration        = ((stime(os.date('%H')..':'..os.date('%M')..':'..os.date('%S'))) - startTime )
  68.     duration        = secToTime(duration)
  69.  
  70.     debug('red','Fertig, sende Push. Verbrauch: '..energyMeasure..' Duration: '..duration)
  71.     message         = 'Es wurden '..energyMeasure..' KWh ('..energyPrice..' '..currency..') verbraucht und das Programm lief '..duration
  72.  
  73.     HomeCenter.PopupService.publish({
  74.      title = title,
  75.      subtitle = os.date("%I:%M:%S %p | %B %d, %Y"),
  76.      contentTitle = device .. ' ist fertig!',
  77.      contentBody = message,
  78.      type = 'Info'
  79.     })
  80.    
  81.     if pushDevices then
  82.         for j = 1, #pushDevices do
  83.             fibaro:call(pushDevices[j], "sendPush", device.." ist fertig. Für Details bitte klicken");
  84.         end
  85.     end
  86. end
  87.  
  88. ---------------------------------------------------
  89. --------- Timer -----------------------------------
  90. function timer()
  91.         power           = tonumber(fibaro:getValue(deviceID, "power"))     
  92.         duration        = ((stime(os.date('%H')..':'..os.date('%M')..':'..os.date('%S'))) - startTime )
  93.         duration        = secToTime(duration)
  94.        
  95.         if  power < minPower then
  96.             counter = counter + 1
  97.             debug('green','Verbrauch von '..device..' unter '..minPower..' Watt. Counter: '..counter..'/'..minIntervals..' Laufzeit bisher: '..duration )
  98.         else
  99.             debug('green',device..' läuft noch. '..power..' Watt Verbrauch. Laufzeit bisher: '..duration)
  100.             counter = 0
  101.         end
  102. end
  103.  
  104. power               = tonumber(fibaro:getValue(deviceID, "power"))
  105. startMeasure        = fibaro:getValue(deviceID, "energy")
  106. startTime           = stime(os.date('%H')..':'..os.date('%M')..':'..os.date('%S'))
  107.  
  108. counter             = 0
  109.  
  110. if tonumber(fibaro:getValue(deviceID, "power")) >4 then
  111.     debug("yellow","--- Start Geräteüberwachung, powered by mkshb.de ---")
  112.     debug('green',device..' eingeschaltet.')
  113.     fibaro:setGlobal("SONOS_MUSIC", "DiskStation/music/Rocki/waschmaschienean.mp3");
  114.     fibaro:call(224, "pressButton", "2");
  115.     while counter < minIntervals do
  116.         fibaro:sleep(60000)
  117.         timer()
  118.     end
  119.     -- Wenn Counter abgelaufen, dann Benachrichtigung
  120.     sendPopUp(device)
  121.     fibaro:setGlobal("SONOS_MUSIC", "DiskStation/music/Rocki/wfertig.mp3");
  122.     fibaro:call(224, "pressButton", "2");
  123.     debug("yellow","--- Ende Geräteüberwachung, powered by mkshb.de ---")
  124.     fibaro:abort()
  125. else
  126.     debug('red',device..' ist momentan ausgeschaltet')
  127. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top