/* * DS18B20Servlet.java * * Created on 20 November 2001, 21:11 * * Copyright 2001 Chris Bryden. Redistribute Freely. * * c.bryden@virgin.net * */ import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import com.dalsemi.onewire.OneWireAccessProvider; import com.dalsemi.onewire.*; import com.dalsemi.onewire.adapter.*; import com.dalsemi.onewire.container.*; import com.dalsemi.onewire.container.OneWireContainer28; /** * * @author cjb * @version */ public class DS18B20Servlet extends HttpServlet { /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); } /** Destroys the servlet. */ public void destroy() { } private OneWireContainer28[] getDevices() throws OneWireException { DSPortAdapter pa = null; pa = OneWireAccessProvider.getDefaultAdapter(); //target family 28 pa.targetFamily(0x28); Enumeration e = pa.getAllDeviceContainers(); Vector v = new Vector(); int i = 0; while( e.hasMoreElements()) { v.addElement((OneWireContainer28) e.nextElement()); } OneWireContainer28[] devices = new OneWireContainer28[v.size()]; v.copyInto(devices); return(devices); } private void drawDocument(PrintWriter out) { OneWireContainer28[] devices = new OneWireContainer28[0]; try { devices = getDevices(); } catch(OneWireException e) { out.write("

One Wire Exception
"); e.printStackTrace(out); out.write(""); return; } out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n"); out.write("DS18B20 Servlet\r\n\r\n"); out.write(""); out.write("\r\n"); out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n

"); out.write("DS18B20 Servlet

"); out.write("\r\n"); out.write("

\r\n" + (new OneWireContainer28()).getDescription()); out.write("\r\n
"); out.write("\r\n"); out.write("\r\n


\r\n"); out.write("\r\n"); for(int i=0;i\r\n"); if(devices[i].hasSelectableTemperatureResolution()) { out.write("\r\n"); } if(devices[i].hasTemperatureAlarms()) { out.write(""); out.write("\r\n"); } if(devices[i].hasTemperatureAlarms() || devices[i].hasSelectableTemperatureResolution()) { out.write("
\r\n"); out.write("
Device\r\nData
\r\n"); out.write("\r\n"); byte[] state = new byte[0]; try { state = devices[i].readDevice(); out.write(devices[i].getName() + "@" + devices[i].getAddressAsString()); devices[i].doTemperatureConvert(state); devices[i].writeDevice(state); state = devices[i].readDevice(); out.write("\r\n"); out.write("\r\n"); out.write(devices[i].getTemperature(state) + "°C"); out.write("\r\n"); out.write("\r\n"); out.write("Resolution:
"); out.write("\r\n"); out.write("
\r\n"); out.write("\r\n"); if(devices[i].isAlarming()) { out.write("Alarm\r\n"); } else { out.write("No Alarm\r\n"); } out.write("\r\n"); out.write("\r\n"); out.write("Lo Alarm: " + "\r\n"); out.write("
\r\n"); out.write("Hi Alarm: " + "\r\n"); out.write("
"); out.write("\r\n
\r\n"); out.write("\r\n"); out.write("\r\n"); } } catch(OneWireException e) { out.write("One Wire Exception:" + e.getMessage()); } } out.write("\r\n
\r\n"); out.write("
"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { OneWireContainer28[] devices = new OneWireContainer28[0]; try { devices = getDevices(); } catch(OneWireException e) { response.getWriter().write("

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } String address = request.getParameter("address"); for(int i=0;i

One Wire Exception
"); e.printStackTrace(response.getWriter()); response.getWriter().write(""); return; } break; } } response.setContentType("text/html;charset=ISO-8859-1"); drawDocument(response.getWriter()); } /** Returns a short description of the servlet. */ public String getServletInfo() { return "DS18B20 One-Wire digital thermometer servlet"; } }