Energie und Kostenberechnung

Hallo @jeep
Danke für deine Verbesserungen, habs gleich eingebaut.

Ich weiß dass das Skript noch viel Potentiel hat!
Meine Kenntnisse waren schon mit dem zusammenbauen der unterschiedlichen Codeteile aus dem Forum leicht überfordert, wie du gesehen hast :wink:
Aber ich freue mich, wenn sich jemand findet, der es noch besser macht, DANKE!

Hallo Zusammen,

das Skript wäre genau das was ich suche, nur dass dies mir automatisch z.B. monatlich einen Report zusenden sollte.
Der Umfang vom bekannten Batterie-Skript diesbezüglich ist super, danke Jeep! :slight_smile:
Leider fehlt mir der Durchblick um Teile, sofern dies überhaupt möglich ist, hier in diesem zu übernehmen.
Kann da jemand weiterhelfen?

Vielen Dank

Grüße
Volker

Hi @Volker1,

ich werde mal was entsprechendes basteln damit es automatische Reports gibt.

Hallo zusammen,
habe mal ein wenig “copy & paste” aus dem Batteriecheckscript gemacht. Deshalb könnte der Code nicht benutze Teile enthalten.
Das ist jetzt noch nicht ganz das was ich mir vorstelle, aber es gibt eine automatische Mail an einen einstellbaren Tag im Monat.
Außerdem habe ich die Berechnung des Verbrauchs auf Tage umgestellt. Somit kann man 1 Woche(7), 2 Wochen(14) oder mit 365 den
Jahresverbrauch ermitteln. Default ist 1 Monat also 30 Tage. Sinnvoll ist natürlich der 1. des Monats einzustellen, wenn man den Report
für das vergangene Monat haben will.
Für eine spätere Version plane ich mehrere Tage im Monat einstellbar zu machen. Und die Dokumentation fehlt auch noch.

Edit: fast vergessen, das Script kann natürlich jederzeit manuell aufgerufen werden, aber die Mail kommt nur am eingestellten Tag.

--[[
%% autostart
%% properties
%% events
--]]
-- Determine and calculate the power consumption in a given period of time.
-- Version       : 0.0.5
-- Created by    : pblacky, jeep
-- Reloease date : 08.Mar. 2018
--
-- Save your IDs before updating.!
--
local sourceTrigger = fibaro:getSourceTrigger(); 
local vbrIDs = {39,81,166,180,199,285,339,383,391} --IDs der Geräte zur Auswertung
local days   = 30    -- Anzahl der Tage für Statistik
local ct     = 28.50 -- Strompreis
local userId    = 2  -- Email USer
local checktime = "17:30"
local mailday   = 8 --Achtung, das ist der Tag des Monats, [1-31]   
--   ab hier nichts mehr ändern! ----------
local Debug = function ( color, message ) 
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) 
end

local sek    = days * 86400
local status = 'Energieverbrauchs Report für die letzten ' .. days .. ' Tage.\n'
local StartEnergiemessung = (os.time()-sek)
local EndEnergiemessung = os.time()
Debug('lightblue', status)

local function energieverbrauch(DeviceID)
  local jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..DeviceID)
  return (jsonListe[1].kWh)
end

local function vbr(IDs)
  local kilowatts = 0
  local sum = 0
  for i=1,#IDs do
    local DeviceID = IDs[i]
    local DeviceName  = fibaro:getName(IDs[i])
    local DeviceRoom  = fibaro:getRoomNameByDeviceID(IDs[i])
    local total = energieverbrauch(DeviceID)
    local euro  = string.format("%.2f", total * (ct / 100))
    kilowatts   = kilowatts + total
    sum  = sum + total * (ct / 100) 
    Debug("orange", DeviceRoom.." - "..DeviceName.." - " .. total .." kWh in ".. days.. " Tag(en) - € ".. euro)
    status = status .. DeviceRoom.." - "..DeviceName.." - " .. total .." kWh in "..days.. " Tag(en) - € ".. euro ..'\n'
  end
  local sum = string.format("%.2f", sum)
  status = status .. 'Verbrauch total----------------: '.. kilowatts .. ' kWh \n'
  status = status .. 'Summe gesamt----------------: '.. sum .. ' €'
  Debug("yellow",'Verbrauch total----------------: '.. kilowatts .. ' kWh')
  Debug("yellow",'Summe gesamt----------------: '.. sum .. ' €')
  
  if tonumber(os.date('%d')) == mailday  then 
     fibaro:call(userId, "sendEmail","Fibaro-Info: Verbrauchsstatistik", status)
  end
end

function main()
   local currentDate = os.date("*t");
   local currenthour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
   weekday = currentDate.wday
   local startSource = fibaro:getSourceTrigger();
   if currenthour == checktime then
      vbr(vbrIDs)
   end
   setTimeout(main, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
    main()
else
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
    weekday = currentDate.wday
    if (startSource["type"] == "other")	then
      vbr(vbrIDs)
    end
end

Hallo @pblacky und andere Verbrauchsberechner,

rechtzeitig zum Wochenende gibt’s noch ein Update. Dazu bitte unbedingt das angehängte PDF lesen. Zum groß Testen hatte ich leider
wenig Zeit, denke aber das ich keine groben Fehler eingebaut habe. Ich hoffe aber dass ich die Wünsche einiger getroffen habe.
Bitte unbedingt die Variable tabmd in der Zeile 22 beachten. Sie steuert den Zeitraum der berechnet werden soll.
Was ist neu? Bessere Formatierung des Ausgabetextes, viele Codeoptimierungen, automatische Berechnung des Zeitraums anhand einer
lookup table, neue Funktionen usw. Sichert Eure Verbrauchs IDs vor dem update.
Wer noch Ideen oder Wünsche hat, immer her damit.

--[[
%% autostart
%% properties
%% events
--]]
--
-- Determine and calculate the power consumption in a given period of time.
-- Version      : 0.1.1
-- Created by   : pblacky, jeep
-- Release date : 10 Mar. 2018
--
-- Save your IDs before updating.!
--
local sourceTrigger = fibaro:getSourceTrigger(); 
local vbrIDs = {39,81,166,180,199,285,339,383,391} --IDs der Geräte zur Auswertung
local cent   = 28.50 -- Strompreis
local userId    = 2  -- Email USer
local checktime = "21:10"
local maildays  = {1,7,10,14,25} --Achtung, das ist der Tag des Monats, [1-31]   
-- Ermitteln des Tages im Monat 
local mday  = tonumber(os.date('%d'))
local tabmd = { [1] = "30", [7] = "7", [14] ="14", [10] = "365" } -- [1 - 31]
local days  = (tabmd[mday]) 

if days == nil then
   days = 1 
end  

local Debug = function ( color, message ) 
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) 
end

local function contains(maildays, val)
   for i=1,#maildays do
      if maildays[i] == val then 
         return true
      end
   end
   return false
end

local function formatString(name, room)
   local slength = string.len(name) + string.len(room)
   local dlength = 35 - slength 
   local dots    = string.rep ("-", dlength)
   return dots
end 

local function calcperiod(ndays)
   sek = ndays * 86400
   status = 'Energieverbrauchs Report für die/den letzten ' .. ndays .. ' Tag(e).'
   StartEnergiemessung = (os.time()-sek)
   EndEnergiemessung = os.time()
end

local function energieverbrauch(DeviceID)
  local jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..DeviceID)
  return (jsonListe[1].kWh)
end

local function vbr(IDs)
  Debug('lightblue', status)
  local kilowatts = 0
  local sum = 0
  for i=1,#IDs do
    local DeviceID = IDs[i]
    local DeviceName  = fibaro:getName(IDs[i])
    local DeviceRoom  = fibaro:getRoomNameByDeviceID(IDs[i])
    local total = energieverbrauch(DeviceID)
    local euro  = string.format("%.2f", total * (cent / 100))
    local dots  = formatString(DeviceName, DeviceRoom)
    kilowatts   = kilowatts + total
    sum  = sum + total * (cent / 100) 
    Debug("orange", DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro)      
    if i==1 then
       status = status ..'\n'.. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    else  
       status = status .. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    end  
  end
  local sum = string.format("%.2f", sum)
  status = status .. 'Verbrauch total----------------: '.. kilowatts .. ' kWh \n'
  status = status .. 'Summe gesamt----------------: '.. sum .. ' €'
  Debug("yellow",'Verbrauch total----------------: '.. kilowatts .. ' kWh')
  Debug("yellow",'Summe gesamt----------------: '.. sum .. ' €\n')
  
  if contains(maildays, mday) then
     fibaro:call(userId, "sendEmail","Fibaro-Info: Verbrauchsstatistik", status)
     Debug('lightgreen', 'Mail gesendet an User-Id: ' .. userId) 
  end
end

calcperiod(days)
function main()
   local currentDate = os.date("*t");
   local currenthour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
   local startSource = fibaro:getSourceTrigger();
   if currenthour == checktime then
      vbr(vbrIDs)
   end
   setTimeout(main, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
    main()
else
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
    if (startSource["type"] == "other")	then
      vbr(vbrIDs)
    end
end

hallo @jeep,
Danke für dieses vielversprechende Update, habe es gleich mal für mich angepasst und aktiviert!
Habe es gerade gestartet und im Debug Fenster wurde alles korrekt angezeigt, aber Email wurde keines verschickt.

Habe den heutigen Tag richtig eingestellt, zumindest glaube ich das:

local sourceTrigger = fibaro:getSourceTrigger()
local vbrIDs = {6,38,41,43,45,85,87,142,145,147,151,153,155,169,182,179,185,215,250,256,283,284,288,293,302,326,330,334,338,350,418,424,425,427,429,431,453,454} 
local cent   = 22.41 -- Strompreis
local userId = 2  -- Email USer
local checktime = "21:10"
local maildays  = {1,14} --Achtung, das ist der Tag des Monats, [1-31]   
-- Ermitteln des Tages im Monat 
local mday  = tonumber(os.date('%d'))
local tabmd = { [1] = "30", [14] = "365" } -- [1 - 31]
local days  = (tabmd[mday]) 

Mit diesen Einstellungen sollte es eigentlich HEUTE eine Jahresberechnung verschicken.

Habe die Beschreibung in der PDF nicht richtig verstanden:
checktime = Die Uhrzeit um die das Script einen Check im Debug-Fenster ausgibt.
Bedeutet das, das Skript läuft nur heute um 21:41 Uhr ???

Hi @pblacky,

habe das script gerade 3 mal gestartet und auch 3 Emails erhalten. Hängt manchmal von den Mailservern ab ob früher oder später zugestellt wird. Alles andere hast Du korrekt interpretiert, heute kommt eine Jahresberechnung laut Deinen Vorgaben. Die würde an jedem 14-ten eines Monats kommen.
Zu checktime - das läuft jeden Tag, hier um 21:10 und schreibt das Ergebnis im Debug-Fenster. Ich werde das PDF überarbeiten hab es auf die Schnelle gemacht.
Ich hänge gerade noch ein Update an. Eine Zeile mit Ausführungsdatum in der Debugausgabe ist dazugekommen…

--[[
%% autostart
%% properties
%% events
--]]
--
-- Determine and calculate the power consumption in a given period of time.
-- Version      : 0.1.2
-- Created by   : pblacky, jeep
-- Release date : 14.Mar. 2018
--
-- Save your IDs before updating.!
--
local sourceTrigger = fibaro:getSourceTrigger(); 
local vbrIDs = {39,81,166,180,199,285,339,383,391} --IDs der Geräte zur Auswertung
local cent   = 28.50 -- Strompreis
local userId    = 2  -- Email USer
local checktime = "14:42"
local maildays  = {1,7,13,14} --Achtung, das ist der Tag des Monats, [1-31]   
-- Ermitteln des Tages im Monat 
local mday  = tonumber(os.date('%d'))
local tabmd = { [1] = "30", [7] = "7", [14] ="14",  } -- [1 - 31]
local days  = (tabmd[mday]) 

if days == nil then
   days = 1 
end  

local Debug = function ( color, message ) 
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) 
end

local function contains(maildays, val)
   for i=1,#maildays do
      if maildays[i] == val then 
         return true
      end
   end
   return false
end

local function formatString(name, room)
   local slength = string.len(name) + string.len(room)
   local dlength = 35 - slength 
   local dots    = string.rep ("-", dlength)
   return dots
end 

local function calcperiod(ndays)
   sek = ndays * 86400
   status = 'Energieverbrauchs Report für die/den letzten ' .. ndays .. ' Tag(e).'
   status = status ..'\n'.. "Erstellt am " .. os.date('%c')
   StartEnergiemessung = (os.time()-sek)
   EndEnergiemessung = os.time()
end

local function energieverbrauch(DeviceID)
  local jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..DeviceID)
  return (jsonListe[1].kWh)
end

local function vbr(IDs)
  Debug('lightblue', status)
  local kilowatts = 0
  local sum = 0
  for i=1,#IDs do
    local DeviceID = IDs[i]
    local DeviceName  = fibaro:getName(IDs[i])
    local DeviceRoom  = fibaro:getRoomNameByDeviceID(IDs[i])
    local total = energieverbrauch(DeviceID)
    local euro  = string.format("%.2f", total * (cent / 100))
    local dots  = formatString(DeviceName, DeviceRoom)
    kilowatts   = kilowatts + total
    sum  = sum + total * (cent / 100) 
    Debug("orange", DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro)      
    if i==1 then
       status = status ..'\n'.. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    else  
       status = status .. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    end  
  end
  local sum = string.format("%.2f", sum)
  status = status .. 'Verbrauch total----------------: '.. kilowatts .. ' kWh \n'
  status = status .. 'Summe gesamt----------------: '.. sum .. ' €'
  Debug("yellow",'Verbrauch total----------------: '.. kilowatts .. ' kWh')
  Debug("yellow",'Summe gesamt----------------: '.. sum .. ' €\n')
  
  if contains(maildays, mday) then
     fibaro:call(userId, "sendEmail","Fibaro-Info: Verbrauchsstatistik", status)
     Debug('lightgreen', 'Mail gesendet an User-Id: ' .. userId) 
  end
end

calcperiod(days)
function main()
   local currentDate = os.date("*t");
   local currenthour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
   local startSource = fibaro:getSourceTrigger();
   if currenthour == checktime then
      calcperiod(days)
      vbr(vbrIDs)
   end
   setTimeout(main, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
    main()
else
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
    if (startSource["type"] == "other")	then
      vbr(vbrIDs)
    end
end

EDIT: hab noch ein screenshot angehängt.

verbrauch14.jpg

Hallo jeep,
Ich hab jetzt 1 Stunde rumgespielt und kann leider nicht herausfinden, wieso das Skript keine Mails verschickt ;-(
Hab die Variable im Skript durch die Zahl ersetzt, und einige andere Dinge probiert, ohne Erfolg.

Meine anderen Skripte schicken alle Mails, also hab ich ein Experiment gemacht:

if contains(maildays, mday) then
     fibaro:call(userId, "sendEmail","Fibaro-Info: Verbrauchsstatistik", status)
     Skriptnummer=270
     fibaro:call(2, "sendEmail","Info: leeres Skript aufgerufen!","LUA."..Skriptnummer.." !")
     Debug('lightgreen', 'Mail gesendet an User-Id: ' .. userId) 
  end

Das erste SendEmail in schickt KEIN Mail, das ZWEITE Sendmail wird verschickt. In EIN und DEMSELBEN Skript.
Die Punkte bei meinte Variable hab ich bei “status” auch probiert, geht auch nicht!
ich verstehs nicht mehr …

Hi pblacky,
das versteh ich jetzt auch nicht.
Frage - erscheint unten im Debug Fenster die Meldung:
“Mail gesendet an User-Id: 2”
Die Zeile mit dem Mailversand habe ja nicht mal abgeändert. Schon seltsam, oder typisch Fibaro? ?

So ein Mist, gerade festgestellt, setz mal die User in {}
Keine Ahnung warum es bei mir funktioniert.

Danke für den Tipp, aber die Variable “userId” funktioniert nur ohne Klammern, habs gerade getestet!
Sonst würde ich auch die 2.Mail mit der richtigen Userid nicht bekommen:
[crayon-5aaa158d3647b352918953/]

Die Mail mit Mailtest bekomm ich, die mit dem status NICHT.
Was ich interessant finde, dass wenn ich verscuhe die Variable “userID” ohne die “…” einzubinden es NICHT funktioniert.
Beispiel:fibaro:call(userId, “sendEmail”,“Info: Mailtest!”,userId)
Sendet nix!
fibaro:call(userId, “sendEmail”,“Info: Mailtest!”,"ID: "… userId… " ")
funktioniert!
Wie ist das mit der Variable “status” ??
Vielleicht kann das mal jemand außer uns probieren, dann sehen wir ob es reproduzierbar ist !?
Ich habe übrigens Software Version 4.160, wie sieht das bei dir aus?

Hi pblacky,

alles klar, mein Fehler, vergiss meinen letzten Post. Ich habe mich da selbst überlistet. Die function sendMail, die an mehreren Usern aus dem Array userId Mails verschicken sollte hatte ich noch gar nicht eingebaut. Trotzdem verstehe ich nicht warum die letzte Version bei Dir nicht funktioniert. Wenn ich Deine 2 letzten Beispiele in Gedanken auflöse mit userId, subject und mailtext, erhalte ich das:
fibaro:call(2, “sendEmail”, “Info: Mailtest!”, 2)
fibaro:call(2, “sendEmail”, “Info: Mailtest!”,"ID: " 2)
Die Werte hinter dem letzten Komma, wären der Mailtext in unserem Fall wird der status als Mailtext verschickt. Egal ich habe die Function eingebaut so das userIDs zwingend in {} stehen muss.

Changelog für Version 0.1.3
– Function eingefügt um die E-Mail an mehreren IDs zu verschicken.

--[[
%% autostart
%% properties
%% events
--]]
--
-- Determine and calculate the power consumption in a given period of time.
-- Version      : 0.1.3
-- Created by   : pblacky, jeep
-- Release date : 15 Mar. 2018
--
-- Save your IDs before updating.!
--
local sourceTrigger = fibaro:getSourceTrigger(); 
local vbrIDs = {39,81,166,180,199,285,339,383,391} --IDs der Geräte zur Auswertung
local cent   = 28.50 -- Strompreis
local userIDs    = {2,303}  -- Email Users
local checktime = "21:10"
local maildays  = {1,7,13,14,15} --Achtung, das ist der Tag des Monats, [1-31]   
local subject   = "Fibaro-Info: Verbrauchsstatistik"
-- Ermitteln des Tages im Monat 
local mday  = tonumber(os.date('%d'))
local tabmd = { [1] = "30", [7] = "7", [14] ="14", [15] = "15" } -- [1 - 31]
local days  = (tabmd[mday]) 

if days == nil then
   days = 1 
end  

local Debug = function ( color, message ) 
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) 
end

local function sendMail()
  if (userIDs[1] ~= nil) then
    for m=1, #userIDs do
      if userIDs[m] ~= nil then
        fibaro:call(userIDs[m], "sendEmail", subject, status)
         Debug('lightgreen', 'Mail gesendet an User-Id: ' .. userIDs[m]) 
      end
    end
  end
end

local function contains(maildays, val)
   for i=1,#maildays do
      if maildays[i] == val then 
         return true
      end
   end
   return false
end

local function formatString(name, room)
   local slength = string.len(name) + string.len(room)
   local dlength = 35 - slength 
   local dots    = string.rep ("-", dlength)
   return dots
end 

local function calcperiod(ndays)
   sek = ndays * 86400
   status = 'Energieverbrauchs Report für die/den letzten ' .. ndays .. ' Tag(e).'
   status = status ..'\n'.. "Erstellt am " .. os.date('%c')
   StartEnergiemessung = (os.time()-sek)
   EndEnergiemessung = os.time()
end

local function energieverbrauch(DeviceID)
  local jsonListe = api.get("/energy/"..StartEnergiemessung.."/"..EndEnergiemessung.."/compare/devices/power/"..DeviceID)
  return (jsonListe[1].kWh)
end

local function vbr(IDs)
  Debug('lightblue', status)
  local kilowatts = 0
  local sum = 0
  for i=1,#IDs do
    local DeviceID = IDs[i]
    local DeviceName  = fibaro:getName(IDs[i])
    local DeviceRoom  = fibaro:getRoomNameByDeviceID(IDs[i])
    local total = energieverbrauch(DeviceID)
    local euro  = string.format("%.2f", total * (cent / 100))
    local dots  = formatString(DeviceName, DeviceRoom)
    kilowatts   = kilowatts + total
    sum  = sum + total * (cent / 100) 
    Debug("orange", DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro)      
    if i==1 then
       status = status ..'\n'.. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    else  
       status = status .. DeviceRoom.." - "..DeviceName .. dots .. total .." kWh = € ".. euro ..'\n'
    end  
  end
  local sum = string.format("%.2f", sum)
  status = status .. 'Verbrauch total----------------: '.. kilowatts .. ' kWh \n'
  status = status .. 'Summe gesamt----------------: '.. sum .. ' €'
  Debug("yellow",'Verbrauch total----------------: '.. kilowatts .. ' kWh')
  Debug("yellow",'Summe gesamt----------------: '.. sum .. ' €\n')
  
  if contains(maildays, mday) then
     sendMail()
  end
end

calcperiod(days)
function main()
   local currentDate = os.date("*t");
   local currenthour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
   local startSource = fibaro:getSourceTrigger();
   if currenthour == checktime then
      calcperiod(days)
      vbr(vbrIDs)
   end
   setTimeout(main, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
    main()
else
    local currentDate = os.date("*t");
    local startSource = fibaro:getSourceTrigger();
    if (startSource["type"] == "other")	then
      vbr(vbrIDs)
    end
end

Screenshot im Anhang.

stromverbrauch.jpg

Habs gerade eingebaut, klappt trotzdem nicht ;-(
Was hast du denn für eine Softwareversion in deiner HC2?
Vielleicht kommen wir ja so weiter…

Oder es probiert jemand außer uns Beiden das Skript mal aus und gibt uns hier Feedback :wink:

Hi pblacky,
das habe ich mir fast gedacht, denn es ist im Prinzip kein Unterschied zur Vorgängerversion, nur ein anderer Weg und wie Du anhand des
Screenshot siehst, funktioniert es bei mir. Ach so, Firmware ist auch die 4.160. Es ist jetzt alles genau so wie beim Batteriecheck script.
Was mich interessiert - steht im Debug unten die Meldung, dass die Mail verschickt wurde? Ein screenshot wäre auch gut.
Natürlich wäre es super wenn noch jemand das Testen könnte.

EDIT:hab mal hier im Forum was gelesen das es nach einem Neustart funktioniert hat, weiß aber nicht mehr im welchen Kontext.

Ich habe inzwischen einen zusätzlichen Email USer angelegt und diesen mit einer gmail Adresse eingebunden.
Im Debug Fenster sieht alles gut aus und die Meldung dass 2 Emails verschickt wurden, kommt! (siehe Screenshot)

Meine erste ID ist ebenfalls “2” daher musste ich hier nichtmal was ändern :wink:

2018-03-15-17_05_23-Home-Center-2.jpg

Das sieht alles gut aus, schwer zu verstehen. Könntest Du noch einen Versuch machen und in Zeile 25 ein:
local status = ' '
einfügen.

Hi pblacky,

ich glaube die Email ist für Fibaro einfach zu groß. Teste es mal mit ungefähr 10 devices. Ich bin mir sicher es wird funktionieren. :wink:

Ja, du hast recht, DAS IST ES!!
Mit bis zu ca. 30 Devices klappt es, darüber ist Schluß.

Deshalb ging es auch bei dir und bei mir nicht mehr :wink:
Werde halt einfach 2 Skripte einsetzen, eines für wichtige Devices und eines für unwichtige :wink:

OK, das wäre eine Lösung. Bin aber trotzdem froh das ich keinen Mist programmiert habe und somit auch das Vorgängerscript funktioniert hätte. Auf alle Fälle werde ich bei Fibaro nachfragen ab wie viele Zeichen sie die Mails im Müll werfen. Das ist äußerst unschön.

Alternativ könnten wir genau wie beim Batteriecheckscript die Anzahl der Devices pro Email begrenzen. Die Lösung gefällt mir ebenso wenig, aber was besseres fällt mir nicht ein.

Also eines muss ich mal klarstellen, deine Skripte sind SUPER!
Und ich bin sehr dankbar das du meinen sehr einfachen geistigen Erguss hier zur Perfektion führst :wink:

Wenn du die Option der Begrenzung noch einbauen willst, freue ich mich.
Aber ich komme mit 30 Devices sicher auch aus.
Es war nur meine Euphorie die der Meinung war, gleich fast ALLE Stromverbraucher einzubauen :wink: