C-BUS and Paradox Alarm Panel

Discussion in 'General Discussion' started by arthurk, Jun 4, 2008.

  1. arthurk

    arthurk

    Joined:
    Oct 7, 2006
    Messages:
    23
    Likes Received:
    0
    Hi all,

    I was wondering if anyone had any experience with the Paradox alarm panel and CBUS integration. After talking to Security Merchants they are recommending the Paradox panel as an alternative to the IR Access 4000 panel. I guess the push also has to do with the fact that they wont be selling IR after August.

    Reading the brochures it all looks fine but wanted to hear first hand experience on the two systems.

    Regards
    Arthur
     
    arthurk, Jun 4, 2008
    #1
  2. arthurk

    znelbok

    Joined:
    Aug 3, 2004
    Messages:
    1,151
    Likes Received:
    17
    I have no experience with the Paradox, but there is also the Ness M1 Gold with a C-bus interface as an alternate option - just in case you are not aware of it.

    Mick
     
    znelbok, Jun 5, 2008
    #2
  3. arthurk

    rhamer

    Joined:
    Aug 3, 2004
    Messages:
    673
    Likes Received:
    3
    Location:
    Melbourne, Australia
    That's exactly the reason, I would suggest looking carefully at each and deciding for yourself which one suits your needs best, rather than have them give you biased advice.

    Cheers

    Rohan
     
    rhamer, Jun 5, 2008
    #3
  4. arthurk

    arthurk

    Joined:
    Oct 7, 2006
    Messages:
    23
    Likes Received:
    0
    Mick / Rohan,

    Yes I have heard about the NESS system. I havent looked into it or how good its Access Control functionality is ie door and lift control is. The main reason for looking into the Concept / Access 4000 was for its access control. The Paradox seems to have the ability as well. I sent one of my guys to the intro the other morning and it looked good but wanted to know more about it from users in the field.

    The price point between the two units is approx $2500-$3000 in the Paradox favour which is amazing. This unit is going into a home not a commercial environment that the IR is really targeted for.

    Regards
    Arthur
     
    arthurk, Jun 5, 2008
    #4
  5. arthurk

    paulw11

    Joined:
    Dec 4, 2006
    Messages:
    93
    Likes Received:
    0
    Location:
    Blue Mountains, NSW, Australia
    Hi Arthur,

    While the Ness M1 can provide access control that isn't really its strength. You can connect a standard reader to each keypad in the system and you can also add 101-246 access control modules to support additional readers without keypads.

    You can have up to 208 relays so there is plenty of scope for controlling door strikes and lift security, but you have to create the access control logic yourself using the M1's "rules" facility. This may be acceptable for a home environment - it depends upon your needs.

    The M1 has very good C-Bus integration. It has a two-way interface that connects directly to C-Bus. You can control lighting GAs 1-255 and you can also trigger actions on the M1 based on GA changes - for example a C-Bus "goodnight" button could trigger a rule to arm the M1 in "stay" or "night" mode.

    From what I can read about the Paradox Digiplex integration with C-Bus it is only one way - using rules or logic on the Digiplex you can send commands out of a "printer interface" (I assume that this is a serial port) that is connected to a PCI. It doesn't seem that you can trigger events on the Digiplex based on the state of C-Bus GAs.

    Paul
     
    paulw11, Jun 6, 2008
    #5
  6. arthurk

    Rayson Wiggill

    Joined:
    Mar 24, 2011
    Messages:
    9
    Likes Received:
    0
    Location:
    Durban
    Paradox intergration

    I have been using the Printer module for some time now and it works quite well. it has 30 out put programmable outputs to C-Bus and 16 programmable inputs.
    I have mainly used it for Panic button type stuff ie: trigger all the lights on if panic is pressed or arm/disarm type stuff.

    I have found a new option in the Paradox firmware for the printer module to send key pad type messages supporting up to 80 zones for status and all the usual arm/disarm, panic, ready/not ready ... type messages. I have not found out how to set up the C-Bus side of things in PICED or Toolkit for using these messages?
     
    Rayson Wiggill, Oct 29, 2012
    #6
  7. arthurk

    mdooher

    Joined:
    Jul 18, 2009
    Messages:
    24
    Likes Received:
    0
    Location:
    Dunedin NZ
    I too have been using the printer module for C-bus interface, there are two ways to use it and to be honest you need to use a mixture of both.

    One way is to set up the zones and PGMs (inputs and outputs) but mostly you do this where you are trying to get the security system to respond to c-bus messages.

    The other thing to know is that the module continuously reports the status of the alarm system by sending c-bus messages whenever anything changes (zones open/close, armed/disarmed etc) these messages are picked up using the inbuilt system I/O functions of c-bus.

    Note however that the printer module doesn’t know all of the I/O messages. For example it can tell you when the system is armed but not if it is in stay or away mode. This is where you need to go the extra step and set up the “fake” PGM outputs. (Not impossible but a little annoying and the logic does drive you a bit bonkers)

    Another thing to note is you will need a dedicated RS232 PC interface module.

    Lastly If you do go the paradox way look at their “Imperial” series (DIN rail mount and finally a system with enough connectors for all the AUX and Common wires.
    Matthew

    Edit: Something I recomend is: By all means have c-bus and whatever else you want responding to the alarm system...But avoid doing it the other way around unless you really need to. A security system is just that; and setting it aside for that purpose is good practice.... Well, that's my opinion anyway.
     
    Last edited by a moderator: Oct 29, 2012
    mdooher, Oct 29, 2012
    #7
  8. arthurk

    mdooher

    Joined:
    Jul 18, 2009
    Messages:
    24
    Likes Received:
    0
    Location:
    Dunedin NZ
    Try looking at inbuilt system I/O security status messages

    I use mine for stuff like... On Fire Alarm turn on all lights, raise all blinds and unlock all doors...great fun at 2am when you jump out of bed naked to respond to a false alarm... well fun for the neighbours anyway. (once was enough pratice)
     
    mdooher, Oct 29, 2012
    #8
  9. arthurk

    Robbo_VIC

    Joined:
    Jan 24, 2011
    Messages:
    142
    Likes Received:
    0
    Location:
    Melbourne, VIC
    We use Paradox for all our security installs and as others have said, it's fairly easy to integrate it with Cbus by adding a PRT3 module and Cbus PCI. Messages can be sent both ways by using Virtual Inputs and Virtual PGMs. The main triggers we use them for is when the Alarm is armed or in Exit Delay, it will trigger Goodbye Scenes, then HomeGate or the Wiser can go through some extra logic depending on day or night. This can also be used for Entry Delay/Disarm cases, or Alarms to turn on all outside lights etc.

    Can also be used for Cbus to trigger Garage Doors etc.

    There are actually so many functions built in to the Paradox system but most of them won't be used for residential installs, as it seems to be a more commercial solution.
     
    Robbo_VIC, Oct 29, 2012
    #9
  10. arthurk

    djaggar

    Joined:
    Jul 18, 2009
    Messages:
    66
    Likes Received:
    0
    Location:
    New Zealand
    My house has a Paradox, which I actually couple to a Wiser with a MOXA IP to Serial convertor, connected to the PRT3 in ASCII mode. You could just as easily couple it to CBus with a PAC, or the serial port of a Mark II BW CTouch (which I've only just discovered actually has a serial port accessible from logic). Then a bit of logic to decode the ASCII ...

    Then you get full reporting from the Paradox, so you can easily show user names, zone names etc, so you can for example show the last movement in the house by location, even when the alarm is off, on a DLT or as a Text string on the Wiser GUI (in case you hear a noise in the night), or which of your children rocked in at 3am :) It's also great for a smoke detector going off, because you can report the location in English rather than just a zone number. Furthermore, all my door locks are electronic with open/closed read switches, connected to the Paradox, and so the Wiser can lock and unlock them all, as well as show what's open. One press lock up when you go to bed, or set the alarm, just like central locking on a car. Same for the garage doors. It's jolly handy to be able to open a garage door from my phone if I'm on the outside of my garage trying to get in. Almost all the Paradox modules have programmable outputs, and I've used these to control things like blinds and skylights, so they get coupled back to CBus buttons mapped to the nearest light switch. Turning on all the lights when the alarm goes off is one thing, but it might be smarter to flash all the lights in the appropriate zone (so you decide which way to run :)

    I've just started using NFC on my phone. If I swipe my phone over the NFC tag on my car dash, the house turns on lights at night (including the driveway), opens the correct garage door, and unlocks the house doors. Then, when it sees me open the pedestrian door to leave the garage, it closes the garage door for me. The opposite when I leave (NFC tag by the back door).
     
    djaggar, Nov 1, 2012
    #10
  11. arthurk

    Beerygaz

    Joined:
    Dec 25, 2005
    Messages:
    52
    Likes Received:
    0
    Location:
    Johannesburg, South Africa
    djaggar, 2 quick questions. Firstly how are you getting the wiser to talk to the PRT3 serial interface? Are you using TCP sockets to connect to your serial to IP connector?

    Secondly, could you share some of your code perhaps? I've started writing soe code to integrate a PAradox PRT3 with Homeseer and would love to compare your approach to get some ideas.

    Gaz
     
    Beerygaz, Nov 3, 2012
    #11
  12. arthurk

    djaggar

    Joined:
    Jul 18, 2009
    Messages:
    66
    Likes Received:
    0
    Location:
    New Zealand
    Yes, there is no serial on a Wiser. The wee Moxa box (I think it is a 5150) converts RS232 to IP

    Sure, you can PM me, but here it is. The Main Module code follows here first. My door locks and garage doors are activated by a Paradox Utility Key (hold down 2 keys on any paradox keypad), the Master Bedroom has electric curtains (blinds) and skylight shades, and they are controlled with spare outputs on the Paradox, triggered by the PRT3. Lastly, I can lock my front door and leave the rest of the house unlocked, so there is code here for that too.

    The main tricky bit is that the Paradox just blurts out zone status messages all the time, for example, when someone walks past a PIR. So you have to keep a local copy of every Zone Status (the array called ParadoxZoneClosed) as they come in, and also when you issue a command, you might have to swallow lots of results from the Paradox before you get the answer to your command. The RZ calls at the start of this code force the Paradox to display that status of all the zones that I display constantly as a CBus group, so that everything stays in sync after a reboot.

    Code:
    if NOT ClientSocketConnected(ParadoxHandle) then begin
      repeat
        OpenClientSocket(ParadoxHandle, ParadoxIP, ParadoxPort);
        WaitUntil(ClientSocketConnected(ParadoxHandle) OR (ClientSocketError(ParadoxHandle)<>0));
        until ClientSocketConnected(ParadoxHandle);
           
      if (not ParadoxPutPacket('RZ001') or // Garage Walkway Door Reed
          not ParadoxPutPacket('RZ017') or // Back Door Reed
          not ParadoxPutPacket('RZ039') or // Garage Walkway Lock Status
          not ParadoxPutPacket('RZ038') or // Back Door Lock Status
          not ParadoxPutPacket('RZ009') or // Front Door Reed
          not ParadoxPutPacket('RZ037') or // Front Door Lock Status
          not ParadoxPutPacket('RZ004') or // Left Garage Door
          not ParadoxPutPacket('RZ005') or // Right Garage Door
          not ParadoxPutPacket('RZ006') or // Back Garage Door
          not ParadoxPutPacket('RZ040')) then // Balcony Doors
        ExitModule;
        
      delay(2);
      end;
    
    // Drain the read buffer into a circular global buffer
    // That way we don't lose partial commands if don't quite capture a full string
    SetLength(ParadoxBuffer,0);
    ReadClientSocket(ParadoxHandle,ParadoxBuffer,'');
    if ClientSocketError(ParadoxHandle)<>0 then ExitModule;
    TempInt := length(ParadoxBuffer);
    for Byte := 1 to TempInt do begin
      ParadoxReadBuffer[ParadoxReadBufferLast] := ParadoxBuffer[Byte];
      ParadoxReadBufferLast := ParadoxReadBufferLast + 1;
      if (ParadoxReadBufferLast > ParadoxReadBufferSize) then
        ParadoxReadBufferLast := 1;
      if (ParadoxReadBufferLast = ParadoxReadBufferFirst) then ExitModule;
      end;
    
    // Now scan the buffer for CR, if found handle the string up to that point
    // and swallow the bytes from the local read buffer
    TempInt := ParadoxReadBufferFirst;
    setlength(TempString,0);
    while TempInt <> ParadoxReadBufferLast do begin 
      TempChar := ParadoxReadBuffer[TempInt];
      TempInt := TempInt + 1;
      if (TempInt > ParadoxReadBufferSize) then
        TempInt := 1;
      if TempChar = #13 then begin // end of command
        ParadoxHandleResult(TempString);
        ParadoxReadBufferFirst := TempInt; // free up the buffer space
        setlength(TempString,0); // and start on the next command
        end
      else
        append(TempString,TempChar); // add this character to the current command
      end;
    
    TempBool := GetLightingState("ParadoxFrontDoorLocked");
    if TempBool <> ParadoxFrontDoorLocked then begin
      if ParadoxZoneClosed[37] then begin
        if not ParadoxPutPacket('UK008') then ExitModule;
        ParadoxZoneClosed[37] := false;
        end
      else begin
        if not ParadoxPutPacket('UK006') then ExitModule;
        ParadoxZoneClosed[37] := false;
        end;
      ParadoxFrontDoorLocked := TempBool; 
      end;
       
    TempBool := GetLightingState("ParadoxDoorsLocked");
    if TempBool <> ParadoxDoorsLocked then begin
      if ParadoxZoneClosed[38] and ParadoxZoneClosed[39] then begin
        if not ParadoxPutPacket('UK007') then ExitModule;
        ParadoxZoneClosed[37] := false;
        ParadoxZoneClosed[38] := false;
        ParadoxZoneClosed[39] := false;
        end
      else begin
        if not ParadoxPutPacket('UK005') then ExitModule;
        ParadoxZoneClosed[37] := true;
        ParadoxZoneClosed[38] := true;
        ParadoxZoneClosed[39] := true;
        end;
      ParadoxDoorsLocked := TempBool;
      end;
    
    TempBool := GetLightingState("Balcony Door Locks");
    if HasChanged(TempBool) then begin
      if TempBool then begin
        if not ParadoxPutPacket('VC001') then ExitModule;
        ParadoxZoneClosed[40] := true;
        end 
      else begin
        if not ParadoxPutPacket('VO001') then ExitModule;
        ParadoxZoneClosed[40] := false;
        end;
      end;
      
    if not ParadoxHandleGarageDoor(GetCBusGroupAddress("Local Network","Lighting","ParadoxGarageDoorLeft"), ParadoxGarageDoorLeft,
                                   ParadoxGarageDoorLeftState, ParadoxGarageDoorLeftPosition, 4, ParadoxGarageDoorLeftTimer,'UK001') then ExitModule;
    if not ParadoxHandleGarageDoor(GetCBusGroupAddress("Local Network","Lighting","ParadoxGarageDoorRight"), ParadoxGarageDoorRight,
                                   ParadoxGarageDoorRightState, ParadoxGarageDoorRightPosition, 5, ParadoxGarageDoorRightTimer,'UK002') then ExitModule;
    if not ParadoxHandleGarageDoor(GetCBusGroupAddress("Local Network","Lighting","ParadoxGarageDoorBack"), ParadoxGarageDoorBack,
                                   ParadoxGarageDoorBackState, ParadoxGarageDoorBackPosition, 6, ParadoxGarageDoorBackTimer,'UK003') then ExitModule;
    
    TempBool := ParadoxZoneClosed[9] and ParadoxZoneClosed[37];
    if TempBool <> ParadoxFrontDoorLocked then begin
      SetLightingState("ParadoxFrontDoorLocked",TempBool);
      ParadoxFrontDoorLocked := TempBool;
      end;
      
    TempBool := ParadoxZoneClosed[9] and ParadoxZoneClosed[37] and ParadoxZoneClosed[17] and ParadoxZoneClosed[38] and ParadoxZoneClosed[1] and ParadoxZoneClosed[39];
    if TempBool <> ParadoxDoorsLocked then begin
      SetLightingState("ParadoxDoorsLocked",TempBool);
      ParadoxDoorsLocked := TempBool;
      end;
    
    TempBool := ParadoxZoneClosed[40];
    if TempBool <> ParadoxBalconeyDoorsLocked then begin
      SetLightingState("Balcony Door Locks",TempBool);
      ParadoxBalconeyDoorsLocked := TempBool;
      end;
    
    // The Paradox Alarm System controls the Master Bedroom Blinds and Curtains.
    
    TempBool := GetLightingState("Blinds Toggle");
    if HasChanged(TempBool) then begin
      if GetLightingState("Blinds Toggle") then begin
        if not ParadoxPutPacket('VO003') then ExitModule;
        end
      else
        if not ParadoxPutPacket('VO002') then ExitModule;
      end;
    
    Here is the procedure ParadoxHandleResult

    Code:
    procedure ParadoxHandleResult(result: string);
    var
      areastring, numberstring, groupstring: string;
      area, number, group: integer;
    begin
      if (result[1] = 'G') AND (result[5] = 'N') and (result[9] = 'A') then begin
        copy(groupstring,result,2,3);
        copy(numberstring,result,6,3);
        copy(areastring,result,10,3);
        group := StringToIntDef(groupstring,-1);
        number := StringToIntDef(numberstring,-1);
        area := StringToIntDef(areastring,-1);
    
        if (group <= 3) and (number >= 1) and (number <= 48) then begin // Zone status changed
          if group = 0 then begin
            ParadoxZoneClosed[number] := true;
            end
          else begin
            ParadoxZoneClosed[number] := false;
            ShowZoneStatus(number);
            end
          end
     //   else if (group = 65) and (number = 1) and (area = 1) then begin // Force Arm
     //     ParadoxAlarmState := DoorsClose;
     //     end
     //   else if (group = 14) and (area = 1) then begin // DisArm
     //     ParadoxAlarmState := DoorsOpen;
     //     ParadoxUser := number;
     //     end
    
      //  else begin
      //    Format(TempString,'Badcom1 ',result,' len=',length(result):1);
      //    ParadoxEcho(TempString);
      //  end
        end
      else if (result[1] = 'R') and (result[2] = 'Z') then begin // Zone Status
        copy(numberstring,result,3,3);
        number := StringToIntDef(numberstring,-1);
        if (result[6] = 'C') then
          ParadoxZoneClosed[number] := true
        else
          ParadoxZoneClosed[number] := false;
     //   end
    //  else begin
     //   Format(TempString,'Badcom2 ',result,' len=',length(result):1);
     //   ParadoxEcho(TempString);
        end;
      end;
    
    Function ParadoxPutPacket
    Code:
    function ParadoxPutPacket(command: string) : boolean; 
    begin;  
      append(command,#13);
      WriteClientSocket(ParadoxHandle,command);
      ParadoxPutPacket := ClientSocketError(ParadoxHandle) = 0;
    end;
    
    Function HandleGarageDoor (my doors have a reed switch so I know when they are closed, but are a bit weird in that if you press the button while they are still opening they stop dead, but if you press it when they are closing, they start opening again, so this procedure tracks that).

    Code:
    function ParadoxHandleGarageDoor(tag:integer; var button:boolean; var state: GarageDoorStates; var position: integer; zone:integer; timer: integer; command:string): boolean;
    begin
    ParadoxHandleGarageDoor := true;
    TempBool := ParadoxZoneClosed[zone];
    if TempBool <> button then begin
      if TempBool then begin // Door is definitely closed
        TimerStop(timer);
        state := DoorClosed;
        button := true;
        end
      else begin
        TimerStart(timer);
        state := DoorOpening;
        button := false;
        end;
      SetLightingState(tag,button);
      end;
    
    if TimerTime(timer) >= ParadoxGarageDoorTravelTime then begin
      TimerStop(timer);
      if state = DoorOpening then begin
        state := DoorOpen;
        end
      else if state = DoorClosing then begin
        state := DoorClosed;
        SetLightingState(tag,button);
        if not TempBool then begin
          ParadoxEcho('Door Fault');
          ParadoxHandleGarageDoor := false;
          end;
        end;
      end;
      
    TempBool := GetLightingState(tag);
    if TempBool <> button then begin
      if ParadoxPutPacket(command) then begin
        button := false;
        SetLightingState(tag,button);
        case state of
          DoorOpen: begin
            state := DoorClosing;
            TimerStart(timer);
            end;
          DoorOpening: begin
            state := DoorStopped;
            position := TimerTime(timer) - 1;
            TimerStop(timer);
            end;
          DoorStopped: begin
            state := DoorClosing;
            TimerSet(timer, ParadoxGarageDoorTravelTime - position);
            end;
          DoorClosing: begin
            state := DoorOpening;
            position := TimerTime(timer) - 1;
            TimerSet(timer, ParadoxGarageDoorTravelTime - position);
            end;
          DoorClosed: begin
            state := DoorOpening;
            TimerStart(timer);
            end;
          end;
        end
      else
        ParadoxHandleGarageDoor := false;
      end;
    end;
    Function ParadoxEcho

    Code:
    procedure ParadoxEcho(errmess: String);
    var
      CurrentTime: string;
      CurrentDate: string;
    begin
      TimeToString(time,CurrentTime);
      Append(errmess,' ');
      Append(errmess,CurrentTime);
      DateToString(date,CurrentDate);
      Append(errmess,' ');
      Append(errmess,CurrentDate);
      SetStringSystemIO("ParadoxErrorMessage", errmess);
    end;
    Procedure ShowZoneStatus. This code could get the zone labels directly from the Alarm, but I think I did is this way because the Label Length is limited in the Alarm Panel, and I really wanted an accurate description of what was on fire!

    Code:
    procedure ShowZoneStatus(zone: integer);
    var
       zonename: string;
    begin
    if zone <= 42 then
      case zone of
        1: zonename := 'Garage Walkway Door Open';
        2: zonename := 'Garage North Movement';
        3: zonename := 'Garage South Movement';
        4: zonename := 'Left Garage Door Open';
        5: zonename := 'Right Garage Door Open';
        6: zonename := 'Back Garage Door Open';
        7: zonename := 'Siren Tamper';
        8: zonename := 'Garage Alarm Tamper';
        9: zonename := 'Front Door Open';
        10: zonename := 'South Foyer Movement';
        11: zonename := 'East Foyer Movement';
        12: zonename := 'West Foyer Movement';
        13: zonename := 'Living Room Movement';
        14: zonename := 'Kitchen Movement';
        15: zonename := 'Bedrooms Movement';
        16: zonename := 'Attic Movement';
        17: zonename := 'Back Door Open';
        18: zonename := 'North Pool Movement';
        19: zonename := 'South Pool Movement';
        20: zonename := 'Implement Shed Movement';
        21: zonename := 'Bar Smoke Detector';
        22: zonename := 'Laundry Smoke Detector';
        23: zonename := 'Living Smoke Detector';
        24: zonename := 'Family Smoke Detector';
        25: zonename := 'Cinema Smoke Detector';
        26: zonename := 'Master Bedroom Smoke Detector';
        27: zonename := 'North West Bedroom Smoke Detector';
        28: zonename := 'North East Bedroom Smoke Detector';
        29: zonename := 'South East Bedroom Smoke Detector';
        30: zonename := 'South West Bedroom Smoke Detector';
        31: zonename := 'Attic Lounge Smoke Detector';
        32: zonename := 'Attic Bedroom Smoke Detector';
        33: zonename := 'Atiic Office Smoke Detector';
        34: zonename := 'Sprinklers Activated';
        35: zonename := 'Attic Alarm Power Panel Tamper';
        36: zonename := 'Attic Main Alarm Panel Tamper';
        37: zonename := 'Front Door Unlock';
        38: zonename := 'Back Door Unlock';
        39: zonename := 'Garage Door Unlock';
        40: zonename := 'Balcony Doors Unlock';
        41: zonename := 'Master Blinds Open';
        42: zonename := 'Master Blinds Close';
        end
    else
      format(zonename, 'Unknown Zone ',zone:1);
      
    ParadoxEcho(zonename);
    end;
    Constants

    Code:
    ParadoxHandle = 3;
    ParadoxIP = '192.168.0.246';
    ParadoxPort = 4001;
    ParadoxReadBufferSize = 1024;
    
    ParadoxGarageDoorLeftTimer = 1;
    ParadoxGarageDoorRightTimer = 2;
    ParadoxGarageDoorBackTimer = 3;
    
    ParadoxGarageDoorTravelTime = 27;
    
    ParadoxAlarmTimer = 4;
    Types

    Code:
    GarageDoorStates = (DoorOpen, DoorOpening, DoorStopped, DoorClosing, DoorClosed);
    ParadoxAlarmStates = (Idle,DoorsClose,DoorsClosing,DoorsClosingAgain,DoorsClosed,DoorsNotClosed,DoorsOpen,WaitForWalkwayDoor,DoorsOpenForUSer,DoorsCloseForUSer);
    
    Variables

    Code:
    TempInt, Byte: integer;
    TempBool, TempBool2: boolean;
    TempReal: real;
    TempString, TempString2: string;
    TempChar: char;
    
    ParadoxBuffer: array[0..ParadoxReadBufferSize] of char;
    ParadoxReadBuffer: array[1..ParadoxReadBufferSize] of char;
    ParadoxReadBufferFirst: integer;
    ParadoxReadBufferLast: integer;
    
    ParadoxCommandLength: integer;
    ParadoxZoneClosed: array[1..48] of boolean;
    ParadoxGarageDoorLeft, ParadoxGarageDoorRight, ParadoxGarageDoorBack, ParadoxFrontDoorLocked, ParadoxDoorsLocked, ParadoxBalconeyDoorsLocked: boolean;
    ParadoxGarageDoorLeftState, ParadoxGarageDoorRightState, ParadoxGarageDoorBackState: GarageDoorStates;
     
    djaggar, Nov 5, 2012
    #12
  13. arthurk

    Beerygaz

    Joined:
    Dec 25, 2005
    Messages:
    52
    Likes Received:
    0
    Location:
    Johannesburg, South Africa
    Thanks so much for this. I was wondering how you handled the chatty nature of the PRT3 and created a receive buffer for all the data and then parsed it. This has saved a lot of trial and error. I'm a .NET person so will have to dust off my Pascal again, but I get the gist of what you're up to (my garage doors react the same as yours too!).

    This has been a big step up in getting the integration going directly rather than via a 3rd party PC-based application. Thank you.

    As an aside, what are you using to lock the doors? Are you using mag locks?

    Gavin.
     
    Beerygaz, Nov 6, 2012
    #13
  14. arthurk

    djaggar

    Joined:
    Jul 18, 2009
    Messages:
    66
    Likes Received:
    0
    Location:
    New Zealand
    A mixture ... I have a covered walkway between my house and garage, both doors have Lookwood electronic looks that are pretty configurable installed in the aluminium joinery. I have them set up so they only lock the outside door handle (so you can always get out), and the garage door gets pinned back on a magnetic latch with a closer ... hit the lock button from inside the house and the door swings shut. The other doors have drop bolts the fire from the jam, or in the case of my tri-fold doors, from the top. The front door also has a electronic lock, it's a weird thing that makes both inside and outside handles inoperative so that you have to turn a snib to get out if it is locked ... bit of a pain that I don't recommend.
     
    djaggar, Nov 7, 2012
    #14
  15. arthurk

    alepore

    Joined:
    Dec 1, 2010
    Messages:
    27
    Likes Received:
    1
    Location:
    Victoria
    Paradox EVO & C-Bus

    Hi All,

    Has anyone been able to use C-Bus Sensors in the house as alarm detectors to trigger the alarm when armed?
     
    alepore, Sep 3, 2016
    #15
  16. arthurk

    djaggar

    Joined:
    Jul 18, 2009
    Messages:
    66
    Likes Received:
    0
    Location:
    New Zealand
    You could wire a CBus relay across a spare alarm input and use logic to check every CBus sensor and trigger the relay ...

    Or did you mean via a PRT3 module? You have full control over the Paradox if you have a PRT3 connected to a CBus logic engine ... you can certainly trigger an alarm.
     
    djaggar, Oct 8, 2016
    #16
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.