// HomeAutomation software to accompany the book // 'Practical Arduino + Android Projects for the Evil Genius' // Copyright (C) 2011. Simon Monk // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. package com.simonmonk.home; import java.util.Date; import android.content.SharedPreferences; import android.util.Log; class HeatingMonitor extends Thread { static final String[] keys = {"0004", "0406", "0607", "0708", "0809", "0912", "1215", "1516", "1617", "1722", "2223", "2324"}; private HomeActivity mActivity; public HeatingMonitor(HomeActivity activity) { super(); mActivity = activity; } public void run() { while (true) { for (int i = 1; i < 12; i++) { handleTimeSlot(keys[i]); } try { Thread.sleep(10000); // check every 10 seconds } catch (InterruptedException e) { e.printStackTrace(); } } } private void handleTimeSlot(String key) { Date d = new Date(); String temp; int day = d.getDay(); Log.d("SRM", "d="+day); if (day > 0 && day < 6) { Log.d("SRM", "weekday"); temp = getSetting("TEMP_d" + key); } else { Log.d("SRM", "weekend"); temp = getSetting("TEMP_w" + key); } String hourFromS = key.substring(0,2); String hourToS = key.substring(2,4); int hourFrom = Integer.parseInt(hourFromS); int hourTo = Integer.parseInt(hourToS); int hour = d.getHours(); if (hour >= hourFrom && hour < hourTo) { DigitalOutputs outputs = mActivity.outputs; int t = Integer.parseInt(temp); if ("C".equals(getSetting("UNITS"))) { t = (t * 9) / 5 + 32; } t = t + 20; // fiddle factor deg F - sensor gets warm in box outputs.setOutput(0x41, t); } } String getSetting(String name) { SharedPreferences settings = mActivity.getSharedPreferences(PrefsActivity.PREFS_NAME, 0); return settings.getString(name, "0"); } }