Styra Nexa enheter i Domoticz

Här kan du som nybörjare ställa dina frågor utan att skämmas
Post Reply
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Jag skulle vilja styra några Nexa enheter i min Domoticz server från HC2. Försökte skapa en Virtuel enhet men får den inte att fungera.

Jag kan styra Domoticz via Json och url:erna ser ut som nedan (de fungerar från en web-läsare):
Tända:

http ://192.168.2.27:8080/json.htm?type=command&param=switchlight&idx=7&switchcmd=On&level=0

Släcka

http ://192.168.2.27:8080/json.htm?type=command&param=switchlight&idx=7&switchcmd=Off&level=0

Vore väldigt tacksam om någon vill förklara hur man gör.

Jag skulle också vilja hämta temperaturer från sensorer jag har i Domoticz men de url:erna har jag inte koll på än. Någon som vet hur man gör även det?

Tack på förhand!

Mvh Håkan
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
11
Location: Hofors

Håkan,
testa detta i en virtuell enhet

Code: Select all

HC2 = Net.FHttp("192.168.2.27", 8080) 
response, status, errorCode = HC2:GET("/json.htm?type=command&param=switchlight&idx=7&switchcmd=On&level=0") 
fibaro:log(response)
Skärmavbild 2013-11-07 kl. 21.28.30.png
Skärmavbild 2013-11-07 kl. 21.28.30.png (56.05 KiB) Viewed 44955 times
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Jompa, Tackar för hjälpen! Det fungerade bra!

Går det att få HC2 att byta mellan on och off när man trycker på knappen på bilden HC2-1? Eller måste den logiken göras i Domoticz? Som det är nu har jag två knappar, en för on och en för off (se bifogad bild HC2-2.

För info: Det verkar finnas en bugg i HC2 som gör att när man sparar koden så tar den bort en del och lägger till konstiga tecken. Detta är inget problem om man bara sparar den en gång. Men ska man sedan ändra i koden så fungerar den inte längre. Jompas kod enligt ovan blev så här när den sparades:

HC2 = Net.FHttp("192.168.2.27", 8080)
response, status, errorCode = HC2:GET("/json.htm?type=command¶m=switchlight&idx=7&switchcmd=On&level=0")
fibaro:log(response)


En fråga off Topic, hur klistrar du in bilderna i inlägget?

Mvh Håkan
Attachments
HC2-2.JPG
HC2-2.JPG (14.63 KiB) Viewed 44927 times
HC2-1.JPG
HC2-1.JPG (12.13 KiB) Viewed 44927 times
Raul
Ny medlem
Posts: 19
Joined: 14 Sep 2013, 14:32
10

För att hämta temperatur och luftfuktighet från Domoticz via en Oregon tempsensor så använder jag följande i main loop på en virtuell enhet:

Code: Select all

--[[ 
%% properties 
%% globals 
--]] 
local temp = 0;
HC2 = Net.FHttp("192.168.1.99",8088) 
response ,status, errorCode = HC2:GET("/json.htm?type=devices&rid=2") 
jsonTable = json.decode(response) 
local temp = jsonTable.result[1].Data
fibaro:call(27,"setProperty","ui.Label1.value",temp)
fibaro:sleep(180*1000);
Image

Gällande att &para ändras till ett ¶ så har jag också märkt det, dock är jag inte säker på att det är en bugg i HC2 utan snarare är så att webbläsaren tror att man menar ¶ och därför ändrar det till ¶ tecknet. Liknande problem finns beskrivet här http://meta.stackoverflow.com/questions ... within-pre
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Tackar Raul!

Jag fick inte min Virtual Device med temperatur att fungera. Behöver jag göra något mer än att ändra ID samt Ip och port i koden? Vad behöver jag mer göra i HC2 för att den ska visa temperaturen?

Jag körde debug på koden och den klagade inte. Så här ser den ut i min HC2

Code: Select all

--[[
%% properties
%% globals
--]]
local temp = 0;
HC22 = Net.FHttp("192.168.2.27",8080)
response ,status, errorCode = HC22:GET("/json.htm?type=devices&rid=4")
jsonTable = json.decode(response)
local temp = jsonTable.result[1].Data
fibaro:call(27,"setProperty","ui.Label1.value",temp)
fibaro:sleep(180*1000);
Tack på förhand!

MVh Håkan
Raul
Ny medlem
Posts: 19
Joined: 14 Sep 2013, 14:32
10

Hur ser det ut om du öppnar url'en i webbläsaren? http://192.168.2.27:8080/json.htm?type=devices&rid=4
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Tack för ditt svar!

Så här ser det ut:

{ "5MinuteHistoryDays" : 1, "DashboardType" : 0, "MobileType" : 0, "WindScale" : 1.0, "WindSign" : "m/s", "result" : [ { "AddjMulti" : 1.0, "AddjValue" : 0.0, "BatteryLevel" : 100, "CustomImage" : 0, "Data" : "21.5 C", "Favorite" : 0, "HardwareID" : 1, "HardwareName" : "rfx433", "HaveTimeout" : false, "ID" : "7D00", "LastUpdate" : "2013-11-08 19:33:28", "Name" : "Hallen", "Notifications" : "false", "SignalLevel" : 6, "SubType" : "Viking 02811", "Temp" : 21.50, "Timers" : "false", "Type" : "Temp", "TypeImg" : "temperature", "Unit" : 0, "Used" : 1, "idx" : "4" } ], "status" : "OK", "title" : "Devices" }

Mvh Håkan
Raul
Ny medlem
Posts: 19
Joined: 14 Sep 2013, 14:32
10

Ok prova med följande istället

Code: Select all

--[[
%% properties
%% globals
--]]
local temp = 0;
HC22 = Net.FHttp("192.168.2.27",8080)
response ,status, errorCode = HC22:GET("/json.htm?type=devices&rid=4")
jsonTable = json.decode(response)
local temp = jsonTable.result[1].Temp
fibaro:call(27,"setProperty","ui.Label1.value",temp)
fibaro:sleep(180*1000);
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej.

Tack för att du hjälper mig med detta! tyvärr få jag det inte att fungera. Det händer ingenting, kan jag ha missat någon annan inställning eller något man måste göra för att aktivera enheten?

Mvh Håkan
Raul
Ny medlem
Posts: 19
Joined: 14 Sep 2013, 14:32
10

Du måste ändra till det id din virtuella device har för att Label1 ska uppdateras, ändra alltså från 27 till det id't på följande rad:

Code: Select all

fibaro:call(27,"setProperty","ui.Label1.value",temp)
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Tack för ditt svar. Det har jag inte ändrat så det är säkerligen fel. Men hur hittar jag ID:t på den virtuell devicen? På vanliga devices så ser man det ju om man editerar dem men jag kan inte hitta det på den virtuella enheten.

Mvh Håkan
Raul
Ny medlem
Posts: 19
Joined: 14 Sep 2013, 14:32
10

Du hittar id't i adressfältet i webbläsaren när du är inne och editerar i den virtuella enheten.
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej,

Tack för hjälpen Raul! Nu fungerar det. Jag hade också missat att lägga till en Label.

Fantastiskt vilken bra hjälp man får här i forumet. Tack till alla som hjälpt till! :-)

Mvh Håkan
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Hej Igen,

Mina enheter fungerar perfekt. Jag lyckades även få till att tidsstämpel visas för när Domoticz senast läste av temperaturen.

Nu nya utmaningar och jag är återigen tacksam om ni kan hjälpa mig. Går det att använda Slidern för att styra en dimmer-enhet? Vilken variabel används för att ta nivån från slidern. Jag vet Json url:en för att styra dimmern i Domoticz: /json.htm?type=command¶m=switchlight&idx=9&switchcmd=On&level=50")
Där level på slutet är vilken nivå lampan skall tända.

Tack på förhand!

Mvh Håkan
n0ir
Ny medlem
Posts: 13
Joined: 13 Mar 2013, 18:25
11

Jag har precis skaffat en HC2 och försöker få in alla mina 433MHz enheter från Domoticz som virtuella enheter.

Kan någon hjälpa mig att få till det? :)

Det gäller bl.a. temperatursensorer.

Tänker jag rätt?

1. Under "Devices" i HC2 -> "Add or remove devices" -> Klicka "Add" under "To add the Virtual Device"

2. Vad ska jag fylla i under "IP Address" och "TCP Port"?
Namnlös.jpg
Namnlös.jpg (42.45 KiB) Viewed 44073 times
Min Domoticz kör på IP 10.0.1.7:8080. När jag kör http://10.0.1.7:8080/json.htm?type=devices&used=true för att mappa alla enheter så får jag fram följande om termometern som jag i detta exempel vill lägga till:
{ "AddjMulti" : 1.0, "AddjMulti2" : 1.0, "AddjValue" : 0.0, "AddjValue2" : 0.0, "BatteryLevel" : 100, "CustomImage" : 0, "Data" : "20.1 C, 35 %", "DewPoint" : "4.16", "Favorite" : 0, "HardwareID" : 1, "HardwareName" : "RFXtrx", "HaveTimeout" : false, "Humidity" : 35, "HumidityStatus" : "Dry", "ID" : "8A02", "LastUpdate" : "2014-03-22 17:12:27", "Name" : "Kök Temp 6", "Notifications" : "false", "SignalLevel" : 7, "SubType" : "Rubicson/IW008T/TX95", "Temp" : 20.10, "Timers" : "false", "Type" : "Temp + Humidity", "TypeImg" : "temperature", "Unit" : 2, "Used" : 1, "idx" : "11" }
Kör jag http://10.0.1.7:8080/json.htm?type=devices&rid=11 för att få fram information om bara denna enhet så får jag ut detta:
{ "5MinuteHistoryDays" : 1, "DashboardType" : 0, "MobileType" : 0, "WindScale" : 1.0, "WindSign" : "m/s", "result" : [ { "AddjMulti" : 1.0, "AddjMulti2" : 1.0, "AddjValue" : 0.0, "AddjValue2" : 0.0, "BatteryLevel" : 100, "CustomImage" : 0, "Data" : "20.0 C, 35 %", "DewPoint" : "4.07", "Favorite" : 0, "HardwareID" : 1, "HardwareName" : "RFXtrx", "HaveTimeout" : false, "Humidity" : 35, "HumidityStatus" : "Dry", "ID" : "8A02", "LastUpdate" : "2014-03-22 17:40:22", "Name" : "Kök Temp 6", "Notifications" : "false", "SignalLevel" : 7, "SubType" : "Rubicson/IW008T/TX95", "Temp" : 20.0, "Timers" : "false", "Type" : "Temp + Humidity", "TypeImg" : "temperature", "Unit" : 2, "Used" : 1, "idx" : "11" } ], "status" : "OK", "title" : "Devices" }
När jag sparar den virtuella enheten i HC2 får jag en URL som t.ex. ser ut http://10.0.1.19/fibaro/en/devices/virt ... html?id=24 . Antar då att ID i HC2 på den virtuella enheten är 24?

Ska koden som ska fyllas i under "Main loop" vara:
--[[
%% properties
%% globals
--]]
local temp = 0;
HC22 = Net.FHttp("10.0.1.7",8080)
response ,status, errorCode = HC22:GET("/json.htm?type=devices&rid=11")
jsonTable = json.decode(response)
local temp = jsonTable.result[1].Temp
fibaro:call(24,"setProperty","ui.Label1.value",temp)
fibaro:sleep(180*1000);
Namn.jpg
Namn.jpg (71.41 KiB) Viewed 44073 times
Vad är "label1"? Ska det ändras?
walltorp
Medlem
Posts: 50
Joined: 03 Sep 2013, 11:09
10

Lägg till en virtuell enhet och Klicka Save och sedan på advanced fliken.
Ip address är den ip som din Domiticz server har. Dvs den ip du skriver in i web-läsaren när du konfigurerar Domoticz http://192.168.0.10:8080 (ip-adress är 192.168.0.10 i detta ex)
TCP Port är den port som Domoticz servern svara på. Dvs den port du skriver in efter kolonet ovan efter ip-adressen, ex http://192.168.0.10:8080 (tcp port är 8080 i detta ex)


Det finns en bugg i HC2 som gör att den slutar uppdatera från extern källa efter ett tag om du använder main loop. Så istället för main loop kan du använda en knapp och lägga koden där.
Sedan skapar du en Scen som "trycker" på knappen ex var 15:e minut för att uppdatera. Så har jag numera gjort.



När du skrivit in ip och port samt namn mm. Kryssa i rutan för en Label, klicka add set. Gör sedan det igen för alla labels du önskar (i mitt ex 2).
Lägg sedan till en knapp på sammma sätt.









Min kod ser ut så här (ta bort de kommentarer jag skrivit bakom ## och ändra till rätt ID mm):

--[[
%% properties
%% globals
--]]
local temp = 0;
local update = 0;
local humidity = 0;
HC2 = Net.FHttp("192.168.2.27", 8080) ## ip och port till Domoticz. Ändra till din ip och port
response ,status, errorCode = HC2:GET("/json.htm?type=devices&rid=2") ## Ändra rid=2 till vilket ID din temp-givare har i Domoticz (i mitt fall 2)
jsonTable = json.decode(response)
local temp = jsonTable.result[1].Temp
local update = jsonTable.result[1].LastUpdate
local humidity = jsonTable.result[1].Humidity
fibaro:call(42,"setProperty","ui.Label1.value",temp) ## i mitt fall har Labeln där jag vill skriva ut temperaturen ID Label1. Ändra till vad din label har för ID. Du måste också ändra 42 till det ID din virtuella enhet har
fibaro:call(42,"setProperty","ui.Label3.value",update) ## i mitt fall har Labeln där jag vill skriva ut när temperaturen senast uppdaterades ID Label3. Ändra till vad din label har för ID Du måste också ändra 42 till det ID din virtuella enhet har
fibaro:call(42, "setProperty", "currentIcon", 1000); ## Här sätter jag att jag vill använda en egen ikon. Inte nödvändigt för funktionen. Ändra till ID:t för din ikon. Du måste också ändra 42 till det ID din virtuella enhet har

Lång text, hoppas den går att förstå. Återkom gärna om du har frågor,

Mvh Håkan
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
Joined: 03 Jan 2015, 16:49
9
Location: Vegby
Contact:

Gällande att &para ändras till ett ¶ så har jag också märkt det, dock är jag inte säker på att det är en bugg i HC2 utan snarare är så att webbläsaren tror att man menar ¶ och därför ändrar det till ¶ tecknet. Liknande problem finns beskrivet här http://meta.stackoverflow.com/questions ... within-pre
Hur löste ni problemet med att koden "&param" ändrades till "¶m" vid spara? Koden funkar ju ända tills man måste in och redigera den.
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
Post Reply