Reading Wii nunchuck data using motion plus pins

Im trying to read nunchuck data using connection with motion plus,
basicly connection looks like this arduino<->motion plus<->nunchuck

But how to do this? I have read ton of topics, but have not found the answer.
Do I have to init. the nunchuck? How to read the nunchuck data? Is there any switching? :~
Here is the code for reading motion plus data + some motor code…

// this uses the Arduino servo library included with version 0012

// caution, this code sweeps the motor up to maximum speed !
// make sure the motor is mounted securily before running.
#include <Wire.h>
#include <Servo.h>

byte data[6];          //six data bytes
int yaw, pitch, roll;  //three axes
int yaw0, pitch0, roll0;  //calibration zeroes
int yaw2, pitch2, roll2, count;
int calibrated;

Servo m1,m2,m3;
int maxSpeed;
int timeDelay;

void calibrateZeroes(){
  for (int i=0;i<10;i++){
    wmpSendZero();
    Wire.requestFrom(0x52,6);
    for (int i=0;i<6;i++){
      data[i]=Wire.receive();
    }
    yaw0+=(((data[3]>>2)<<8)+data[0])/10;        //average 10 readings for each zero
    pitch0+=(((data[4]>>2)<<8)+data[1])/10;
    roll0+=(((data[5]>>2)<<8)+data[2])/10;
    yaw2 = yaw0;
    pitch2 = pitch0;
    roll = roll2;
  }
  Serial.print("Yaw0:");
  Serial.print(yaw0);
  Serial.print("  Pitch0:");
  Serial.print(pitch0);
  Serial.print("  Roll0:");
  Serial.println(roll0);
}

void wmpSendZero(){
  Wire.beginTransmission(0x52);    //now at address 0x52
  Wire.send(0x00);                 //send zero to signal we want info
  Wire.endTransmission();
}

void wmpOn(){
  Wire.beginTransmission(0x53);    //WM+ starts out deactivated at address 0x53
  Wire.send(0xfe);                 //send 0x04 to address 0xFE to activate WM+
  Wire.send(0x04);
  Wire.endTransmission();          //WM+ jumps to address 0x52 and is now active
}

void reset()
{
  //Wire.endTransmission();
  Wire.begin();
}

void receiveData(){
  wmpSendZero();                   //send zero before each request (same as nunchuck)
  Wire.requestFrom(0x52,6);        //request the six bytes from the WM+
  for (int i=0;i<6;i++){
    data[i]=Wire.receive();
  }
  yaw=((data[3]>>2)<<8)+data[0]-yaw0;        //see http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
  pitch=((data[4]>>2)<<8)+data[1]-pitch0;    //for info on what each byte represents
  roll=((data[5]>>2)<<8)+data[2]-roll0;      
}

void arm(){
  // arm the speed controller, modify as necessary for your ESC  
  setSpeed(0);
  delay(1000); //delay 1 second,  some speed controllers may need longer
}

void setSpeed(int speed){
  // speed is from 0 to 100 where 0 is off and 100 is maximum speed
  //the following maps speed values of 0-100 to angles from 0-180,
  // some speed controllers may need different values, see the ESC instructions
  int angle = map(speed, 0, 100, 0, 180);
  m1.write(angle); 
  m2.write(angle); 
  m3.write(angle);    
}

void setup()
{
  Serial.begin(115200);
  Serial.println("WM+ tester");
  Wire.begin();
  wmpOn();                        //turn WM+ on
  calibrateZeroes();              //calibrate zeroes
  delay(1000);
  count = 0;
  
 /* maxSpeed = 85;
  timeDelay = 2000;
  m1.attach(9); 
  m2.attach(10);
  m3.attach(11);
  arm();*/  
}


void loop()
{
  /*int speed;

  // sweep up from 0 to to maximum speed in 20 seconds
  for(speed = 0; speed <= maxSpeed; speed += 5) {
    setSpeed(speed);
    delay(timeDelay);
  }
  // sweep back down to 0 speed.
  for(speed = maxSpeed; speed > 0; speed -= 5) {
    setSpeed(speed);
    delay(timeDelay);
  }
  setSpeed(0);  
  delay(timeDelay); // stop the motor for 5 seconds
  */
  receiveData();                  //receive data and calculate yaw pitch and roll
  calibrated = 0;
  
  if( yaw2 == yaw && pitch2 == pitch && roll2 == roll )
  {
    count++;
    if( count == 3 )
    {
      reset();
      wmpOn();
      count = 0;
      calibrated = 1;
      Serial.print("---------reset-----\n");
    }
  }
  else
  {
    yaw2 = yaw;
    pitch2 = pitch;
    roll2 = roll;
    count = 0;
  }
  if( calibrated == 0 )
  {
    Serial.print("yaw:");           //see diagram on randomhacksofboredom.blogspot.com
    Serial.print(yaw);              //for info on which axis is which
    Serial.print("  pitch:");
    Serial.print(pitch);
    Serial.print("  roll:");
    Serial.println(roll);
    delay(500);
  }
}

There's a WiiChuck library for reading from the nunchuck. Give it a try.

http://arduino.cc/playground/Main/WiiChuckClass

Use the Example Code on that page to see if it just works.