Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Anbefalte innlegg

Skrevet (endret)

Jeg har en plan om å bruke en Z-Uno som fjernkontroll for å flå av/på/dimme lys. Systemet jeg bruker er Telldus Live!

 

Jeg har koblet opp en Z-Uno med 3 knapper. Funksjonene på knappene er:

B1 Knappen til venstre = Opp

B2 Knappen i midten = Ned

B3 Knappen til høyre = Toggle select (Velg/Fjern valg)

 

I testfasen har jeg ikke noen skjerm, så man må huske menyen, skjermen kommer etter hvert :)

 

 

Menyen i Sketch'en er foreløpig slik:

C1 Første valg = Channel 1 = On/Off

C2 Andre valg = Channel 2 = On/Off

C3 Tredje valg = Channel 3 = On/Off/Dim

 

Så hvis man vil slå på lys på channel 2 trykker man: B2 -> B3 -> B1 (ned, select, opp)

Deretter kan man gå videre til channel 3 for å slå av: B3 -> B2 -> B3 -> B2 (unselct, ned, select, ned)

 

Så til problemet:

 

Når jeg inkluderer Z-Unoen i Telldus Live! vises den som 4 enheter. Første enhet er hovednoden, også en enhet for hver channel.

 

 

Når jeg da bruker Z-Unoen til å slå av/på noe er det kun hovednoden som endres, men når jeg slår av/på hver enhet i Telldus Live! virker alt som det skal på Z-Unoen.

Dette betyr at jeg ikke kan bruke Z-Unoen som først planlagt, fordi jeg hadde tengt å trigge en event for hver kanal. Nå kan jeg kun bruke hovednoden til å trigge eventer.

 

@Andreas har lovet meg å teste oppsettet på sitt system (HS3?) Hvis noen andre har en Z-Uno liggende å vil teste så versågod test og rapporter resultatene :)

Jeg skal ta å teste på OpenHAB i løpet av de neste dagene.

Nedenfor er koblingsskjema, koden å bilder.

 

Assosiasjoner fungerer bra.

Z-Uno om Z-Wave Channels: https://z-uno.z-wave.me/Reference/Z-Wave/#Channels

 



const uint8_t channelMenu = 3; //How many channels that is available trough the display menu

/* Buttons */
const uint8_t buttonPinSelect = 2;
const uint8_t buttonPinDown = 9;
const uint8_t buttonPinUp = 4;

#define LED_PIN 13

boolean rowSelected = false;
uint8_t currentRow = 0;

/* Z-UNO */
byte c1Value, c2Value, c3Value;
//Setup Z-Wave channels
ZUNO_SETUP_CHANNELS(
  ZUNO_SWITCH_BINARY(getC1, setC1), //Channel 1 (On/Off)
  ZUNO_SWITCH_BINARY(getC2, setC2), //Channel 2 (On/Off)
  ZUNO_SWITCH_MULTILEVEL(getC3, setC3)
);

//ZUNO_SETUP_ASSOCIATIONS(ZUNO_ASSOCIATION_GROUP_SET_VALUE, ZUNO_ASSOCIATION_GROUP_SET_VALUE);

/**
 * Runs once at startup
 */
void setup() {
  pinMode(buttonPinSelect, INPUT);
  pinMode(buttonPinUp, INPUT);
  pinMode(buttonPinDown, INPUT);

  Serial.begin(9600);
}

//boolean once = true;
void loop() {
  //Select button
  if (digitalRead(buttonPinSelect) == HIGH) {
    if (rowSelected) {
      rowSelected = false;
    } else {
      rowSelected = true;
    }
    Serial.println("SELECT");
    Serial.println(rowSelected);
    Serial.println(currentRow);
    
    delay(300);
  }
  //Up button
  if (digitalRead(buttonPinUp) == HIGH) {
    Serial.println("UP");
    
    if (rowSelected) {
      switch (currentRow) {
        case 0:
          setC1(99);
          zunoSendReport(1);
          break;
        case 1:
          setC2(99);
          zunoSendReport(2);
          break;
        case 2:
          setC3(99);
          zunoSendReport(3);
          break;
      }
    } else if (currentRow > 0) {
      currentRow--;
    }
    delay(300);
  }
  //Down button
  if (digitalRead(buttonPinDown) == HIGH) {
    Serial.println("DOWN");    
    if (rowSelected) {
      switch (currentRow) {
        case 0:
          setC1(0);
          zunoSendReport(1);
          break;
        case 1:
          setC2(0);
          zunoSendReport(2);
          break;
        case 2:
          setC3(0);
          zunoSendReport(3);
          break;
      }
    } else if (currentRow < (channelMenu-1)) {
      currentRow++; 
    }
    delay(300);
  }
}

/**
 * Return current value of Channel 1 (On/Off)
 */
byte getC1(void) {
  Serial.println("C1 get");
  Serial.println(c1Value);
  return c1Value;
}
/**
 * Set new value of Channel 1 (On/Off)
 * 0 = Off, 0 != On
 */
void setC1(byte value) {
  Serial.println("C1 set");
  Serial.println(value);
  if (value > 99) {
    value = 99;
  }
  //Do stuff
  //Save value
  c1Value = value;
}

/**
 * Return current value of Channel 2 (On/Off)
 */
byte getC2(void) {
  Serial.println("C2 get");
  Serial.println(c2Value);  
  return c2Value;
}
/**
 * Set new value of Channel 2 (On/Off)
 * 0 = Off, 0 != On
 */
void setC2(byte value) {
  Serial.println("C2 set");
  Serial.println(value);  
  if (value > 99) {
    value = 99;
  }
  //Do stuff
  //Save value
  c2Value = value;
}

/**
 * Return current value of Channel 3 (Dim)
 */
byte getC3(void) {  
  Serial.println("C3 get");
  Serial.println(c3Value);  
  return c3Value;
}
/**
 * Set new value of Channel 3 (Dim)
 * 0 = Off, 0 != On
 * Max value = 99
 */
void setC3(byte value) {
  Serial.println("C3 set");
  Serial.println(value);  
  if (value > 99) {
    value = 99;
  }
  //Do stuff
  //Save value
  c3Value = value;
}

 

zunoButtonTest_bb.jpg

zunoControllerTft.ino

telldus_to_zuno.jpg

zuno_to_telldus.jpg

Endret av xibriz
  • Like 2
Skrevet
5 minutter siden, Andreas skrev:

Har du prøvd  å ekskludere den og inkludere den igjen?

Ja, jeg gjør det hver gang jeg endrer i koden for sikkerhets skyld.

Skrevet

Er zunoen siste firmware?

Du kan jo sette den til alltid våken, sånn bare for å være sikker.

Skal prøve skissen din ikveld.. har bare sett på den på mobilen sålangt.. 

For å debugge så kan du printe ut variablene som hex (valuec1)

Skrevet

Z-Unoen er siste firmware (2.0.6 hvis jeg husker rett).

Alltid våken.

Printe ut variablene er det

Serial.println

  gjør.... Man kan ikke debugge Telldus Live! på noen måte som jeg vet om.

Skrevet

Men  hvis du skriver de ut med println (hex (c1)); så ser du at de er i rett format..

Så kan du sette opp hvilke verdier som er hva i telldusen. gå i settings-configuration og definer hva som er on (99) i ditt tilfelle.. std er 255

Skrevet

Eller så returnerer du getter som 255.. da skal telldus skjønne det.. sånn i teorien iaffal.. setter påvirker ikke status i live.telldus.com

Skrevet

I går testet jeg Z-Unoen mot OpenHAB med mer eller mindre samme resultat som mot Telldusen.

 

Det ser ut som at alt fungerer slikt som jeg forventer fra Telldus mot Z-Uno, men ikke fra Z-Uno mot Telldus.

 

Jeg tror at jeg må endre taktikk.

 

F.eks. sette opp Z-Unoen som en temperatursensor, også manuelt sette f.eks. 20, 30, 40 grader osv. Deretter kan jeg kjøre Eventer i Telldus på hva som skal skje når det blir 20, 30 og 40 grader.

 

Litt som en fake sensor for å oppnå ønsket resultat.

Skrevet

Problemet er at når switch.binary endrer status på f.eks. kanal 3 på Z-Unoen og man bruker zunoSendReport(3) så er det Device tilsvarende hovednoden som oppdateres i Telldus å ikke Device tilsvarende kanal 3.

 

Hvis man endrer status på Device tilsvarende kanal 3 i Telldus så oppdateres setter-funksjonen tilsvarende kanal 3 på Z-Unoen.

 

Altså Z-Uno til Telldus = Uønsket resultat

Telldus til Z-Uno = Ønsket resultat

 

Jeg prøvde å sette opp assosiation group fra hovednoden til kanal 3 uten at jeg kom noen vei med det.

Skrevet

Problemet er vel at assosiasjoner foregår utenenfor kontrolleren. Så hvis jeg setter opp assosiasjon mellom Z-Unoen (hovednoden) og Kanal 2 på Z-Unoen så snakker den med seg selv... skjønner ikke helt va det skulle være godt for...?

 

 

Assosiasjoner mellom Z-Unoen på kanal 2 å en annen Z-Wave-node er uproblematisk. Men det er ikke det jeg ønsker å oppnå.

 

Skrevet

Her skal du sørge for at en beskjed fra Z-Uno'en blir tolket riktig av Telldus (master controller), så jeg vil vel si at assosiasjon er ganske viktig... ?

Skrevet

Da var første test av Z-Uno mot Z-Way i boks, og testen var en suksess :)

 

Det fungerte på første forsøk, og Z-Unoen klarte å styre 3 forskjellige enheter i Z-Way (2 switch binary og 1 switch multilevel).

 

Da kan jeg gå videre med å utvikle Z-Unoen, men jeg må samtidig jobbe med å intigrere Telldus mot Z-Way siden det er der jeg har mine 433-enheter.

 

 

zuno_to_zway.jpg

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.