Hej försöker få till en notis när diskmaskin via wall plug är klar samt via fgs 213 när tvättmaskinen är klar.
Inte helt novis, dock har jag inte gett mig in på Lua.
Tacksam för tips.
Få till block scen (ej Lua...)
Det där tror jag blir väldigt pilligt att lösa med en block- scene.
I mitt fall dyker t.ex. effektförburkningen under tvättprogrammet och det krävs en timer för att inte falsklarma att körningen är klar.
Har du en HC2a får du nog dyka ner i Lua trots allt. Finns färdiga exempel att utgå ifrån på forumet.
I mitt fall dyker t.ex. effektförburkningen under tvättprogrammet och det krävs en timer för att inte falsklarma att körningen är klar.
Har du en HC2a får du nog dyka ner i Lua trots allt. Finns färdiga exempel att utgå ifrån på forumet.
Jag har koden som Clabbe delade med sig av i nedanstående tråd, har den på diskmaskin, tvättmaskin och torktumlare med wall plug, funkar klockrent
viewtopic.php?f=21&t=4165&start=20
viewtopic.php?f=21&t=4165&start=20
/Mvh Fredrik
Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
Fibaro HC2.
Mest saker från Fibaro, sen lite blandat av diverse märken.
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Här är en annan variant som använder TTS för att läsa upp då maskinen är klar.
Den talar också om hur mycket energi som tvätten förbrukade.
Det är Sankotronic på Fibaros forum som har gjort grundskriptet, och jag har kompletterat med energiförbrukning och TTS.
Den talar också om hur mycket energi som tvätten förbrukade.
Det är Sankotronic på Fibaros forum som har gjort grundskriptet, och jag har kompletterat med energiförbrukning och TTS.
Code: Select all
--[[
%% properties
66 power
%% globals
--]]
--[[
-- Jag har modifierat Sankotronics utmärkta Appliance Monitoring Scene
-- och lagt till energiförbrukning samt TTS-funktion
-- Gör så här, skapa tre variabler
-- "energiTvattmaskin" (Sparar föregående energiförbrukning)
-- "TTS" (Variabel för din TTS-lösning. All text som hamnar här läses upp i högtalaren)
-- "TvattMaskin" med värdena "Off" och "On" (Håller koll på tvättmaskinens status)
-- I mitt fall säger den "Viktigt meddelande. Tvättmaskinen är klar. Den förbrukade, " ..energitot.. ", kilowatt&vol=10"
-- "&vol=10" utesluts beroende på din TTS-lösning
-- Ändra 66 till din pluggs ID
-- Lägg till ID om du vill ha push-meddelanden
-----------------------------------------------------------------------------
-- APPLIANCE MONITORING SCENE -- HERE PUT NAME OF APPLIANCE
-----------------------------------------------------------------------------
Copyright © 2016 Zoran Sankovic - Sankotronic. All Rights Reserved.
Version 1.0
-- VERSION HISTORY ----------------------------------------------------------
1.0 - Completely rewritten scene so can be used to monitor any appliance in
the home or workplace.
-- COPYRIGHT NOTICE ---------------------------------------------------------
Redistribution and use of this source code, with or without modification,
is permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY COPYRIGHT OWNER "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-- SCENE DESCRIPTION --------------------------------------------------------
This scene can monitor any appliance for power consumption and send push
and/or popup notification when appliance start working and/or when it is
finished. You can also select to switch it off when is done or leave it
under power. Bellow you will find part of code for you to setup for
particular appliance and behavior of this scene.
-- LIST OF GLOBAL VARIABLES NEEDED ------------------------------------------
"applianceStatus" - Skapa en fördefinerad global variabel för den enhet
som skall övervakas, tex. "TvattMaskin".
Ge variabeln värdena "On" och "Off".
--]]
if (fibaro:countScenes() > 1) then
fibaro:abort();
end
-- local energitot = 0
-- PART OF CODE FOR USERS TO EDIT AND SETUP ---------------------------------
-- GLOBALA VARIABLER ---------------------------------------------------------
-- Skriv här namnet på den globala variabel du skapade tex. "TvattMaskin"
-- Värdena för variabeln skall vara "On" and "Off"
local applianceStatus = "TvattMaskin";
local applianceStatusMapping = {On="On", Off="Off"};
-- EXTRA GLOBALA VARIABLER ---------------------------------------------------
-- Här kan du lägga till egna extra variabler om du utökar denna scen med egen kod
-- APPLIANCE CONTROL DEVICE SETUP -------------------------------------------
-- Lägg in ID för den enhet som skall kontrolleras.
-- Skriv samma ID under properties ovan tex. 66 power
local deviceID = 66;
-- Lägg in ett effektvärde som som är något högre än maskinens standby-värde
local deviceMinPower = 2.5;
-- Lägg in antal minuter från standby tills ett meddelande skall skickas
local deviceStopDuration = 3;
-- Skriv "Yes" om enheten skall stängas av efter avslutat arbete
-- Skriv "No" om enheten skall lämnas påslagen
local deviceTurnOff = "Yes";
-- USERS, PUSH AND POPUP NOTIFICATION SETUP ---------------------------------
-- Ange den eller de användare som push-meddelanden skall skickas till
local userID = {49}; -- flera användare {49, 56, 78};
-- Flagga för varje användare om push-meddelande skall skickas
-- send notifications. You can add code in function extraUserCodeFirst()
local userFlag = {1}; -- flera användare tex. userFlag = {1, 1, 0};
-- PUSH MESSAGES SETUP ------------------------------------------------------
-- Ange push-meddelanden för start respektive stopp
local pushMessage = {start = "Tvättmaskinen har startats",
stop = "Tvättmaskinen är klar "};
-- Skriv "Yes" för att få meddelande vid programstart, annars anger du "No"
local pushStart = "No";
-- Skriv "Yes" för att få meddelande då maskinen är klar, annars anger du "No"
local pushStop = "No";
-- POPUP MESSAGES SETUP -----------------------------------------------------
-- enter popup message text and button caption for the appliance start and
-- stop
local popupMainTitle = "TVÄTTMASKIN";
local popupTimeFormat = "%H:%M:%S | %d.%m.%Y.";
local popupContentTitleStart = "Tvättmaskinen startas";
local popupContentTitleStop = "Tvättmaskinen är klar";
local popupContentBodyStart = "Tvättmaskinen arbetar";
local popupContentBodyOn = "Tvättmaskinen är inte avstängd";
local popupContentBodyOff = "Tvättmaskinen har stängts av";
local popupImgUrl = "";
local popupButtonCaption = "OK";
-- enter "Yes" if you want to receive popup notification that appliance
-- started working else put "No"
local popupStart = "No";
-- enter "Yes" if you want to receive popup notification that appliance
-- finished working else put "No"
local popupStop = "No";
-- DEBUGGING VARIABLES -----------------------------------------------------
-- setup debugging, true is turned on, false turned off.
local deBug = true; -- for showing events as they happen
local exDebug = true; -- for checking loop counter
-- EXTRA FUNCTION WHERE YOU CAN ADD YOUR CODE ----------------------------
-- use this function to add code that will be executed before loop is
-- started and push adn popup notifications are sent
function extraUserCodeFirst()
-- your code goes here
-- local pushMessage = {start = "Tvättmaskinen har startats",
-- stop = "Tvättmaskinen är klar "..energitot.." kW"};
if deBug then logbug("yellow", "User extra code before loop executed") end;
end
-- use this function to add code that will be executed after loop is
-- finished and before sending push and popup notifications
function extraUserCodeLast()
-- your code goes here
local energistart = tonumber(fibaro:getGlobalValue("energiTvattmaskin", energistopp))
local energistopp = tonumber(fibaro:getValue(deviceID, "energy"))
local energitot = energistopp - energistart
local energitot = energitot - energitot % 0.01
fibaro:setGlobal("energiTvattmaskin", energistopp)
energitot = string.gsub(energitot,"%.",",")
---fibaro:setGlobal("Telegram", "Tvättmaskinen är klar. Den förbrukade " ..energitot.. " kWh")
fibaro:setGlobal("TTS", "Viktigt meddelande. Tvättmaskinen är klar. Den förbrukade, " ..energitot.. ", kilowatt&vol=10")
if deBug then logbug("yellow", "User extra code after loop executed") end;
end
-- END OF CODE PART FOR USERS TO EDIT AND SETUP -----------------------------
-- BELLOW CODE NO NEED TO MODIFY BY USER ------------------------------------
-- except if you know what you're doin' :-P
local StartSource = fibaro:getSourceTrigger()
local countdown = 0;
local version = "1.0";
function logbug(color, message)
fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
end
-- send push notification
function sendPush(message)
if (#userID == #userFlag) then
if #userID > 0 then
for i = 1, #userID do
if userFlag[i] == 1 then
fibaro:call(userID[i], "sendPush", message); -- Send message to flagged users
if deBug then logbug("orange", "Push notification sänd till användaren "..fibaro:getName(userID[i])) end;
end
end
end
else
if deBug then logbug("red", "User and flag count is different, not setup correctly. Please check") end;
end
end
-- send popup notification
function sendPopup(i)
if i == 1 then
popupContentTitle = popupContentTitleStart;
popupContentBody = popupContentBodyStart;
popupTypeInfo = "Info";
if deBug then logbug("orange", "Popup notification sänd: övervakaren har startats") end;
else
popupContentTitle = popupContentTitleStop;
if deviceTurnOff == "Yes" then
popupContentBody = popupContentBodyOff
if deBug then logbug("Yellow", "Övervakaren är nedstängd") end;
else
popupContentBody = popupContentBodyOn
end
popupTypeInfo = "Success";
if deBug then logbug("orange", "Popup notification sänd: övervakaren är avslutad") end;
end
-------------------------------------------
HomeCenter.PopupService.publish({
-- title (required)
title = popupMainTitle,
-- subtitle(optional), e.g. time and date of the pop-up call
subtitle = os.date(popupTimeFormat),
-- content header (optional)
contentTitle = popupContentTitle,
-- content (required)
contentBody = popupContentBody,
-- notification image (assigned from the variable)
img = popupImgUrl,
-- type of the pop-up
type = popupTypeInfo,
-- buttons definition
buttons = { { caption = popupButtonCaption, sceneId = 0 } }
})
---------------------------------------------
end
if ((tonumber(fibaro:getValue(deviceID, 'power')) > deviceMinPower) and (StartSource['type'] == "property")) then
logbug ("green", "Appliance monitoring scene started version "..version.." - © 2016 Sankotronic");
fibaro:setGlobal(applianceStatus, applianceStatusMapping.On);
extraUserCodeFirst();
if pushStart == "Yes" then sendPush(pushMessage.start) end;
if popupStart == "Yes" then sendPopup (1) end;
while true do
local power = tonumber(fibaro:getValue(deviceID, 'power'));
-- if power is greater than minimum then reset countdown
if (power > deviceMinPower) then
countdown = deviceStopDuration;
else
if (countdown > 0) then countdown = countdown - 1 end;
end
-- if countdown is ended then send notification and turn off
if (countdown == 0) then
if fibaro:getGlobalValue(applianceStatus) == applianceStatusMapping.On then
fibaro:setGlobal(applianceStatus, applianceStatusMapping.Off);
extraUserCodeLast();
if pushStop == "Yes" then sendPush(pushMessage.stop) end;
if popupStop == "Yes" then sendPopup (2) end;
if deviceTurnOff == "Yes" then fibaro:call(deviceID, "turnOff") end;
end
logbug ("green", "Övervakningsscenen avslutades");
-- Kill running scene cause it is done with appliance
fibaro:abort();
end
if deBug then logbug("lightgreen", "Effekt: " .. power .. " W - nedräkning: " .. countdown .. " Min.") end;
fibaro:sleep(60000);
end
else
logbug ("lightgreen", "Övervakningsscenen startades manuellt och kommer därför att avslutas.");
-- Kill running scene cause it is done with appliance
fibaro:abort();
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
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