    brightness=FADE_INCREMENT_VALUE*FADE_ITERATIONS;
    updateStripWithBrightness(brightness);
    if (Serial.available()<SPOT_REPORT_SIZE){        //don't sleep or fade if you have another report waiting.
-     Bean.sleep(ON_MS);
+     Bean.sleep(onSeconds*1000);
    }
     
    //fade off

void  setAllPixels(uint32_t p){
  for (int i=0; i< PIXELS_IN_STRIP; i++){
    pixels[i]=p;
  }
}


    if ( Serial.available() >= SPOT_REPORT_SIZE )
    {
      Serial.readBytes(buffer, SPOT_REPORT_SIZE);
      if (buffer[1]==0x00 && buffer[2]==FORECASTDAYS){       //0 denotes wave heights
      lastSpotUpdated=buffer[0];
      if (lastSpotUpdated>3 && lastSpotUpdated<8){ //skip over the ring LEDs (16 each, 32 total / 8 == 4. The tide times index is 8
        lastSpotUpdated+=4; 
      }

      for (int i=0; i<FORECASTDAYS; i++){
         waveHeights[i]=buffer[i+3];
       }
       for (int i=0; i<FORECASTDAYS; i++){        //surf conditions
         waveConditions[i]=buffer[i+10];
       }
       receivedConditions=true;
      for (int i=0; i<FORECASTDAYS; i++){
        int ht=waveHeights[i]*waveHeights[i]*4;
        if (ht>255){
          ht=255;
        }
        if (waveConditions[i]<2){                 //flat or no forecast
          strip.setPixelColor(i+lastSpotUpdated*8,0,0,10 );
        }
        else if (waveConditions[i]>=2 && waveConditions[i]<4){ //poor = blue. The color of the summer here in NorCal
          pixels[i+lastSpotUpdated*8]=strip.Color(0, 0, ht);
        }
        else if (waveConditions[i]==4){           //poor to fair = bluegreen. Let's be optimistic here... ;)
          pixels[i+lastSpotUpdated*8]=strip.Color(0, ht/2+20, ht);
        }
        else if (waveConditions[i]>=5 && waveConditions[i]<7){ //fair = green
          pixels[i+lastSpotUpdated*8]=strip.Color(0,ht,0 );         
        }
        else if (waveConditions[i]>=7 && waveConditions[i]<9){ //good = orange
          pixels[i+lastSpotUpdated*8]=strip.Color(ht,ht,0 );         
        }
        else if (waveConditions[i]>=9){           //EPIC!! Stop what you're doing and go surf!!1
          pixels[i+lastSpotUpdated*8]=strip.Color(ht,0,00 );         
        }
        if (i==FORECASTDAYS-1){
          pixels[i+lastSpotUpdated*8+1]=pixels[i+lastSpotUpdated*8];    //have the next 2 pixels match the last day in the forecast
          pixels[i+lastSpotUpdated*8+2]=pixels[i+lastSpotUpdated*8];
        }
      }
    }
    else if (buffer[1]==0x02 ){  //tides
      lastSpotUpdated=buffer[0];
      if (buffer[3]>12) //if PM
        setNPixelsAtIndex(lastSpotUpdated*8,PIXELS_PER_RING,strip.Color(0,60,0));     //dimly turn on all ring LEDs so the ring shape comes through.
      else 
        setNPixelsAtIndex(lastSpotUpdated*8,PIXELS_PER_RING,strip.Color(0,0,80));     //dimly turn on all ring LEDs so the ring shape comes through.
      if (buffer[5]>12) //if PM
        setNPixelsAtIndex(lastSpotUpdated*8+PIXELS_PER_RING,PIXELS_PER_RING,strip.Color(0,60,0));     //dimly turn on all ring LEDs so the ring shape comes through.
      else 
        setNPixelsAtIndex(lastSpotUpdated*8+PIXELS_PER_RING,PIXELS_PER_RING,strip.Color(0,0,80));     //dimly turn on all ring LEDs so the ring shape comes through.

      //low tide first 
      uint8_t pixelHour,pixelMinute;
      
      if (buffer[3]==0 && buffer[4]==0){
        buffer[3]=1;
        buffer[4]=20;
        pixelHour= (buffer[3]%12)*(16.0/12.0);     //mod 12 to remove 24hr time, 16/12 to go from 12 values to 16 LEDs. 
        pixels[pixelHour+lastSpotUpdated*8]=strip.Color(200,0,0);
        pixelMinute= buffer[4]*(16.0/60.0); //
        pixels[pixelMinute+lastSpotUpdated*8]=strip.Color(0,200,0);
      }
      else{
        pixelHour= (buffer[3]%12)*(16.0/12.0);     //mod 12 to remove 24hr time, 16/12 to go from 12 values to 16 LEDs. 
        pixels[pixelHour+lastSpotUpdated*8]=strip.Color(200,0,0);
        pixelMinute= buffer[4]*(16.0/60.0); //
        pixels[pixelMinute+lastSpotUpdated*8]=strip.Color(0,200,0);          
      }
      //high tide next
      if (buffer[5]==0 && buffer[6]==0){//no high tide

      }
      else{
        pixelHour= (buffer[5]%12)*(16.0/12.0);    //mod 12 to remove 24hr time, 16/12 to go from 12 values to 16 LEDs. 
        pixels[pixelHour+lastSpotUpdated*8+PIXELS_PER_RING]=strip.Color(200,0,0);
        pixelMinute= buffer[6]*(16.0/60.0); //
        pixels[pixelMinute+lastSpotUpdated*8+PIXELS_PER_RING]=strip.Color(0,200,0);     
      }
    }
    else if (buffer[1]=0x03){ //set up 
      offSeconds=buffer[2];
      onSeconds=buffer[3];
      
    }
    updateStripWithPixels();
   }
   //fade on
   for (int i=0;i<FADE_ITERATIONS;i++){
