Skicka push om tvätten är klar

Hjälp varandra att vara kreativa för att göra hemmet mer bekvämt.
jens
Medlem
Posts: 329
Joined: 22 Apr 2013, 17:09
10

Nu funkar allt... det sista scriptet verkar vara något fel med....

Tack än en gång...
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Har du sett att jag lagt till en ytterligare variabel? Kanske det du missat ;)
jens
Medlem
Posts: 329
Joined: 22 Apr 2013, 17:09
10

Ska man lägga in något där?

:shock:
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

En till variabel: tvättPush


Sent from my iPhone using Tapatalk
jackhampus
Medlem
Posts: 33
Joined: 07 Mar 2014, 14:54
10

jompa68 wrote:Har man en enhet kopplad till sin tvättmaskin (eller annan maskin) som mäter elförbrukningen så kan man monitorera när strömförbrukningen gått ner från högförbrukning till lägre och då skicka ett push som säger att tvättmaskinen tvättat klart. Perfekt om man har sin tvättmaskin i källaren :)

Code: Select all

--[[
%% properties
17 value
%% globals
--]]

-- 17 value ** Byt ut denna mot det ID som gäller för din brytare till tvättmaskinen **

local power = fibaro:getValue(17, "value")  -- tvättmaskinens enhet ** Ändra ID **
local washOn = "tvättmaskinKör" -- skapa en variabel
local washDone = "tvättmaskinKlar" -- skapa ytterligare en variabel

fibaro:debug("Förbrukning="..power.." Watt")
if (tonumber(fibaro:getValue(17, "value")) > 1000) then  -- 1000Watt förbrukning
    fibaro:setGlobal(washOn, "1")  -- sätter variabel till 1 då tvättmaskinen är på
  	fibaro:setGlobal(washDone, "0") 
  	fibaro:debug("Tvättmaskin går")  -- lite debug text :)

elseif (tonumber(fibaro:getValue(17, "value")) < 10) then  -- 10Watt förbrukning i standby,
  fibaro:debug("Tvätten är klar!!")
  fibaro:setGlobal(washOn, "0")  
  fibaro:setGlobal(washDone, "1")

end
if (tonumber(fibaro:getValue(17, "value")) < 10)  and fibaro:getGlobalValue(washDone) == "1" then
	fibaro:debug("Send push")
  	fibaro:call(22,"sendPush","Tvätten är klar") -- byt ut 22 mot det id som gäller för din telefon

end
 

Hej Jompa68
Jag kan inte få denna att fungera. den skickar ingen push, har en Fibaro Wall plug, stänger jag den fysiskt så kommer push meddelandet och kör jag scenen manuellt fungerar den.
Försöker få den att fungera genom att köra en hårtork.
Vet inte vad som är fel.
Tacksam för hjälp
shafty
Ny medlem
Posts: 1
Joined: 10 Jul 2015, 12:05
8

Hej jackhampus,

Hade också problem att få detta att fungera men efter att jag bytt ut "value" till "power" enligt nedan hoppade det igång.

%% properties
17 power
%% globals

local power = fibaro:getValue(17, "power") -- tvättmaskinens enhet ** Ändra ID **
if (tonumber(fibaro:getValue(17, "power")) > 1000) then -- 1000Watt förbrukning
elseif (tonumber(fibaro:getValue(17, "power")) < 10) then -- 10Watt förbrukning i standby,
if (tonumber(fibaro:getValue(17, "power")) < 10) and fibaro:getGlobalValue(washDone) == "1" then


jackhampus wrote:
jompa68 wrote:Har man en enhet kopplad till sin tvättmaskin (eller annan maskin) som mäter elförbrukningen så kan man monitorera när strömförbrukningen gått ner från högförbrukning till lägre och då skicka ett push som säger att tvättmaskinen tvättat klart. Perfekt om man har sin tvättmaskin i källaren :)

Code: Select all

--[[
%% properties
17 value
%% globals
--]]

-- 17 value ** Byt ut denna mot det ID som gäller för din brytare till tvättmaskinen **

local power = fibaro:getValue(17, "value")  -- tvättmaskinens enhet ** Ändra ID **
local washOn = "tvättmaskinKör" -- skapa en variabel
local washDone = "tvättmaskinKlar" -- skapa ytterligare en variabel

fibaro:debug("Förbrukning="..power.." Watt")
if (tonumber(fibaro:getValue(17, "value")) > 1000) then  -- 1000Watt förbrukning
    fibaro:setGlobal(washOn, "1")  -- sätter variabel till 1 då tvättmaskinen är på
  	fibaro:setGlobal(washDone, "0") 
  	fibaro:debug("Tvättmaskin går")  -- lite debug text :)

elseif (tonumber(fibaro:getValue(17, "value")) < 10) then  -- 10Watt förbrukning i standby,
  fibaro:debug("Tvätten är klar!!")
  fibaro:setGlobal(washOn, "0")  
  fibaro:setGlobal(washDone, "1")

end
if (tonumber(fibaro:getValue(17, "value")) < 10)  and fibaro:getGlobalValue(washDone) == "1" then
	fibaro:debug("Send push")
  	fibaro:call(22,"sendPush","Tvätten är klar") -- byt ut 22 mot det id som gäller för din telefon

end
 

Hej Jompa68
Jag kan inte få denna att fungera. den skickar ingen push, har en Fibaro Wall plug, stänger jag den fysiskt så kommer push meddelandet och kör jag scenen manuellt fungerar den.
Försöker få den att fungera genom att köra en hårtork.
Vet inte vad som är fel.
Tacksam för hjälp
jackhampus
Medlem
Posts: 33
Joined: 07 Mar 2014, 14:54
10

Tack Shafty, har fått det att fungera även med en fördröjning på pushen, nyare maskiner går under lägsta förbrukningen och skickar fast den inte är klar.
Clabbe
Medlem
Posts: 357
Joined: 25 May 2015, 21:53
8
Location: Torslanda

Ursäkta om jag missförstår, sitter med riktigt taskig förbindelse o telefon så orkar inte läsa första sidan, då man får vänta länge för varje sida som laddas i mobilen.

Jag har ett bra script.
Hemma dock, den väntar 60sekunder innan den skickar att den e klar.
( förbrukning under 10w i minst 60sekunder)

Detta då det tidigare skickade meddelande varje gång trumman bytte håll. :(

Om ni är intresserade, kör ni GEA så kan ni även köra kollen där..
-----------------------------------------------------------------
HC2
Aeon Labs, Fibaro, Danfoss enheter (30++st)
dadid
Medlem
Posts: 88
Joined: 29 Jan 2013, 16:32
11

Och här en film om hur man går till väga utan kunskaper om LUA:
https://www.youtube.com/watch?v=M_QSomtXiiQ
Clabbe
Medlem
Posts: 357
Joined: 25 May 2015, 21:53
8
Location: Torslanda

Oj vad jobbigt sätt =)

Globalvariabel, samt 2 scener...

Och vad jag kan se, så kommer det inte fungera på min tvättmaskin..
För min drar 7watt när den är klar.. För den har en display som drar ström.
Så jag kan inte kolla när watt = 0.
Samt så kan jag inte heller kolla när watt =7, för det gör den varje gång trumman stannar (byter håll)

Vilket gör att man får larm var 20e sekund.

Så därför skickar jag nu med, ett annat sätt att lösa problemet med.
Inga globala variabler, samt med en timer på tex 60sekunder, för att veta att är förbrukningen under ett visst antal watt under 1 minut, då kan man anse att tvätten är klar.

Ändra 48 till er enhet..
samt ändra " fibaro:call(27...." ändra 27 till er mobil.. vill ni ha flera mobiler bara lägg till hur många rader/telefoner ni vill

Code: Select all

--[[
%% autostart
%% properties
48 power
%% globals
--]]
local power_socket = 48
local powerlive = tonumber(fibaro:getValue(power_socket, "power")) -- monitored unit
  fibaro:debug("Förbrukning = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
 fibaro:abort();
  end
local run = 0
--local power_socket = 48
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0

if ( tonumber(fibaro:getValue(power_socket, "power")) > 60 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Tvättmaskin startad")
  fibaro:debug("Förbrukning = "..power.." Watt")
run = 1
end


while run == 1 do

if ( tonumber(fibaro:getValue(power_socket, "power")) < 10) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
    end
          if ( tonumber(fibaro:getValue(power_socket, "power")) > 10 ) then
      counter = 0
    end
       if ( tonumber(fibaro:getValue(power_socket, "power")) < 10) and counter > 60 then
          fibaro:debug("Tvättmaskin klar.")
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Förbrukning 3 = "..power3.." Watt")
          fibaro:debug("Skicka meddelande")
    fibaro:call(27,"sendPush", " Tvättmaskinen är klar" )
    -- fibaro:call(30,"sendPush", " Tvättmaskinen är klar" )
      --  fibaro:call(27, "sendDefinedPushNotification", "9");
run = 0
       end
 
  --fibaro:sleep(1000)
end
eller om ni kör GEA så gör kollen där istället.

Code: Select all

GEA.add({"Power-", id["TVATTM"], 10}, 5*60, "Tvätten är klar GEA", {{"Portable", 27}})
Observera att här får jag först 5min efter.
Då denna inte kollar varje värde på watten under perioden, utan endast var 30 sekund.
Så därför har jag längre "spann"/tid. För om watt vid varje tillfälle 10gånger (var 30sekund under 5min) är under 10 watt, så kan jag anse att tvätten är klar.
-----------------------------------------------------------------
HC2
Aeon Labs, Fibaro, Danfoss enheter (30++st)
dadid
Medlem
Posts: 88
Joined: 29 Jan 2013, 16:32
11

Det jobbiga sättet är trots allt förhållandevis ojobbigt om man har en Fibaro Lite, som här i sommarhuset. ;-)
Testar din kod när jag kommer hem efter semestern.
dadid
Medlem
Posts: 88
Joined: 29 Jan 2013, 16:32
11

Hej Clabbe.
Testar din scen nu. Det skulle behövas en tidskonstant.
När maskinen inte dragit mer än 10 kW under 1 minut, då är tvätten klar.
Nu får jag en herrans massa medelanden om klar tvätt :-)
Clabbe
Medlem
Posts: 357
Joined: 25 May 2015, 21:53
8
Location: Torslanda

Hmm..
vad säger den ifall du kollar i debug fönstret?

Den borde ju skriva ut räknaren som borde gå från 1 till 60.. o när den är på 60 då skall den skicka push, samt stänga av..

Kopierade du hela koden?

Jag kanske kopierade något fel... Får du det inte att fungera så kan jag skicka orginalkoden till dig.
-----------------------------------------------------------------
HC2
Aeon Labs, Fibaro, Danfoss enheter (30++st)
dadid
Medlem
Posts: 88
Joined: 29 Jan 2013, 16:32
11

Sedan jag gjort mina ändringar avseende förbrukning och telefon ID ser koden ut som följer:

Code: Select all

--[[
%% autostart
%% properties
27 power
%% globals
--]]
local power_socket = 27
local powerlive = tonumber(fibaro:getValue(power_socket, "power")) -- monitored unit
  fibaro:debug("Förbrukning = "..powerlive.." Watt")
if (fibaro:countScenes()>1)
then
 fibaro:abort();
  end
local run = 0
--local power_socket = 27
local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")
local counter = 0

if ( tonumber(fibaro:getValue(power_socket, "power")) > 60 ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Tvättmaskin startad")
  fibaro:debug("Förbrukning = "..power.." Watt")
run = 1
end


while run == 1 do

if ( tonumber(fibaro:getValue(power_socket, "power")) < 4) then
     counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
        fibaro:debug('counter = ' ..counter.. " : "..power2.."Watt")
    end
          if ( tonumber(fibaro:getValue(power_socket, "power")) > 4 ) then
      counter = 0
    end
       if ( tonumber(fibaro:getValue(power_socket, "power")) < 4) and counter > 60 then
          fibaro:debug("Tvättmaskin klar.")
          local power3 =  fibaro:getValue(power_socket, "power")
          fibaro:debug("Förbrukning 3 = "..power3.." Watt")
          fibaro:debug("Skicka meddelande")
    fibaro:call(138,"sendPush", " Tvättmaskinen är klar" )
    fibaro:call(167,"sendPush", " Tvättmaskinen är klar" )
      --  fibaro:call(138, "sendDefinedPushNotification", "9");
run = 0
       end
 
  --fibaro:sleep(1000)
end
Min maskin verkar ha standbyeffekt=3,5 W

Just nu när maskinen inte går ser det ut så här: [DEBUG] 20:45:48: Förbrukning = 3.5 Watt
Gör ett nytt försök under morgondagen.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Om maskinen drar 3,5 Watt i standby så bör du ändra värdet 4 i koden till 3 eller hellre 2 Watt för att vara säker på att scriptet triggas rätt.
Jag har satt mitt värde till 1 och tvättmaskinen anses vara igång om effekten är högre än 250 Watt.
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
dadid
Medlem
Posts: 88
Joined: 29 Jan 2013, 16:32
11

Då har jag missförstått vad siffran står för. Utveckla gärna.
Så som jag tolkat den är det ett effektvärde som passeras när maskinen kör.
Om jag sätter ett värde lägre än standby uppnås det väl aldrig?
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Jag såg nu att jag kör ett annat script än dig, men principen bör ändå vara densamma.
I exemplet nedan har jag kört en utpumpning och centrifugering (ca. 12 min)
Så här funkar det med mitt script som du hittar längst ned..

[DEBUG] 13:42:02: Tvättmaskinscriptet har aktiverats: Tue Aug 11 13:42:02 2015
[DEBUG] 13:42:02: Effektförbrukningen just nu = 100.12 Watt
En effektförändring har triggat igång scriptet och några globala parametrar hämtas.
Inget mer händer om inte effekten överstiger överstiger 250 Watt

[DEBUG] 13:44:26: Effektförbrukningen just nu = 253.077 Watt
[DEBUG] 13:44:26: Tvättmaskinen har startats
Nu startade centrifugeringen och effekten överstiger mitt värde på 250 Watt.
Scriptet sätter några globala parametrar WashOn=1, WashDone=0, WashMail=0


[DEBUG] 13:51:52: Effektförbrukningen just nu = 0.592 Watt
[DEBUG] 13:52:04: Tvätten är klar: Tue Aug 11 13:54:04 2015
Centrifugeringen är klar och effekten understiger min parameter på 1 Watt
Nu sätts några globala parametrar WashOn=0, WashDone=1


[DEBUG] 13:53:07: Skicka E-mail
En fördröjning (sleep) på 60 sekunder (kolla att maskinen är klar och släpper lucklåset)

[DEBUG] 13:53:35: Mail skickades till Admin, RH och YH

###########################################################
--[[
%% properties
--675 power
%% globals
--]]
-- Change id 161 to what id you want to have for monitoring

local currentDate = os.date("*t");
local power = fibaro:getValue(675, "power") -- monitored unit
local WashOn = "WashOn" -- create a variable WashOn
local WashDone = "WashDone" -- create a variable WashDone
local WashMail = "WashMail" -- create a variable WashMail

fibaro:debug("Tvättmaskinscriptet har aktiverats: " .. os.date());
fibaro:debug("Effektförbrukningen just nu = "..power.." Watt")

if ( tonumber(fibaro:getValue(675, "power")) > 250 ) then -- 500Watt change to wanted value in watt
fibaro:setGlobal(WashOn, "1") -- sets variable to 1 if machine is running
fibaro:setGlobal(WashDone, "0") -- sets variable WashDone to 0
fibaro:setGlobal(WashMail, "0") -- sets variable WashMail to 0
fibaro:debug("Tvättmaskinen har startats") -- lite debug text :)

elseif ( tonumber(fibaro:getValue(675, "power")) < 1 ) then
fibaro:debug("Tvätten är klar.")
fibaro:setGlobal(WashOn, "0")
fibaro:setGlobal(WashDone, "1") -- Tvätten är klar!

end
if ( tonumber(fibaro:getValue(675, "power")) < 1 ) and fibaro:getGlobalValue(WashDone) == "1" and fibaro:getGlobalValue(WashMail) == "0" then

fibaro:sleep(60*1000) -- 60 sec delay
if ( tonumber(fibaro:getValue(675, "power")) < 1 ) then
fibaro:setGlobal(WashMail, "1")
fibaro:debug("Skicka E-mail")

local subject = "Tvätten är klar"
local message = "Tvätten var klar klockan" .." ".. string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min)

fibaro:call(2, "sendEmail", subject, message)
fibaro:call(4, "sendEmail", subject, message)
fibaro:call(665, "sendEmail", subject, message)
fibaro:debug("Mail är skickade till Admin, RH och YH")

end
end
##########################################################
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Förlåt om jag drar upp en gammal tråd men tyckte det va bättre än att göra en ny :)
Har gjort LUA scener på tvättmaskin, torktumlare och diskmaskin exakt enligt Clabbes kodning.
Allt funkar bra förutom att timern på 60 sekunder (eller hur länge jag väljer att sätta den på) räknas på typ en sekund.
Varför blir det så? Är helt ny på det här :)
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

60'1000 (60x1000 förtydligat) innebär en minut eftersom klockan i scripten är tusendelar. 1000 = 1 sekund.
Till mitt tvättmaskinsscript kör jag 120'1000 dvs 2 minuter för att inte få falsktriggningar att maskinen är klar om den gör en liten "konstpaus" i programkörningen.
I mitt script har jag också lagt in en beräkning så att man får reda på hur mycket energi just den tvätten eller torktumlingen drog.
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
Fredrik85
Medlem
Posts: 67
Joined: 24 Jan 2016, 17:05
8

Tack! Nu blev det lite skillnad när jag skrev 60*1000 i LUA koden :)
/Mvh Fredrik

Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
Post Reply