   webServer.on("/wifistatus", handle_wifistatus);
   webServer.on("/chz", handle_chz);
   webServer.on("/data", handle_data);
+  webServer.on("/actuate", handle_actuate);
   webServer.begin();
   Serial.println("HTTP server started");
 
-// TODO
+  // TODO if this keeps failing move it into loop? or need to pick up config
+  // from ESP ROM somehow, and do WiFi.begin?
   if(WiFi.hostname("waterelf"))
     Serial.println("set hostname succeeded");
   else

  }
  _celsius = (float) raw / 16.0;
  _fahrenheit = _celsius * 1.8 + 32.0;
  Serial.print(";  temp: ");
  Serial.print(_celsius);
  Serial.print(" C, ");
  Serial.print(_fahrenheit);

  }

  if(OneWire::crc8(addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!");
      return;
  }

  // the first ROM byte indicates which chip
  switch(addr[0]) {
    case 0x10:
      Serial.print("chip=DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.print("chip=DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.print("chip=DS1822");
      type_s = 0;
      break;
    default:
      Serial.print("device is not a DS18x20 family device :-(");
      return;
  }

