TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Moderator: Telldus

PappaTi
Posts: 1
Joined: Thu Jan 18, 2018 11:08 am

TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by PappaTi » Thu Jan 18, 2018 11:08 am

Hej,

Jag tänkte dela med mig av min erfarenhet av Danfoss LC-13 termostat tillsammans med en Tellstick ZNet Lite V2. Jag ville schemalägga temperaturen: att den går ned på natten (18) och upp igen på morgonen (22). En funktion som tyvärr inte finns out-of-the-box.

1 Jag har skapat en Dummy device via Telldus Live som heter DummyLevel1 (resp DummyLevel2): en Telldus On/off självlearning switch. Vi har 2 våningar och vill styra dem separat
2 Jag kopplade ihop Danfoss och ZNet. Alla namn börjar med ElementLevel1 (resp ElementLevel2)
3 Gå på <Znet-ipadress>/lua och lägg till följande script: (resp Level2)

Code: Select all

- File: SetTempElementLevel1.lua
local deviceManager = require "telldus.DeviceManager"
local COMMAND_CLASS_THERMOSTAT_SETPOINT = 0x43
local SETPOINT_TYPE_HEATING = '1'

function onDeviceStateChanged(device, state, stateValue)
	if device:name() ~= "DummyLevel1" then
		return
	end

	if (device:state() == 1) then
		print("DummyLevel1:on")
		
		for index, device in python.enumerate(deviceManager:retrieveDevices()) do
			if (string.find(device:name(),"ElementLevel1") ~= nil) then
				print(device:name())
				setDanfossTemperature(device, 18)
				return
			end
		end		
		return

	else
		print("DummyLevel1:off")
		
		for index, device in python.enumerate(deviceManager:retrieveDevices()) do
			if (string.find(device:name(),"ElementLevel1") ~= nil) then
				print(device:name())
				setDanfossTemperature(device, 22)
				return
			end
		end		
		return
	end
end


function setDanfossTemperature(device, temperature)
	if (device:typeString() ~= 'zwave') then
		print("Device %s is not a Z-Wave device", device:name())
		return
	end
	-- Get the raw zwave node
	local zwaveNode = device:zwaveNode()
	-- Extract the thermostat setpoint command class
	local cmdClass = zwaveNode:cmdClass(COMMAND_CLASS_THERMOSTAT_SETPOINT)
	if (cmdClass == nil) then
		print("Device %s does not support THERMOSTAT_SETPOINT", device:name())
		return
	end
	-- Set new value to be sent the next time the device is awake
	cmdClass:setSetpoint(SETPOINT_TYPE_HEATING, temperature)
end
4 Lagga till en schema som tänder DummyLevel1 (resp DummyLevel2) kl 20:00 och släcker den kl 05:00

Återkom gärna med tankar och synpunkter! Kanske inte den snyggaste lösningen men jag har testat inatt och det funkade.

/PappaTi

Kalarne
Posts: 25
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Kalarne » Thu Jan 18, 2018 11:08 am

Hej,

Har gjort en liknande lösning för att styra åtta LC13 som jag har i mitt fritidshus. Har skapat en dummydevice för resp termostatventil. Dummyn är av typen dimbar Nexa.
Jag kan då ställa elementen i fem lägen där jag valt det lägsta till 8C och det högsta till 21C. Via web eller app blir det på så sätt enkelt att ställa in värmen i huset några dagar innan vi åker dit.
Jag har använt ett prefix för alla termostaters namn och ett annat prefix för dummyenheterna.

Tänkte även pyssla ihop ett script som håller koll på batterinivån i termostaterna och larmar med en pushnotis när nivån börjar bli låg. Kanske koll en gång i veckan räcker.

/Arne

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Halloj

Gammal tråd men lyfter den igen.
Vad jag förstått det så går det inte by default göra schemalägga termostaterna?
Då jag inte är någon "datanörd" (ursäkta ordet) så kan jag noll om att bygg script osv.
Jag har tänkt mig tre termostater på övervåningen som jag skulle kunna vilja reglera temperaturerna på.
Känns ju rätt meningslöst att inte kunna det vi Tellsticken när dom ändå kan prata med varandra....

Hur bär man sig åt, i lite mer detaljerad nivå för att bygga schema likt det ni gjort?

Mvh
Novisa Slottet :roll:

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Ingen?

Kalarne
Posts: 25
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Kalarne » Thu Jan 18, 2018 11:08 am

Hej,
Skall skicka min lösning till dig, men vill testa lite mer först.

Åker till mitt fritidshus idag och återkommer sedan.

Ser inga problem med att göra det du vill med Danfosstermostaterna. Sen kan ju funktionaliteten lösas på olika sätt.

/Kalarne

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Hej

Hur har det gått?

Mvh
Slottet

Kalarne
Posts: 25
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Kalarne » Thu Jan 18, 2018 11:08 am

Har gått bra,
Postar mitt skript nedan. Telldus guide: http://live.telldus.com/help/lua beskriver hur du installerar skriptet.
Du behöver inte ändra i skriptet här du lägger till fler termostater.

Jag har skapat dummy-enheter av typen Nexa Dimmer. En per termostat. Sen styr jag dessa från min Iphone. Skriptet startas varje gång en dummy ändras och ändrar då temperaturen på motsvarande Danfoss termostat. Om du kombinerar skriptet med Telldus Live kan du få den funktionalitet du önskar.

I skriptet finns fyra parametrar som du bör ändra. Se nedan.
Lösningen är liknande den som PappaTi gjort, men namnet på enheterna är inte hårdkodade och antalen termostater kan variera.

Code: Select all

-- File: DanfossLC13Control.lua
-- 2017-10-01
-----------------------------------------------------------------------------
-- Script for control of Danfoss LC-13 zwave thermostats.
-- Tellstick Znet has limited function for control of LC-13.
-- This lua script makes it possible to control LC-13 devices via dummy devices. Each 
-- termostat should have a parallell dummy device. An on/off device or a dimmer that 
-- could have several states. When the state for the dummy device is changed, this 
-- lua script sets a new temperature for the corresponding LC-13.
--
-- The dummy device and the physical thermostat should have the same name, but different
-- prefix before the name. E.g. "RT-Kitchen" and "D-Kitchen". These prefixes should be 
-- defined. See below.
--
-- The temperatures corresponding to "off" on an on/off dummy and to "min" on a dimmer
-- should also be defined. The same for the on/max temperature. See below.
-- 
-- The function setDanfossTemperature below is written by Telldus.
---------------------------------------------------------------------------

--------------------------Parameters that could be edited------------------

local PREFIX_DEVICE="DT-"		-- Prefix for Danfoss LC-13 Thermostats
local PREFIX_DUMMY="RT-"		-- Prefix for Dummy devices (On/Off or dimmers)
local HEATING_MIN=8				-- Temperature when heating is off/min
local HEATING_MAX=22			-- Temperature when heating is on/max

---------------------------------------------------------------------------

local deviceManager = require "telldus.DeviceManager"
local COMMAND_CLASS_THERMOSTAT_SETPOINT = 0x43
local SETPOINT_TYPE_HEATING = '1'
local PrefixLgd=string.len(PREFIX_DUMMY)

function onInit()
	print("DanfossLC13 started %s ", os.date())
end

function onDeviceStateChanged(device, state, stateValue)
local temp, name, radDev
local PrefixLgd=string.len(PREFIX_DUMMY)

 if (string.find( device:name(), PREFIX_DUMMY, 1) == 1 ) then
		name = PREFIX_DEVICE .. string.sub(device:name(), PrefixLgd+1)
		radDev = deviceManager:findByName(name)
		if (device == nil) then
			print("Illegal device name ")
			return
		end

		if (state == 1 ) then
			temp = HEATING_MAX
		elseif (state == 16 ) then --state 16 means dimmer. stateValue is dim level. 
			temp = HEATING_MIN + math.floor((HEATING_MAX-HEATING_MIN) * stateValue/255)
		elseif (state == 2 ) then
			temp = HEATING_MIN
		else
			return
		end 
		setDanfossTemperature(radDev, temp)	
   end 
end

function setDanfossTemperature(dev, temperature)
   if (dev:typeString() ~= "zwave") then
      print("Device %s is not a Z-Wave device", dev:name())
      return
   end
   -- Get the raw zwave node
   local zwaveNode = dev:zwaveNode()
   -- Extract the thermostat setpoint command class
   local cmdClass = zwaveNode:cmdClass(COMMAND_CLASS_THERMOSTAT_SETPOINT)
   if (cmdClass == nil) then
      print("Device %s does not support THERMOSTAT_SETPOINT", dev:name())
      return
   end
   -- Set new value to be sent the next time the device is awake
   cmdClass:setSetpoint(SETPOINT_TYPE_HEATING, temperature)
	print("New temp %s C set for Danfoss thermostat: %s,  %s",temperature, dev:name(), os.date())
end
Hör av dig om du har frågor.
Maila på k.a.larsson"snabelA"telia"punkt"com

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Grymt!

Jag väntar på mina tre termostater skall komma hem.
Jag lär med största säkerhet höra av mig när det närmar sig installation.

Mvh
Slottet.

Lusse3
Posts: 7
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Lusse3 » Thu Jan 18, 2018 11:08 am

Hej

Jag har köpt en telldus znet lite v2 och danfoss lc13 samt en temperaturgivare. Jag försöker väl återskapa något liknande men är väldigt nybörjare när det gäller allt detta :)

Som jag förstod så kan är inte danfoss lc13 jätte kompatibelt med telldus. Lc13 kan ju trycka olika mycket på regleraren men jag förstår inte riktigt hur den ska veta vad som är vad. Alltså, tills lc13 förstår att "När jag har tryckt ner regleraren 64% blev det så här varmt i rummet"

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Lusse3 wrote:Hej

Jag har köpt en telldus znet lite v2 och danfoss lc13 samt en temperaturgivare. Jag försöker väl återskapa något liknande men är väldigt nybörjare när det gäller allt detta :)

Som jag förstod så kan är inte danfoss lc13 jätte kompatibelt med telldus. Lc13 kan ju trycka olika mycket på regleraren men jag förstår inte riktigt hur den ska veta vad som är vad. Alltså, tills lc13 förstår att "När jag har tryckt ner regleraren 64% blev det så här varmt i rummet"
Med skriptet som Kalarne gjort så kan du med en dummydimmer få temperaturen i fem olika steg. Själv kör jag bara en on/off dummy där jag ställer ned tempen 2grader på dagen mellan 9-15 i vissa rum.

Lusse3
Posts: 7
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Lusse3 » Thu Jan 18, 2018 11:08 am

kan danfoss lc13 vara en "dummydimmer"? jag är extremt nybörjare på det här så jag hänger inte riktigt med :D

Om jag kunde få lc13 att synas som en "switch" i home assistant så skulle jag kunna använda den som en av/på device, men den syns bara som sensor där.

Slottet
Posts: 39
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Slottet » Thu Jan 18, 2018 11:08 am

Lusse3 wrote:kan danfoss lc13 vara en "dummydimmer"? jag är extremt nybörjare på det här så jag hänger inte riktigt med :D

Om jag kunde få lc13 att synas som en "switch" i home assistant så skulle jag kunna använda den som en av/på device, men den syns bara som sensor där.
Nej men du måste ha en dummyenhet upplagd för att kunna styra/kommunicera med LC-13 vi t ex det skript som Kalarne gjort.

Mvh
Slottet

Lusse3
Posts: 7
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Lusse3 » Thu Jan 18, 2018 11:08 am

aha... ok! sorry för den dumma frågan, men.... hur exakt funkar det här? Köper jag bara typ en elbrytare och kopplar in nånstans i huset bara? hehe sorry men jag fattar inte :P

etompau
Posts: 2261
Joined: Thu Jan 18, 2018 11:08 am
Location: Skåne

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by etompau » Thu Jan 18, 2018 11:08 am

En "dummy-enhet" eller fiktiv enhet är en enhet som du lägger upp i Telldus Live men där du då inte har en fysisk mottagare.
Du manipulerar den fiktiva dimmer-enheten och det tidigare beskrivna LUA-scriptet överför sedan informationen och "nivå-inställningen" till din Z-wave-termostat.

Lusse3
Posts: 7
Joined: Thu Jan 18, 2018 11:08 am

Re: TellStick Znet Lite + Danfoss LC-13: Så här gjorde jag

Post by Lusse3 » Thu Jan 18, 2018 11:08 am

aha! Tack snälla! Jag provar detta och ser om det lirar. Borde man kunna se danfossen åka fram och tillbaka när jag togglar dummy devicen?

Post Reply