Identifikation af Z-Wave enheder i C#

13. januar, 2010 af Henrik Leidecker Jørgensen 7 comments »

I denne artikel behandles C# implementeringen af protokollen, der blev gennemgået i ‘Identifikation af Z-Wave enheder‘..
De tekniske ændringer i forbindelse med de nye requests begrænser sig til en reimplementering af callback id. Ikke alle responses understøtter callback id, hvilket påvirker initieringen/afslutningen af beskedsekvenser.
Den reelle udfordring ligger i, at indholdet af de responses, som Z-Wave controlleren sender til C# klienten ikke længere udelukkende anvendes til at afslutte beskedsekvensen – selve indholdet er interessant, da det fortæller, hvilke enheder, der findes i Z-Wave netværket.

Identifikationen af Z-Wave enheder består basalt set af to ny requests.

  • Spørg efter en oversigt over node id’er i Z-Wave netværket (discovery)
  • Spørg, for hver node id, hvilken type denne node er

Der tilføjes en Controller til deviceklasserne.

class Controller : ZWaveNode
{
    ....
 
    public void Discovery()
    {
        ...
    }
 
    public void GetNodeTypes(byte nodeId)
    {
        ...
    }
 
    ....
 
}

» Læs mere: Identifikation af Z-Wave enheder i C#

Forum på digiWave.dk

12. januar, 2010 af Henrik Leidecker Jørgensen Ingen kommentarer »

Så er det nye forum på digiWave.dk klar.

Hensigten er, at samle diskussionen omkring software udvikling inden for Z-Wave ét sted. Tanken er at komplementere andre fora som ZWave.dk og Domoticaforum.eu.

Efterhånden som der dukker nye emner op på digiWave.dk vil der blive oprettet tilsvarende fora.

Identifikation af Z-Wave enheder

7. januar, 2010 af Henrik Leidecker Jørgensen Ingen kommentarer »

Z-Wave controlleren kan fortælle hvilke enheder, der er knyttet til den. Denne artikel ser på, hvilke beskeder, der sendes og modtages i forbindelse med dette.
Artiklen er én ud af en række artikler om Z-Wave protokollen og hvordan denne kan implementeres i C#. Det er en fordel, men ikke strengt nødvendigt, at have læst de foregående artikler.

Et Z-Wave netværk kan bestå af 232 enheder, hvor hver enhed har et node id. Ud over node id’et findes der en række af andre attributter bl.a. type. Der er defineret et væld af nodetyper i Z-Wave protokollen, men i denne artikel vil kun Controller, Switch og Dimmer blive berørt.
Fremgangsmåden for at identificere hvilke enheder, der findes i Z-Wave netværket, er relativ enkelt.

  1. Spørg Z-Wave controlleren hvilke node id’er, der findes
  2. Spørg Z-Wave controlleren for hver node id, hvilken type denne node er

» Læs mere: Identifikation af Z-Wave enheder

Z-Wave protokollen i C# – Del 3

2. januar, 2010 af Henrik Leidecker Jørgensen Ingen kommentarer »

I denne artikel forbedres beskedhåndteringen og en lysdæmper (Dimmer) tilføjes til deviceklasserne.

For at få det fulde udbytte af artiklen er det en fordel at have læst de tidligere artikler på dette site.

Det er vigtigt, at en påbegyndt beskedsekvens er afsluttet før en ny påbegyndes. Dette er nødvendigt for at overholde protokollen. Den nuværende strategi bygger på princippet om, at det er det deviceobjekt, der har initieret en beskedsekvens, som også afgører og signalerer, hvornår og når beskedsekvensen er afsluttet.
I de tidligere eksempler, hvor der kun eksisterede én enhed og dermed ét deviceobjekt, så beskedsekvensen for at tænde node ‘6′ således ud.

/*
    Message sent: 01 09 00 13 06 03 20 01 FF 05 3B
    Message received: 06
    Message received: 01 04 01 13 01 E8
    Message sent: 06
*/

Alle beskeder til deviceobjektet fra Z-Wave controlleren var derfor relateret til ét og kun ét objekt. Med flere enheder i Z-Wave netværket, skal hvert enkelt deviceobjekt til at forstå, om beskeder fra Z-Wave controlleren er relateret til dem eller et andet objekt. Uden denne viden vil alle deviceobjekter indikere, at en beskedsekvens er afsluttet, når et vilkårligt response modtages. Husk at alle beskeder fra Z-Wave controlleren sendes til alle deviceobjekter.

I Z-Wave protokollen findes der et begreb, der hedder callback id. Det kan anvendes til at holde styr på request/response par. Et callback id defineres hver gang en request sendes fra et af deviceobjekterne. » Læs mere: Z-Wave protokollen i C# – Del 3

Z-Wave protokollen i C# – Del 2

20. december, 2009 af Henrik Leidecker Jørgensen 3 comments »

I denne artikel ændres koden, så klienten ikke længere selv håndterer, hvornår den næste besked kan sendes. Der oprettes ligeledes en klasse, der repræsenterer den Z-Wave enhed, der kommunikeres med.

Funktionaliteten er den samme, som i sidste artikel. Først slukkes og derefter tændes den samme Z-Wave enhed.

Switch s = new Switch(nodeId, zwavePort)
s.Off();
s.On();

Det er vigtigt at have forstået de tidligere artikler for at få det fulde udbytte af eksemplet.

Til eksemplet anvendes de samme enheder og konfiguration, som blev brugt i artiklen ‘Z-Wave protokollen i C#‘.

Opbygningen af beskeder til at tænde og slukke for en enhed samt håndtering af de tilhørende beskeder fra Z-Wave controlleren samles i klassen Switch.

class Switch : ZWaveNode 
{ 
    public void On()
    { 
        ...
    }
 
    public void Off()
    {
        ...
    }
 
    public void MessageHandler(byte[] message) 
    { 
        ... 
    } 
}

» Læs mere: Z-Wave protokollen i C# – Del 2

Z-Wave protokollen i C# – Del 1

13. december, 2009 af Henrik Leidecker Jørgensen Ingen kommentarer »

I denne artikel om Z-Wave programmering i C# kan programmet tænde og derefter slukke for en Z-Wave enhed, hvilket kræver, at nogle basale principper i Z-Wave protokollen overholdes.

Det er vigtigt at have forstået stoffet i de to tidligere artikler for at få det fulde udbytte af eksemplet.

Til eksemplet anvendes de samme enheder og den samme konfiguration, som blev brugt i artiklen ‘En introduktion til Z-Wave programmering i C#‘.

Den basale kommunikation og protokolhåndtering samles i klassen ZWavePort.

class ZWavePort
{
    ...
}

» Læs mere: Z-Wave protokollen i C# – Del 1

En introduktion til Z-Wave protokollen

7. december, 2009 af Henrik Leidecker Jørgensen Ingen kommentarer »

I første artikel om Z-Wave programmering i C# kunne programmet enten tænde eller slukke for en Z-Wave enhed. I denne artikel bliver nogle af de basale principper i Z-Wave protokollen beskrevet. Dette danner grundlag for at ændre koden i en senere artikel så den kan tænde og derefter slukke enheden. Det lyder ikke af meget, men det kræver, at Z-Wave protokollen overholdes.

Z-Wave protokollen bygger på følgende princip.

Messaging1

» Læs mere: En introduktion til Z-Wave protokollen

En introduktion til Z-Wave programmering i C#

23. november, 2009 af Henrik Leidecker Jørgensen Ingen kommentarer »

Z-Wave er en protokol til trådløs kommunikation med f.eks lamper og sensorer i hjemmet. Z-Wave kan bruges til at tænde, slukke, aflæse osv.
Det er muligt at lære mere om Z-Wave ved at læse en af de tidligere artikler eller gå ind på siden Z-Waves.dk.

zwaves-logo-new2

Det er enkelt at komme i gang med at programmere til Z-Wave, man skal dog være opmærksom på, at specifikationerne ikke er offentlig tilgængelige. Eksemplet i denne artikel kan tænde eller slukke for f.eks. en lampe.

» Læs mere: En introduktion til Z-Wave programmering i C#

Styring af lyset i din bolig

11. november, 2009 af Henrik Leidecker Jørgensen Ingen kommentarer »

Z-Wave er en standard for styring via radiobølger. Det kan f.eks. være at tænde for lamper, skrue ned for varmen, låse for dørene osv. Det er virksomheden Zensys A/S, der står bag standarden og de elektriske komponenter, der gør kommunikationen mulig.
Selve apparaterne bliver produceret af mange forskellige firmaer; Danfos, Qees, Flex Control, Aeon-Labs, Everspring for at nævne nogle få og tanken er, at de alle skal kunne tale sammen.

I Danmark er der opstået et helt ‘community’ omkring teknologien og de tilhørende produkter. Det har givet sig udslag i en hjemmeside, et forum, en wiki og en til tider yderst aktiv chat på IRC. Tirsdag d. 10. november 2009, blev det andet møde afholdt med deltagelse af medlemmer, producenter og HOMEe.dk.

» Læs mere: Styring af lyset i din bolig

Det nye TV-signal

9. november, 2009 af Henrik Leidecker Jørgensen Ingen kommentarer »

tvsignal

Det analoge signal slukkede d. 31. oktober 2009 og det var dermed slut med at se tv på den gamle måde. Det er nu blevet afløst af ‘Det nye tv-signal’.

Hvad er så det nye? Først og fremmest, så er TV-signalet nu digitalt og baserer sig på DVB-T. For at se TV via det nye signal er det derfor nødvendigt at have et fjernsyn eller en boks, som indeholder en DVB-T tuner.

» Læs mere: Det nye TV-signal