--[[
%% properties
%% globals
--]]
local isBatteryOperated = "1"
local minbattLevel = 20 -- Ställ in önskad larmnivå här!
local i = 0
local maxNodeID = 250
for i = 0, maxNodeID do
local type = fibaro:get (i, 'isBatteryOperated');
x , y = string.find (type, isBatteryOperated )
local batterylevel = tonumber(fibaro:getValue (i, 'batteryLevel'))
if x ~= nill and batterylevel ~= nill and (batterylevel <= minbattLevel or batterylevel == 255) then
local name = fibaro:getName(i)
fibaro:debug("Device "..i.."="..name.." bat. level="..batterylevel)
fibaro:call(2, "sendEmail", "Low battery on: "..name)
end
end
Jag kör denna 1gång per timme och får ett epost meddelande när batterinivån är 20 eller lägre
Skärmavbild 2013-04-11 kl. 20.10.11.png (35.24 KiB) Viewed 24008 times
--[[
%% properties
%% globals
--]]
function getIcon(lowest)
if (lowest > 90) then return 1017
elseif (lowest >= 50) then return 1016
elseif (lowest >= 10) then return 1014
else return 1015 end
end
local isBatteryOperated = "1"
local minbattLevel = 10 -- Ställ in önskad larmnivå här!
local i = 0
local maxNodeID = 250
local lowest = 100
local flag = 0;
for i = 0, maxNodeID do
local type = fibaro:get (i, 'isBatteryOperated');
if type and tonumber(type) == 1 then
local batterylevel = fibaro:getValue (i, 'batteryLevel');
if lowest > tonumber(batterylevel) then
lowest = tonumber(batterylevel)
end
if tonumber(batterylevel) <= minbattLevel then
local name = fibaro:getName(i)
flag = 1;
fibaro:call(4, "sendPush", "Low battery on:"..name)
fibaro:call(22, 'setProperty', 'ui.Battery.value',"Lågt batteri: " ..name)
elseif flag == 0 then
fibaro:call(22, 'setProperty', 'ui.Battery.value',"Allt ok. Lägst: " ..lowest .."%")
end
fibaro:call(22, "setProperty", "currentIcon", getIcon(lowest));
end
end
fibaro:sleep(86400000);
Skapa en virtuell label:
batteri
Skärmavbild 2013-12-31 kl. 14.28.37.png (13.61 KiB) Viewed 23420 times
Batteriet ändras beroende på hur mycket där är kvar.
1388355796_laptop_power.png (11.66 KiB) Viewed 23420 times
1388355775_battery_two_thirds.png (7 KiB) Viewed 23420 times
1388349807_battery_low.png (5.79 KiB) Viewed 23420 times
1388355769_battery_empty.png (3.91 KiB) Viewed 23420 times
--[[
%% properties
%% globals
--]]
function getIcon(lowest)
if (lowest > 90) then return 1017
elseif (lowest >= 50) then return 1016
elseif (lowest >= 10) then return 1014
else return 1015 end
end
local isBatteryOperated = "1"
local minbattLevel = 10 -- Ställ in önskad larmnivå här!
local i = 0
local maxNodeID = 250
local lowest = 100
local flag = 0;
for i = 0, maxNodeID do
local type = fibaro:get (i, 'isBatteryOperated');
if type and tonumber(type) == 1 then
local batterylevel = fibaro:getValue (i, 'batteryLevel');
if lowest > tonumber(batterylevel) then
lowest = tonumber(batterylevel)
end
if tonumber(batterylevel) <= minbattLevel then
local name = fibaro:getName(i)
flag = 1;
fibaro:call(4, "sendPush", "Low battery on:"..name)
fibaro:call(22, 'setProperty', 'ui.Battery.value',"Lågt batteri: " ..name)
elseif flag == 0 then
fibaro:call(22, 'setProperty', 'ui.Battery.value',"Allt ok. Lägst: " ..lowest .."%")
end
fibaro:call(22, "setProperty", "currentIcon", getIcon(lowest));
end
end
fibaro:sleep(86400000);
Skapa en virtuell label:
Skärmavbild 2013-12-31 kl. 14.28.37.png
Batteriet ändras beroende på hur mycket där är kvar.
1388355796_laptop_power.png
1388355775_battery_two_thirds.png
1388349807_battery_low.png
1388355769_battery_empty.png
Jag är nog förmodligen trög men jag får inte till detta. Vad behöver jag ändra för att det ska fungera hos mig? Ska man lägga till någon kod på sin virtuella enhet eller hur vet den vad den ska visa för info?
iSnobben wrote:Jag är nog förmodligen trög men jag får inte till detta. Vad behöver jag ändra för att det ska fungera hos mig? Ska man lägga till någon kod på sin virtuella enhet eller hur vet den vad den ska visa för info?
Då är vi två. Har än så länge dålig koll men learning by doing....och få en massa hjälp på forum
--[[
%% properties
%% globals
--]]
function getIcon(lowest)
if (lowest >= 90) then return 1010
elseif (lowest >= 40) then return 1009
elseif (lowest >= 20) then return 1008
else return 1007 end
end
local isBatteryOperated = "1"
local minbattLevel = 15 --alarm level!
local i = 0
local maxNodeID = 500
local lowest = 100
local name
local flag = 0
for i = 0, maxNodeID do
local type = fibaro:get (i, 'isBatteryOperated');
x , y = string.find (type, isBatteryOperated )
if x ~= nil
then
name = fibaro:getName(i)
batterylevel = fibaro:getValue (i, 'batteryLevel')
if tonumber(batterylevel) == 255 then
batterylevel = 10
end
if lowest > tonumber(batterylevel) then
lowest = tonumber(batterylevel)
end
fibaro:debug("ID = "..i..", Namn:"..name.."\t - \t batteri nivå: "..batterylevel.."%")
if tonumber(batterylevel) <= minbattLevel then
flag = 1
fibaro:call(93, 'setProperty', 'ui.Battery.value',"Lågt batteri: " ..name.." "..batterylevel.."%")
fibaro:debug("Låg batteri nivå på ID:"..i.." Namn:"..name.." "..batterylevel.."%")
--fibaro:call(229, "sendPush", "Låg batteri nivå på \n "..name.." ID:"..i.." - "..batterylevel.."%")
elseif flag == 0 then
fibaro:call(93, 'setProperty', 'ui.Battery.value',"Allt ok. Lägsta: " ..lowest .."%")
fibaro:call(93, "setProperty", "currentIcon", getIcon(lowest));
end
fibaro:call(93, "setProperty", "currentIcon", getIcon(lowest));
end
end
Jag har försökt igen att få detta att fungera men jag får bara följande felmeddelande:
[ERROR] 13:23:20: line 25: bad argument #1 to 'find' (string expected, got nil)
Min kod ser ut såhär i scenen:
--[[
%% properties
%% globals
--]]
function getIcon(lowest)
if (lowest >= 90) then return 1010
elseif (lowest >= 40) then return 1009
elseif (lowest >= 20) then return 1008
else return 1007 end
end
local isBatteryOperated = "1"
local minbattLevel = 15 --alarm level!
local i = 0
local maxNodeID = 500
local lowest = 100
local name
local flag = 0
for i = 0, maxNodeID do
local type = fibaro:get (i, 'isBatteryOperated');
x , y = string.find (type, isBatteryOperated )
if x ~= nil
then
name = fibaro:getName(i)
batterylevel = fibaro:getValue (i, 'batteryLevel')
if tonumber(batterylevel) == 255 then
batterylevel = 10
end
if lowest > tonumber(batterylevel) then
lowest = tonumber(batterylevel)
end
fibaro:debug("ID = "..i..", Namn:"..name.."\t - \t batteri nivå: "..batterylevel.."%")
if tonumber(batterylevel) <= minbattLevel then
flag = 1
fibaro:call(16, 'setProperty', 'ui.Battery.value',"Lågt batteri: " ..name.." "..batterylevel.."%")
fibaro:debug("Låg batteri nivå på ID:"..i.." Namn:"..name.." "..batterylevel.."%")
fibaro:call(229, "sendPush", "Låg batteri nivå på \n "..name.." ID:"..i.." - "..batterylevel.."%")
elseif flag == 0 then
fibaro:call(16, 'setProperty', 'ui.Battery.value',"Allt ok. Lägsta: " ..lowest .."%")
fibaro:call(16, "setProperty", "currentIcon", getIcon(lowest));
end
fibaro:call(16, "setProperty", "currentIcon", getIcon(lowest));
end
end
Behöver jag skapa något förutom en label typ någon variabel eller så? Känner mig verkligen kass på kod när man inte ens kan få färdig kod att fungera. Kanske ska tillägga att jag kör 4.018 Beta om det kan ställa till det på något sätt?
Tack för tipset dock fick jag ett nytt felmeddelande:
[ERROR] 23:45:22: Runtime error: /opt/fibaro/FibaroSceneAPI.lua:117: attempt to index a nil value
Jag blir även lite förvirrad över att det i den här tråden förekommer två ganska olika koder, vilken bör man utgå ifrån?
Får inte detta att fungera jag heller.
Är det något man måste ändra i koden mot sin egen HC2 eller skall den fungera rakt av.
Detsamma gäller för den virtuela labeln, tar gärna en utförlig beskrivning om hur den skall skapas.
Är det en label för varje status eller gör man dessa i samma?
Som ni ser så är man en riktig nybörjare på detta.
Efter nycket testande och trixande så verkar det fungera
Ja det borde gå att kopiera rakt av utan att tittat på detaljerna. Koden plockar ut all enheter som är batteridrivna och listar dess batterivärde.. Om nivån är lägre än 15% så skickas ett push meddelande. Du kan alltid höja "minbattlevel" om du vill testa koden.