📄 corewizard.java
字号:
sb.append(" <class>net.sf.dz.device.actuator.impl.tcp.PnpHvacDriver</class>\n"); sb.append(" <switch>\n"); sb.append(" <mode><address>"); if ( modeAddress != null ) { sb.append(modeAddress); } else { sb.append("NOT_CONFIGURED"); } sb.append("</address></mode>\n"); sb.append(" <stage><address>"); if ( stageAddress != null ) { sb.append(stageAddress); } else { sb.append("NOT_CONFIGURED"); } sb.append("</address></stage>\n"); sb.append(" <fan><address>"); if ( fanAddress != null ) { sb.append(fanAddress); } else { sb.append("NOT_CONFIGURED"); } sb.append("</address></fan>\n"); sb.append(" </switch>\n"); sb.append(" </driver>\n"); sb.append(" <mode>cool</mode>\n"); sb.append(" <zone_controller>\n"); sb.append(" <class>net.sf.dz.device.model.impl.BalancingZoneController</class>\n"); sb.append(" <dump_threshold>0.3</dump_threshold>\n"); sb.append(" </zone_controller>\n"); for ( Iterator i = ud.zoneSet.iterator(); i.hasNext(); ) { ZoneDescriptor zd = (ZoneDescriptor)i.next(); renderZone(zd, context, sb); } sb.append(" </unit>\n"); } private void renderZone(ZoneDescriptor zd, Map context, StringBuffer sb) { sb.append(" <zone name=\"").append(zd.name).append("\">\n"); sb.append(" <thermostat>\n"); sb.append(" <controller>\n"); sb.append(" <class>net.sf.dz.controller.PID_Controller</class>\n"); sb.append(" <pid>\n"); sb.append(" <P>1</P>\n"); sb.append(" <I><weight>0.000002</weight><time>900000</time></I>\n"); sb.append(" <D><weight>0</weight><time>0</time></D>\n"); sb.append(" <SL>1</SL>\n"); sb.append(" </pid>\n"); sb.append(" </controller>\n"); sb.append(" <temp_sensor>\n"); sb.append(" <class>net.sf.dz.device.sensor.impl.PnpTemperatureSensor</class>\n"); sb.append(" <address>"); if ( zd.sensor != null ) { sb.append(zd.sensor.address); } else { sb.append("NOT_CONFIGURED"); } sb.append("</address>\n"); sb.append(" </temp_sensor>\n"); sb.append(" </thermostat>\n"); sb.append(" <damper>\n"); if ( zd.servo == null ) { sb.append(" <class>net.sf.dz.device.actuator.impl.NullDamper</class>\n"); } else { sb.append(" <class>net.sf.dz.device.actuator.impl.ServoDamper</class>\n"); sb.append(" <reverse enabled=\"true\"/>\n"); sb.append(" <crawl enabled=\"true\"/>\n"); sb.append(" <controller>\n"); Servo s = zd.servo.servo; sb.append(" <class>").append(s.getController().getClass().getName()).append("</class>\n"); sb.append(" <port>").append(s.getController().getPort()).append("</port>\n"); sb.append(" <id>").append(s.getName()).append("</id>\n"); sb.append(" </controller>\n"); } sb.append(" </damper>\n"); sb.append(" </zone>\n"); } private void renderSchedule(Map context, StringBuffer sb) { File scheduleDir = new File(context.get("schedule.dir").toString()); if ( scheduleDir == null ) { scheduleDir = new File(System.getProperty("java.io.tmpdir")); complain(LOG_WARNING, CH_CW, "Schedule directory undefined, using system temp dir (" + scheduleDir + ")"); } sb.append(" <persistent_schedule>\n"); sb.append(" ").append(scheduleDir.toString()).append("\n"); sb.append(" </persistent_schedule>\n"); for ( Iterator i = getSortedContextValues(context, "zone.").iterator(); i.hasNext(); ) { ZoneDescriptor zd = (ZoneDescriptor)i.next(); File zoneScheduleFile = new File(scheduleDir, zd.name + ".conf"); try { String commonPrefix = "dz.unit." + zd.unit.name + ".zone." + zd.name + ".schedule.day."; PrintWriter pw = new PrintWriter(new FileWriter(zoneScheduleFile)); complain(LOG_WARNING, CH_CW, "FIXME: Heating schedule ignored for now"); // This will contain periods for the day. The key is the // day, the value is the set of period names. Map periodMap = new TreeMap(); for ( Iterator i2 = zd.coolingSchedule.iterator(); i2.hasNext(); ) { String period = i2.next().toString(); // VT: FIXME: It is possible to simplify the // schedule format significantly StringTokenizer st = new StringTokenizer(period, ":"); //complain(LOG_NOTICE, CH_CW, "Period: " + period); String day = st.nextToken(); String name = st.nextToken(); String time = st.nextToken() + ":" + st.nextToken(); String setpoint = st.nextToken(); String enabled = st.nextToken(); String voting = st.nextToken(); String dumpPriority = st.nextToken(); // Collect the period data Set periodSet = (Set)periodMap.get(day); if ( periodSet == null ) { periodSet = new TreeSet(); periodMap.put(day, periodSet); } periodSet.add(name); // Render it String prefix = commonPrefix + day + ".period." + name + "."; pw.println(prefix + "start_time=" + time); pw.println(prefix + "setpoint=" + setpoint); pw.println(prefix + "setpoint.enabled=" + enabled); pw.println(prefix + "voting=" + voting); pw.println(prefix + "dump_priority=" + dumpPriority); } for ( Iterator i2 = periodMap.keySet().iterator(); i2.hasNext(); ) { String day = i2.next().toString(); Set periodSet = (Set)periodMap.get(day); String eventList = ""; for ( Iterator i3 = periodSet.iterator(); i3.hasNext(); ) { if ( !"".equals(eventList) ) { eventList += ","; } eventList += i3.next().toString(); } pw.println(commonPrefix + day + ".period=" + eventList); } pw.flush(); pw.close(); } catch ( IOException ioex ) { complain(LOG_ERR, CH_CW, "Failed to write schedule file " + zoneScheduleFile, ioex); } } } private void renderView(Map context, StringBuffer sb) { // VT: FIXME: This is not yet configurable sb.append(" <view name=\"TCP\">\n"); sb.append(" <class>net.sf.dz.view.tcp.server.Server</class>\n"); sb.append(" <tcp><secure>false</secure><password>password</password></tcp>\n"); sb.append(" </view>\n"); } /** * Get the context values associated with the keys starting with a given * prefix. * * @param prefix A prefix to look up. * * @return An unordered set of values for all the prefixes starting with * the given. */ protected Set getContextValues(Map context, String prefix) { Set result = new HashSet(); for ( Iterator i = context.keySet().iterator(); i.hasNext(); ) { String key = i.next().toString(); if ( key.startsWith(prefix) ) { result.add(context.get(key)); } } return result; } /** * Get the context values associated with the keys starting with a given * prefix, sorted. * * @param prefix A prefix to look up. * * @return An unordered set of values for all the prefixes starting with * the given. * * @exception ClassCastException if you're not careful and result set * contains values that are not <code>Comparable</code>. */ protected SortedSet getSortedContextValues(Map context, String prefix) { return new TreeSet(getContextValues(context, prefix)); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -