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

Z-Uno som fjernkontroll


xibriz

Anbefalte innlegg

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
Lenke til kommentar
Del på andre sider

10 timer siden, Andreas skrev:

Skal ikke binære enheter settes til 0 eller 1?

Ikke 99 slik som multilevel? 

 

Ifølge dokumentasjonen kan de settes 1-99 for ON http://z-uno.z-wave.me/Reference/ZUNO_SWITCH_BINARY/

 

Telldus setter de faktisk til 255 hvis man ikke koder slik jeg har gjort. Har prøvd å sette den til 255 fra z-unoen også.

Lenke til kommentar
Del på andre sider

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)

Lenke til kommentar
Del på andre sider

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

Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

Rakk ikke å teste igår, men hva med å endre type til sensor.binary virker det da?

 

For å være helt klar: det er når switch.binary endrer status at du ikke får rapport om dette i kontrolleren?

Hva med å sette assosiations til bryteren mot enhet1 (kontrolleren) og kanal 2 f.eks

https://z-uno.z-wave.me/Reference/zunoSendReport/

Lenke til kommentar
Del på andre sider

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.

Lenke til kommentar
Del på andre sider

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å.

 

Lenke til kommentar
Del på andre sider

Jeg har nå testet Telldus Live! i alle retninger, og har gitt opp håpet for noen løsning der.

 

Fortsetter testingen mot Z-Way så snart jeg mottar Razberry-antennen.

 

Årasken til at valget fallt på Z-Way er at den har full støtte mot Z-Uno https://z-uno.z-wave.me/z-wave/interoperability-with-z-wave-controllers/

Endret av xibriz
Lenke til kommentar
Del på andre sider

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

Lenke til kommentar
Del på andre sider

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.