Två Controller! Fibaro HCL och Domoticz, varför?

Beskriv ditt system och hjälp andra med dina kreativa lösningar.
Post Reply
leby
Ny medlem
Posts: 7
Joined: 17 Jul 2014, 08:05
10

Eftersom jag haft så mycket nytta och glädje av allt som andra bidragit med på detta och andra Z-wave forum tänkte jag dela med mig av mitt system som är resultatet av ett misstag!

Liksom flera andra blev jag efter att ha läst hek’s fantastiska projekt inspirerad att testa.
Köpte en Fibaro HCL och insåg i princip så snart den var uppe att det var ett misstag, den klarade inte vad jag ville, fel sol upp & ned, inte mjöligt att sätta tider innan etc, begränsade scen möjligheter. Vill tro att det berodde på den begränsade produkt beskrivningen från Fibaro men kanske lika mycket dålig research av mig själv ;)

Efter insett misstaget började jag surfa runt och hittade bland annat ett forum där en användare som kallar sig CopyCatz hade en HCL och kombinerat det med en opensource som heter Domoticz.
Han hade hoppat in som programmerare i projektet och lagt till en länk till HCL för att komma förbi de begränsningar som HCL hade, bland annat sol upp & ned utmaningen.

Jag hittade på andra ställen, bland annat här, önskemål om mer disk för lagring och mer kraft (RAM/CPU).
Efter den lite mer omfattande researchen satte jag ihop nedanstående system

- 1 x Fibaro HCL (primary controller)
- 1 x Domoticz (secondary controller)
- 1 x Asus eee win7 (motsvarande ”ASUS VivoPC VM40B-S023K”)
- 1 x Aeon Labs Z-Stick S2
- 1 x prowl (notifiering I telefon)
- 2 x Aeon Labs Multi Sensor
- 8 x FIBARO System FGS211 Switch 3kW
- 4 x FIBARO System FGS221 Double Relay Switch 2x1.5kW
- 2 x FIBARO System FGD211 Universal Dimmer 500W

Efter att ha börjat testa lite fram och tillbaka insåg jag att åtminstone för min del blev misstaget kanske egentligen en tillgång. Tittar man på priset för controllers så är det knappa 5 tusen, dvs något mindre än en HC2 (jag hade dessutom redan windows burken). Om man tittar på vad funktionen är så har jag nu:

- Redundanta controllers
- ”Obegränsad” disk, asusen mappad mot NASet
- Utbyggnadsmöjlighet med pc standardkomponenter om det skulle behövas
- Fibaro scener
- Lua scripting
- Blockly (googles visuella programmeringsspråk, jmf ”Zipato”)

Man kan använda konfigurationen ovan på minst 2 sätt, CopyCatz har valt ett inspirerad av honom valde jag ett annat. Endera låter man Domoticz vi api starta scener i HCL (CopyCatz val) eller så låter man Domoticz skicka Z-wave instruktionen via Aeon stickan.
Vill man spara pengar väljer man alternativ 1 och kan skippa Aeon stickan men då tappar man många möjligheter med scener kombinerade av status på enheter och tid eller vad man för annat som man kan hitta på.

Jag har ju valt Windows men Domoticz kan gärna köras på Linux i olika tappningar (förmodligen snabbare men inte inom mitt kunskaps område). Det skall väl tilläggas att med Aeon stickan som skickar instruktionen så används OpenZWave protokollet som är ett försök att likna det ”riktiga” licensierade protokollet, jag har inte haft något problem men skulle man stöta på en enhet som inte vill så kan man använda fibaro länken och trigga scener i HCL som komplement.
Som sagt jag har inte behövt det utan kunnat köra alla instruktioner direkt från Domoticz.

Fibaro delarna känner förmodligen de flesta här till så jag kanske skall påpeka att lua scriptandet skiljer sig lite, inte mycket dock.

Eftersom jag inte har en HC2 så kan jag inte ”Fibaro” språk men tittade på Bamsefar och ex så kan man göra dessa jämförelser:
Vi antar att vi vill trigga på enheten som heter ”LUX” och har ID ”52” vi vill läsa ut värdet ur den enheten.
Fibaro kod

Code: Select all

--[[
%%properties
52 value
%% globals
local ArbetsrumTEmp = tonumber(fibaro:getvalue(52, ‘value’))
fibaro:debug(‘vad man nu vill skriva ut I loggen’)
Domoticz kod

Code: Select all

commandArray = {}
if (devicechanged['LUX'])
ArbetsrumTEmp = tonumber(otherdevices_svalues['LUX'])
print(‘vad man nu vill skriva ut I loggen’)
tja så kan man fortsätta, all lua lika men lite olika kommando för att hämta och trigga, kan man det ena så tar det inte lång stund att lista ut det andra sättet. Domoticz använder lua 5.2, vet inte vilken version fibaro använder.
Tänkte komplettera med lite skärm dumpar sen, svarar förstås på frågor om någon vill veta mer om min lite udda installation.

Alla enheter läggs alltså till i HCL och syncas sen automatiskt över till Domoticz, man sätter den bara på inkludera ny hårdvara automatisk så dyker dom upp där.

Jag har alltså alla enheter styrbara från Fibaro appen, men automationen ligger i Domoticz.
Länken mellan Domoticz och HCL är väldigt lätt att sätta upp och konfigurera.
Komunicationen går via lan så den är alltså inte via z-wave nätet, det är bara då nya enheter hämtas till Domoticz.

I HCL sätter man ex upp en variabel som används som start trigger i de scener man vill skjuta igång från Domoticz. Nedan ett exempel.

Variabel i HCL:
variabel fibarolink.PNG
variabel fibarolink.PNG (15.16 KiB) Viewed 24951 times
Länk Domoticz:
Domoticz fibarolink.PNG
Domoticz fibarolink.PNG (68.09 KiB) Viewed 24951 times
Scen i HCL:
hclscen.PNG
hclscen.PNG (15.66 KiB) Viewed 24951 times
Virtuell switch (dummy) i Domoticz:
testsw1.PNG
testsw1.PNG (40.43 KiB) Viewed 24951 times
testsw2.PNG
testsw2.PNG (52.51 KiB) Viewed 24951 times
När man slår om brytaren I Domoticz körs scenen I HCL. Trigger till brytaren i Domoticz kan förstås vara vad som helst som kan skapas med Blockly eller lua script.

Jag har som exempel en brytare som stänger av några andra script en dag varannan vecka. Koden är enkel och ser ut så här för att slå på brytaren:

Code: Select all

-- script som sätter städdag till 'On'
commandArray = {}

d = (os.date('%w'))
h = (os.date('%H'))
w = (os.date('%U'))
d = tonumber(d)
h = tonumber(h)
w = tonumber(w + 1)
if ((d == 4) 
	and (h == 1) 
	and (w % 2 == 0) 
	and (otherdevices['CleaningDay'] == 'Off')) 
then			
	commandArray['CleaningDay'] = 'On'
	print('Turn on')
	print(d)
	print(h)
	print(w)
else

end
return commandArray
Slår av brytaren görs lättast i brytarens egna styrning:
brytav.PNG
brytav.PNG (58.52 KiB) Viewed 24951 times
Sen har jag ett Blockly event (samma sak som scener i HCL) slår av belysningen:
blockly.PNG
blockly.PNG (25.17 KiB) Viewed 24951 times
Det känns som det räcker så för att ge en bild av denna, som jag tror, lite annorlunda kombination av hemautomations grejer.
/lennart

[/color]
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Hej,
Har en nyinköpt HC2 och skulle vilja bygga lite egna sensorer enligt mysensors men finns inga plugins till den. Någon som vet om det skulle vara möjligt att använda en Domoticz controller på en PC, en PI, eller annan enklare kontroller som styr arduino kontrollerna men att de syns och kan styras i HC2 som en virtuell enhet?

//Mathias
leby
Ny medlem
Posts: 7
Joined: 17 Jul 2014, 08:05
10

Länken är ju åt andra hållet då att säga... Man skickar kommandon och värden från domoticz till fibaro. Så du kan ju använda typ temp sensor i domoticz och skicka värdet till fibaro controllern.
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

Intressant om man kan får in MySensors sensorer den vägen till HC. Kreativt.

Det kanske t.o.m går att styra MySensors aktorer i den motsatta riktningen?
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Ja det blir nog att beställa lite arduino prylar för att testa:)
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Satt och tittade lite på HC2 API och det verkar finnas en tcpListener class, borde man inte kunna får en arduino gateway att skicka data om alla sensorer till den direkt det hållet?

//Mathias
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

Faktiskt så kan man låta EthernetGateway:en agera klient (som kontaktar en "server") numera.

Det är bara en dag gammal kod och du hittar den här för tillfället:
https://github.com/mysensors/Arduino/tr ... /MySensors
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Ser nog lovande ut, har precis gjort en lite beställning så jag kan bygga ihop lite för test och sedan se om man kan bygga en plugin i HC2 som tar emot och skickar meddelande till gateway'n.

Har dock inte tittat på hur det funkar än med hur det rent tekniskt fungerar när man gör discovery av en enhet och man gör en egen plugin och hur man kan/ska göra för det ska fungera bäst men får prova lite olika alternativ.

Vet du hur det fungerar i te x Vera plugin till gatewayin? Ser den till att varje mysensor upptäcks som en egen enhet precis som vilket zwave enhet som helst eller det hanteras på ett annat sätt?

Skulle tro att man skulle kunna skapa en Virtuell Enhet/plugin som har en lyssnare eller liknande.

All info/tips mottages gärna så man kan göra en bra lösning.

//Mathias
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

Jo, på Veran skapar min plugin nya enhet när dom presenterar sig första gången. Dessa ser ut och beter sig som vanliga z-wave dito.

Dock väljer Veran att starta om sin process när man skapat nya enheter så jag var tvungen att ha en "inkluderingsläge" i pluginen eftersom man inte vill att den startar om sig när som helst.
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Så din plugin i vera till arduino har en tcp koppling till gateway'n som rapporterar upp all information om alla sensorer som är kopplade till den och är det en sensor som är ny så bara skapas den en ny enhet i Vera?

Är det virtuella enheter som du jobbar med där med eller du hanterar det på något annat sätt?

Jag testade att skapa en virtuell enhet i HC2 som pratade tcp ut och det hållet verkar funkar bra, ska försöka hinna gå igenom dokumentation för att skapa en plugin så jag kan använda en tcp lyssnare för gateway'n att koppla upp sig mot för att skicka all info.

Du råkar inte ha lite exempel på hur data ser ut ifrån en sensor som skickar vidare information via gateway som jag skulle kunna använda innan mina arduino prylar kommer?

//Mathias
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

mathias wrote:Så din plugin i vera till arduino har en tcp koppling till gateway'n som rapporterar upp all information om alla sensorer som är kopplade till den och är det en sensor som är ny så bara skapas den en ny enhet i Vera?
Japp
mathias wrote: Är det virtuella enheter som du jobbar med där med eller du hanterar det på något annat sätt?
Ja. Det skulle man kanske kunna kalla dom. Dom får iallafall egna grafiska element och jag återanväder dom som finns definierade för z-wave enheter.


Här är API:et definierat:
http://www.mysensors.org/download/serial_api_14
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Ska nog inte vara några problem, har gjort lite tester med att automatiskt skapa virtuell enheter och fungerar bra. Har dock haft kontakt med fibaro om plugins och det verkar som de har låst att man kan ladda upp egna för tillfälligt vilket innebär att man inte kan använda tcp lyssnare plugin än utan man måste köra med en virtual enhet till Gateway'n med.

Hur ser det ut med mysensor gateway'n, den bara skickar meddelande vidare om där finns någon tcp Connection och finns där ingen så köas inget upp?

Skickar sensorerna meddelande varje sekund eller det är olika beroende på sensorn?

Tänkte skriva ihop en enkel tcp Proxy på datorn som mysensor pratar med som jag sedan kan skapa allt i HC till att börja med så kan man konvertera det till lua kod senare när de öppnar för tcp lyssnare.

Ska se om det även går att lösa om man har en virtuell enhet som kopplar upp sig mot gateway'n om man kan få den att ligga kvar med en längre tid, isåfall borde det funka med..

//Mathias
hek
Medlem
Posts: 152
Joined: 02 Jan 2013, 16:22
11
Location: Bjärred
Contact:

Nej, gatewayen har inte möjlighet att buffra något.
mathias
Medlem
Posts: 32
Joined: 16 May 2015, 15:47
9

Har lyckats få hc att hålla en tcp session uppe och läsa data som skickas då och då så ser bra ut. Ska granite mera tester så det står och går ett par timmar..

Kan man köra flera tcp sessioner mot gateway'n? Tänkte om man lät en Device lyssna på allt som skickas ifrån sensorerna och låter sedan respektive Device som är sensorerna skicka tillbaka styrning?
Post Reply