Advertisement
mike2545

Web-Thermostat (Master)

Oct 2nd, 2011
408
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 110.74 KB | None | 0 0
  1. '****************************************************************
  2. '*  Name    : Master.BAS                                        *
  3. '*  Author  : [Mike ]                                    *
  4. '*  Notice  : Copyright (c) 2011                                *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 12/4/2010                                         *
  7. '*  Version : 1.0 18F2685 /DS1340C RTC (Gravitech)              *
  8. '*  Notes   : X-Bee wireless communication                      *
  9. '*          : PINK web Server                                   *
  10. '****************************************************************
  11.     INCLUDE "modedefs.bas"
  12.     'Include "bs2defs.bas"
  13.     include "ALLDIGITAL.pbp"
  14.    ' INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
  15.    ' INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
  16.     OSCCON =$60 'clock speed
  17. '______________Defines
  18.     DEFINE DEBUG_REG PORTC  
  19.     DEFINE DEBUG_BIT 5
  20.    
  21.     DEFINE DEBUG_BAUD 9600
  22.     DEFINE DEBUG_MODE 1
  23.     DEFINE OSC 4
  24.                                                    
  25.     'define HSER_RCSTA     90h
  26.    ' DEFine HSER_TXSTA     20h
  27.     'define HSER_BAUD      2400
  28.     'define HSER_SPERG     25
  29.     nbvar           VAR     Byte            ' PINK Data Variable
  30.     busy            VAR     nbvar.BIT2      ' E-Mail Busy Flag (Alias)
  31.     complete        VAR     nbvar.BIT4      ' E-Mail Complete Flag (Alias)
  32. '---------------Ports
  33.   ' TRISB.2=1
  34.   ' trisb.3=0
  35.    EpSDA        var PortA.0
  36.    EpSCL        var PortA.1
  37.    SDA          var PortC.4
  38.    SCL          var PortC.3
  39.    TX           var PortC.6
  40.    RX           var PortC.7
  41.    PinkRX       var PortB.0         ' Serial Receieve Pin --> PINK.TX
  42.    PinkTX       var PortB.1         ' Serial Transmit Pin --> PINK.RX
  43.    clock        var PortC.0
  44.    serdata      var PortC.1
  45.    Latch        var PortC.2
  46.    MiniSplit    var PortB.2
  47.  
  48. '---------------Cons
  49.    I2C_WR   CON $D0 ' I2C write address
  50.    I2C_RD   CON $D1 ' I2C read address
  51.    Baud     CON 84 ' 9600 baud, non-inverted
  52.    PinkBaud con 84'  9600 baud
  53.    Insteon  con 32 '19200
  54. '--------------Vars
  55.    
  56.    W                var byte
  57.    R                var byte
  58.    w=$af
  59.    R=$ae
  60.    Second           VAR BYTE
  61.    Minute           VAR BYTE
  62.    Hour             VAR BYTE
  63.    Day              VAR BYTE
  64.    date             var byte
  65.    Month            VAR BYTE
  66.    Year             VAR BYTE  
  67.    pinkhour         var byte
  68.    pinkminute       var byte
  69.   ' Attn var byte
  70.    mem1             var byte
  71.    mem2             var byte
  72.    mem3             var byte
  73.    mem1 = 254
  74.    mem2 = 254
  75.    'index var byte
  76.    result           var byte
  77.    timeout_bit      var byte
  78.    timeout_bit =0
  79.    PauseBit         var word 'timeout varialbel
  80.    pauseBit = 1000
  81.    sunrise_hour     var byte
  82.    hoursunset_hour  var byte
  83.    Sunrise_min      var byte
  84.    Sunset_hour      var byte
  85.    sunset_min       var byte
  86.    day_of_year      var word
  87.    month_multiplier var word
  88.    backlight_bit    var byte
  89.    Busy_Bit         var byte
  90.    Busy_Bit = 5 'busy bit to reduce timeout
  91. 'Office Vars
  92.    office_mode      var byte
  93.    Office_Temp      var byte
  94.    Office_Setting   var byte
  95.    Nb_var02         var byte 'office setting
  96.    Nb_varH03        var byte  'office wake hour
  97.    Nb_varM03        var byte 'office wake min
  98.    Nb_var04         var byte 'ofice wake temp
  99.    Nb_varH05        var byte 'office leave hour
  100.    Nb_varM05        var byte 'office leave min
  101.    Nb_var06         var byte 'office leave temp
  102.    Nb_varH07        var byte 'office return Hour
  103.    Nb_varM07        var byte 'office return min
  104.    Nb_var08         var byte 'office return temp
  105.    Nb_varH09        var byte 'office sleep Hour
  106.    Nb_varM09        var byte 'office sleep min
  107.    Nb_var10         var byte 'office sleep temp
  108.     'bedroom
  109.    bedroom_mode     var byte
  110.    bedroom_Temp     var byte
  111.    bedroom_Setting  var byte
  112.    Nb_var12         var byte
  113.    Nb_varH13        var byte 'wake
  114.    Nb_varM13        var byte
  115.    Nb_var14         var byte '
  116.    Nb_varH15        var byte'leave
  117.    Nb_varM15        var byte
  118.    Nb_var16         var byte
  119.    Nb_varH17        var byte
  120.    Nb_varM17        var byte
  121.    Nb_var18         var byte
  122.    Nb_varH19        var byte
  123.    Nb_varM19        Var byte
  124.    Nb_var20         var byte
  125.    'Dining room
  126.    DiningRoom_mode  var byte
  127.    DiningRoom_Temp  var byte
  128.    DiningRoom_Setting var byte
  129.    Nb_var22         var byte
  130.    Nb_varH23        var byte 'wake
  131.    Nb_varM23        var byte
  132.    Nb_var24         var byte '
  133.    Nb_varH25        var byte'leave
  134.    Nb_varM25        var byte
  135.    Nb_var26         var byte
  136.    Nb_varH27        var byte
  137.    Nb_varM27        var byte
  138.    Nb_var28         var byte
  139.    Nb_varH29        var byte
  140.    Nb_varM29        Var byte
  141.    Nb_var30         var byte
  142.    'sun room
  143.    sunRoom_mode     var byte
  144.    sunRoom_Temp     var byte
  145.    sunRoom_Setting  var byte
  146.    Nb_var32         var byte  'current setting
  147.    Nb_varH33        var byte 'wake
  148.    Nb_varM33        var byte
  149.    Nb_var34         var byte '
  150.    Nb_varH35        var byte'leave
  151.    Nb_varM35        var byte
  152.    Nb_var36         var byte
  153.    Nb_varH37        var byte 'return
  154.    Nb_varM37        var byte
  155.    Nb_var38         var byte
  156.    Nb_varH39        var byte
  157.    Nb_varM39        Var byte
  158.    Nb_var40         var byte
  159.   'Living room
  160.    
  161.    LivingRoom_mode  var byte
  162.    LivingRoom_Temp  var byte
  163.    LivingRoom_Setting var byte
  164.    Nb_var42         var byte   'Current Temp
  165.    Nb_varH43        var byte 'wake
  166.    Nb_varM43        var byte
  167.    Nb_var44         var byte '
  168.    Nb_varH45        var byte'leave
  169.    Nb_varM45        var byte
  170.    Nb_var46         var byte
  171.    Nb_varH47        var byte 'return
  172.    Nb_varM47        var byte
  173.    Nb_var48         var byte
  174.    Nb_varH49        var byte 'sleep
  175.    Nb_varM49        Var byte
  176.    Nb_var50         var byte
  177.  'Sat&sun
  178.  
  179.    
  180.    'office
  181.    Nb_varH51    var byte 'wake
  182.    Nb_varM51    var byte
  183.    Nb_var52     var byte '
  184.    Nb_varH53    var byte'leave
  185.    Nb_varM53    var byte
  186.    Nb_var54     var byte
  187.    'bedroom
  188.    Nb_varH55    var byte 'wake
  189.    Nb_varM55    var byte
  190.    Nb_var56     var byte '
  191.    Nb_varH57    var byte'leave
  192.    Nb_varM57    var byte
  193.    Nb_var58     var byte
  194.    'dining room
  195.    Nb_varH59    var byte 'wake
  196.    Nb_varM59    var byte
  197.    Nb_var60     var byte '
  198.    Nb_varH61    var byte'leave
  199.    Nb_varM61    var byte
  200.    Nb_var62     var byte
  201.    'sun room
  202.    Nb_varH63    var byte 'wake
  203.    Nb_varM63    var byte
  204.    Nb_var64     var byte '
  205.    Nb_varH65    var byte'leave
  206.    Nb_varM65    var byte
  207.    Nb_var66     var byte
  208. 'Living room
  209.    Nb_varH67    var byte 'wake
  210.    Nb_varM67    var byte
  211.    Nb_var68     var byte '
  212.    Nb_varH69    var byte'leave
  213.    Nb_varM69    var byte
  214.    Nb_var70     var byte  
  215.      
  216.  'mini-split vars
  217.   ' MS_HeatAC var byte
  218.    MS_Office        var byte
  219.    MS_Bedroom       var byte
  220.    MS_DiningRoom    var byte
  221.    MS_SunRoom       var byte
  222.    MS_LivingRoom    VAr byte
  223.    Nb_var93         var byte   'mini split heat/ac  'heat="1"   AC= 0
  224.    Nb_var86         var byte   'office mini split on/off
  225.    Nb_var88         var byte  'bedroom mini split on/off
  226.    Nb_var90         var byte   'diningroom mini split on/off
  227.    Nb_var92         var byte   'sunroom mini split on/off
  228.    Nb_var71         var byte   'livingroom mini split on/off
  229.    Nb_var72         Var byte 'Humidity in living room unit
  230.    Nb_var74         Var byte  'attic setting
  231.    bedroom_busy     var byte
  232.    office_busy      var byte
  233.    diningroom_busy  var byte
  234.    sunroom_busy     var byte
  235.    livingRoom_busy  VAr byte
  236.    atticUnit_busy   var byte
  237.    office_busy     = %00000000
  238.    bedroom_busy    = %00000000
  239.    diningroom_busy = %00000000
  240.    sunroom_busy    = %00000000
  241.    LivingRoom_Busy = %00000000
  242.    atticUnit_busy  = %00000000
  243.    
  244.    attic_temp       var byte
  245.    Attic_Setting    var byte
  246.    OutdoorRH        var byte
  247.    OutdoorTF        var byte
  248.    SleepAlarmSwitch Var bit
  249.    SAS_checksum     var bit
  250.    powerout         var byte  
  251.    powerout  = 0
  252.    RH_Trend0        var byte
  253.    RH_Trend15       var byte
  254.    RH_Trend30       Var Byte
  255.    RH_Trend45       var byte
  256.    RH_result        var word
  257.    ERROR            var byte
  258.    ERROR = 0
  259.    BR_MS_LT     var byte
  260.    Of_MS_LT     var byte
  261.    LR_MS_LT     var byte
  262.    DR_MS_LT     var byte
  263.    Su_MS_LT     var byte
  264.    BR_MS_LT=0
  265.    Of_MS_LT=0
  266.    LR_MS_LT=0
  267.    DR_MS_LT=0
  268.    Su_MS_LT=0
  269.  debug "Sytem startup.................",cr,10
  270.  
  271.   ' Set SMTP Server
  272.   'SEROUT2 pinkTX, pinkBaud, ["!NB0WEV:.net", CLS]
  273.   ' Set USERNAME (Optional On Some Servers)
  274.  ' SEROUT2 pinkTX, pinkBaud, ["!NB0WEU:someone@somwhere", CLS]
  275.   ' Set PASSWORD (Optional On Some Server)
  276.   'SEROUT2 pinkTX, pinkBaud, ["!NB0WEP:password", CLS]
  277.   ' Set AUTH ON/OFF (Optional On Some Servers)
  278.  ' SEROUT2 pinkTX, pinkBaud, ["!NB0WEA:A", CLS]   ' Turn Authentication On (Optional)
  279.   ' Set MESSAGE CONTENT
  280.  
  281.  
  282. setup:
  283. timeout_bit =0
  284.  
  285. low latch
  286.  
  287.  
  288.  
  289.   GOSUB Get_time
  290.  pause 4000
  291.  debug "Setup ",dec2 hour,":",dec2 minute," | ",dec2 month,"/",dec2 date,"/",hex2 year,Cr,10
  292.  serout2 pinktx,pinkbaud, ["!NB0W97:",dec2 hour,":",dec2 minute,  CLS]
  293.  serout2 pinktx,pinkbaud, ["!NB0W98:",dec2 day,CLS]
  294.  SEROUT2 pinkTX,pinkBaud, ["!NB0W99:",dec2 month,":",dec2 date,":",hex2 year,CLS]  ' Command To Read system date
  295.  serout2 pinktx,pinkbaud, ["!NB0W97:25:25",  CLS]'clear set time
  296. 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  297. ' Get EEPROM Data and Populate PINK
  298.     'office  
  299.        
  300.         shiftout serdata, clock,0,[%00000000]
  301.         shiftout serdata, clock,0,[%01000000]
  302.         pulsout latch,5  
  303.         I2cread Epsda,Epscl,$A0,3,[nb_varh03]  'wake
  304.         I2cread Epsda,Epscl,$A0,4,[nb_varm03]
  305.        serout2 pinktx,pinkbaud,["!NB0W03:",hex2 nb_varh03,":",hex2 nb_varm03,CLS]
  306.          I2cread Epsda,Epscl,$A0,6,[nb_varh05]   'leave
  307.          I2cread Epsda,Epscl,$A0,7,[nb_varm05]
  308.        serout2 pinktx,pinkbaud,["!NB0W05:",hex2 nb_varh05,":",hex2 nb_varm05,CLS]
  309.          I2cread Epsda,Epscl,$A0,9,[nb_varh07]    'return
  310.          I2cread Epsda,Epscl,$A0,10,[nb_varm07]
  311.        serout2 pinktx,pinkbaud,["!NB0W07:",hex2 nb_varh07,":",hex2 nb_varm07,CLS]
  312.          I2cread Epsda,Epscl,$A0,12,[nb_varh09]
  313.          I2cread Epsda,Epscl,$A0,13,[nb_varm09]   'sleep
  314.        serout2 pinktx,pinkbaud,["!NB0W09:",hex2 nb_varh09,":",hex2 nb_varm09,CLS]
  315.          I2cread Epsda,Epscl,$A0,63,[nb_varh51]    'weekend wake
  316.          I2cread Epsda,Epscl,$A0,64,[nb_varm51]
  317.        serout2 pinktx,pinkbaud,["!NB0W51:",hex2 nb_varh51,":",hex2 nb_varm51,CLS]
  318.          I2cread Epsda,Epscl,$A0,66,[nb_varh53]    'weekend sleep
  319.          I2cread Epsda,Epscl,$A0,67,[nb_varm53]
  320.        serout2 pinktx,pinkbaud,["!NB0W53:",hex2 nb_varh53,":",hex2 nb_varm53,CLS]
  321. 'bedroom
  322.        
  323.         shiftout serdata, clock,0,[%00000000]
  324.         shiftout serdata, clock,0,[%01010000]
  325.         pulsout latch,5
  326.         I2cread Epsda,Epscl,$A0,15,[nb_varh13]  'wake
  327.         I2cread Epsda,Epscl,$A0,16,[nb_varm13]
  328.        serout2 pinktx,pinkbaud,["!NB0W13:",hex2 nb_varh13,":",hex2 nb_varm13,CLS]
  329.          I2cread Epsda,Epscl,$A0,18,[nb_varh15]   'leave
  330.          I2cread Epsda,Epscl,$A0,19,[nb_varm15]
  331.        serout2 pinktx,pinkbaud,["!NB0W15:",hex2 nb_varh15,":",hex2 nb_varm15,CLS]
  332.          I2cread Epsda,Epscl,$A0,21,[nb_varh17]    'return
  333.          I2cread Epsda,Epscl,$A0,22,[nb_varm17]
  334.        serout2 pinktx,pinkbaud,["!NB0W17:",hex2 nb_varh17,":",hex2 nb_varm17,CLS]
  335.          I2cread Epsda,Epscl,$A0,24,[nb_varh19]
  336.          I2cread Epsda,Epscl,$A0,25,[nb_varm19]   'sleep
  337.        serout2 pinktx,pinkbaud,["!NB0W19:",hex2 nb_varh19,":",hex2 nb_varm19,CLS]
  338.          I2cread Epsda,Epscl,$A0,69,[nb_varh55]    'weekend wake
  339.          I2cread Epsda,Epscl,$A0,70,[nb_varm55]
  340.        serout2 pinktx,pinkbaud,["!NB0W55:",hex2 nb_varh55,":",hex2 nb_varm55,CLS]
  341.          I2cread Epsda,Epscl,$A0,72,[nb_varh57]    'weekend sleep
  342.          I2cread Epsda,Epscl,$A0,73,[nb_varm57]
  343.        serout2 pinktx,pinkbaud,["!NB0W57:",hex2 nb_varh57,":",hex2 nb_varm57,CLS]
  344. 'Dining room
  345.        
  346.         shiftout serdata, clock,0,[%00000000]
  347.         shiftout serdata, clock,0,[%01010100]
  348.         pulsout latch,5        
  349.         I2cread Epsda,Epscl,$A0,27,[nb_varh23]  'wake
  350.         I2cread Epsda,Epscl,$A0,28,[nb_varm23]
  351.        serout2 pinktx,pinkbaud,["!NB0W23:",hex2 nb_varh23,":",hex2 nb_varm23,CLS]
  352.          I2cread Epsda,Epscl,$A0,30,[nb_varh25]   'leave
  353.          I2cread Epsda,Epscl,$A0,31,[nb_varm25]
  354.        serout2 pinktx,pinkbaud,["!NB0W25:",hex2 nb_varh25,":",hex2 nb_varm25,CLS]  
  355.          I2cread Epsda,Epscl,$A0,33,[nb_varh27]    'return
  356.          I2cread Epsda,Epscl,$A0,34,[nb_varm27]
  357.        serout2 pinktx,pinkbaud,["!NB0W27:",hex2 nb_varh27,":",hex2 nb_varm27,CLS]
  358.          I2cread Epsda,Epscl,$A0,36,[nb_varh29]
  359.          I2cread Epsda,Epscl,$A0,37,[nb_varm29]   'sleep
  360.        serout2 pinktx,pinkbaud,["!NB0W29:",hex2 nb_varh29,":",hex2 nb_varm29,CLS]
  361.          I2cread Epsda,Epscl,$A0,75,[nb_varh59]    'weekend wake
  362.          I2cread Epsda,Epscl,$A0,76,[nb_varm59]
  363.        serout2 pinktx,pinkbaud,["!NB0W59:",hex2 nb_varh59,":",hex2 nb_varm59,CLS]
  364.          I2cread Epsda,Epscl,$A0,78,[nb_varh61]    'weekend sleep
  365.          I2cread Epsda,Epscl,$A0,79,[nb_varm61]
  366.        serout2 pinktx,pinkbaud,["!NB0W61:",hex2 nb_varh61,":",hex2 nb_varm61,CLS]      
  367.  ' Sun room
  368.        
  369.         shiftout serdata, clock,0,[%00000000]
  370.         shiftout serdata, clock,0,[%01010101]
  371.         pulsout latch,5
  372.         I2cread Epsda,Epscl,$A0,39,[nb_varh33]  'wake
  373.         I2cread Epsda,Epscl,$A0,40,[nb_varm33]
  374.        serout2 pinktx,pinkbaud,["!NB0W33:",hex2 nb_varh33,":",hex2 nb_varm33,CLS]
  375.          I2cread Epsda,Epscl,$A0,42,[nb_varh35]   'leave
  376.          I2cread Epsda,Epscl,$A0,43,[nb_varm35]
  377.        serout2 pinktx,pinkbaud,["!NB0W35:",hex2 nb_varh35,":",hex2 nb_varm35,CLS]
  378.          I2cread Epsda,Epscl,$A0,45,[nb_varh37]    'return      
  379.          I2cread Epsda,Epscl,$A0,46,[nb_varm37]
  380.        serout2 pinktx,pinkbaud,["!NB0W37:",hex2 nb_varh37,":",hex2 nb_varm37,CLS]
  381.          I2cread Epsda,Epscl,$A0,48,[nb_varh39]
  382.          I2cread Epsda,Epscl,$A0,49,[nb_varm39]   'sleep
  383.        serout2 pinktx,pinkbaud,["!NB0W39:",hex2 nb_varh39,":",hex2 nb_varm39,CLS]
  384.          I2cread Epsda,Epscl,$A0,81,[nb_varh63]    'weekend wake
  385.          I2cread Epsda,Epscl,$A0,82,[nb_varm63]
  386.        serout2 pinktx,pinkbaud,["!NB0W63:",hex2 nb_varh63,":",hex2 nb_varm63,CLS]
  387.          I2cread Epsda,Epscl,$A0,84,[nb_varh65]    'weekend sleep
  388.          I2cread Epsda,Epscl,$A0,85,[nb_varm65]
  389.        serout2 pinktx,pinkbaud,["!NB0W65:",hex2 nb_varh65,":",hex2 nb_varm65,CLS]          
  390. 'livingroom      
  391.        
  392.         shiftout serdata, clock,0,[%01000000]
  393.         shiftout serdata, clock,0,[%01010101]
  394.         pulsout latch,5        
  395.         I2cread Epsda,Epscl,$A0,51,[nb_varh43]  'wake
  396.         I2cread Epsda,Epscl,$A0,52,[nb_varm43]
  397.        serout2 pinktx,pinkbaud,["!NB0W43:",hex2 nb_varh43,":",hex2 nb_varm43,CLS]
  398.          I2cread Epsda,Epscl,$A0,54,[nb_varh45]   'leave
  399.          I2cread Epsda,Epscl,$A0,55,[nb_varm45]
  400.        serout2 pinktx,pinkbaud,["!NB0W45:",hex2 nb_varh45,":",hex2 nb_varm45,CLS]
  401.          I2cread Epsda,Epscl,$A0,57,[nb_varh47]    'return      
  402.          I2cread Epsda,Epscl,$A0,58,[nb_varm47]
  403.        serout2 pinktx,pinkbaud,["!NB0W47:",hex2 nb_varh47,":",hex2 nb_varm47,CLS]
  404.          I2cread Epsda,Epscl,$A0,60,[nb_varh49]
  405.          I2cread Epsda,Epscl,$A0,61,[nb_varm49]   'sleep
  406.        serout2 pinktx,pinkbaud,["!NB0W49:",hex2 nb_varh49,":",hex2 nb_varm49,CLS]
  407.          I2cread Epsda,Epscl,$A0,87,[nb_varh67]    'weekend wake
  408.          I2cread Epsda,Epscl,$A0,88,[nb_varm67]
  409.        serout2 pinktx,pinkbaud,["!NB0W67:",hex2 nb_varh67,":",hex2 nb_varm67,CLS]
  410.          I2cread Epsda,Epscl,$A0,90,[nb_varh69]    'weekend sleep
  411.          I2cread Epsda,Epscl,$A0,91,[nb_varm69]
  412.        serout2 pinktx,pinkbaud,["!NB0W69:",hex2 nb_varh69,":",hex2 nb_varm69,CLS]
  413.            
  414.        
  415.    'minisplit
  416.        
  417.         shiftout serdata, clock,0,[%01010000]
  418.         shiftout serdata, clock,0,[%01010101]
  419.         pulsout latch,5
  420.          I2cread Epsda,Epscl,$A0,108,[nb_var93]   'system heat / AC
  421.        serout2 pinktx,pinkbaud,["!NB0W93:",dec nb_var93,CLS]
  422.           I2cread Epsda,Epscl,$A0,101,[nb_var86]   'office  on off
  423.        serout2 pinktx,pinkbaud,["!NB0W86:",dec nb_var86,CLS]
  424.           I2cread Epsda,Epscl,$A0,103,[nb_var88]   'bedroom on off
  425.        serout2 pinktx,pinkbaud,["!NB0W88:",dec nb_var88,CLS]
  426.           I2cread Epsda,Epscl,$A0,105,[nb_var90]   'diningroom  on off
  427.        serout2 pinktx,pinkbaud,["!NB0W90:",dec nb_var90,CLS]
  428.           I2cread Epsda,Epscl,$A0,107,[nb_var92]   'sunroom    on off
  429.        serout2 pinktx,pinkbaud,["!NB0W92:",dec nb_var92,CLS]
  430.           I2cread Epsda,Epscl,$A0,109,[nb_var71]   'livingroom   on off
  431.        serout2 pinktx,pinkbaud,["!NB0W71:",dec nb_var71,CLS]
  432.        debug dec nb_var93," ",dec nb_var86," ",dec nb_var88," ",dec nb_var90," ",dec nb_var92," ",dec nb_var71,cr,10
  433.   'Attic unit
  434.        
  435.         shiftout serdata, clock,0,[%01010100]
  436.         shiftout serdata, clock,0,[%01010101]
  437.         pulsout latch,5
  438.            I2cread Epsda,Epscl,$A0,110,[attic_setting]   'livingroom   on off
  439.       serout2 pinktx,pinkbaud,["!NB0W74:",dec attic_setting,CLS]
  440.     pause 3000
  441.  
  442.  'pause 4000
  443. '_________________________________________________________________________________
  444.  
  445. Main:
  446.    IF outdoortf <= 28 THEN
  447.     IF nb_var86 = 1 THEN
  448.      Of_MS_LT = 1
  449.       serout2 pinktx,pinkbaud,["!NB0W86:","0",CLS]
  450.       endif
  451.     IF nb_var88 = 1 THEN
  452.      BR_MS_LT = 1
  453.       serout2 pinktx,pinkbaud,["!NB0W88:","0",CLS]
  454.       endif
  455.     IF nb_var90 = 1 THEN
  456.     dr_MS_LT = 1
  457.           serout2 pinktx,pinkbaud,["!NB0W90:","0",CLS]
  458.       endif
  459.     IF nb_var92 = 1 THEN
  460.      su_MS_LT = 1
  461.            serout2 pinktx,pinkbaud,["!NB0W92:","0",CLS]
  462.       endif
  463.     IF nb_var71 = 1 THEN
  464.      lr_MS_LT = 1
  465.            serout2 pinktx,pinkbaud,["!NB0W71:","0",CLS]
  466.       endif
  467.    ' nb_var86=0
  468.    ' nb_var88=0
  469.    ' nb_var90=0
  470.    ' nb_var92=0
  471.     'nb_var71=0
  472.    endif
  473.  IF outdoortf >29 THEN
  474.     IF  Of_MS_LT = 1  THEN
  475.     'nb_var86 = 1
  476.           serout2 pinktx,pinkbaud,["!NB0W86:","1",CLS]
  477.       endif
  478.     IF  br_MS_LT = 1  THEN
  479.      'nb_var88 = 1
  480.            serout2 pinktx,pinkbaud,["!NB0W88:","1",CLS]
  481.       endif
  482.     IF  dr_MS_LT = 1  THEN
  483.     ' nb_var90 = 1
  484.            serout2 pinktx,pinkbaud,["!NB0W90:","1",CLS]
  485.       endif
  486.     IF  su_MS_LT = 1  THEN
  487.     'nb_var92 = 1
  488.           serout2 pinktx,pinkbaud,["!NB0W92:","1",CLS]
  489.       endif
  490.     IF  lr_MS_LT = 1  THEN
  491.     'nb_var71 = 1
  492.           serout2 pinktx,pinkbaud,["!NB0W71:","1",CLS]
  493.       endif
  494.    BR_MS_LT=0
  495.    Of_MS_LT=0
  496.    LR_MS_LT=0
  497.    DR_MS_LT=0
  498.    Su_MS_LT=0
  499.     endif
  500. IF powerout = 0 THEN
  501.  RH_Trend0 = outdoorrh
  502.  RH_Trend15 = outdoorrh
  503.  RH_Trend30 = outdoorrh
  504.  RH_Trend45 = outdoorrh
  505.  endif
  506. Attic_outdoor_unit:
  507. Pause 200
  508. 'debug "Attic Error...", dec error,cr  ,10
  509.        
  510.          shiftout serdata, clock,0,[%00010000+ livingroom_busy+atticunit_busy]
  511.          shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  512.          pulsout latch,5
  513.          'pause 3000
  514.         SEROUT2 pinkTX, pinkBaud, ["!NB0R74"] ' Command To Read Attic current setting temp
  515.         ERROR = 74
  516.         SERIN2  pinkRX, pinkBaud,1000,timeout2,[dec mem1]' Get Data With Timeout
  517.          IF mem1 <> attic_setting THEN
  518.             attic_setting = mem1
  519.             I2cwrite EpSDA,EpScl,$a0,110,[mem1]
  520.            debug "attic setting set to ", dec mem1,cr ,10
  521.            
  522.         endif
  523.       'debug "attic ", dec nb_var93, cr
  524.      
  525.  
  526.  
  527.    serout2 TX,baud,["+++"]
  528.     pause 1000
  529.     serout2 TX,baud,["ATMY 10",CR] 'address module "6" is attic
  530.     serout2 TX,baud,["ATDL 10",CR]
  531.     serout2 TX,baud,["ATCN",CR]
  532.      pause Busy_Bit
  533.     SERIN2 RX,Baud,250,attic_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  534.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr ,10
  535.      pause 18000
  536.     GOTO timeout9  'skip com with diningroom for now
  537. attic_set1:
  538.      
  539. '-----------send data to Attic module------------------------
  540.      serout2 TX,Baud, [" Attic "]
  541.      'pause 50  
  542.     serout2 TX,Baud, [":",attic_setting,hex2 hour,hex2 minute,backlight_bit] 'send pink temp value to office module
  543. '----------Get data from Attic module--------------------
  544.      
  545.      
  546.     SERIN2 RX,Baud,PauseBit,timeout9,[ Attic_Temp, Attic_Setting,outdoorRH,outdoortf,sleepalarmswitch ] 'get temperature and user set temp from office module
  547.  AtticUnit_busy = %00000000
  548.      
  549.  
  550.    
  551. '----------send data from Atticroom module to pink---------------      
  552.     serout2 pinktx,pinkbaud, ["!NB0W74:", dec  Attic_Setting, CLS]
  553.     serout2 pinktx,pinkbaud, ["!NB0W73:", dec  attic_Temp, CLS] 'send current temp to Pink
  554.      IF minute = 0 THEN RH_Trend0 = outdoorRH
  555.      IF minute = 15 THEN RH_Trend15 = outdoorRH
  556.      IF minute = 30 THEN RH_Trend30 = outdoorRH
  557.      IF minute = 45 THEN RH_Trend45 = outdoorRH
  558.     RH_result= (RH_Trend0 + RH_Trend15 +  RH_Trend30 + RH_Trend45 )/4
  559.     IF RH_Result > outdoorRH THEN serout2 pinktx,pinkbaud,["!NB0W75:","< ",dec outdoorRH,CLS]
  560.     IF RH_Result < outdoorRH THEN serout2 pinktx,pinkbaud,["!NB0W75:",dec outdoorRH," >",CLS]
  561.     IF RH_Result = outdoorRH THEN serout2 pinktx,pinkbaud,["!NB0W75:","= ",dec outdoorRH,CLS]
  562.     'debug dec RH_Trend0,";",dec RH_Trend15,";",dec RH_Trend30,";",dec RH_Trend45, cr ,10
  563.     'debug dec RH_result, cr,10
  564.     serout2 pinktx,pinkbaud, ["!NB0W76:", dec  outdoortf, CLS]
  565.     IF sleepalarmswitch  = 1 THEN  serout2 pinktx,pinkbaud, ["!NB0W77:","On", CLS]
  566.     IF sleepalarmswitch  = 0 THEN  serout2 pinktx,pinkbaud, ["!NB0W77:","Off", CLS]
  567.    
  568.    timeout_bit =0  
  569.    shiftout serdata, clock,0,[%00000000+ livingroom_busy]
  570.     shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  571.      pulsout latch,5
  572. Pause 200
  573. 'debug "Main Error...", dec error,cr  ,10
  574.  
  575.  
  576. 'debug ".",cr,10                                                          
  577.  '----------read Pink system time----------------    
  578. '_________' Command To Read system time CLEAR THE CRAP FROM WEB PAGE INTERRUPT__________________________________________________
  579.       SEROUT2 pinkTX, pinkBaud, ["!NB0R97"]
  580.        
  581.       SERIN2  pinkRX, pinkBaud,PauseBit,system1,[hex2 mem1, SKIP 1,hex2 mem2]'                                
  582. '     --------------------------------------------------------------------------
  583.       SEROUT2 pinkTX, pinkBaud, ["!NB0R97"] ' Command To Read system time
  584.       ERROR = 97
  585.       SERIN2  pinkRX, pinkBaud,PauseBit,timeout,[hex2 pinkhour, SKIP 1,hex2 pinkminute]' Get Data With Timeout
  586.         pinkHour = pinkHour & %00111111
  587.          Second = Second & %01111111  ' Enable oscillator
  588.       IF pinkhour <> 37 THEN ' = dec 25----see if time has been set on pink
  589.         second =0
  590.         SEROUT2 pinkTX, pinkBaud, ["!NB0R98"] ' Command To Read system day
  591.          ERROR =98
  592.          SERIN2  pinkRX, pinkBaud,PauseBit,timeout,[hex2 day]
  593.          
  594.         SEROUT2 pinkTX, pinkBaud, ["!NB0R99"] ' Command To Read system date
  595.          ERROR = 99
  596.          SERIN2  pinkRX, pinkBaud,PauseBit,timeout,[hex2 month,skip 1,hex2 date,skip 1,hex2 year]  
  597.         I2CWRITE SDA,SCL, I2C_WR, [0, Second, pinkMinute, pinkHour,Day,Date,Month,Year]
  598.           serout2 pinktx,pinkbaud, ["!NB0W97:25:25",  CLS]'clear set time
  599.       endif
  600.       SEROUT2 pinkTX,pinkBaud, ["!NB0W99:",dec2 month,":",dec2 date,":",hex2 year,CLS]
  601.       serout2 pinktx,pinkbaud, ["!NB0W96:", hex2 hour,":",hex2 Minute, CLS]'put time on webpage
  602.       serout2 pinktx,pinkbaud, ["!NB0W98:","0" ,hex day,CLS]
  603. '------Get RTC Time----------------------------------------------------      
  604.  
  605.  
  606. '--------------load default temps depending on heat of AC button
  607. 'System Heat / AC    0 = AC 1 = heat
  608. system1:
  609.    
  610.      
  611.      SEROUT2 pinkTX, pinkBaud, ["!NB0R93"] ' Command To Read  minisplit radio button
  612.      ERROR = 93
  613.      
  614.      SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec mem2]
  615.       IF mem2 <> Nb_var93 THEN
  616.                 Nb_var93 = mem2
  617.        IF Nb_var93 =>3 THEN
  618.            debug "wrong value in NbVar_93 ",dec nb_var93,cr,10
  619.            
  620.        GOTO read_radioButtons
  621.        endif  
  622.            
  623.                 debug "write ", dec Nb_var93, " to eeprom",cr ,10
  624.                
  625.                  'serout2 pinktx,pinkbaud,["!NB0W93:",dec mem2,cls]
  626.                  
  627.                I2cwrite EpSDA,EpScl,$a0,108,[mem2]
  628.                
  629.  '
  630.       debug "change",cr ,10
  631.      
  632.         IF Nb_var93 = 0 THEN
  633.  'office  
  634.    
  635.         I2cread Epsda,Epscl,$A0,2,[nb_var02]   'current temp
  636.        serout2 pinktx,pinkbaud,["!NB0W02:",dec nb_var02,CLS]
  637.         I2cread Epsda,Epscl,$A0,5,[nb_var04]   'wake temp
  638.        serout2 pinktx,pinkbaud,["!NB0W04:",dec nb_var04,CLS]
  639.          I2cread Epsda,Epscl,$A0,8,[nb_var06]  'leave temp
  640.        serout2 pinktx,pinkbaud,["!NB0W06:",dec nb_var06,CLS]
  641.          I2cread Epsda,Epscl,$A0,11,[nb_var08]   'return temp
  642.        serout2 pinktx,pinkbaud,["!NB0W08:",dec nb_var08,CLS]
  643.          I2cread Epsda,Epscl,$A0,14,[nb_var10]      'sleep temp
  644.        serout2 pinktx,pinkbaud,["!NB0W10:",dec nb_var10,CLS]
  645.          I2cread Epsda,Epscl,$A0,65,[nb_var52]
  646.        serout2 pinktx,pinkbaud,["!NB0W52:",dec nb_var52,CLS]
  647.           I2cread Epsda,Epscl,$A0,68,[nb_var54]
  648.        serout2 pinktx,pinkbaud,["!NB0W54:",dec nb_var54,CLS]
  649. 'bedroom
  650.         I2cread Epsda,Epscl,$A0,93,[nb_var12]   'current temp
  651.        serout2 pinktx,pinkbaud,["!NB0W12:",dec nb_var12,CLS]
  652.         I2cread Epsda,Epscl,$A0,17,[nb_var14]   'wake temp
  653.        serout2 pinktx,pinkbaud,["!NB0W14:",dec nb_var14,CLS]
  654.        I2cread Epsda,Epscl,$A0,20,[nb_var16]  'leave temp
  655.        serout2 pinktx,pinkbaud,["!NB0W16:",dec nb_var16,CLS]
  656.        I2cread Epsda,Epscl,$A0,23,[nb_var18]   'return temp
  657.        serout2 pinktx,pinkbaud,["!NB0W18:",dec nb_var18,CLS]
  658.        I2cread Epsda,Epscl,$A0,26,[nb_var20]      'sleep temp
  659.        serout2 pinktx,pinkbaud,["!NB0W20:",dec nb_var20,CLS]
  660.         I2cread Epsda,Epscl,$A0,71,[nb_var56]
  661.        serout2 pinktx,pinkbaud,["!NB0W56:",dec nb_var56,CLS]
  662.        I2cread Epsda,Epscl,$A0,74,[nb_var58]
  663.        serout2 pinktx,pinkbaud,["!NB0W58:",dec nb_var58,CLS]
  664. 'diningroom
  665.         I2cread Epsda,Epscl,$A0,94,[nb_var22]   'current temp
  666.        serout2 pinktx,pinkbaud,["!NB0W22:",dec nb_var22,CLS]
  667.        I2cread Epsda,Epscl,$A0,29,[nb_var24]   'wake temp
  668.        serout2 pinktx,pinkbaud,["!NB0W24:",dec nb_var24,CLS]
  669.         I2cread Epsda,Epscl,$A0,32,[nb_var26]  'leave temp
  670.        serout2 pinktx,pinkbaud,["!NB0W26:",dec nb_var26,CLS]
  671.         I2cread Epsda,Epscl,$A0,35,[nb_var28]   'return temp
  672.        serout2 pinktx,pinkbaud,["!NB0W28:",dec nb_var28,CLS]
  673.         I2cread Epsda,Epscl,$A0,38,[nb_var30]      'sleep temp
  674.        serout2 pinktx,pinkbaud,["!NB0W30:",dec nb_var30,CLS]
  675.          I2cread Epsda,Epscl,$A0,77,[nb_var60]
  676.        serout2 pinktx,pinkbaud,["!NB0W60:",dec nb_var60,CLS]
  677.          I2cread Epsda,Epscl,$A0,80,[nb_var62]
  678.        serout2 pinktx,pinkbaud,["!NB0W62:",dec nb_var62,CLS]    
  679. 'sunroom
  680.          I2cread Epsda,Epscl,$A0,95,[nb_var32]   'current setting
  681.        serout2 pinktx,pinkbaud,["!NB0W32:",dec nb_var32,CLS]      
  682.         I2cread Epsda,Epscl,$A0,41,[nb_var34]   'wake temp
  683.        serout2 pinktx,pinkbaud,["!NB0W34:",dec nb_var34,CLS]      
  684.         I2cread Epsda,Epscl,$A0,44,[nb_var36]  'leave temp
  685.        serout2 pinktx,pinkbaud,["!NB0W36:",dec nb_var36,CLS]      
  686.         I2cread Epsda,Epscl,$A0,47,[nb_var38]   'return temp
  687.        serout2 pinktx,pinkbaud,["!NB0W38:",dec nb_var38,CLS]
  688.         I2cread Epsda,Epscl,$A0,50,[nb_var40]      'sleep temp
  689.        serout2 pinktx,pinkbaud,["!NB0W40:",dec nb_var40,CLS]
  690.         I2cread Epsda,Epscl,$A0,83,[nb_var64]
  691.        serout2 pinktx,pinkbaud,["!NB0W64:",dec nb_var64,CLS]        
  692.         I2cread Epsda,Epscl,$A0,86,[nb_var66]
  693.        serout2 pinktx,pinkbaud,["!NB0W66:",dec nb_var66,CLS]
  694. 'livingroom      
  695.         I2cread Epsda,Epscl,$A0,96,[nb_var42]   'current setting
  696.        serout2 pinktx,pinkbaud,["!NB0W42:",dec nb_var42,CLS]
  697.         I2cread Epsda,Epscl,$A0,53,[nb_var44]   'wake temp
  698.        serout2 pinktx,pinkbaud,["!NB0W44:",dec nb_var44,CLS]
  699.         I2cread Epsda,Epscl,$A0,56,[nb_var46]  'leave temp
  700.        serout2 pinktx,pinkbaud,["!NB0W46:",dec nb_var46,CLS]
  701.         I2cread Epsda,Epscl,$A0,59,[nb_var48]   'return temp
  702.        serout2 pinktx,pinkbaud,["!NB0W48:",dec nb_var48,CLS]
  703.         I2cread Epsda,Epscl,$A0,62,[nb_var50]      'sleep temp
  704.        serout2 pinktx,pinkbaud,["!NB0W50:",dec nb_var50,CLS]
  705.         I2cread Epsda,Epscl,$A0,89,[nb_var68]
  706.        serout2 pinktx,pinkbaud,["!NB0W68:",dec nb_var68,CLS]
  707.         I2cread Epsda,Epscl,$A0,92,[nb_var70]
  708.        serout2 pinktx,pinkbaud,["!NB0W70:",dec nb_var70,CLS]      
  709.        endif
  710. IF Nb_var93 = 1 THEN
  711.  'office
  712.  
  713.         I2cread Epsda,Epscl,$A0,119,[nb_var02]   'current temp
  714.        serout2 pinktx,pinkbaud,["!NB0W02:",dec nb_var02,CLS]
  715.         I2cread Epsda,Epscl,$A0,120,[nb_var04]   'wake temp
  716.        serout2 pinktx,pinkbaud,["!NB0W04:",dec nb_var04,CLS]
  717.          I2cread Epsda,Epscl,$A0,121,[nb_var06]  'leave temp
  718.        serout2 pinktx,pinkbaud,["!NB0W06:",dec nb_var06,CLS]
  719.          I2cread Epsda,Epscl,$A0,122,[nb_var08]   'return temp
  720.        serout2 pinktx,pinkbaud,["!NB0W08:",dec nb_var08,CLS]
  721.          I2cread Epsda,Epscl,$A0,123,[nb_var10]      'sleep temp
  722.        serout2 pinktx,pinkbaud,["!NB0W10:",dec nb_var10,CLS]
  723.          I2cread Epsda,Epscl,$A0,124,[nb_var52]
  724.        serout2 pinktx,pinkbaud,["!NB0W52:",dec nb_var52,CLS]
  725.           I2cread Epsda,Epscl,$A0,125,[nb_var54]
  726.        serout2 pinktx,pinkbaud,["!NB0W54:",dec nb_var54,CLS]    
  727.       'bedroom
  728.         I2cread Epsda,Epscl,$A0,126,[nb_var12]   'current temp
  729.        serout2 pinktx,pinkbaud,["!NB0W12:",dec nb_var12,CLS]
  730.         I2cread Epsda,Epscl,$A0,127,[nb_var14]   'wake temp
  731.        serout2 pinktx,pinkbaud,["!NB0W14:",dec nb_var14,CLS]
  732.        I2cread Epsda,Epscl,$A0,128,[nb_var16]  'leave temp
  733.        serout2 pinktx,pinkbaud,["!NB0W16:",dec nb_var16,CLS]
  734.        I2cread Epsda,Epscl,$A0,129,[nb_var18]   'return temp
  735.        serout2 pinktx,pinkbaud,["!NB0W18:",dec nb_var18,CLS]
  736.        I2cread Epsda,Epscl,$A0,130,[nb_var20]      'sleep temp
  737.        serout2 pinktx,pinkbaud,["!NB0W20:",dec nb_var20,CLS]
  738.         I2cread Epsda,Epscl,$A0,131,[nb_var56]
  739.        serout2 pinktx,pinkbaud,["!NB0W56:",dec nb_var56,CLS]
  740.        I2cread Epsda,Epscl,$A0,132,[nb_var58]
  741.        serout2 pinktx,pinkbaud,["!NB0W58:",dec nb_var58,CLS]    
  742. 'diningroom
  743.        I2cread Epsda,Epscl,$A0,133,[nb_var22]   'current temp
  744.        serout2 pinktx,pinkbaud,["!NB0W22:",dec nb_var22,CLS]
  745.        I2cread Epsda,Epscl,$A0,134,[nb_var24]   'wake temp
  746.        serout2 pinktx,pinkbaud,["!NB0W24:",dec nb_var24,CLS]
  747.         I2cread Epsda,Epscl,$A0,135,[nb_var26]  'leave temp
  748.        serout2 pinktx,pinkbaud,["!NB0W26:",dec nb_var26,CLS]
  749.         I2cread Epsda,Epscl,$A0,136,[nb_var28]   'return temp
  750.        serout2 pinktx,pinkbaud,["!NB0W28:",dec nb_var28,CLS]
  751.         I2cread Epsda,Epscl,$A0,137,[nb_var30]      'sleep temp
  752.        serout2 pinktx,pinkbaud,["!NB0W30:",dec nb_var30,CLS]
  753.          I2cread Epsda,Epscl,$A0,138,[nb_var60]
  754.        serout2 pinktx,pinkbaud,["!NB0W60:",dec nb_var60,CLS]
  755.          I2cread Epsda,Epscl,$A0,139,[nb_var62]
  756.        serout2 pinktx,pinkbaud,["!NB0W62:",dec nb_var62,CLS]
  757.        
  758. 'sunroom      
  759.         I2cread Epsda,Epscl,$A0,140,[nb_var32]   'current setting
  760.        serout2 pinktx,pinkbaud,["!NB0W32:",dec nb_var32,CLS]      
  761.         I2cread Epsda,Epscl,$A0,141,[nb_var34]   'wake temp
  762.        serout2 pinktx,pinkbaud,["!NB0W34:",dec nb_var34,CLS]      
  763.         I2cread Epsda,Epscl,$A0,142,[nb_var36]  'leave temp
  764.        serout2 pinktx,pinkbaud,["!NB0W36:",dec nb_var36,CLS]      
  765.         I2cread Epsda,Epscl,$A0,143,[nb_var38]   'return temp
  766.        serout2 pinktx,pinkbaud,["!NB0W38:",dec nb_var38,CLS]
  767.         I2cread Epsda,Epscl,$A0,144,[nb_var40]      'sleep temp
  768.        serout2 pinktx,pinkbaud,["!NB0W40:",dec nb_var40,CLS]
  769.         I2cread Epsda,Epscl,$A0,145,[nb_var64]
  770.        serout2 pinktx,pinkbaud,["!NB0W64:",dec nb_var64,CLS]        
  771.         I2cread Epsda,Epscl,$A0,146,[nb_var66]
  772.        serout2 pinktx,pinkbaud,["!NB0W66:",dec nb_var66,CLS]
  773. 'livingroom      
  774.         I2cread Epsda,Epscl,$A0,147,[nb_var42]   'current setting
  775.        serout2 pinktx,pinkbaud,["!NB0W42:",dec nb_var42,CLS]
  776.         I2cread Epsda,Epscl,$A0,148,[nb_var44]   'wake temp
  777.        serout2 pinktx,pinkbaud,["!NB0W44:",dec nb_var44,CLS]
  778.         I2cread Epsda,Epscl,$A0,149,[nb_var46]  'leave temp
  779.        serout2 pinktx,pinkbaud,["!NB0W46:",dec nb_var46,CLS]
  780.         I2cread Epsda,Epscl,$A0,150,[nb_var48]   'return temp
  781.        serout2 pinktx,pinkbaud,["!NB0W48:",dec nb_var48,CLS]
  782.         I2cread Epsda,Epscl,$A0,151,[nb_var50]      'sleep temp
  783.        serout2 pinktx,pinkbaud,["!NB0W50:",dec nb_var50,CLS]
  784.         I2cread Epsda,Epscl,$A0,152,[nb_var68]
  785.        serout2 pinktx,pinkbaud,["!NB0W68:",dec nb_var68,CLS]
  786.         I2cread Epsda,Epscl,$A0,153,[nb_var70]
  787.        serout2 pinktx,pinkbaud,["!NB0W70:",dec nb_var70,CLS]      
  788.        endif
  789.      
  790.       GOSUB minisplitoffice
  791.      
  792.       GOSUB minisplitbedroom  
  793.      
  794.       GOSUB minisplitdiningroom
  795.      
  796.       GOSUB minisplitsunroom
  797.      
  798.       GOSUB minisplitlivingroom
  799.   pause 3000    
  800.  endif  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.        
  807. '--------------mini split radio buttons
  808. read_radioButtons:
  809. pause 200  
  810. 'debug "read radio buttons...", dec error,cr  ,10        
  811. 'office ON/OFF       1 = on      0 = off
  812.      
  813.    SEROUT2 pinkTX, pinkBaud, ["!NB0R86"] ' Command To Read office minisplit radio button
  814.       ERROR = 86
  815.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout93,[dec mem1]
  816.        
  817.       IF mem1 <> Nb_var86 THEN
  818.                 Nb_var86 = mem1
  819.                 I2cwrite EpSDA,EpScl,$a0,101,[mem1]
  820.                 IF Nb_var86 =0  THEN
  821.                  serout2 PortB.2,Insteon, [$02,$62,$00,$00,$39,$CF,$11,$00]
  822.                  debug "Office off ",hex2 hour,":",hex2 minute,cr,10
  823.                  Pause 1000
  824.                  endif
  825.                 IF Nb_var86 =1 THEN GOSUB minisplitoffice
  826.                 endif      
  827.     'bedroom ON/OFF
  828.    
  829.    SEROUT2 pinkTX, pinkBaud, ["!NB0R88"] ' Command To Read bedroom minisplit radio button
  830.     ERROR = 88
  831.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout93,[dec mem1]
  832.        
  833.       IF mem1 <> Nb_var88 THEN
  834.                 Nb_var88 = mem1
  835.                 I2cwrite EpSDA,EpScl,$a0,103,[mem1]
  836.                 IF Nb_var88 =0  THEN
  837.                 serout2 PortB.2,Insteon,[$02,$62,$00,$00,$44,$CF,$11,$00]
  838.                  debug "Bedroom off ",hex2 hour,":",hex2 minute,cr,10
  839.                 Pause 1000
  840.                 endif
  841.                 IF Nb_var88 =1 THEN GOSUB minisplitbedroom
  842.                 endif
  843.              
  844.     'dining room ON/OFF
  845.    SEROUT2 pinkTX, pinkBaud, ["!NB0R90"] ' Command To Read office minisplit radio button
  846.     ERROR = 90
  847.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout93,[dec mem1]
  848.        
  849.       IF mem1 <> Nb_var90 THEN
  850.                 Nb_var90 = mem1
  851.                 I2cwrite EpSDA,EpScl,$a0,105,[mem1]
  852.                 IF Nb_var90 =0  THEN
  853.                 serout2 PortB.2,Insteon,[$02,$62,$00,$00,$23,$CF,$11,$00]
  854.                  debug "DiningRoom off ",hex2 hour,":",hex2 minute,cr,10
  855.                 Pause 1000
  856.                 endif
  857.                 IF Nb_var90 =1 THEN GOSUB minisplitdiningroom
  858.                 endif
  859.  'sunroom ON/OFF
  860.    SEROUT2 pinkTX, pinkBaud, ["!NB0R92"] ' Command To Read office minisplit radio button
  861.     ERROR = 92
  862.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout93,[dec mem1]
  863.          
  864.       IF mem1 <> Nb_var92 THEN
  865.                 Nb_var92 = mem1
  866.                 I2cwrite EpSDA,EpScl,$a0,107,[mem1]
  867.                 IF Nb_var92 =0  THEN
  868.                 serout2 PortB.2,Insteon,[$02,$62,$00,$00,$2C,$CF,$11,$00]
  869.                  debug "Sunroom off ",hex2 hour,":",hex2 minute,cr,10
  870.                 pause 1000
  871.                 endif
  872.                 IF Nb_var92 =1 THEN GOSUB minisplitsunroom
  873.                 endif                
  874.  'livingroom ON/OFF
  875.    SEROUT2 pinkTX, pinkBaud, ["!NB0R71"] ' Command To Read office minisplit radio button
  876.    ERROR = 71
  877.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout93,[dec mem1]
  878.          
  879.       IF mem1 <> Nb_var71 THEN
  880.      
  881.                 Nb_var71 = mem1
  882.                 I2cwrite EpSDA,EpScl,$a0,109,[mem1]
  883.                 IF Nb_var71 =0  THEN
  884.                 serout2 PortB.2,Insteon,[$02,$62,$00,$00,$1C,$CF,$11,$00]
  885.                  debug "Livingroom off ",hex2 hour,":",hex2 minute,cr,10
  886.                 pause 1000
  887.                 endif
  888.                 IF Nb_var71 =1 THEN GOSUB minisplitlivingroom
  889.                 endif
  890.                  
  891.  
  892.                  
  893.  
  894.                
  895.        ' debug "LR = ",dec nb_var71,cr ,10                                                              
  896.  GOSUB Get_time
  897.  
  898. '--------SUNRISE/SUNSET LCD BACKLIGHT-----------------------------------
  899.  date = 10*(date >>4) + (date & $0f) 'convert hex to bcd
  900.  month = 10*(month >>4) + (month & $0f)                
  901. 'sunrise hour
  902. IF month =1 THEN month_multiplier =0
  903. IF month =2 THEN month_multiplier =31
  904. IF month =3 THEN month_multiplier =59
  905. IF month =4 THEN month_multiplier =90
  906. IF month =5 THEN month_multiplier =120
  907. IF month =6 THEN month_multiplier =151
  908. IF month =7 THEN month_multiplier =181
  909. IF month =8 THEN month_multiplier =212
  910. IF month =9 THEN month_multiplier =243
  911. IF month =10 THEN month_multiplier =273
  912. IF month =11 THEN month_multiplier =304
  913. IF month =12 THEN month_multiplier =334
  914.  
  915. day_of_year = date + month_multiplier
  916. 'sunrise hr
  917. IF month <=6 THEN
  918. Lookup day_of_year,[0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,_ 'jan
  919. 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,_'Feb
  920. 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,_'mar
  921. 7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,_'april
  922. 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,_'may
  923. 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6],sunrise_hour'june
  924. endif
  925.  IF month >=7 THEN
  926. lookup day_of_year-181,[0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,_'July
  927. 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,_'aug
  928. 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,_'sept
  929. 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,_'oct
  930. 8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,_'nov
  931. 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8], sunrise_hour
  932.  endif
  933.  
  934. 'sunrise min
  935. IF month <=6 THEN
  936. lookup day_of_year,[0,01,01,01,02,02,01,01,01,01,01,01,00,00,00,59,59,58,58,57,57,56,55,55,54,53,53,52,51,50,49,48,_'Jan
  937. 47,46,45,44,43,42,41,40,38,37,36,35,33,32,31,29,28,27,25,24,22,21,19,18,16,15,13,12,_'Feb
  938. 10,9,7,6,4,2,1,59,57,56,54,52,51,49,47,46,44,42,41,39,37,36,34,32,30,29,27,25,24,22,20,_'mar
  939. 19,17,15,13,12,10,8,7,5,4,2,0,59,57,56,54,52,51,49,48,46,45,43,42,40,39,37,36,35,33,_  'april
  940. 32,31,29,28,27,26,24,23,22,21,20,19,18,16,15,14,14,13,12,11,10,9,8,8,7,6,6,5,4,4,3,_'may
  941. 3,2,2,1,1,1,0,0,0,0,0,59,59,59,59,59,59,59,0,0,0,0,0,1,1,1,2,2,2,3],sunrise_min'june
  942. endif
  943. IF month >=7 THEN
  944. lookup day_of_year-181,[0,4,4,5,5,6,6,7,8,8,9,10,10,11,12,13,14,14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,_'july
  945. 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,_'aug
  946. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,_'sept
  947. 30,31,33,34,35,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,54,55,56,57,58,59,0,2,3,4,_'oct
  948. 5,7,8,9,10,12,13,14,15,16,18,19,20,21,23,24,25,26,27,29,30,31,32,33,34,35,37,38,39,40,_'Nov
  949. 41,42,43,44,45,46,47,48,49,50,51,51,52,53,54,54,55,56,56,57,58,58,59,59,59,0,0,0,1,1,1],sunrise_min'dec
  950. endif
  951. 'sunset hour (24 hr)
  952. IF month <=6 THEN
  953. lookup day_of_year,[0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,_'jan
  954. 17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,_'feb
  955. 18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,_'mar
  956. 19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,_'april
  957. 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,_'may
  958. 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21],sunset_hour'june
  959. endif
  960.  IF month >=7 THEN
  961. lookup day_of_year-181,[0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,_'july
  962. 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,_'aug
  963. 20,20,20,20,20,20,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,_'sept
  964. 19,19,19,19,19,19,19,19,19,19,19,19,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,_'oct
  965. 18,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,_'nov
  966. 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17],sunset_hour
  967.  endif
  968. 'sunset minute
  969. IF month <=6 THEN
  970. lookup day_of_year,[0,14,15,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,34,35,36,37,38,40,41,42,43,45,46,47,_'jan
  971. 48,50,51,52,54,55,56,57,59,0,1,2,4,5,6,8,9,10,11,12,114,15,16,17,19,20,21,22,_'feb
  972. 23,25,26,27,28,29,30,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,_'mar
  973. 58,59,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,_'april
  974. 31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,56,57,58,59,0,1,_'may
  975. 1,2,3,4,4,5,6,6,7,7,8,9,9,10,10,10,11,11,11,12,12,12,12,13,13,13,13,13,13,13],sunset_min'june
  976. endif
  977. IF month >=7 THEN
  978. lookup day_of_year-181,[0,13,13,12,12,12,12,11,11,11,10,10,9,9,8,8,7,7,6,5,4,4,3,2,1,0,59,58,57,56,55,54,_'july
  979. 54,52,51,50,49,48,46,45,44,43,41,40,39,37,36,34,33,32,30,29,27,26,24,22,21,19,18,16,15,13,11,_'Aug
  980. 10,8,6,5,3,1,0,58,56,55,53,51,49,48,46,44,42,41,39,37,35,34,32,30,29,27,25,23,22,20,_'sept
  981. 18,16,15,13,11,10,8,6,5,3,1,0,58,57,55,53,52,50,49,47,46,44,43,41,40,39,37,36,34,33,32,_'oct
  982. 30,29,28,27,26,24,23,22,21,20,19,18,17,16,15,14,13,13,12,11,10,10,9,8,8,7,7,6,6,6,_'nov
  983. 5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,6,6,7,7,8,8,9,9,10,11,11,12,13],sunset_min
  984. endif
  985. hoursunset_hour = sunset_hour -$C
  986.  
  987. sunrise_hour =(((sunrise_hour / 10) << 4) + (sunrise_hour // 10))'convert dec to bcd
  988. sunrise_min = (((sunrise_min / 10) << 4) + (sunrise_min // 10))
  989. sunset_hour = (((sunset_hour / 10) << 4) + (sunset_hour // 10))
  990. sunset_min = (((sunset_min / 10) << 4) + (sunset_min // 10))
  991. IF hour = sunrise_hour AND minute = sunrise_min THEN backlight_bit = 1
  992. IF hour = sunset_hour AND minute = sunset_min THEN backlight_bit = 0
  993.  
  994.  
  995. serout2 pinktx,pinkbaud, ["!NB0W94:",hex2 Sunrise_hour,":",hex2 Sunrise_min,CLS]  
  996. serout2 pinktx,pinkbaud, ["!NB0W95:",hex2 Sunset_hour,":",hex2 Sunset_min, CLS]
  997. 'debug "Sun Rise ",hex2 Sunrise_hour,":",hex2 Sunrise_min," AM",cr
  998. 'Debug "Sun Set ",hex2 hourSunset_hour,":",hex2 Sunset_min," PM",cr
  999.   '____________________________________________________________________________
  1000. '_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X
  1001. Office:
  1002. Pause 200
  1003. 'debug "office Error...", dec error,cr  ,10
  1004.  shiftout serdata, clock,0,[livingroom_busy+atticunit_busy]
  1005.  shiftout serdata, clock,0,[%01000000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1006.  pulsout latch,5
  1007.  
  1008.     '----------Get Pink Data
  1009.  'Mon-Fri
  1010. 'debug "office",cr
  1011.  
  1012.  IF sleepalarmswitch = 1 THEN
  1013.  'if day <= 5 then
  1014.     SEROUT2 pinkTX, pinkBaud, ["!NB0R03"] ' Command To Read office Wake time
  1015.     ERROR = 3
  1016.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1017.         IF mem1 <> Nb_varH03 THEN
  1018.             Nb_varH03 = mem1
  1019.              I2cwrite EpSDA,EpScl,$a0,3,[mem1]
  1020.            
  1021.             endif
  1022.            
  1023.         IF mem2 <> Nb_varM03 THEN
  1024.             Nb_varM03 = mem2
  1025.             I2cwrite EpSDA,EpScl,$a0,4,[mem2]
  1026.             endif
  1027.     SEROUT2 pinkTX, pinkBaud, ["!NB0R04"] ' Command To Read office Wake temp
  1028.     ERROR = 4
  1029.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec mem1]' Get Data With Timeout
  1030.         IF mem1 <> Nb_var04 THEN
  1031.                 Nb_var04 = mem1
  1032.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,5,[mem1]
  1033.                  IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,120,[mem1]
  1034.                 endif
  1035.                
  1036.     SEROUT2 pinkTX, pinkBaud, ["!NB0R05"] ' Command To Read office Leave time
  1037.     ERROR = 5
  1038.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1039.         IF mem1 <> Nb_varH05 THEN
  1040.             Nb_varH05 = mem1
  1041.             I2cwrite EpSDA,EpScl,$a0,6,[mem1]
  1042.             endif
  1043.         IF mem2 <> Nb_varM05 THEN
  1044.             Nb_varM05 = mem2
  1045.              I2cwrite EpSDA,EpScl,$a0,7,[mem2]
  1046.             endif
  1047.     SEROUT2 pinkTX, pinkBaud, ["!NB0R06"] ' Command To Read office Leave temp
  1048.     ERROR = 6
  1049.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1050.            IF mem1 <> Nb_var06 THEN
  1051.                 Nb_var06 = mem1
  1052.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,8,[mem1]
  1053.                  IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,121,[mem1]
  1054.                 endif
  1055.     SEROUT2 pinkTX, pinkBaud, ["!NB0R07"] ' Command To Read office Return time
  1056.     ERROR =7
  1057.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1058.             IF mem1 <> Nb_varH07 THEN
  1059.                 Nb_varH07 = mem1
  1060.                 I2cwrite EpSDA,EpScl,$a0,9,[mem1]
  1061.                 endif
  1062.             IF mem2 <> Nb_varM07 THEN
  1063.                 Nb_varM07 = mem2
  1064.                 I2cwrite EpSDA,EpScl,$a0,10,[mem2]
  1065.                 endif
  1066.     SEROUT2 pinkTX, pinkBaud, ["!NB0R08"] ' Command To Read office Return Temp
  1067.     ERROR = 8
  1068.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1069.                IF mem1 <> Nb_var08 THEN
  1070.                 Nb_var08 = mem1
  1071.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,11,[mem1]
  1072.                  IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,122,[mem1]
  1073.                 'pause 5
  1074.               '  debug "W-rtn tmp(11)" ,cr
  1075.                 endif
  1076.     SEROUT2 pinkTX, pinkBaud, ["!NB0R09"] ' Command To Read office Sleep time
  1077.     ERROR = 9
  1078.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1079.             IF mem1 <> Nb_varH09 THEN
  1080.                 Nb_varH09 = mem1
  1081.                I2cwrite EpSDA,EpScl,$a0,12,[mem1]
  1082.                'pause 5
  1083.               ' debug "W-sl hr(12)" ,cr
  1084.                 endif
  1085.             IF mem2 <> Nb_varM09 THEN
  1086.                 Nb_varM09 = mem2
  1087.                 I2cwrite EpSDA,EpScl,$a0,13,[mem2]
  1088.                 'pause 5
  1089.                ' debug "W-sl mn(13)",cr
  1090.                 endif
  1091.     SEROUT2 pinkTX, pinkBaud, ["!NB0R10"] ' Command To Read office Sleep Temp
  1092.     ERROR = 10
  1093.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1094.               IF mem1 <> Nb_var10 THEN
  1095.                 Nb_var10 = mem1
  1096.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,14,[mem1]
  1097.                  IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,123,[mem1]
  1098.                  'pause 5
  1099.                 ' debug "W-sl tmp(14)" ,cr
  1100.                endif
  1101.              
  1102.      SEROUT2 pinkTX, pinkBaud, ["!NB0R02"] ' Command To Read office current setting temp
  1103.      ERROR = 2
  1104.      SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1105.          IF mem1 <> Nb_var02 THEN
  1106.             Nb_var02 = mem1
  1107.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,2,[mem1]
  1108.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,119,[mem1]
  1109.            IF office_busy = %00000000 THEN GOSUB minisplitoffice          
  1110.            
  1111.             'serout2 PortB.2,32, [$02,$62,$00,$00,result,$CF,$11,$00]        
  1112.         endif
  1113.       ' debug "MS-OFFICE ", hex2 result ,cr  
  1114.                  
  1115.     IF hour = Nb_varH03  AND minute = Nb_varM03 THEN 'Wake
  1116.         office_mode = 1
  1117.         IF nb_var02 <>   Nb_var04 THEN
  1118.         nb_var02 = Nb_var04
  1119.         GOSUB minisplitoffice
  1120.        ' debug "AH-HA",cr
  1121.        
  1122.         endif
  1123.      endif
  1124.    'Put filter here to determine occupancy If/then
  1125.     IF hour = Nb_varH05 AND minute = Nb_varM05 THEN 'leave
  1126.          office_mode = 2
  1127.          IF nb_var02 <>  NB_var06 THEN
  1128.         nb_var02 = Nb_var06
  1129.         GOSUB minisplitoffice
  1130.         'debug "ah-ha",cr
  1131.         'serout2 PortB.2,32, [$02,$62,$00,$00,result,$CF,$11,$00]
  1132.         endif
  1133.    
  1134.     endif
  1135.     IF hour = Nb_varH07 AND minute = Nb_varM07 THEN  'return
  1136.         office_mode = 3
  1137.          IF nb_var02 <>  NB_var08 THEN
  1138.         nb_var02 = Nb_var08
  1139.         GOSUB minisplitoffice
  1140.         'debug "ah-ha",cr
  1141.         'serout2 PortB.2,32, [$02,$62,$00,$00,result,$CF,$11,$00]
  1142.         endif
  1143.   'stop filter here ENDIF
  1144.     endif
  1145.     IF hour = Nb_varH09 AND minute = Nb_varM09 THEN 'sleep
  1146.         office_mode = 4
  1147.          IF nb_var02 <>  NB_var10 THEN
  1148.         nb_var02 = Nb_var10
  1149.         GOSUB minisplitoffice
  1150.         'debug "ah-ha",cr
  1151.        ' serout2 PortB.2,32, [$02,$62,$00,$00,result,$CF,$11,$00]
  1152.         endif
  1153.     endif
  1154.    
  1155. endif
  1156.    
  1157. 'Sat&Sun
  1158.  'if day >= 6 then
  1159.  IF sleepalarmswitch = 0 THEN
  1160. 'Debug"S-S",cr
  1161.        SEROUT2 pinkTX, pinkBaud, ["!NB0R51"] ' Command To Read office wake time
  1162.        ERROR = 51
  1163.        SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1164.         IF mem1 <> Nb_varH51 THEN
  1165.             Nb_varH51 = mem1
  1166.            ' write 63 ,mem1
  1167.             I2cwrite EpSDA,EpScl,$a0,63,[mem1]
  1168.             'pause 5
  1169.            ' debug "W-SS Wk Hr(63)" ,cr
  1170.          endif
  1171.         IF mem2 <> Nb_varM51 THEN
  1172.             Nb_varM51 = mem2
  1173.            ' write 64 ,mem2
  1174.              I2cwrite EpSDA,EpScl,$a0,64,[mem2]
  1175.              'pause 5
  1176.             ' debug "W-SS Wk Mn(64)" ,cr
  1177.          endif
  1178.         SEROUT2 pinkTX, pinkBaud, ["!NB0R52"] ' Command To Read office wake Temp
  1179.        ERROR = 52
  1180.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1181.          IF mem1 <> Nb_var52 THEN
  1182.             Nb_var52 = mem1
  1183.            ' write 65 ,mem1
  1184.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,65,[mem1]
  1185.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,124,[mem1]
  1186.             'pause 5
  1187.            ' debug "W-SS wk tmp(65)",cr
  1188.            endif
  1189.         SEROUT2 pinkTX, pinkBaud, ["!NB0R53"] ' Command To Read office Sleep time
  1190.         ERROR = 53
  1191.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1192.          IF mem1 <> Nb_varH53 THEN
  1193.             Nb_varH53 = mem1
  1194.             'write 66 ,mem1
  1195.              I2cwrite EpSDA,EpScl,$a0,66,[mem1]
  1196.              'pause 5
  1197.             ' debug "W-SS Sl hr(66)" ,cr
  1198.            endif
  1199.          IF mem2 <> Nb_varM53 THEN
  1200.             Nb_varM53 = mem2
  1201.             'write 67 ,mem2
  1202.             I2cwrite EpSDA,EpScl,$a0,67,[mem2]
  1203.             'pause 5
  1204.           '  debug "W-SS Sl Mn(67)",cr
  1205.            endif
  1206.         SEROUT2 pinkTX, pinkBaud, ["!NB0R54"] ' Command To Read office Sleep Temp
  1207.         ERROR = 54
  1208.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1209.           IF mem1 <> Nb_var54 THEN
  1210.             Nb_var54 = mem1
  1211.            ' write 68 ,mem1
  1212.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,68,[mem1]
  1213.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,125,[mem1]
  1214.            'pause 5
  1215.            ' debug "W-SS Sl tmp(68)" ,cr
  1216.            Endif
  1217.              
  1218.            
  1219.         SEROUT2 pinkTX, pinkBaud, ["!NB0R02"] ' Command To Read office current setting temp
  1220.         ERROR = 2
  1221.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec2 mem1]' Get Data With Timeout
  1222.          IF mem1 <> Nb_var02 THEN
  1223.             Nb_var02 = mem1
  1224.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,2,[mem1]
  1225.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,119,[mem1]
  1226.             IF office_busy = %00000000  THEN GOSUB MiniSPlitOffice
  1227.              ' debug "Office Set" , cr
  1228.             ' debug "W-cnt set(2)" ,dec mem1,cr
  1229.         endif  
  1230.  
  1231.        ' debug "MS-OFFICE ", hex2 ms_office , cr
  1232.        
  1233.                
  1234.             IF hour = Nb_varH51  AND minute = Nb_varM51 THEN 'Wake
  1235.                 office_mode = 1
  1236.                
  1237.                IF nb_var02<> nb_var52 THEN
  1238.                  nb_var02 = Nb_var52
  1239.                 GOSUB MiniSPlitOffice
  1240.                ' debug "Ah-Ha",hex2 MS_Office , cr
  1241.                endif
  1242.             endif
  1243.    
  1244.             IF hour = Nb_varH53 AND minute = Nb_varM53 THEN 'sleep
  1245.                  office_mode = 4
  1246.                  
  1247.                 IF nb_var02<> nb_var54 THEN
  1248.                  nb_var02 = Nb_var54
  1249.                  GOSUB MiniSPlitOffice  
  1250.                ' debug "Ah-Ha",hex2 ms_office, cr
  1251.                endif
  1252.             endif
  1253.    endif
  1254.      
  1255. '----------set x-bee channel------------
  1256.  
  1257.      
  1258. Office_set:
  1259.  'debug "Office set", cr    
  1260.     pause 50
  1261.     serout2 TX,baud,["+++"]
  1262.     pause 1000
  1263.     serout2 TX,baud,["ATMY 1",CR] 'address office module "1" is office
  1264.     serout2 TX,baud,["ATDL 1" ,CR]
  1265.     serout2 TX,baud,["ATCN",CR]
  1266.      pause busy_bit
  1267.     SERIN2 RX,Baud,250,Office_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  1268.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr,10
  1269.      pause 18000
  1270.     GOTO timeout3  'skip com with office for now
  1271. Office_set1:    
  1272. '-----------send data to Office module------------------------
  1273.     serout2 TX,Baud, [" Office ",cr]  
  1274.     pause 50  
  1275.     serout2 TX,Baud, [":",Nb_var02,hex2 hour,hex2 minute,office_mode,day,backlight_bit,Nb_var93,OutdoorRH, OutdoorTF] 'send pink temp value to office module
  1276.    
  1277. '----------Get data from Office module--------------------
  1278.    
  1279.     SERIN2 RX,Baud,PauseBit,timeout3,[Office_Temp, Office_Setting] 'get temperature and user set temp from office module
  1280.     office_busy = %00000000
  1281. '----------send data from office module to pink---------------      
  1282.     serout2 pinktx,pinkbaud, ["!NB0W02:", dec  Office_Setting, CLS]
  1283.     serout2 pinktx,pinkbaud, ["!NB0W01:", dec  Office_Temp, CLS] 'send current temp to Pink
  1284.    
  1285.   shiftout serdata, clock,0,[livingroom_busy+atticunit_busy]
  1286.  shiftout serdata, clock,0,[%00000000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1287.   'debug "Office  ", dec nb_var93, cr
  1288.  pulsout latch,5
  1289. '_______________________________________________________________________________
  1290. '_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X
  1291. BedRoom:
  1292. Pause 200
  1293. 'debug "Bedroom Error...", dec error,cr  ,10
  1294.  
  1295. shiftout serdata, clock,0,[livingroom_busy+atticunit_busy]
  1296. shiftout serdata, clock,0,[%00010000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1297.  
  1298. pulsout latch,5
  1299.  
  1300.     '----------Get Pink Data
  1301.  'Mon-Fri
  1302. ' if day <= 5 then
  1303.  IF sleepalarmswitch = 1 THEN
  1304. 'debug "M-F",cr
  1305.     SEROUT2 pinkTX, pinkBaud, ["!NB0R13"] ' Command To Read Bedroom Wake time
  1306.      ERROR = 13
  1307.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1308.         IF mem1 <> Nb_varH13 THEN
  1309.             Nb_varH13 = mem1
  1310.             I2cwrite EpSDA,EpScl,$a0,15,[mem1]
  1311.             'pause 5
  1312.            ' debug "W-wk hr(15)" ,cr
  1313.             endif
  1314.         IF mem2 <> Nb_varM13 THEN
  1315.             Nb_varM13 = mem2
  1316.             I2cwrite EpSDA,EpScl,$a0,16,[mem2]
  1317.             'pause 5
  1318.            ' debug "W-wk mn(16)"  ,cr
  1319.             endif
  1320.     SEROUT2 pinkTX, pinkBaud, ["!NB0R14"] ' Command To Read Bedroom Wake temp
  1321.     ERROR = 14
  1322.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec mem1]' Get Data With Timeout
  1323.         IF mem1 <> Nb_var14 THEN
  1324.                 Nb_var14 = mem1
  1325.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,17,[mem1]
  1326.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,127,[mem1]
  1327.                 'pause 5
  1328.               '  debug "W-wk tmp(17)" ,cr
  1329.                 endif
  1330.     SEROUT2 pinkTX, pinkBaud, ["!NB0R15"] ' Command To Read Bedroom Leave time
  1331.     ERROR = 15
  1332.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1333.         IF mem1 <> Nb_varH15 THEN
  1334.             Nb_varH15 = mem1
  1335.             I2cwrite EpSDA,EpScl,$a0,18,[mem1]
  1336.             'pause 5
  1337.           '  debug "W-lv hr(18)" ,cr
  1338.             endif
  1339.         IF mem2 <> Nb_varM15 THEN
  1340.             Nb_varM15 = mem2
  1341.              I2cwrite EpSDA,EpScl,$a0,19,[mem2]
  1342.              'pause 5
  1343.             ' debug "W-lv mn(19)" ,cr
  1344.             endif
  1345.     SEROUT2 pinkTX, pinkBaud, ["!NB0R16"] ' Command To Read Bedroom Leave temp
  1346.     ERROR = 16
  1347.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1348.            IF mem1 <> Nb_var16 THEN
  1349.                 Nb_var16 = mem1
  1350.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,20,[mem1]
  1351.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,128,[mem1]
  1352.                 'pause 5
  1353.                ' debug "W-lv tmp(20)",cr
  1354.                 endif
  1355.     SEROUT2 pinkTX, pinkBaud, ["!NB0R17"] ' Command To Read bedroom Return time
  1356.     ERROR = 17
  1357.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1358.             IF mem1 <> Nb_varH17 THEN
  1359.                 Nb_varH17 = mem1
  1360.                 I2cwrite EpSDA,EpScl,$a0,21,[mem1]
  1361.                 'pause 5
  1362.                 'debug "W-rtn hr(21)" ,cr
  1363.                 endif
  1364.             IF mem2 <> Nb_varM17 THEN
  1365.                 Nb_varM17 = mem2
  1366.                 I2cwrite EpSDA,EpScl,$a0,22,[mem2]
  1367.                 'pause 5
  1368.                ' debug "W-rtn mn(22)" ,cr
  1369.                 endif
  1370.     SEROUT2 pinkTX, pinkBaud, ["!NB0R18"] ' Command To Read bedroom Return Temp
  1371.     ERROR = 18
  1372.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1373.                IF mem1 <> Nb_var18 THEN
  1374.                 Nb_var18 = mem1
  1375.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,23,[mem1]
  1376.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,129,[mem1]
  1377.                 'pause 5
  1378.                ' debug "W-rtn tmp(23)" ,cr
  1379.                 endif
  1380.     SEROUT2 pinkTX, pinkBaud, ["!NB0R19"] ' Command To Read bedroom Sleep time
  1381.     ERROR = 19
  1382.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1383.             IF mem1 <> Nb_varH19 THEN
  1384.                 Nb_varH19 = mem1
  1385.                I2cwrite EpSDA,EpScl,$a0,24,[mem1]
  1386.                'pause 5
  1387.               ' debug "W-sl hr(24)" ,cr
  1388.                 endif
  1389.             IF mem2 <> Nb_varM19 THEN
  1390.                 Nb_varM19 = mem2
  1391.                 I2cwrite EpSDA,EpScl,$a0,25,[mem2]
  1392.                 'pause 5
  1393.               '  debug "W-sl mn(25)",cr
  1394.                 endif
  1395.     SEROUT2 pinkTX, pinkBaud, ["!NB0R20"] ' Command To Read bedroom Sleep Temp
  1396.     ERROR = 20
  1397.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1398.               IF mem1 <> Nb_var20 THEN
  1399.                 Nb_var20 = mem1
  1400.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,26,[mem1]
  1401.                  IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,130,[mem1]
  1402.                  'pause 5
  1403.               '   debug "W-sl tmp(26)" ,cr
  1404.                endif
  1405.      SEROUT2 pinkTX, pinkBaud, ["!NB0R12"] ' Command To Read bedroom current setting temp
  1406.      ERROR= 12  
  1407.      SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1408.          IF mem1 <> Nb_var12 THEN
  1409.             Nb_var12 = mem1
  1410.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,93,[mem1]
  1411.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,126,[mem1]
  1412.            IF bedroom_busy = %00000000 THEN GOSUB minisplitbedroom
  1413.              'pause 5
  1414.              'write 2 ,mem1
  1415.            ' debug "W-cnt set(93)" ,dec mem1,cr
  1416.             'debug "BedRoom Set",cr
  1417.         endif
  1418.     ' debug "MS-BEDROOM ", hex2 ms_Bedroom ,cr    
  1419.                  
  1420.     IF hour = Nb_varH13  AND minute = Nb_varM13 THEN 'Wake
  1421.         bedroom_mode = 1
  1422.          IF nb_var12<> nb_var14 THEN
  1423.             nb_var12 = Nb_var14
  1424.                GOSUB MiniSPlitbedroom
  1425.                ' debug "Ah-Ha BR",hex2 MS_bedroom , cr
  1426.                endif
  1427.      endif
  1428.    
  1429.     IF hour = Nb_varH15 AND minute = Nb_varM15 THEN 'leave
  1430.          bedroom_mode = 2
  1431.          IF nb_var12<> nb_var16 THEN
  1432.             nb_var12 = Nb_var16
  1433.                GOSUB MiniSPlitbedroom
  1434.                ' debug "Ah-Ha",hex2 MS_bedroom , cr
  1435.                endif
  1436.    
  1437.     endif
  1438.     IF hour = Nb_varH17 AND minute = Nb_varM17 THEN  'return
  1439.         bedroom_mode = 3
  1440.        IF nb_var12<> nb_var18 THEN
  1441.             nb_var12 = Nb_var18
  1442.                GOSUB MiniSPlitbedroom
  1443.                ' debug "Ah-Ha",hex2 MS_bedroom , cr
  1444.                endif
  1445.    
  1446.     endif
  1447.     IF hour = Nb_varH19 AND minute = Nb_varM19 THEN 'sleep
  1448.         bedroom_mode = 4
  1449.         IF nb_var12<> nb_var20 THEN
  1450.             nb_var12 = Nb_var20
  1451.                GOSUB MiniSPlitbedroom
  1452.                ' debug "Ah-Ha",hex2 MS_bedroom , cr
  1453.                endif
  1454.     endif
  1455.    
  1456. endif
  1457.    
  1458. 'Sat&Sun
  1459.  'if day >= 6 then
  1460. IF sleepalarmswitch = 0 THEN
  1461. 'Debug"S-S",cr
  1462.        SEROUT2 pinkTX, pinkBaud, ["!NB0R55"] ' Command To Read bedroom wake time
  1463.        ERROR = 55
  1464.        SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1465.         IF mem1 <> Nb_varH55 THEN
  1466.             Nb_varH55 = mem1
  1467.            ' write 63 ,mem1
  1468.             I2cwrite EpSDA,EpScl,$a0,69,[mem1]
  1469.             'pause 5
  1470.            ' debug "W-SS Wk Hr(69)" ,cr
  1471.          endif
  1472.         IF mem2 <> Nb_varM55 THEN
  1473.             Nb_varM55 = mem2
  1474.            ' write 64 ,mem2
  1475.              I2cwrite EpSDA,EpScl,$a0,70,[mem2]
  1476.              'pause 5
  1477.            '  debug "W-SS Wk Mn(70)" ,cr
  1478.          endif
  1479.         SEROUT2 pinkTX, pinkBaud, ["!NB0R56"] ' Command To Read bedroom wake Temp
  1480.         ERROR = 56
  1481.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1482.          IF mem1 <> Nb_var56 THEN
  1483.             Nb_var56 = mem1
  1484.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,71,[mem1]
  1485.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,131,[mem1]
  1486.             'pause 5
  1487.            ' debug "W-SS wk tmp(71)",cr
  1488.            endif
  1489.         SEROUT2 pinkTX, pinkBaud, ["!NB0R57"] ' Command To Read bedroom Sleep time
  1490.         ERROR = 57
  1491.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1492.          IF mem1 <> Nb_varH57 THEN
  1493.             Nb_varH57 = mem1
  1494.             'write 66 ,mem1
  1495.              I2cwrite EpSDA,EpScl,$a0,72,[mem1]
  1496.              'pause 5
  1497.             ' debug "W-SS Sl hr(72)" ,cr
  1498.            endif
  1499.          IF mem2 <> Nb_varM57 THEN
  1500.             Nb_varM57 = mem2
  1501.             'write 67 ,mem2
  1502.             I2cwrite EpSDA,EpScl,$a0,73,[mem2]
  1503.             'pause 5
  1504.             'debug "W-SS Sl Mn(73)",cr
  1505.            endif
  1506.         SEROUT2 pinkTX, pinkBaud, ["!NB0R58"] ' Command To Read Bedroom Sleep Temp
  1507.         ERROR = 28
  1508.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1509.           IF mem1 <> Nb_var58 THEN
  1510.             Nb_var58 = mem1
  1511.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,74,[mem1]
  1512.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,132,[mem1]
  1513.             'pause 5
  1514.            ' debug "W-SS Sl tmp(74)" ,cr
  1515.            Endif
  1516.         SEROUT2 pinkTX, pinkBaud, ["!NB0R12"] ' Command To Read bedroom current setting temp
  1517.         ERROR = 12
  1518.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1519.          IF mem1 <> Nb_var12 THEN
  1520.             Nb_var12 = mem1
  1521.             IF bedroom_busy = %00000000 THEN GOSUB minisplitbedroom
  1522.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,93,[mem1]
  1523.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,126,[mem1]
  1524.              'pause 5
  1525.             ' Debug "BedRoom set",cr
  1526.            ' debug "W-cnt set(93)" ,dec mem1,cr
  1527.         endif
  1528.           ' debug "MS-BEDROOM ", hex2 ms_bedroom , cr
  1529.                          
  1530.             IF hour = Nb_varH55  AND minute = Nb_varM55 THEN 'Wake
  1531.                 bedroom_mode = 1
  1532.                  IF nb_var12<> nb_var56 THEN
  1533.                     nb_var12 = Nb_var56
  1534.                 GOSUB MiniSPlitbedroom
  1535.                ' debug "Ah-Ha",hex2 MS_bedroom , cr
  1536.                endif
  1537.              endif
  1538.            
  1539.             IF hour = Nb_varH57 AND minute = Nb_varM57 THEN 'sleep
  1540.              bedroom_mode = 4
  1541.               IF nb_var12<> nb_var58 THEN
  1542.                  nb_var12 = Nb_var58
  1543.                 GOSUB MiniSPlitbedroom
  1544.                ' debug "Ah-Ha",hex2 MS_bedroom , cr
  1545.                endif
  1546.             endif
  1547.    endif    
  1548. '----------set x-bee channel------------
  1549.  bedroom_set:
  1550.      
  1551.    
  1552.      pause 50
  1553.     serout2 TX,baud,["+++"]
  1554.     pause 1000
  1555.     serout2 TX,baud,["ATMY 2",CR] 'address office module "1" is office
  1556.     serout2 TX,baud,["ATDL 2",CR]
  1557.     serout2 TX,baud,["ATCN",CR]
  1558.      pause Busy_Bit
  1559.     SERIN2 RX,Baud,250,bedroom_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  1560.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr,10
  1561.      pause 18000
  1562.     GOTO timeout5  'skip com with bedroom for now
  1563. bedroom_set1:
  1564.                                
  1565. '-----------send data to BedRoom module------------------------
  1566.     serout2 TX,Baud, [" Bedroom "]
  1567.     pause 50  
  1568.     serout2 TX,Baud, [":",Nb_var12,hex2 hour,hex2 minute, bedroom_mode,day,backlight_bit,Nb_var93,OutdoorRH, OutdoorTF] 'send pink temp value to office module
  1569. '----------Get data from BedRoom module--------------------
  1570.   'debug "bedroom ", dec nb_var93, cr  
  1571.    
  1572.    SERIN2 RX,Baud,PauseBit,timeout5,[ bedroom_Temp,bedroom_Setting] 'get temperature and user set temp from office module
  1573. bedroom_busy = %00000000
  1574. '----------send data from office module to pink---------------      
  1575.     serout2 pinktx,pinkbaud, ["!NB0W12:", dec  bedroom_Setting, CLS]
  1576.     serout2 pinktx,pinkbaud, ["!NB0W11:", dec  bedroom_Temp, CLS] 'send current temp to Pink
  1577.    timeout_bit =0
  1578. shiftout serdata, clock,0,[livingroom_busy+atticunit_busy]
  1579. shiftout serdata, clock,0,[%00000000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  1580. pulsout latch,5
  1581. '_______________________________________________________________________________
  1582. '_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X  
  1583.  
  1584.  DiningRoom:
  1585.  Pause 200
  1586.  'debug "Diningroom Error...", dec error,cr  ,10
  1587.  shiftout serdata, clock,0,[Livingroom_busy+atticunit_busy]
  1588.  shiftout serdata, clock,0,[%00000100 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1589.  pulsout latch,5
  1590.  
  1591.  
  1592.     '----------Get Pink Data
  1593.  'Mon-Fri
  1594.  'if day <= 5 then
  1595.  IF sleepalarmswitch = 1 THEN
  1596. 'debug "M-F",cr
  1597.     SEROUT2 pinkTX, pinkBaud, ["!NB0R23"] ' Command To Read Diningroom Wake time
  1598.     ERROR = 23
  1599.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1600.         IF mem1 <> Nb_varH23 THEN
  1601.             Nb_varH23 = mem1
  1602.             I2cwrite EpSDA,EpScl,$a0,27,[mem1]
  1603.             'pause 5
  1604.            ' debug "W-wk hr(27)" ,cr
  1605.             endif
  1606.         IF mem2 <> Nb_varM23 THEN
  1607.             Nb_varM23 = mem2
  1608.             I2cwrite EpSDA,EpScl,$a0,28,[mem2]
  1609.             'pause 5
  1610.            ' debug "W-wk mn(28)"  ,cr
  1611.             endif
  1612.     SEROUT2 pinkTX, pinkBaud, ["!NB0R24"] ' Command To Read Diningroom Wake temp
  1613.     ERROR = 24
  1614.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec mem1]' Get Data With Timeout
  1615.         IF mem1 <> Nb_var24 THEN
  1616.                 Nb_var24 = mem1
  1617.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,29,[mem1]
  1618.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,134,[mem1]
  1619.                 'pause 5
  1620.                ' debug "W-wk tmp(29)" ,cr
  1621.                 endif
  1622.     SEROUT2 pinkTX, pinkBaud, ["!NB0R25"] ' Command To Read DiningRoom Leave time
  1623.     ERROR = 25
  1624.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1625.         IF mem1 <> Nb_varH25 THEN
  1626.             Nb_varH25 = mem1
  1627.             I2cwrite EpSDA,EpScl,$a0,30,[mem1]
  1628.             'pause 5
  1629.            ' debug "W-lv hr(30)" ,cr
  1630.             endif
  1631.         IF mem2 <> Nb_varM25 THEN
  1632.             Nb_varM25 = mem2
  1633.              I2cwrite EpSDA,EpScl,$a0,31,[mem2]
  1634.              'pause 5
  1635.             ' debug "W-lv mn(31)" ,cr
  1636.             endif
  1637.     SEROUT2 pinkTX, pinkBaud, ["!NB0R26"] ' Command To Read DiningRoom Leave temp
  1638.     ERROR = 26
  1639.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1640.            IF mem1 <> Nb_var26 THEN
  1641.                 Nb_var26 = mem1
  1642.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,32,[mem1]
  1643.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,135,[mem1]
  1644.                 'pause 5
  1645.                ' debug "W-lv tmp(32)",cr
  1646.                 endif
  1647.     SEROUT2 pinkTX, pinkBaud, ["!NB0R27"] ' Command To Read Diningroom Return time
  1648.     ERROR = 27
  1649.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1650.             IF mem1 <> Nb_varH27 THEN
  1651.                 Nb_varH27 = mem1
  1652.                 I2cwrite EpSDA,EpScl,$a0,33,[mem1]
  1653.                 'pause 5
  1654.                 'debug "W-rtn hr(33)" ,cr
  1655.                 endif
  1656.             IF mem2 <> Nb_varM27 THEN
  1657.                 Nb_varM27 = mem2
  1658.                 I2cwrite EpSDA,EpScl,$a0,34,[mem2]
  1659.                 'pause 5
  1660.                ' debug "W-rtn mn(34)" ,cr
  1661.                 endif
  1662.     SEROUT2 pinkTX, pinkBaud, ["!NB0R28"] ' Command To Read diningroom Return Temp
  1663.     ERROR = 28
  1664.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1665.                IF mem1 <> Nb_var28 THEN
  1666.                 Nb_var28 = mem1
  1667.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,35,[mem1]
  1668.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,136,[mem1]
  1669.                 'pause 5
  1670.                ' debug "W-rtn tmp(35)" ,cr
  1671.                 endif
  1672.     SEROUT2 pinkTX, pinkBaud, ["!NB0R29"] ' Command To Read Diningroom Sleep time
  1673.     ERROR = 29
  1674.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1675.             IF mem1 <> Nb_varH29 THEN
  1676.                 Nb_varH29 = mem1
  1677.                I2cwrite EpSDA,EpScl,$a0,36,[mem1]
  1678.                'pause 5
  1679.                'debug "W-sl hr(24)" ,cr
  1680.                 endif
  1681.             IF mem2 <> Nb_varM29 THEN
  1682.                 Nb_varM29 = mem2
  1683.                 I2cwrite EpSDA,EpScl,$a0,37,[mem2]
  1684.                 'pause 5
  1685.                ' debug "W-sl mn(25)",cr
  1686.                 endif
  1687.     SEROUT2 pinkTX, pinkBaud, ["!NB0R30"] ' Command To Read DiningRoom Sleep Temp
  1688.     ERROR = 30
  1689.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1690.               IF mem1 <> Nb_var30 THEN
  1691.                 Nb_var30 = mem1
  1692.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,38,[mem1]
  1693.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,137,[mem1]
  1694.                  'pause 5
  1695.                 ' debug "W-sl tmp(26)" ,cr
  1696.                endif
  1697.         SEROUT2 pinkTX, pinkBaud, ["!NB0R22"] ' Command To Read Diningroom current setting temp
  1698.         ERROR = 22
  1699.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1700.          IF mem1 <> Nb_var22 THEN
  1701.             Nb_var22 = mem1
  1702.            IF diningroom_busy = %00000000 THEN GOSUB minisplitdiningroom
  1703.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,94,[mem1]
  1704.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,133,[mem1]
  1705.              'pause 5
  1706.              'debug "DR Set",cr
  1707.             ' debug "W-cnt set(94)",hex2 mem1 ,cr
  1708.         endif
  1709.     ' debug "MS-Diningroom ", hex2 ms_diningroom ,cr  
  1710.                
  1711.     IF hour = Nb_varH23  AND minute = Nb_varM23 THEN 'Wake
  1712.         diningroom_mode = 1
  1713.         IF nb_var22<> nb_var24 THEN
  1714.                  nb_var22 = Nb_var24
  1715.                 GOSUB MiniSPlitdiningroom
  1716.                ' DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1717.                ENDIF
  1718.             ENDIF
  1719.  
  1720.    
  1721.     IF hour = Nb_varH25 AND minute = Nb_varM25 THEN 'leave
  1722.          diningroom_mode = 2
  1723.         IF nb_var22<> nb_var26 THEN
  1724.                  nb_var22 = Nb_var26
  1725.                 GOSUB MiniSPlitdiningroom
  1726.                ' DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1727.                ENDIF
  1728.    
  1729.     endif
  1730.     IF hour = Nb_varH27 AND minute = Nb_varM27 THEN  'return
  1731.         diningroom_mode = 3
  1732.         IF nb_var22<> nb_var28 THEN
  1733.                  nb_var22 = Nb_var28
  1734.                 GOSUB MiniSPlitdiningroom
  1735.                 'DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1736.                ENDIF
  1737.    
  1738.     endif
  1739.     IF hour = Nb_varH29 AND minute = Nb_varM29 THEN 'sleep
  1740.         diningroom_mode = 4
  1741.         IF nb_var22<> nb_var30 THEN
  1742.                  nb_var22 = Nb_var30
  1743.                 GOSUB MiniSPlitdiningroom
  1744.                ' DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1745.                ENDIF
  1746.     endif
  1747.    
  1748. endif
  1749.    
  1750. 'Sat&Sun
  1751.  'if day >= 6 then
  1752.   IF sleepalarmswitch = 0 THEN
  1753. 'Debug"S-S",cr
  1754.        SEROUT2 pinkTX, pinkBaud, ["!NB0R59"] ' Command To Read Diningroom wake time
  1755.        ERROR = 59
  1756.        SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1757.         IF mem1 <> Nb_varH59 THEN
  1758.             Nb_varH59 = mem1
  1759.            ' write 63 ,mem1
  1760.             I2cwrite EpSDA,EpScl,$a0,75,[mem1]
  1761.             'pause 5
  1762.            ' debug "W-SS Wk Hr(75)" ,cr
  1763.          endif
  1764.         IF mem2 <> Nb_varM59 THEN
  1765.             Nb_varM59 = mem2
  1766.            ' write 64 ,mem2
  1767.              I2cwrite EpSDA,EpScl,$a0,76,[mem2]
  1768.              'pause 5
  1769.             ' debug "W-SS Wk Mn(76)" ,cr
  1770.          endif
  1771.         SEROUT2 pinkTX, pinkBaud, ["!NB0R60"] ' Command To Read DiningRoomwake Temp
  1772.         ERROR = 60
  1773.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1774.          IF mem1 <> Nb_var60 THEN
  1775.             Nb_var60 = mem1
  1776.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,77,[mem1]
  1777.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,138,[mem1]
  1778.             'pause 5
  1779.            ' debug "W-SS wk tmp(77)",cr
  1780.            endif
  1781.         SEROUT2 pinkTX, pinkBaud, ["!NB0R61"] ' Command To Read Diningroom Sleep time
  1782.         ERROR = 61
  1783.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1784.          IF mem1 <> Nb_varH61 THEN
  1785.             Nb_varH61 = mem1
  1786.             'write 66 ,mem1
  1787.              I2cwrite EpSDA,EpScl,$a0,78,[mem1]
  1788.              'pause 5
  1789.             ' debug "W-SS Sl hr(78)" ,cr
  1790.            endif
  1791.          IF mem2 <> Nb_varM61 THEN
  1792.             Nb_varM61 = mem2
  1793.             'write 67 ,mem2
  1794.             I2cwrite EpSDA,EpScl,$a0,79,[mem2]
  1795.             'pause 5
  1796.            ' debug "W-SS Sl Mn(79)",cr
  1797.            endif
  1798.         SEROUT2 pinkTX, pinkBaud, ["!NB0R62"] ' Command To Read Diningroom Sleep Temp
  1799.         ERROR = 62
  1800.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1801.           IF mem1 <> Nb_var62 THEN
  1802.             Nb_var62 = mem1
  1803.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,80,[mem1]
  1804.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,139,[mem1]
  1805.             'pause 5
  1806.            ' debug "W-SS Sl tmp(80)" ,cr
  1807.            Endif
  1808.         SEROUT2 pinkTX, pinkBaud, ["!NB0R22"] ' Command To Read diningRoom current setting temp
  1809.         ERROR = 22
  1810.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1811.          IF mem1 <> Nb_var22 THEN
  1812.             Nb_var22 = mem1
  1813.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,94,[mem1]
  1814.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,133,[mem1]
  1815.            IF diningroom_busy = %00000000  THEN GOSUB minisplitdiningroom
  1816.              'pause 5
  1817.             ' Debug "DiningRoom set" , cr
  1818.            '  debug "W-cnt set(93)",hex2 mem1 ,cr
  1819.         endif
  1820.          ' debug "MS-DiningRoom ", hex2 ms_diningroom,cr
  1821.          
  1822.             IF hour = Nb_varH59  AND minute = Nb_varM59 THEN 'Wake
  1823.                 diningroom_mode = 1
  1824.                 IF nb_var22<> nb_var60 THEN
  1825.                  nb_var22 = Nb_var60
  1826.                 GOSUB MiniSPlitdiningroom
  1827.                ' DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1828.                ENDIF
  1829.              endif
  1830.            
  1831.             IF hour = Nb_varH61 AND minute = Nb_varM61 THEN 'sleep
  1832.              diningroom_mode = 4
  1833.              IF nb_var22<> nb_var62 THEN
  1834.                  nb_var22 = Nb_var62
  1835.                 GOSUB MiniSPlitdiningroom
  1836.                 'DEBUG "Ah-Ha",hex2 MS_diningroom  , cr
  1837.                ENDIF
  1838.             endif
  1839.    endif    
  1840. '----------set x-bee channel------------
  1841.  DiningRoom_set:
  1842.      
  1843.    
  1844.      pause 200
  1845.     serout2 TX,baud,["+++"]
  1846.     pause 1000
  1847.     serout2 TX,baud,["ATMY 3",CR] 'address diningroom module "3" is diningroom
  1848.     serout2 TX,baud,["ATDL 3",CR]
  1849.     serout2 TX,baud,["ATCN",CR]
  1850.     pause Busy_Bit
  1851.      SERIN2 RX,Baud,250,diningroom_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  1852.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr,10
  1853.      pause 18000
  1854.     GOTO timeout6  'skip com with diningroom for now
  1855. diningroom_set1:
  1856. '-----------send data to Diningroom module------------------------
  1857.      serout2 TX,Baud, [" Diningroom "]   'this is fluff to wait for ":"
  1858.       pause 50
  1859.      
  1860.     serout2 TX,Baud, [":",Nb_var22,hex2 hour,hex2 minute, diningroom_mode,day,backlight_bit,Nb_var93,OutdoorRH, OutdoorTF] 'send pink temp value to office module
  1861. '----------Get data from Diningroom module--------------------
  1862.   ' debug "Diningroom ", dec nb_var93, cr
  1863.        
  1864.    
  1865.    SERIN2 RX,Baud,PauseBit,timeout6,[Diningroom_Temp,Diningroom_Setting] 'get temperature and user set temp from office module
  1866.    diningroom_busy = %00000000
  1867.    'Debug "Passed DR", CR
  1868. '----------send data from Diningroom module to pink---------------      
  1869.     serout2 pinktx,pinkbaud, ["!NB0W22:", dec  Diningroom_Setting, CLS]
  1870.     serout2 pinktx,pinkbaud, ["!NB0W21:", dec  Diningroom_Temp, CLS] 'send current temp to Pink
  1871.    timeout_bit =0  
  1872.   shiftout serdata, clock,0,[Livingroom_busy+atticunit_busy]
  1873.   shiftout serdata, clock,0,[%00000000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1874.  
  1875. pulsout latch,5
  1876.  
  1877.  
  1878.  'Sun Room
  1879.  ____________________________________________________________________
  1880. '_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X  
  1881.  
  1882. SunRoom:
  1883. pause 200
  1884. 'debug "SunRoom Error...", dec error,cr  ,10
  1885.  
  1886. shiftout serdata, clock,0,[livingroom_busy+atticunit_busy]
  1887. shiftout serdata, clock,0,[%00000001 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  1888.  
  1889. pulsout latch,5
  1890.  
  1891.  
  1892.     '----------Get Pink Data
  1893.  'Mon-Fri
  1894.  
  1895.  'if day <= 5 then
  1896.   IF sleepalarmswitch = 1 THEN
  1897. 'debug "M-F",cr
  1898.     SEROUT2 pinkTX, pinkBaud, ["!NB0R33"] ' Command To Read Sunroom Wake time
  1899.     ERROR = 33
  1900.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1901.         IF mem1 <> Nb_varH33 THEN
  1902.             Nb_varH33 = mem1
  1903.             I2cwrite EpSDA,EpScl,$a0,39,[mem1]
  1904.             'pause 5
  1905.            ' debug "W-wk hr(39)" ,cr
  1906.             endif
  1907.         IF mem2 <> Nb_varM33 THEN
  1908.             Nb_varM33 = mem2
  1909.             I2cwrite EpSDA,EpScl,$a0,40,[mem2]
  1910.             'pause 5
  1911.            ' debug "W-wk mn(40)"  ,cr
  1912.             endif
  1913.     SEROUT2 pinkTX, pinkBaud, ["!NB0R34"] ' Command To Read Sun Wake temp
  1914.     ERROR = 34
  1915.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec mem1]' Get Data With Timeout
  1916.         IF mem1 <> Nb_var34 THEN
  1917.                 Nb_var34 = mem1
  1918.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,41,[mem1]
  1919.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,141,[mem1]
  1920.                 'pause 5
  1921.                ' debug "W-wk tmp(41)" ,cr
  1922.                 endif
  1923.     SEROUT2 pinkTX, pinkBaud, ["!NB0R35"] ' Command To Read Sun Leave time
  1924.     ERROR = 35
  1925.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1926.         IF mem1 <> Nb_varH35 THEN
  1927.             Nb_varH35 = mem1
  1928.             I2cwrite EpSDA,EpScl,$a0,42,[mem1]
  1929.             'pause 5
  1930.            ' debug "W-lv hr(42)" ,cr
  1931.             endif
  1932.         IF mem2 <> Nb_varM35 THEN
  1933.             Nb_varM35 = mem2
  1934.              I2cwrite EpSDA,EpScl,$a0,43,[mem2]
  1935.              'pause 5
  1936.             ' debug "W-lv mn(43)" ,cr
  1937.             endif
  1938.     SEROUT2 pinkTX, pinkBaud, ["!NB0R36"] ' Command To Read SunRoom Leave temp
  1939.     ERROR = 36
  1940.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1941.            IF mem1 <> Nb_var36 THEN
  1942.                 Nb_var36 = mem1
  1943.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,44,[mem1]
  1944.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,142,[mem1]
  1945.                 'pause 5
  1946.                ' debug "W-lv tmp(44)",cr
  1947.                 endif
  1948.     SEROUT2 pinkTX, pinkBaud, ["!NB0R37"] ' Command To Read Sunroom Return time
  1949.     ERROR = 37
  1950.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1951.             IF mem1 <> Nb_varH37 THEN
  1952.                 Nb_varH37 = mem1
  1953.                 I2cwrite EpSDA,EpScl,$a0,45,[mem1]
  1954.                 'pause 5
  1955.                ' debug "W-rtn hr(45)" ,cr
  1956.                 endif
  1957.             IF mem2 <> Nb_varM37 THEN
  1958.                 Nb_varM37 = mem2
  1959.                 I2cwrite EpSDA,EpScl,$a0,46,[mem2]
  1960.                 'pause 5
  1961.                ' debug "W-rtn mn(46)" ,cr
  1962.                 endif
  1963.     SEROUT2 pinkTX, pinkBaud, ["!NB0R38"] ' Command To Read Sunroom Return Temp
  1964.     ERROR = 38
  1965.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1966.                IF mem1 <> Nb_var38 THEN
  1967.                 Nb_var38 = mem1
  1968.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,47,[mem1]
  1969.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,143,[mem1]
  1970.                 'pause 5
  1971.               '  debug "W-rtn tmp(47)" ,cr
  1972.                 endif
  1973.     SEROUT2 pinkTX, pinkBaud, ["!NB0R39"] ' Command To Read Sunroom Sleep time
  1974.     ERROR = 39
  1975.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  1976.             IF mem1 <> Nb_varH39 THEN
  1977.                 Nb_varH39 = mem1
  1978.                I2cwrite EpSDA,EpScl,$a0,48,[mem1]
  1979.                'pause 5
  1980.               ' debug "W-sl hr(48)" ,cr
  1981.                 endif
  1982.             IF mem2 <> Nb_varM39 THEN
  1983.                 Nb_varM39 = mem2
  1984.                 I2cwrite EpSDA,EpScl,$a0,49,[mem2]
  1985.                 'pause 5
  1986.                ' debug "W-sl mn(49)",cr
  1987.                 endif
  1988.     SEROUT2 pinkTX, pinkBaud, ["!NB0R40"] ' Command To Read SunRoom Sleep Temp
  1989.     ERROR = 40
  1990.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  1991.               IF mem1 <> Nb_var40 THEN
  1992.                 Nb_var40 = mem1
  1993.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,50,[mem1]
  1994.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,144,[mem1]
  1995.                  'pause 5
  1996.                 ' debug "W-sl tmp(50)" ,cr
  1997.                endif
  1998.      SEROUT2 pinkTX, pinkBaud, ["!NB0R32"] ' Command To Read Sunroom current setting temp
  1999.      ERROR = 32
  2000.      SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2001.          IF mem1 <> Nb_var32 THEN
  2002.             Nb_var32 = mem1
  2003.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,95,[mem1]
  2004.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,140,[mem1]
  2005.             IF sunroom_busy = %00000000 THEN GOSUB minisplitsunroom
  2006.             ' debug "Sunroom Set", cr
  2007.             ' debug "W-cnt set(95)" ,dec mem1 ,cr
  2008.         endif
  2009.       ' DEBUG "MS-SUNROOM ", HEX2 ms_sunroom , cr
  2010.                  
  2011.     IF hour = Nb_varH33  AND minute = Nb_varM33 THEN 'Wake
  2012.         sunroom_mode = 1
  2013.        IF nb_var32<> nb_var34 THEN
  2014.                  nb_var32 = Nb_var34
  2015.                 GOSUB MiniSPlitsunroom
  2016.                ' DEBUG "Ah-Ha",hex2 MS_SunRoom , cr
  2017.                ENDIF
  2018.      endif
  2019.    
  2020.     IF hour = Nb_varH35 AND minute = Nb_varM35 THEN 'leave
  2021.          sunroom_mode = 2
  2022.           IF nb_var32<> nb_var36 THEN
  2023.                  nb_var32 = Nb_var36
  2024.                 GOSUB MiniSPlitsunroom
  2025.                ' DEBUG "Ah-Ha",hex2 MS_SunRoom , cr
  2026.                ENDIF
  2027.  
  2028.    
  2029.     endif
  2030.     IF hour = Nb_varH37 AND minute = Nb_varM37 THEN  'return
  2031.         sunroom_mode = 3
  2032.         IF nb_var32<> nb_var38 THEN
  2033.                  nb_var32 = Nb_var38
  2034.                 GOSUB MiniSPlitsunroom
  2035.                ' DEBUG "Ah-Ha",hex2 MS_SunRoom , cr
  2036.                ENDIF
  2037.    
  2038.     endif
  2039.     IF hour = Nb_varH39 AND minute = Nb_varM39 THEN 'sleep
  2040.         sunroom_mode = 4
  2041.         IF nb_var32<> nb_var40 THEN
  2042.                  nb_var32 = Nb_var40
  2043.                 GOSUB MiniSPlitsunroom
  2044.                 'DEBUG "Ah-Ha",hex2 MS_SunRoom , cr
  2045.                ENDIF
  2046.     endif
  2047.    
  2048. endif
  2049.    
  2050. 'Sat&Sun
  2051.  'if day >= 6 then
  2052.   IF sleepalarmswitch = 0 THEN
  2053.        SEROUT2 pinkTX, pinkBaud, ["!NB0R63"] ' Command To Read sunroom wake time
  2054.        ERROR = 63
  2055.        SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2056.         IF mem1 <> Nb_varH63 THEN
  2057.             Nb_varH63 = mem1
  2058.             I2cwrite EpSDA,EpScl,$a0,81,[mem1]
  2059.             'pause 5
  2060.            ' debug "W-SS Wk Hr(81)" ,cr
  2061.          endif
  2062.         IF mem2 <> Nb_varM63 THEN
  2063.             Nb_varM63 = mem2
  2064.              I2cwrite EpSDA,EpScl,$a0,82,[mem2]
  2065.              'pause 5
  2066.             ' debug "W-SS Wk Mn(82)" ,cr
  2067.          endif
  2068.         SEROUT2 pinkTX, pinkBaud, ["!NB0R64"] ' Command To Read sunRoomwake Temp
  2069.         ERROR = 64
  2070.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2071.          IF mem1 <> Nb_var64 THEN
  2072.             Nb_var64 = mem1
  2073.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,83,[mem1]
  2074.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,145,[mem1]
  2075.             'pause 5
  2076.            ' debug "W-SS wk tmp(83)",cr
  2077.            endif
  2078.         SEROUT2 pinkTX, pinkBaud, ["!NB0R65"] ' Command To Read sunroom Sleep time
  2079.         ERROR = 65
  2080.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2081.          IF mem1 <> Nb_varH65 THEN
  2082.             Nb_varH65 = mem1
  2083.              I2cwrite EpSDA,EpScl,$a0,84,[mem1]
  2084.              'pause 5
  2085.             ' debug "W-SS Sl hr(84)" ,cr
  2086.            endif
  2087.          IF mem2 <> Nb_varM65 THEN
  2088.             Nb_varM65 = mem2
  2089.             I2cwrite EpSDA,EpScl,$a0,85,[mem2]
  2090.             'pause 5
  2091.            ' debug "W-SS Sl Mn(85)",cr
  2092.            endif
  2093.         SEROUT2 pinkTX, pinkBaud, ["!NB0R66"] ' Command To Read sunroom Sleep Temp
  2094.         ERROR = 66
  2095.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2096.           IF mem1 <> Nb_var66 THEN
  2097.             Nb_var66 = mem1
  2098.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,86,[mem1]
  2099.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,146,[mem1]
  2100.             'pause 5
  2101.             'debug "W-SS Sl tmp(86)" ,cr
  2102.            Endif
  2103.         SEROUT2 pinkTX, pinkBaud, ["!NB0R32"] ' Command To Read sunRoom current setting temp
  2104.         ERROR = 32
  2105.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2106.          IF mem1 <> Nb_var32 THEN
  2107.             Nb_var32 = mem1
  2108.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,95,[mem1]
  2109.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,140,[mem1]
  2110.             IF sunroom_busy = %00000000 THEN GOSUB minisplitsunroom
  2111.             ' debug "sunroom set",cr
  2112.              'write 2 ,mem1
  2113.             ' debug "W-cnt set(95)" ,hex2 mem1,cr
  2114.         endif
  2115.        ' DEBUG "MS-SunRoom ", HEX2 ms_sunroom , cr
  2116.        
  2117.                      
  2118.             IF hour = Nb_varH63  AND minute = Nb_varM63 THEN 'Wake
  2119.                 Sunroom_mode = 1
  2120.                  IF nb_var32<> nb_var64 THEN
  2121.                  nb_var32 = Nb_var64
  2122.                 GOSUB MiniSPlitsunroom
  2123.                ' DEBUG "Ah-Ha",hex2 MS_SunRoom , cr
  2124.                ENDIF
  2125.             ENDIF
  2126.  
  2127.              endif
  2128.            
  2129.             IF hour = Nb_varH65 AND minute = Nb_varM65 THEN 'sleep
  2130.              Sunroom_mode = 4
  2131.              IF nb_var32<> nb_var66 THEN
  2132.                  nb_var32 = Nb_var66
  2133.                 GOSUB MiniSPlitsunroom
  2134.                 'DEBUG "Ah-Ha",hex2 MS_sunroom , cr
  2135.                ENDIF
  2136.             ENDIF
  2137.  'sleep temp set
  2138.              
  2139.                
  2140. '----------set x-bee channel------------
  2141.  SunRoom_set:
  2142.      
  2143.    
  2144.      pause 50
  2145.     serout2 TX,baud,["+++"]
  2146.     pause 1000
  2147.     serout2 TX,baud,["ATMY 4",CR] 'address module "4" is Sunroom
  2148.     serout2 TX,baud,["ATDL 4",CR]
  2149.     serout2 TX,baud,["ATCN",CR]
  2150.      pause Busy_Bit
  2151.     SERIN2 RX,Baud,250,sunroom_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  2152.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr ,10
  2153.      pause 18000
  2154.     GOTO timeout7  'skip com with sunroom for now
  2155. sunroom_set1:
  2156. '-----------send data to Sunroom module------------------------
  2157.      serout2 TX,Baud, [" Sunroom "]
  2158.      pause 50
  2159.            
  2160.     serout2 TX,Baud, [":",Nb_var32,hex2 hour,hex2 minute, sunroom_mode,day,backlight_bit,Nb_var93,OutdoorRH, OutdoorTF] 'send pink temp value to office module
  2161. '----------Get data from Sunroom module--------------------
  2162.       'pause 50
  2163.    ' debug "Sunroom ", dec nb_var93, cr
  2164.    SERIN2 RX,Baud,PauseBit,timeout7,[Sunroom_Temp,Sunroom_Setting] 'get temperature and user set temp from office module
  2165.  sunroom_busy = %00000000
  2166. '----------send data from Sunroom module to pink---------------      
  2167.     serout2 pinktx,pinkbaud, ["!NB0W32:", dec  Sunroom_Setting, CLS]
  2168.     serout2 pinktx,pinkbaud, ["!NB0W31:", dec  Sunroom_Temp, CLS] 'send current temp to Pink
  2169.    timeout_bit =0
  2170.    shiftout serdata, clock,0,[livingroom_busy +atticunit_busy]
  2171.    shiftout serdata, clock,0,[%00000000 + office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  2172.    
  2173. pulsout latch,5
  2174.  
  2175.  
  2176.  
  2177.   'LivingRoom
  2178. ' ____________________________________________________________________
  2179. '_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X_X  
  2180.   'livingroom      
  2181.  'debug "here1",cr      
  2182.  
  2183. LivingRoom:
  2184. Pause 200
  2185. 'debug "LivingRoom Error...", dec error,cr  ,10
  2186. shiftout serdata, clock,0,[%01000000+ livingroom_busy+atticunit_busy]
  2187. shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy ]
  2188.  
  2189. pulsout latch,5
  2190.  
  2191.  
  2192.     '----------Get Pink Data
  2193.  'Mon-Fri
  2194.  'debug dec   sleepalarmswitch, cr
  2195.   IF sleepalarmswitch = 1 THEN
  2196.  'if day <= 5 then
  2197. 'debug "M-F",cr
  2198.     SEROUT2 pinkTX, pinkBaud, ["!NB0R43"] ' Command To Read Livingroom Wake time
  2199.     ERROR = 43
  2200.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2201.         IF mem1 <> Nb_varH43 THEN
  2202.             Nb_varH43 = mem1
  2203.             I2cwrite EpSDA,EpScl,$a0,51,[mem1]
  2204.             'pause 5
  2205.            ' debug "W-wk hr(51)" ,cr
  2206.             endif
  2207.         IF mem2 <> Nb_varM43 THEN
  2208.             Nb_varM43 = mem2
  2209.             I2cwrite EpSDA,EpScl,$a0,52,[mem2]
  2210.             'pause 5
  2211.            ' debug "W-wk mn(52)"  ,cr
  2212.             endif
  2213.          
  2214.     SEROUT2 pinkTX, pinkBaud, ["!NB0R44"] ' Command To Read living Wake temp
  2215.     ERROR = 44
  2216.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec mem1]' Get Data With Timeout
  2217.         IF mem1 <> Nb_var44 THEN
  2218.                 Nb_var44 = mem1
  2219.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,53,[mem1]
  2220.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,148,[mem1]
  2221.                 'pause 5
  2222.                ' debug "W-wk tmp(41)" ,cr
  2223.              
  2224.                endif
  2225.                  
  2226.     SEROUT2 pinkTX, pinkBaud, ["!NB0R45"] ' Command To Read living Leave time
  2227.     ERROR = 45
  2228.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2229.         IF mem1 <> Nb_varH45 THEN
  2230.             Nb_varH45 = mem1
  2231.             I2cwrite EpSDA,EpScl,$a0,54,[mem1]
  2232.             'pause 5
  2233.            ' debug "W-lv hr(54)" ,cr
  2234.             endif
  2235.         IF mem2 <> Nb_varM45 THEN
  2236.             Nb_varM45 = mem2
  2237.              I2cwrite EpSDA,EpScl,$a0,55,[mem2]
  2238.              'pause 5
  2239.             ' debug "W-lv mn(55)" ,cr
  2240.             endif
  2241.     SEROUT2 pinkTX, pinkBaud, ["!NB0R46"] ' Command To Read livingRoom Leave temp
  2242.     ERROR = 46
  2243.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2244.            IF mem1 <> Nb_var46 THEN
  2245.                 Nb_var46 = mem1
  2246.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,56,[mem1]
  2247.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,149,[mem1]
  2248.                 'pause 5
  2249.                ' debug "W-lv tmp(56)",cr
  2250.                 endif
  2251.     SEROUT2 pinkTX, pinkBaud, ["!NB0R47"] ' Command To Read Livingroom Return time
  2252.     ERROR = 47
  2253.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2254.             IF mem1 <> Nb_varH47 THEN
  2255.                 Nb_varH47 = mem1
  2256.                 I2cwrite EpSDA,EpScl,$a0,57,[mem1]
  2257.                 'pause 5
  2258.                ' debug "W-rtn hr(57)" ,cr
  2259.                 endif
  2260.             IF mem2 <> Nb_varM47 THEN
  2261.                 Nb_varM47 = mem2
  2262.                 I2cwrite EpSDA,EpScl,$a0,58,[mem2]
  2263.                 'pause 5
  2264.                ' debug "W-rtn mn(58)" ,cr
  2265.                 endif
  2266.     SEROUT2 pinkTX, pinkBaud, ["!NB0R48"] ' Command To Read Livingroom Return Temp
  2267.     ERROR = 48
  2268.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2269.                IF mem1 <> Nb_var48 THEN
  2270.                 Nb_var48 = mem1
  2271.                 IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,59,[mem1]
  2272.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,150,[mem1]
  2273.                 'pause 5
  2274.               '  debug "W-rtn tmp(59)" ,cr
  2275.                 endif
  2276.                
  2277.     SEROUT2 pinkTX, pinkBaud, ["!NB0R49"] ' Command To Read livingroom Sleep time
  2278.     ERROR = 49
  2279.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2280.             IF mem1 <> Nb_varH49 THEN
  2281.                 Nb_varH49 = mem1
  2282.                I2cwrite EpSDA,EpScl,$a0,60,[mem1]
  2283.                'pause 5
  2284.               ' debug "W-sl hr(60)" ,cr
  2285.                 endif
  2286.             IF mem2 <> Nb_varM49 THEN
  2287.                 Nb_varM49 = mem2
  2288.                 I2cwrite EpSDA,EpScl,$a0,61,[mem2]
  2289.                 'pause 5
  2290.                ' debug "W-sl mn(61)",cr
  2291.                 endif
  2292.     SEROUT2 pinkTX, pinkBaud, ["!NB0R50"] ' Command To Read LivingRoom Sleep Temp
  2293.     ERROR = 50
  2294.     SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2295.               IF mem1 <> Nb_var50 THEN
  2296.                 Nb_var50 = mem1
  2297.                  IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,62,[mem1]
  2298.                 IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,151,[mem1]
  2299.                  ''pause 5
  2300.                 ' debug "W-sl tmp(62)" ,cr
  2301.                endif
  2302.      
  2303.      SEROUT2 pinkTX, pinkBaud, ["!NB0R42"] ' Command To Read Livingroom current setting temp
  2304.      ERROR = 42
  2305.      SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2306.          IF mem1 <> Nb_var42 THEN
  2307.             Nb_var42 = mem1
  2308.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,96,[mem1]
  2309.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,147,[mem1]
  2310.             IF livingroom_busy = %00000000 THEN GOSUB minisplitlivingroom
  2311.             ' debug "Livingroom Set", cr
  2312.             ' debug "W-cnt set(96)" ,dec mem1 ,cr
  2313.         endif
  2314.       ' DEBUG "MS-LIVINGROOM ", HEX2 ms_sunroom , cr
  2315.                  
  2316.     IF hour = Nb_varH43  AND minute = Nb_varM43 THEN 'Wake
  2317.         livingroom_mode = 1
  2318.        IF nb_var42<> nb_var44 THEN
  2319.                  nb_var42 = Nb_var44
  2320.                 GOSUB MiniSPlitLivingroom
  2321.                ' DEBUG "Ah-Ha",hex2 MS_LivingRoom , cr
  2322.                ENDIF
  2323.      endif
  2324.    
  2325.     IF hour = Nb_varH45 AND minute = Nb_varM45 THEN 'leave
  2326.          livingroom_mode = 2
  2327.           IF nb_var42<> nb_var46 THEN
  2328.                  nb_var42 = Nb_var46
  2329.                 GOSUB MiniSPlitlivingroom
  2330.                ' DEBUG "Ah-Ha",hex2 MS_LivnigRoom , cr
  2331.                ENDIF
  2332.          ' debug "here",cr
  2333.    
  2334.     endif
  2335.     IF hour = Nb_varH47 AND minute = Nb_varM47 THEN  'return
  2336.         livingroom_mode = 3
  2337.         IF nb_var42<> nb_var48 THEN
  2338.                  nb_var42 = Nb_var48
  2339.                 GOSUB MiniSPlitlivingroom
  2340.                ' DEBUG "Ah-Ha",hex2 MS_livingRoom , cr
  2341.                ENDIF
  2342.    
  2343.     endif
  2344.     IF hour = Nb_varH49 AND minute = Nb_varM49 THEN 'sleep
  2345.         livingroom_mode = 4
  2346.         IF nb_var42<> nb_var50 THEN
  2347.                  nb_var42 = Nb_var50
  2348.                 GOSUB MiniSPlitlivingroom
  2349.                 'DEBUG "Ah-Ha",hex2 MS_livingRoom , cr
  2350.                ENDIF
  2351.     endif
  2352.    
  2353. endif
  2354.  
  2355. 'Sat&Sun
  2356.  'if day >= 6 then
  2357.  IF sleepalarmswitch = 0 THEN
  2358.        SEROUT2 pinkTX, pinkBaud, ["!NB0R67"] ' Command To Read livingroom wake time
  2359.        ERROR = 67
  2360.        SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2361.         IF mem1 <> Nb_varH67 THEN
  2362.             Nb_varH67 = mem1
  2363.             I2cwrite EpSDA,EpScl,$a0,87,[mem1]
  2364.             ''pause 5
  2365.            ' debug "W-SS Wk Hr(87)" ,cr
  2366.          endif
  2367.         IF mem2 <> Nb_varM67 THEN
  2368.             Nb_varM67 = mem2
  2369.              I2cwrite EpSDA,EpScl,$a0,88,[mem2]
  2370.             ' 'pause 5
  2371.             ' debug "W-SS Wk Mn(88)" ,cr
  2372.          endif
  2373.         SEROUT2 pinkTX, pinkBaud, ["!NB0R68"] ' Command To Read livingRoomwake Temp
  2374.         ERROR = 68
  2375.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2376.          IF mem1 <> Nb_var68 THEN
  2377.             Nb_var68 = mem1
  2378.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,89,[mem1]
  2379.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,152,[mem1]
  2380.             ''pause 5
  2381.            ' debug "W-SS wk tmp(89)",cr
  2382.            endif
  2383.         SEROUT2 pinkTX, pinkBaud, ["!NB0R69"] ' Command To Read livingroom Sleep time
  2384.         ERROR = 69
  2385.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[hex2 mem1,skip 1,hex2 mem2]' Get Data With Timeout
  2386.          IF mem1 <> Nb_varH69 THEN
  2387.             Nb_varH69 = mem1
  2388.              I2cwrite EpSDA,EpScl,$a0,90,[mem1]
  2389.             ' 'pause 5
  2390.             ' debug "W-SS Sl hr(90)" ,cr
  2391.            endif
  2392.          IF mem2 <> Nb_varM69 THEN
  2393.             Nb_varM69 = mem2
  2394.             I2cwrite EpSDA,EpScl,$a0,91,[mem2]
  2395.             ''pause 5
  2396.            ' debug "W-SS Sl Mn(91)",cr
  2397.            endif
  2398.         SEROUT2 pinkTX, pinkBaud, ["!NB0R70"] ' Command To Read livingroom Sleep Temp
  2399.         ERROR = 70
  2400.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2401.           IF mem1 <> Nb_var70 THEN
  2402.             Nb_var70 = mem1
  2403.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,92,[mem1]
  2404.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,153,[mem1]
  2405.             ''pause 5
  2406.             'debug "W-SS Sl tmp(92)" ,cr
  2407.            Endif
  2408.         SEROUT2 pinkTX, pinkBaud, ["!NB0R42"] ' Command To Read livingRoom current setting temp
  2409.         ERROR = 42
  2410.         SERIN2  pinkRX, pinkBaud,PauseBit,timeout2,[dec2 mem1]' Get Data With Timeout
  2411.          IF mem1 <> Nb_var42 THEN
  2412.             Nb_var42 = mem1
  2413.             IF Nb_var93 = 0 THEN I2cwrite EpSDA,EpScl,$a0,96,[mem1]
  2414.             IF Nb_var93 = 1 THEN I2cwrite EpSDA,EpScl,$a0,147,[mem1]
  2415.             IF livingroom_busy = %00000000 THEN GOSUB minisplitlivingroom
  2416.             ' debug "livingroom set",cr
  2417.              'write 2 ,mem1
  2418.             ' debug "W-cnt set(96)" ,hex2 mem1,cr
  2419.         endif
  2420.        ' DEBUG "MS-LivingRoom ", HEX2 ms_sunroom , cr
  2421.        
  2422.                      
  2423.             IF hour = Nb_varH67  AND minute = Nb_varM67 THEN 'Wake
  2424.                 livingroom_mode = 1
  2425.                  IF nb_var42<> nb_var68 THEN
  2426.                  nb_var42 = Nb_var68
  2427.                 GOSUB MiniSPlitlivingroom
  2428.                ' DEBUG "Ah-Ha",hex2 MS_LivingRoom , cr
  2429.                ENDIF
  2430.             ENDIF
  2431.  
  2432.              endif
  2433.            
  2434.             IF hour = Nb_varH69 AND minute = Nb_varM69 THEN 'sleep
  2435.              livingroom_mode = 4
  2436.              IF nb_var42<> nb_var70 THEN
  2437.                  nb_var42 = Nb_var70
  2438.                 GOSUB MiniSPlitlivingroom
  2439.                 'DEBUG "Ah-Ha",hex2 MS_livingroom , cr
  2440.                ENDIF
  2441.             ENDIF
  2442.  'sleep temp set
  2443.              
  2444.                
  2445. '----------set x-bee channel------------
  2446.  LivingRoom_set:
  2447.   ' debug"here",cr  
  2448.    
  2449.      'pause 50
  2450.     serout2 TX,baud,["+++"]
  2451.     pause 1000
  2452.     serout2 TX,baud,["ATMY 11",CR] 'address module "6" is livingroom
  2453.     serout2 TX,baud,["ATDL 11",CR]
  2454.     serout2 TX,baud,["ATCN",CR]
  2455.      pause Busy_Bit
  2456.      SERIN2 RX,Baud,250,livingroom_set1 ,[mem1,mem2,mem3] 'listen to the line to check for bootloader activity
  2457.      debug "Bootloader programming in Progress",dec mem1,dec mem2,dec mem3, cr ,10
  2458.      pause 18000
  2459.     GOTO timeout8  'skip com with livingroom for now
  2460. Livingroom_set1:
  2461. '-----------send data to Livingroom module------------------------
  2462.      serout2 TX,Baud, [" Livingroom "]
  2463.      pause 50  
  2464.     serout2 TX,Baud, [":",Nb_var42,hex2 hour,hex2 minute, livingroom_mode,day,backlight_bit,Nb_var93,OutdoorRH, OutdoorTF] 'send pink temp value to office module
  2465. '----------Get data from Livingroom module--------------------
  2466.       pause 50
  2467.     'debug "livingroom ", dec nb_var93, cr
  2468.     SERIN2 RX,Baud,PauseBit,timeout8,[Livingroom_Temp,Livingroom_Setting,NB_var72] 'get temperature and user set temp from office module
  2469.  livingroom_busy = %00000000
  2470.    
  2471.     serout2 pinktx,pinkbaud,["!NB0W72:",dec nb_var72,CLS]
  2472. '-----------Put NB_var72 in PINK (Humidity reading from living room unit)
  2473.     serout2 pinktx,pinkbaud,["!NB0W72:",dec nb_var72,CLS]
  2474. '----------send data from LIvingroom module to pink---------------      
  2475.     serout2 pinktx,pinkbaud, ["!NB0W42:", dec  Livingroom_Setting, CLS]
  2476.     serout2 pinktx,pinkbaud, ["!NB0W41:", dec  Livingroom_Temp, CLS] 'send current temp to Pink
  2477.    timeout_bit =0  
  2478.    shiftout serdata, clock,0,[%00000000+ livingroom_busy+atticunit_busy]
  2479.     shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  2480.      pulsout latch,5
  2481.  ' SAS_checksum =  SleepAlarmSwitch
  2482.   'gosub Attic_outdoor_unit  
  2483.  powerout = 1 ' you made it through the program without timing out,
  2484.    'the pic and web page are talking : if you timed out see timeout and timeout1  
  2485.      
  2486. 'goto main
  2487.  
  2488.  
  2489.  
  2490.  
  2491.    GOTO main
  2492.  timeout:
  2493.  debug "Pink Busy (timeout)" ,cr  ,10
  2494.  Debug "Error ", dec ERROR, cr,10
  2495.  'debug hex2 hour,":",hex2 minute,cr ,cr
  2496.  'I2cread Epsda,Epscl,$A0,108,[nb_var93]
  2497.   ' debug "Epprom", dec nb_var93, cr
  2498.   pause 1000
  2499.   GOTO setup
  2500.  timeout1:
  2501.  Pause 500  
  2502.    ' SleepAlarmSwitch =  SAS_checksum
  2503.   Debug "Error ", dec ERROR, cr,10
  2504.  
  2505.  timeout_bit = timeout_bit + 1
  2506.  
  2507.  IF timeout_bit =5 THEN  
  2508.    debug "Web interrupt Office (Timeout 1) " ,hex2 hour,":",hex2 minute,cr ,10
  2509.    
  2510.   timeout_bit =0
  2511.   debug "Rebooting",cr ,10
  2512. @ RESET
  2513.        
  2514.   ' Debug bin nb_var93,",",bin nb_var86,",",bin nb_var88,",",bin nb_var90,",",bin nb_var92,",",bin nb_var71 ,cr
  2515.    'goto Setup
  2516.   endif
  2517.   pause 500
  2518.   SERIN2  pinkRX, pinkBaud,PauseBit,main,[ mem1,mem2,mem3,mem1,mem2,mem3]
  2519.     debug "PINK buffer had stuff",cr,10
  2520.      timeout_bit =0
  2521.   GOTO main
  2522. timeout93:
  2523. debug "Radio-Button Read error ", cr,10
  2524. Debug "Error ", dec ERROR, cr,10
  2525. timeout_bit = timeout_bit + 1
  2526.  
  2527.  IF timeout_bit =15 THEN  
  2528.   timeout_bit =0
  2529.   debug "Rebooting",cr ,10
  2530. @ RESET
  2531.        
  2532.  
  2533.   endif
  2534.   GOTO main
  2535.  
  2536.  
  2537.  
  2538.  
  2539. timeout2:                                                  
  2540.  
  2541.       'SleepAlarmSwitch =  SAS_checksum
  2542.  
  2543.  
  2544.      debug "Web interrupt " ,hex2 hour,":",hex2 minute,cr,10
  2545.      Debug "Error ", dec ERROR, cr,10
  2546.     SERIN2  pinkRX, pinkBaud,PauseBit,main,[ mem1, mem2,mem3]
  2547.     debug "PINK buffer had stuff",cr,10
  2548.    GOTO setup
  2549.  
  2550.  
  2551.  
  2552. timeout3:
  2553. ' debug "Office Busy" ,cr
  2554.  shiftout serdata, clock,0,[Livingroom_busy]
  2555.  shiftout serdata, clock,0,[%10000000]
  2556.  pulsout latch,5
  2557.    office_busy = %10000000
  2558.  'debug hex2 hour,":",hex2 minute,cr,cr  
  2559.   GOTO bedroom
  2560.  
  2561. timeout5:
  2562.  ' debug "Bedroom Busy",cr
  2563.   shiftout serdata, clock,0,[Livingroom_busy]
  2564.   shiftout serdata, clock,0,[%00100000]
  2565.  pulsout latch,5
  2566.   bedroom_busy = %00100000
  2567.   GOTO diningroom  
  2568. timeout6:
  2569.  
  2570.  ' debug "DR Busy",cr
  2571.   shiftout serdata, clock,0,[Livingroom_busy]
  2572.   shiftout serdata, clock,0,[%00001000]
  2573.  pulsout latch,5
  2574.   diningroom_busy = %00001000
  2575.   GOTO  sunroom
  2576. timeout7:
  2577.  ' debug "Sunroom Busy", Cr
  2578.   shiftout serdata, clock,0,[Livingroom_busy]
  2579.   shiftout serdata, clock,0,[%00000010]
  2580.  pulsout latch,5
  2581.    sunroom_busy = %00000010
  2582.   GOTO livingroom
  2583. timeout8:
  2584.   'debug "Livingroom Busy", Cr
  2585.   shiftout serdata, clock,0,[%10000000]
  2586.   shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  2587.  pulsout latch,5
  2588.    Livingroom_busy = %10000000
  2589.   GOTO attic_outdoor_unit    
  2590.  timeout9:
  2591.  
  2592.   shiftout serdata, clock,0,[%00100000]
  2593.   shiftout serdata, clock,0,[ office_busy + bedroom_busy + diningroom_Busy + Sunroom_busy]
  2594.  pulsout latch,5
  2595.    atticUnit_busy = %00100000
  2596.   GOTO main      
  2597. Get_Time:
  2598.    I2CWRITE SDA,SCL, I2c_WR, [0]       'get time
  2599.     I2CREAD SDA,SCL, I2C_RD, [Second,Minute,Hour,Day,Date,Month,Year]
  2600.    ' debug  hex2 hour,":",hex2 minute,cr
  2601.    ' debug  hex2 month,"/",hex2 date,"/",hex2 year,cr
  2602.    RETURN
  2603.  MiniSPlitOffice:
  2604.  
  2605.  IF Nb_var86 =0  THEN  RETURN 'unit on/off
  2606. pause 1000  
  2607.  
  2608.   IF Nb_var93 = 0 THEN    'AC
  2609.        MS_Office = Nb_var02
  2610.        
  2611.             IF MS_Office > 78 THEN MS_Office =78
  2612.             IF  MS_Office =< 72 THEN  MS_Office = 72
  2613.             MS_Office = MS_Office-72
  2614.        
  2615. LOOKUP  MS_Office,[$3A,$3A,$3B,$3B,$3C,$3C,$3D,$3D], result
  2616.             endif        
  2617. IF Nb_var93 = 1 THEN    'heat
  2618.         MS_Office = Nb_var02
  2619.        
  2620.             IF MS_Office > 70 THEN MS_Office =70
  2621.             IF  MS_Office =< 60 THEN  MS_Office = 60
  2622.             MS_Office = MS_Office-60
  2623.          
  2624. LOOKUP  MS_Office,[$33,$33,$34,$34,$35,$35,$36,$36,$37,$37,$38,$38], result
  2625.             endif          
  2626.   serout2 PortB.2,Insteon, [$02,$62,$00,$00,result,$CF,$11,$00]
  2627.   'pause 5000
  2628.   debug "Office Set at ", hex2 hour,":",hex2 minute," To: ",dec Nb_var02,"º (",hex2 result,")", cr ,10        
  2629. RETURN
  2630.  
  2631. minisplitbedroom:
  2632.  IF Nb_var88 =0  THEN RETURN
  2633. 'SEROUT2 pinkTX, pinkBaud, ["!NB0R93"] ' Command To Read  minisplit radio button
  2634.    ' SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec Nb_var93]    
  2635. IF Nb_var93 = 0 THEN    'AC
  2636.         MS_Bedroom = Nb_var12
  2637.        
  2638.             IF MS_Bedroom > 78 THEN MS_Bedroom =78
  2639.             IF MS_Bedroom =< 72 THEN  MS_Bedroom = 72
  2640.             MS_Bedroom = MS_Bedroom-72
  2641.            'debug dec MS_Bedroom,cr
  2642. LOOKUP  MS_Bedroom,[$45,$45,$46,$46,$47,$47,$48,$48], result
  2643.             endif        
  2644. IF Nb_var93 = 1 THEN    'heat
  2645.         MS_Bedroom = Nb_var12
  2646.        
  2647.             IF MS_Bedroom > 70 THEN MS_Bedroom =70
  2648.             IF MS_Bedroom =< 60 THEN MS_Bedroom = 60
  2649.             MS_Bedroom = MS_Bedroom-60
  2650.            'debug dec MS_Bedroom,cr
  2651. LOOKUP  MS_Bedroom,[$3E,$3E,$3F,$3F,$40,$40,$41,$41,$42,$42,$43,$43], result
  2652.             endif          
  2653.   serout2 PortB.2,Insteon, [$02,$62,$00,$00,result,$CF,$11,$00]
  2654.  ' pause 5000
  2655.   debug "Bed Set at ", hex2 hour,":",hex2 minute," To: ",dec Nb_var12,"º (",hex2 result,")", cr ,10          
  2656. RETURN
  2657.  
  2658. minisplitdiningroom:
  2659. IF Nb_var90 =0  THEN RETURN
  2660. ' SEROUT2 pinkTX, pinkBaud, ["!NB0R93"] ' Command To Read  minisplit radio button
  2661.    ' SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec Nb_var93]
  2662. IF Nb_var93 = 0 THEN    'AC
  2663.         MS_diningroom = Nb_var22
  2664.        
  2665.             IF MS_diningroom > 78 THEN MS_diningroom =78
  2666.             IF MS_diningroom =< 72 THEN MS_diningroom = 72
  2667.             MS_diningroom = MS_diningroom-72
  2668.            
  2669. LOOKUP  MS_diningroom,[$27,$27,$26,$26,$25,$25,$24,$24], result
  2670.             endif        
  2671. IF Nb_var93 = 1 THEN    'heat
  2672.         MS_diningroom = Nb_var22
  2673.        
  2674.             IF MS_diningroom > 70 THEN MS_diningroom = 70
  2675.             IF MS_diningroom =< 60 THEN MS_diningroom = 60
  2676.            MS_diningroom = MS_diningroom-60
  2677.            'debug dec MS_diningroom,cr
  2678. LOOKUP  MS_diningroom,[$1D,$1D,$1E,$1E,$1F,$1F,$20,$20,$21,$21,$22,$22],result
  2679.             endif          
  2680.    serout2 PortB.2,Insteon, [$02,$62,$00,$00,result,$CF,$11,$00]
  2681.    'pause 5000
  2682.    debug "Dining set at ", hex2 hour,":",hex2 minute," To: ",dec Nb_var22,"º (",hex2 result,")", cr,10        
  2683. RETURN
  2684.  
  2685. MiniSplitSunRoom:
  2686. IF Nb_var92 =0  THEN RETURN
  2687.  ' SEROUT2 pinkTX, pinkBaud, ["!NB0R93"] ' Command To Read  minisplit radio button
  2688.   '  SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec Nb_var93]
  2689.   IF Nb_var93 = 0 THEN    'AC
  2690.         MS_SunRoom  = Nb_var32
  2691.        
  2692.             IF MS_SunRoom > 78 THEN MS_SunRoom =78
  2693.             IF MS_SunRoom =< 72 THEN MS_SunRoom = 72
  2694.             MS_SunRoom = MS_SunRoom-72
  2695.            
  2696. LOOKUP  MS_SunRoom,[$2B,$2B,$2A,$2A,$29,$29,$28,$28], result
  2697.             endif        
  2698. IF Nb_var93 = 1 THEN    'heat
  2699.         MS_SunRoom = Nb_var32
  2700.        
  2701.             IF MS_SunRoom > 70 THEN MS_SunRoom = 70
  2702.             IF MS_SunRoom =< 60 THEN MS_SunRoom = 60
  2703.            MS_SunRoom = MS_SunRoom-60
  2704.            
  2705. LOOKUP  MS_SunRoom,[$32,$32,$31,$31,$30,$30,$2F,$2F,$2E,$2E,$2D,$2D], result
  2706.             endif
  2707.      serout2 PortB.2,Insteon, [$02,$62,$00,$00,result,$CF,$11,$00]
  2708.     ' pause 5000                
  2709.      debug "Sun set at ",  hex2 hour,":",hex2 minute," To: ",dec Nb_var32,"º (",hex2 result,")", cr ,10
  2710.              
  2711. RETURN
  2712.   MiniSplitlivingRoom:
  2713. IF Nb_var71 =0  THEN RETURN
  2714.   'SEROUT2 pinkTX, pinkBaud, ["!NB0R93"] ' Command To Read  minisplit radio button
  2715.    ' SERIN2  pinkRX, pinkBaud,PauseBit,timeout1,[dec Nb_var93]
  2716.   IF Nb_var93 = 0 THEN    'AC
  2717.         MS_LivingRoom  = Nb_var42
  2718.        
  2719.             IF MS_LivingRoom > 78 THEN MS_LivingRoom =78
  2720.             IF MS_LivingRoom =< 72 THEN MS_LivingRoom = 72
  2721.             MS_LivingRoom = MS_LivingRoom-72
  2722.            
  2723. LOOKUP  MS_LivingRoom,[$12,$12,$13,$13,$14,$14,$49,$49], result
  2724.             endif        
  2725. IF Nb_var93 = 1 THEN    'heat
  2726.         MS_LivingRoom = Nb_var42
  2727.        
  2728.             IF MS_LivingRoom > 70 THEN MS_LivingRoom = 70
  2729.             IF MS_LivingRoom =< 60 THEN MS_LivingRoom = 60
  2730.            MS_LivingRoom = MS_LivingRoom-60
  2731.            
  2732. LOOKUP  MS_LivingRoom,[$1B,$1B,$1A,$1A,$19,$19,$18,$18,$17,$17,$16,$16], result
  2733.             endif
  2734.      serout2 PortB.2,Insteon, [$02,$62,$00,$00,result,$CF,$11,$00]  
  2735.      'pause 5000                
  2736.      debug "Living set at ",  hex2 hour,":",hex2 minute," To: ",dec Nb_var42,"º (",hex2 result,")", cr,10
  2737.        
  2738.  
  2739.   ' Set MESSAGE CONTENT
  2740.   'SEROUT2 pinkTX, pinkBaud, ["!NB0WEC:Livingroom set at ",  hex2 hour,":",hex2 minute," To: ",dec Nb_var42," (",hex2 result,")", CLS]        
  2741.   'SEROUT2 pinkTX, pinkBaud, ["!NB0SM"]           ' Command To Send E-Mail
  2742.  
  2743.  
  2744. RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement