Hank One Key Luascript

Moderator: Telldus

Post Reply
Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Hank One Key Luascript

Post by Cadryc » Wed Jan 23, 2019 4:51 pm

Tänkte försöka få den här att fungera. Den är grönmarkerad i kompatibilitetslistan, med förbehållet att man kör det länkade luascriptet.

http://telld.us/55nm3

Jag har:

1 Inkluderat enheten i telldus live (för några veckor sedan.. varpå jag upptäckte att man måste ha scriptet)

2 loggat on på tellsticken (idag), kopierat in scriptet, ändrat namnet på enheten och klickat på save and run.

Har jag gjort fel? Ska jag göra nåt mer?

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

Re: Hank One Key Luascript

Post by etompau » Wed Jan 23, 2019 6:04 pm

Du måste väl ha enheter som den kan trigga vid "tryck", "håll" och "släpp".
Enheterna kan sedan användas som trigger i händelser.

När du aktiverar fjärrkontrollen bör du kunna se information console-fönstret.

Code: Select all

-- Define the names on your devices here:
local remotecontrol = "Scene Controller"
local click = "Button 1 click"   <--------namn på enhet som ska aktiveras vid ett klick
local hold = "Button hold"        <-------namn på enhet som triggar vid "hold"
local release = "Button release"  <------namn på enhet som triggar vid släpp
debug = true -- true = outputs more debug data, false = less debug data

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 23, 2019 9:36 pm

Ah, jag hade nog föreställningen att scriptet skulle få knappen, hold press å release, att synas och fungera genom vanliga live.

Jag ska väl fortfarande ha knappen inkluderad? Exkluderade och inkluderade igen. Satte samma namn som förut och som i scriptet.

Ändrade press till Balkongen, en vägguttagsbrytare, klickade på spara å spring, tryckte på knappen. Inget, inget syntes i Console, men Hankknappen pep tre gånger, får koll manualen vad det betyder och ta ny nya tag en annan dag.

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 12:12 pm

Sådär, då är man ledig igen och mocklar. Får det att tända sig nu :) Går det få en dimmer att tändas till en viss styrka?

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 12:27 pm

Ahh va inte så svårt att dimmra :D

Nästa grej, få det att släcka om det är på eller dimmrat. Går det med en ifsats eller behöver man en variabel? Gärna kodexempel om nån står ut med en noob..

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

Re: Hank One Key Luascript

Post by etompau » Wed Jan 30, 2019 3:31 pm

Vore bra om du berättade lite hur du fick igång fjärrkontrollen och hur du nu använder den.
Gissar på att du nyttjar en händelse för att få till styrningen.

Om det är en händelse som tänder/dimmar en enhet så kan du med två händelse få en "toggel-funktion" som växlar status för enheten vid aktivering av en knapp på din nya fjärr.

Du får ha två händelser och använda en fiktiv enhet (ingen fysisk mottagare kopplad till den). Denna använder du sedan som ett villkor i händelserna.
En händelse för till och en för från av din enhet. I "till-händelsen" aktivera du din mottagare samt den fiktiva enheten.
Det motsatt sker i en från-händelse.
Sätt sedan som villkor i till-händelsen att fiktiv enhet ska vara från och i från-händelsen ska den vara till.

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 3:46 pm

etompau wrote:
Wed Jan 30, 2019 3:31 pm
Vore bra om du berättade lite hur du fick igång fjärrkontrollen och hur du nu använder den.
Gissar på att du nyttjar en händelse för att få till styrningen.

Om det är en händelse som tänder/dimmar en enhet så kan du med två händelse få en "toggel-funktion" som växlar status för enheten vid aktivering av en knapp på din nya fjärr.

Du får ha två händelser och använda en fiktiv enhet (ingen fysisk mottagare kopplad till den). Denna använder du sedan som ett villkor i händelserna.
En händelse för till och en för från av din enhet. I "till-händelsen" aktivera du din mottagare samt den fiktiva enheten.
Det motsatt sker i en från-händelse.
Sätt sedan som villkor i till-händelsen att fiktiv enhet ska vara från och i från-händelsen ska den vara till.
Med händelse, menar du i Telldus Live då?

Jag exkluderade fjärren från Live och rensade inställningarna enligt manualen. Sen inkluderade jag den igen, varpå jag lade in scriptet. Fjärren är med som en brytare under Enheter i Live, men den växlar aldrig till På där, såkan så långt jag förstår inte använda enheten genom Live över huvud taget, får bli helt och hållet genom script.

Scriptet med mina små justeringar. Det där med dimring vid Press and Hold var inte så lätt ändå, hur ska dimvärdet skrivas? Kan inte syntaxen här, kikade lite på andra script men fann inget liknande där.

Code: Select all

-- Define the names on your devices here:
local remotecontrol = "Koksknapp"
local click = "Köksbänken"
local hold = "Köksbänken"
local release = "Button release"
debug = true -- true = outputs more debug data, false = less debug data

-- DO NOT EDIT BELOW THIS LINE --

COMMAND_CLASS_CENTRAL_SCENE = 0x5B
CENTRAL_SCENE_NOTIFICATION = 0x03

local deviceManager = require "telldus.DeviceManager"

function onZwaveMessageReceived(device, flags, cmdClass, cmd, data)
	if device:name() ~= remotecontrol then
		return
	end
	if cmdClass ~= COMMAND_CLASS_CENTRAL_SCENE or cmd ~= CENTRAL_SCENE_NOTIFICATION then
		return
	end
	if list.len(data) < 3 then
		return
	end
	local sequence = data[0]
	local action = data[1]
	local scene = data[2]
	if debug == true then
		print("CENTRAL_SCENE_NOTIFICATION from Device: %s, Scene: %s, Action: %s", device:name(), scene, action)
	end
	
	if action == 0 then -- 1 Click
		local device = deviceManager:findByName(click)
		device:command("turnon", nil, "Scene")
		print("Turning on device: %s", click)
	elseif action == 1 then -- Release
		local device = deviceManager:findByName(release)
		device:command("turnon", nil, "Scene")
		print("Turning on device: %s", release)
	elseif action == 2 then -- Press and hold
		local device = deviceManager:findByName(hold)
		device:command("dim", 50, "Scene")
		print("Turning on device: %s", hold)
	end
end
Funktionen jag försöker få till är
kort tryck tänder
långt tryck dimrar svagt ljus
kort tryck släcker om det är tänt eller dimrat.

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

Re: Hank One Key Luascript

Post by etompau » Wed Jan 30, 2019 4:02 pm

OK, tror jag är med på vad du menar.
Du kan nu styra enheten "köksbänken" med din knapp och status för enheten "köksbänken" ändras till tänd lampa i Live?
Släcka går ej?

Jag har själv inte denna komplicerade knapp för egna tester, men om du istället lägger upp två fiktiva enheter för knappens funktion (click/hold).
Låt sedan dessa enheter vara trigger i händelser i Live (alltså ej script) och gör som jag tidigare skrev med togglefunktionen. (två händelser som triggas av kort tryck)

Långt tryck triggar en händelse med önskad dimnivå.

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 4:10 pm

Trodde inte knappen skulle va så komplicerad, slängde ett öga i telldus kompatibilitetslista, såg en grön bock och tittade intemefter så noga. Sen fann jag luascriptet...

Köksbänken är en Fibaro Dimmer 2, det syns i Live att den är tänd ja. Tänkte mig att det kanske går att klämma in en if-sats

Om köksbänk tänd eller dimmad så släck
Annars tänd

Hur lägger man upp fiktiva enheter?

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

Re: Hank One Key Luascript

Post by etompau » Wed Jan 30, 2019 4:20 pm

OK. Fiktiva enheter är bara en enkel 433-mottagare av valfri typ som inte styr någon fysisk enhet, den används bara som statusindikering.
Så testa med att skapa två av dessa enheter, kalla dom något passande för fjärrkontrollens funktioner (click/hold).
Ändra namnen i scriptet så att styrningen av köksbänken upphör.

Låt sedan dessa två fiktiva enheter vara trigger i händelser. Två händelse för att tända och släcka (click), där du även inför en tredje fiktiv enhet som används som villkor (enl. tidigare beskrivning).

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 4:41 pm

Ahh man kan lägga till en emhet utan att koppla till en fysisk mojäng. Hade jag inte tänkt på.... Hade annars en idé om att göra ett skiva med några smålampor i som styrs av billiga brytare, och använda dem som variabler för diverse ändamål. En lampa för om nån är i hallen, en för rörelse i ett rum, osv. Tänktemdet skulle se lite retro-scifi ut.

Men ska testa få till lite logik med fiktiva lampor först då, ikväll eller imorn.

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Wed Jan 30, 2019 7:45 pm

Sådär, då fungerar det :D tusen tack för hjälpen.

Såhär har jag gjort, ifall nån försöker få till nåt liknande nån gång.

Jag vill kunna tända, dimra och släcka enheten som heter Köksbänken (en fibaro dimmer 2 i vägguttaget som är en bit ifrån själva bänken så ska ha Hankknappen på listen under överskåpen)

Jag skapade 3 fiktiva enheter, bara att klicka på Lägg till enhet, välja 433Mhz och valfri brytare. Skippa att trycka på Lär upp, klicka på Klar. Jag döpte dem till
L.Köksbänk
L.Köksbänk.Dim
L.Köksbänk.På

L för Logik, känns som namnschema när jag ska leta bland alla brytare..

Jag ändrade i scriptet så att ett kort tryck aktiverar L.Köksbänk och ett långtryck aktiverar L.Köksbänl.Dim
Här är scriptet med mina beteckningar

Code: Select all

-- Define the names on your devices here:
local remotecontrol = "Koksknapp"
local click = "L.Köksbänk"
local hold = "L.Köksbänk.Dim"
local release = "Button release"
debug = true -- true = outputs more debug data, false = less debug data

-- DO NOT EDIT BELOW THIS LINE --

COMMAND_CLASS_CENTRAL_SCENE = 0x5B
CENTRAL_SCENE_NOTIFICATION = 0x03

local deviceManager = require "telldus.DeviceManager"

function onZwaveMessageReceived(device, flags, cmdClass, cmd, data)
	if device:name() ~= remotecontrol then
		return
	end
	if cmdClass ~= COMMAND_CLASS_CENTRAL_SCENE or cmd ~= CENTRAL_SCENE_NOTIFICATION then
		return
	end
	if list.len(data) < 3 then
		return
	end
	local sequence = data[0]
	local action = data[1]
	local scene = data[2]
	if debug == true then
		print("CENTRAL_SCENE_NOTIFICATION from Device: %s, Scene: %s, Action: %s", device:name(), scene, action)
	end
	
	if action == 0 then -- 1 Click
		local device = deviceManager:findByName(click)
		device:command("turnon", nil, "Scene")
		print("Turning on device: %s", click)
	elseif action == 1 then -- Release
		local device = deviceManager:findByName(release)
		device:command("turnon", nil, "Scene")
		print("Turning on device: %s", release)
	elseif action == 2 then -- Press and hold
		local device = deviceManager:findByName(hold)
		device:command("turnon", nil, "Scene")
		print("Turning on device: %s", hold)
	end
end
Vidare så skapade jag 3 Händelser, i Live.

Köksbänk på
trig: L.Köksbänk
villkor: Köksbänken=Of
Åtgärd: Köksbänken:On L.Köksbänk.På=On L.Köksbänk=Off

Köksbänk dim
trig: L.Köksbänk.Dim
villkor: -
Åtgärd: Köksbänken=Dim L.Köksbänk.På=On L.Köksbänk.Dim=Off

Köksbänk av
trig: L.Köksbänk=On
villkor: Köksbänken=On ELLER Köksbänken=Dim
Åtgärd: Köksbänken=Off L.Köksbänk.På=Off L.Köksbänk=Off

Nu när det fungerar så planerar jag att skaffa en till knapp att styra spotten i taket med på samma sätt, därför döpte jag inte den fiktiva enheten L.Köksbänk till ex L.Köksknapp vilket annars hade varit ett logiskt namn.

edit stavning
Last edited by Cadryc on Thu Jan 31, 2019 11:39 pm, edited 2 times in total.

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

Re: Hank One Key Luascript

Post by etompau » Thu Jan 31, 2019 7:48 am

Kul att det löste sig och bra att du beskrev hur du gjorde din lösning.

Krasst så borde det gå att få ihop samma lösning, fast med den billigare nexa "smart-knappen" (433-baserad). Den går lös på ca 150 kr och har sannolikt längre batterilivslängd än 6 månader.
Enkeltryck på knappen tänder och växlar status på belysningen.
Dubbeltryck skickar en off-signal som då tänder belysningen med inställd ljusnivå.

Cadryc
Posts: 62
Joined: Thu Jan 18, 2018 11:08 am

Re: Hank One Key Luascript

Post by Cadryc » Thu Jan 31, 2019 11:27 pm

Tittade på den men ville kunna dimra. Tänkte aldrig på att knåpa ihop nåt som att tända i olika steg vid enkeltryck... men tror det blir lite bättre ändå med långtryck för min del. Men planerar att ha ha nytta av nexaknappen på andra håll så småningom.

Hanken har iaf uppladdningsbart batteri :)

För övrigt så är det rätt så intressant att Telldus säljer den här Hankknappen i sin webshop utan att ha automagiskt stöd för den...


edit
Nu är klockan mycket och jag tänker inte, självklart kan jag ju få exakt samma funktionalitet med nexaknappen. Enekltryck tänder fullt. Dubbeltryck dimrar. Nästa enkeltryck släcker... Ja när jag valde Hankknappen så trodde jag att jag skulle få bättre dimningsstöd, tänkte att zwave är ju mer avancerat, å Telldus sålde den dessutom.... nu blev jag sugen på å skaffa två nexaknappar så det blir två lika...

Post Reply