Hej
Försöker få till en scen där jag vill att om ingen rörelse har indikerats inom 30min så skall det skickas ett push till mig.
Men nu verkar det som om scenen körs varje 1800 sek och just då vid detta tillfället så skickar den push om ingen rörelse är aktiverad, men jag vill att push skall skickas om rörelse ej ha upptäckts inaom 30 min. om ni för står hur jag menar =P
Variabel dag , sen kolla är huset larmat ? om ej larmat gå igenom alla rörelse i huset för se om det finns folk i huset , kolla rörelse inom en tid 30 min , har ingen rörelse upptäckts inom 30 min skicka push.
--[[
%% autostart
%% properties
187 power
37 tamper
153 tamper
172 tamper
%% globals
Rorelsekoll
--]]
local delayedCheck0 = false;
if ( tonumber(fibaro:getValue(187, "power")) < 1 ) then
delayedCheck0 = true;
end
setTimeout(function()
local delayedCheck1 = false;
local tempDeviceState1, deviceLastModification1 = fibaro:get(37, "tamper");
if (( tonumber(fibaro:getValue(37, "tamper")) == 0 ) and (os.time() - deviceLastModification1) >= 1800) then
delayedCheck1 = true;
end
local delayedCheck2 = false;
local tempDeviceState2, deviceLastModification2 = fibaro:get(153, "tamper");
if (( tonumber(fibaro:getValue(153, "tamper")) == 0 ) and (os.time() - deviceLastModification2) >= 1800) then
delayedCheck2 = true;
end
local delayedCheck3 = false;
local tempDeviceState3, deviceLastModification3 = fibaro:get(172, "tamper");
if (( tonumber(fibaro:getValue(172, "tamper")) == 0 ) and (os.time() - deviceLastModification3) >= 1800) then
delayedCheck3 = true;
end
local startSource = fibaro:getSourceTrigger();
if (
( fibaro:getGlobalValue("Rorelsekoll") == "Dag" )
and
( delayedCheck0 == true )
and
( delayedCheck1 == true and delayedCheck2 == true and delayedCheck3 == true )
or
startSource["type"] == "other"
)
then
fibaro:call(36, "sendDefinedPushNotification", "166");
end
end, 1800000)
Ingen rörelse aktiv inom 1800 sek skicka push
Ovan kod funkar ej , men se om jag eller om någon kan hjälpa mig få till denna kod gjord av jompa , men jag vill ha till lite extra detaljer i denna kod ,
Vill att den bara skall köras när variabel dag är satt
Sen om larmet är på eller av
tonumber(fibaro:getValue(187, "power")) < 1 )
Vill om den ej upptäckt någon rörelse inom tiden skall push skickas
--[[
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
--Loop
while true do
--Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
--Setup local variables
local CurrentDate = os.date("*t");
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0 or tonumber(fibaro:getValue(153, "value")) > 0 or tonumber(fibaro:getValue(172, "value")) > 0 then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
-- lägg in släck kod här!
else
fibaro:debug(" -|- Home: Someone is at home!");
end
--Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
--Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
Vill att den bara skall köras när variabel dag är satt
Sen om larmet är på eller av
tonumber(fibaro:getValue(187, "power")) < 1 )
Vill om den ej upptäckt någon rörelse inom tiden skall push skickas
--[[
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
--Loop
while true do
--Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
--Setup local variables
local CurrentDate = os.date("*t");
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0 or tonumber(fibaro:getValue(153, "value")) > 0 or tonumber(fibaro:getValue(172, "value")) > 0 then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
-- lägg in släck kod här!
else
fibaro:debug(" -|- Home: Someone is at home!");
end
--Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
--Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
--[[
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
--Loop
while true do
--Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
--Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag" )
and ( fibaro:getValue(187, "power")) < 1
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0 or tonumber(fibaro:getValue(153, "value")) > 0 or tonumber(fibaro:getValue(172, "value")) > 0 then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
then
fibaro:call(36, "sendDefinedPushNotification", "166");
else
fibaro:debug(" -|- Home: Someone is at home!");
end
--Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
--Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
Och givetvis funkar inte denna , och jag har som sagt bara chansat och lagt in , variabel dag och power och push
[ERROR] 10:55:46: line 28: 'then' expected near 'fibaro'
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
--Loop
while true do
--Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
--Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag" )
and ( fibaro:getValue(187, "power")) < 1
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0 or tonumber(fibaro:getValue(153, "value")) > 0 or tonumber(fibaro:getValue(172, "value")) > 0 then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
then
fibaro:call(36, "sendDefinedPushNotification", "166");
else
fibaro:debug(" -|- Home: Someone is at home!");
end
--Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
--Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
Och givetvis funkar inte denna , och jag har som sagt bara chansat och lagt in , variabel dag och power och push
[ERROR] 10:55:46: line 28: 'then' expected near 'fibaro'
Varje gång nån av rörelserna upptäcker rörelse får jag det larmet
[ERROR] 11:00:09: line 28: 'then' expected near 'fibaro'
[ERROR] 11:00:47: line 28: 'then' expected near 'fibaro'
[ERROR] 11:00:49: line 28: 'then' expected near 'fibaro'
[ERROR] 11:01:34: line 28: 'then' expected near 'fibaro'
[ERROR] 11:01:36: line 28: 'then' expected near 'fibaro'
[ERROR] 11:02:02: line 28: 'then' expected near 'fibaro'
[ERROR] 11:02:04: line 28: 'then' expected near 'fibaro'
[ERROR] 11:00:09: line 28: 'then' expected near 'fibaro'
[ERROR] 11:00:47: line 28: 'then' expected near 'fibaro'
[ERROR] 11:00:49: line 28: 'then' expected near 'fibaro'
[ERROR] 11:01:34: line 28: 'then' expected near 'fibaro'
[ERROR] 11:01:36: line 28: 'then' expected near 'fibaro'
[ERROR] 11:02:02: line 28: 'then' expected near 'fibaro'
[ERROR] 11:02:04: line 28: 'then' expected near 'fibaro'
Om rad 28 är
Testa att -- ut den
Code: Select all
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
MIn första variant på ditt script, ändrat lite här och där (det fattas en "then" och sedan en "then" på helt fel plats):
Men sedan tittade jag på koden, och då slutade det med att det ser ut såhär:
Men jag förstår inte varför du väljer att trigga på globala variabeln, för varje gång du sätter den i scenen så kommer det att kicka igång en identisk scen som iofs kommer att dö direkt eftersom du börjar med att testa om denna scen redan körs - men?
Sedan har jag lite flera funderingar, men jag måste testa lite först...
Code: Select all
--[[
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
--kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
--Loop
while true do
--Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
--Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag" )
and ( fibaro:getValue(187, "power")) < 1 then
--Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0 or tonumber(fibaro:getValue(153, "value")) > 0 or tonumber(fibaro:getValue(172, "value")) > 0 then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
fibaro:call(36, "sendDefinedPushNotification", "166");
else
fibaro:debug(" -|- Home: Someone is at home!");
end
--Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
--Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
Men sedan tittade jag på koden, och då slutade det med att det ser ut såhär:
Code: Select all
--[[
%% autostart
%% properties
37 value
153 value
172 value
%% globals
LastSeenSensor
--]]
-- Kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end;
-- Loop
while true do
-- Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
-- Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag" )
and ( fibaro:getValue(187, "power")) < 1
then
-- Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenXXXXXXXX
if tonumber(fibaro:getValue(37, "value")) > 0
or tonumber(fibaro:getValue(153, "value")) > 0
or tonumber(fibaro:getValue(172, "value")) > 0
then
fibaro:setGlobal("LastSeenSensor",os.time())
end
local LastSeenSensor = 0+fibaro:getGlobal("LastSeenSensor");
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor));
-- Home, anyone ?
AbsenceTime = os.time() - (AbsenceTime * 60);
fibaro:debug(" -|- AbsenceTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime));
if tonumber(LastSeenSensor) < AbsenceTime then
fibaro:debug(" -|- Home: Nobody is Home!");
fibaro:call(36, "sendDefinedPushNotification", "166");
else
fibaro:debug(" -|- Home: Someone is at home!");
end
-- Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
end
-- Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000);
end
Sedan har jag lite flera funderingar, men jag måste testa lite först...
Kör Home Assistant efter totalt nederlag för HomeSeer
Tanken är att bara scenen skall gå när den variabeln är att på dag
När variabeln är satt på natt så behövs inte scenen köras eftersom man då ligger i sängen och då rör man sig inte =)
Menar så jag slipper få massa push notiser när jag sover. Eller är jag helt ute och cyklar =P
sen den andra variabeln vet jag ej vad den är till för den låg i koden som jag kopierat =P
nu när jag kör koden så får jag notiser var 30 sec att ingen är i huset
[DEBUG] 14:52:01: -|- Start: 2015-07-10 14:52:01
[DEBUG] 14:52:01: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:52:01: -|- AbsenceTime: 2015-07-10 14:12:01
[DEBUG] 14:52:01: -|- Home: Nobody is Home!
[DEBUG] 14:52:01: -|- End: 2015-07-10 14:52:01
[DEBUG] 14:52:31: -|- Start: 2015-07-10 14:52:31
[DEBUG] 14:52:31: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:52:31: -|- AbsenceTime: 2015-07-10 14:12:31
[DEBUG] 14:52:31: -|- Home: Nobody is Home!
[DEBUG] 14:52:31: -|- End: 2015-07-10 14:52:31
[DEBUG] 14:53:01: -|- Start: 2015-07-10 14:53:01
[DEBUG] 14:53:01: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:53:01: -|- AbsenceTime: 2015-07-10 14:13:01
[DEBUG] 14:53:01: -|- Home: Nobody is Home!
[DEBUG] 14:53:01: -|- End: 2015-07-10 14:53:01
kopplar jag på rad 25 så får jag detta fel
[ERROR] 15:05:05: line 25: attempt to compare string with number
tackar för hjälp
När variabeln är satt på natt så behövs inte scenen köras eftersom man då ligger i sängen och då rör man sig inte =)
Menar så jag slipper få massa push notiser när jag sover. Eller är jag helt ute och cyklar =P
sen den andra variabeln vet jag ej vad den är till för den låg i koden som jag kopierat =P
nu när jag kör koden så får jag notiser var 30 sec att ingen är i huset
[DEBUG] 14:52:01: -|- Start: 2015-07-10 14:52:01
[DEBUG] 14:52:01: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:52:01: -|- AbsenceTime: 2015-07-10 14:12:01
[DEBUG] 14:52:01: -|- Home: Nobody is Home!
[DEBUG] 14:52:01: -|- End: 2015-07-10 14:52:01
[DEBUG] 14:52:31: -|- Start: 2015-07-10 14:52:31
[DEBUG] 14:52:31: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:52:31: -|- AbsenceTime: 2015-07-10 14:12:31
[DEBUG] 14:52:31: -|- Home: Nobody is Home!
[DEBUG] 14:52:31: -|- End: 2015-07-10 14:52:31
[DEBUG] 14:53:01: -|- Start: 2015-07-10 14:53:01
[DEBUG] 14:53:01: -|- LastSeenSensor: 1970-01-01 01:00:00
[DEBUG] 14:53:01: -|- AbsenceTime: 2015-07-10 14:13:01
[DEBUG] 14:53:01: -|- Home: Nobody is Home!
[DEBUG] 14:53:01: -|- End: 2015-07-10 14:53:01
kopplar jag på rad 25 så får jag detta fel
[ERROR] 15:05:05: line 25: attempt to compare string with number
tackar för hjälp
Vad är rad 25?
Jag skulle rekommendera att du plockar bort trigger på globala variabeln, och sätter in en if struktur i koden istället - du vill bara att den skall vara aktiv alltså dagtid? Men varje ändring av "LastSeenSensor" skapar ett nytt anrop till scenen - men det är inte det du vill som jag förstår det hela.
Att du får utskrift vart 30e sekund är för att du väntar i 30*1000 i slutet på scriptet för övrigt - men det vet du om eller hur?
Jag skulle rekommendera att du plockar bort trigger på globala variabeln, och sätter in en if struktur i koden istället - du vill bara att den skall vara aktiv alltså dagtid? Men varje ändring av "LastSeenSensor" skapar ett nytt anrop till scenen - men det är inte det du vill som jag förstår det hela.
Att du får utskrift vart 30e sekund är för att du väntar i 30*1000 i slutet på scriptet för övrigt - men det vet du om eller hur?
Kör Home Assistant efter totalt nederlag för HomeSeer
25 är fibaro puck som vet om huset är larmat eller ej.
Nja alltså jag är rätt ny på detta här så det jag gör är mest chansning =D
Jo det vet jag men , det vill jag den ska göra för vad jag förstår så körs scenen var 30 sec ?
För att kolla om nån rörelse är aktiverad inom 40 min ? och är det inte det så skall den skicka push ?
Nja alltså jag är rätt ny på detta här så det jag gör är mest chansning =D
Jo det vet jag men , det vill jag den ska göra för vad jag förstår så körs scenen var 30 sec ?
För att kolla om nån rörelse är aktiverad inom 40 min ? och är det inte det så skall den skicka push ?
Och vad är 37, 153, 172 - är det rörelse sensorer?
Jag förstår inte varför du både tillåter att scenen skall triggas vid rörelse (under förutsättning av ovanstående 3 IDn är rörelse sensorer) och den globala variabeln, när du ändå loopar heeeeela tiden - ta bort allt det och behåll loopen. Se till att scenen autostartar när du starar din HC2, och se till att scenen inte dör
I själva scenen så får du sedan hålla reda på de förutsättningar du kräver och så vidare. Men att göra både och som du gör nu, det är inte optimalt.
Jag förstår inte varför du både tillåter att scenen skall triggas vid rörelse (under förutsättning av ovanstående 3 IDn är rörelse sensorer) och den globala variabeln, när du ändå loopar heeeeela tiden - ta bort allt det och behåll loopen. Se till att scenen autostartar när du starar din HC2, och se till att scenen inte dör
I själva scenen så får du sedan hålla reda på de förutsättningar du kräver och så vidare. Men att göra både och som du gör nu, det är inte optimalt.
Kör Home Assistant efter totalt nederlag för HomeSeer
Du kan ju prova denna kod, men det finns ingen möjlighet för mig att varesig supporta eller testköra detta, det är bara skrivet i luften så att säga...
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
-- Kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end
-- Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
local LastSeenSensor = fibaro:getGlobal("LastSeenSensor")
-- Loop
while true do
-- Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag"
and tonumber(fibaro:getValue(187, "power")) < 1 )
then
-- Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenSensor
if ( tonumber(fibaro:getValue(37, "value")) > 0
or tonumber(fibaro:getValue(153, "value")) > 0
or tonumber(fibaro:getValue(172, "value")) > 0 )
then
fibaro:setGlobal("LastSeenSensor",os.time())
local LastSeenSensor = os.time()
end
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor))
-- Home, anyone ?
local AbsenceCompTime = os.time() - (AbsenceTime * 60)
fibaro:debug(" -|- AbsenceCompTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceTime))
if LastSeenSensor < AbsenceCompTime then
fibaro:debug(" -|- Home: Nobody is Home!")
fibaro:call(36, "sendDefinedPushNotification", "166")
else
fibaro:debug(" -|- Home: Someone is at home!")
end
-- Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
end
-- Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000)
end
Kör Home Assistant efter totalt nederlag för HomeSeer
Kör jag den så får jag detta
[DEBUG] 17:43:18: -|- Start: 2015-07-10 17:43:18
[DEBUG] 17:43:18: -|- LastSeenSensor: 1970-01-01 01:00:01
[DEBUG] 17:43:18: -|- AbsenceCompTime: 1970-01-01 01:00:10
[ERROR] 17:43:18: line 37: attempt to compare string with number
rad 37 = if LastSeenSensor < AbsenceCompTime then
[DEBUG] 17:43:18: -|- Start: 2015-07-10 17:43:18
[DEBUG] 17:43:18: -|- LastSeenSensor: 1970-01-01 01:00:01
[DEBUG] 17:43:18: -|- AbsenceCompTime: 1970-01-01 01:00:10
[ERROR] 17:43:18: line 37: attempt to compare string with number
rad 37 = if LastSeenSensor < AbsenceCompTime then
Jag har säkert skrivit fel någonstans - men jag hinner inte titta på det just nu. Jag tror att denna scen kommer från jompa68 - kolla om han kan bistå i den tråden som han skapade det hela i?
Kör Home Assistant efter totalt nederlag för HomeSeer
Jag tror det är jag som gör fel. nu ser det ut såhär
[DEBUG] 18:22:41: -|- Start: 2015-07-10 18:22:41
[DEBUG] 18:22:41: -|- LastSeenSensor: 2015-07-10 18:16:52
[DEBUG] 18:22:41: -|- AbsenceCompTime: 1970-01-01 01:00:10
[ERROR] 18:22:41: line 37: attempt to compare string with number
Nu ha jag fått till det att LastseenSensor funkar med variabel , hade ju tydligen tagit bort den
men AbsenceCompTime ska jag göra nått med den ? ha testat föra en variabel med detta namn men de verka ej funka
Eller är det inte så att LastseenSenor måste va en variabel ?
[DEBUG] 18:22:41: -|- Start: 2015-07-10 18:22:41
[DEBUG] 18:22:41: -|- LastSeenSensor: 2015-07-10 18:16:52
[DEBUG] 18:22:41: -|- AbsenceCompTime: 1970-01-01 01:00:10
[ERROR] 18:22:41: line 37: attempt to compare string with number
Nu ha jag fått till det att LastseenSensor funkar med variabel , hade ju tydligen tagit bort den
men AbsenceCompTime ska jag göra nått med den ? ha testat föra en variabel med detta namn men de verka ej funka
Eller är det inte så att LastseenSenor måste va en variabel ?
Jag har ändrat två detaljer, det har att göra med konvertering mellan strängar och nummeriska värden, som inte alltid lirar sådär jättebra i HC2 dessvärre.
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
-- Kill any extra instances of the same scene
if (fibaro:countScenes() > 1) then fibaro:abort() end
-- Settings
local ExecuteTimer = 30; -- Execute Every N-th second
local AbsenceTime = 40; -- 40 minutes
local LastSeenSensor = fibaro:getGlobal("LastSeenSensor")
-- Loop
while true do
-- Setup local variables
local CurrentDate = os.date("*t");
if ( fibaro:getGlobalValue("Rorelsekoll") == "Dag"
and tonumber(fibaro:getValue(187, "power")) < 1 )
then
-- Announce start
fibaro:debug(" -|- Start: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
-- LastSeenSensor
if ( tonumber(fibaro:getValue(37, "value")) > 0
or tonumber(fibaro:getValue(153, "value")) > 0
or tonumber(fibaro:getValue(172, "value")) > 0 )
then
fibaro:setGlobal("LastSeenSensor",os.time())
local LastSeenSensor = 0+os.time()
end
fibaro:debug(" -|- LastSeenSensor: "..os.date("%Y-%m-%d %H:%M:%S",LastSeenSensor))
-- Home, anyone ?
local AbsenceCompTime = os.time() - (AbsenceTime * 60)
fibaro:debug(" -|- AbsenceCompTime: "..os.date("%Y-%m-%d %H:%M:%S",AbsenceCompTime))
if LastSeenSensor < AbsenceCompTime then
fibaro:debug(" -|- Home: Nobody is Home!")
fibaro:call(36, "sendDefinedPushNotification", "166")
else
fibaro:debug(" -|- Home: Someone is at home!")
end
-- Announce end
fibaro:debug(" -|- End: "..os.date("%Y-%m-%d %H:%M:%S",os.time()))
end
-- Sleep XX seconds
fibaro:sleep(ExecuteTimer*1000)
end
Kör Home Assistant efter totalt nederlag för HomeSeer
fortfarande fel på rad 37
[DEBUG] 20:20:11: -|- Start: 2015-07-10 20:20:11
[DEBUG] 20:20:11: -|- LastSeenSensor: 2015-07-10 20:20:11
[DEBUG] 20:20:11: -|- AbsenceCompTime: 2015-07-10 20:18:11
[ERROR] 20:20:11: line 37: attempt to compare nil with number
if LastSeenSensor < AbsenceCompTime then
[DEBUG] 20:20:11: -|- Start: 2015-07-10 20:20:11
[DEBUG] 20:20:11: -|- LastSeenSensor: 2015-07-10 20:20:11
[DEBUG] 20:20:11: -|- AbsenceCompTime: 2015-07-10 20:18:11
[ERROR] 20:20:11: line 37: attempt to compare nil with number
if LastSeenSensor < AbsenceCompTime then
Du får fel på raden där du jämför tiden?
Hur ser bägge dessa ut om du kör en debug på dom?
Code: Select all
if LastSeenSensor < AbsenceCompTime then