Habe noch eine Frage zu dem Thema, habe ein Skript (auch von hier übernommen). Auf der Oberfläche der HC2 kommt folgendes zurück:
[DEBUG] 13:39:29: ------------------------------------------------------------
[DEBUG] 13:39:29: 1) WasserSensorWaschr (Waschraum) - Batterie: 76 % OK
[DEBUG] 13:39:29: 2) WasserSensorTechnikr (Technikraum) - Batterie: 54 % OK
[DEBUG] 13:39:29: 3) Beweg_Diele (Diele) - Batterie: 100 % OK
[DEBUG] 13:39:29: 4) Rauchmeld_Wohnzimmer (Wohnzimmer) - Batterie: 100 % OK
[DEBUG] 13:39:29: 5) Rauchmelder_Technikr (Technikraum) - Batterie: 100 % OK
[DEBUG] 13:39:29: 6) ThermostatGBad (GästeBad) - Batterie: 68 % OK
[DEBUG] 13:39:29: 7) Beweg_Vorraum (Vorraum) - Batterie: 81 % OK
[DEBUG] 13:39:29: 8) TempBad (Bad) - Batterie: 100 % OK
[DEBUG] 13:39:29: 9) Beweg_Empore (Empore) - Batterie: 100 % OK
[DEBUG] 13:39:29: 10) Temp_Gästezimmer (Gästezimmer) - Batterie: 67 % OK
[DEBUG] 13:39:29: 11) ButtonWohnz (Wohnzimmer) - Batterie: 100 % OK
[DEBUG] 13:39:29: 12) ButtonSchlafzimmer (Schlafzimmer) - Batterie: 90 % OK
[DEBUG] 13:39:29: 13) Fenster_Gästezimmer (Gästezimmer) - Batterie: 100 % OK
[DEBUG] 13:39:29: 14) Rauchmeld_Waschraum (Waschraum) - Batterie: 100 % OK
[DEBUG] 13:39:29: 15) Button_Hobbyraum (Hobbyraum) - Batterie: 100 % OK
[DEBUG] 13:39:29: 16) Fenster_Hobbyraum (Hobbyraum) - Batterie: 100 % OK
[DEBUG] 13:39:29: 17) Rauchmeld_Kind (Kinderzimmer) - Batterie: 100 % OK
[DEBUG] 13:39:29: 18) Fenster_Waschraum (Waschraum) - Batterie: 100 % OK
[DEBUG] 13:39:29: 19) Fenster_Abstellkamme (Abstellkammer) - Batterie: 100 % OK
[DEBUG] 13:39:29: 20) Fenster_Gästebad (GästeBad) - Batterie: 100 % OK
[DEBUG] 13:39:29: Am :Mon Jun 19 13:39:29 2017
[DEBUG] 13:39:29: Gecheckt wurden 20 devices
in der Email kommt aber folgendes:
1) WasserSensorWaschr (Waschraum) - Batterie: 76 % OK
2) WasserSensorTechnikr (Technikraum) - Batterie: 54 % OK
3) Beweg_Diele (Diele) - Batterie: 100 % OK
4) Rauchmeld_Wohnzimmer (Wohnzimmer) - Batterie: 100 % OK
5) Rauchmelder_Technikr (Technikraum) - Batterie: 100 % OK
6) ThermostatGBad (GästeBad) - Batterie: 68 % OK
7) Beweg_Vorraum (Vorraum) - Batterie: 81 % OK
8) TempBad (Bad) - Batterie: 100 % OK
9) Beweg_Empore (Empore) - Batterie: 100 % OK
10) Temp_Gästezimmer (Gästezimmer) - Batterie: 67 % OK
11) ButtonWohnz (Wohnzimmer) - Batterie: 100 % OK
12) ButtonSchlafzimmer (Schlafzimmer) - Batterie: 90 % OK
13) Fenster_Gästezimmer (Gästezimmer) - Batterie: 100 % OK
14) Rauchmeld_Waschraum (Waschraum) - Batterie: 100 % OK
15) Button_Hobbyraum (Hobbyraum) - Batterie: 100 % OK
16) Fenster_Hobbyraum (Hobbyraum) - Batterie: 100 % OK
17) Rauchmeld_Kind (Kinderzimmer) - Batterie: 100 % OK
18) Fenster_Waschraum (Waschraum) - Batterie: 100 % OK
19) Fenster_Abstellk
An was könnte das liegen das es plötzlich abgeschnitten ist bei 19)
Anbei der Code:
--[[
%% autostart
%% properties
%% globals
--]]
-- file: Batteriestatus.lua
-- Batteriestatus checken und mailen
-- Copyleft 03-2017 {jeep}
local sourceTrigger = fibaro:getSourceTrigger();
local oldnodeId = nil ;
local status = ' ' ;
local n = 0;
local subject = "Batterien Status";
local userId = 2,137
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
devices = fibaro:getDevicesId({interfaces = {"battery"}, visible = true, enabled = true})
--print(json.encode(devices))
function checkBatteries()
Debug('withe', os.date('%c'));
for id = 1, #devices do
local batteryLevel = fibaro:get(devices[id], 'batteryLevel')
local nodeId = fibaro:get(devices[id], 'nodeId')
if batteryLevel ~= nil and nodeId ~= nil
then
local name = fibaro:getName(devices[id])
if oldnodeId ~= nodeId then
local room = fibaro:getRoomNameByDeviceID(devices[id])
if not(room == "unassigned") then
n = n+1
if tonumber(batteryLevel) >= 50 and tonumber(batteryLevel) <=100 then
Debug('green', "Batterie " ..name..' ('..room..') - Batterie: '..batteryLevel..' % OK')
status = status .. n .. ") " ..name..' ('..room..') - Batterie: '..batteryLevel..' % OK\n';
elseif
tonumber(batteryLevel) >= 25 and tonumber(batteryLevel) <= 50 then
Debug('yellow', "Batterie " ..name..' ('..room..') - Batterie: '..batteryLevel..' % Warnung')
status = status .. n .. ") " ..name..' ('..room..') - Batterie: '..batteryLevel..' % Warnung\n';
elseif
tonumber(batteryLevel) < 25 then
Debug('red', "Batterie " ..name..' ('..room..') - Batterie: '..batteryLevel..' % Kritisch')
status = status .. n .. ") " ..name..' ('..room..') - Batterie: '..batteryLevel..' % Kritisch\n';
elseif
tonumber(batteryLevel) > 100 then
Debug('red', "Batterie " ..name..' ('..room..') - Batterie: '..batteryLevel..' % vermutlich leer!')
status = status .. n .. ") " ..name..' ('..room..') - Batterie: '..batteryLevel..' % Fehler\n';
end
end
end
oldnodeId = nodeId
end
end
status = status .. 'Am :' .. os.date('%c') ..'\n'
status = status .. 'Gecheckt wurden ' ..n.. ' devices.'
Debug('withe', os.date('%c'));
Debug('withe', '------------------------------------------------------------')
Debug('withe', status)
fibaro:call(userId, "sendEmail", subject, status)
--fibaro:call(5, "sendEmail", subject, status)
end
function main()
local currentDate = os.date("*t");
local currenthour = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)
local weekday = currentDate.wday
local startSource = fibaro:getSourceTrigger();
if ((weekday == 1) and currenthour == "18:00") then
checkBatteries()
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
checkBatteries()
end
end