Page 5 of 7 FirstFirst 1234567 LastLast
Results 81 to 100 of 126

Thread: Ness D8X / D16X Serial Comms

  1. #81
    Junior Member
    Join Date
    Aug 2016
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Quote Originally Posted by auMatt View Post
    Here is where you can buy the cable, you can zoom on the picture

    Matt, you are wrong, the pictures of those cables on sale are wrong for a reason, it is to stop
    people to make that cheap cable by themselves. I have just proved it. See the attached link
    to the correct cable connection:
    It is correct only on the left C-bus board, from right or top: GND, Tx, Rx and it is straight connection
    to the RS232 socket, pins 5 - GND (black) , 3 - Tx (blue) and 2 - Rx (white) and it is working
    with any USB/RS232 serial converter cable to USB socket on the laptop.
    The 4th left pin is for power 12V DC connection which is not needed for communication
    but it is necessary to provide power to the C-bus board.
    The cable is cheap but it takes time to deliver and you can make own in just 10 minutes
    and it is working. The communication will be working only in Installation mode of the Ness alarm panel.



  • #82
    Junior Member
    Join Date
    Jul 2016
    Location
    Blue Mountains, NSW
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    John/jag87: glad you got it running. I was only working with the main board and ground would connect to the white wire in your picture. Perhaps they've been perverse in their colour choices?

    auMatt: would be very grateful if you have any ideas on my earlier question (setting the clock via serial).

    Have fun,

    Rob.

  • #83
    Junior Member
    Join Date
    Mar 2010
    Posts
    30
    Thanks
    4
    Thanked 1 Time in 1 Post
    Rep Power
    174
    Reputation
    30

    Default

    I didn't check my cable as I bought mine from radio parts. I still think spending $6 aus is far cheaper than making your own considering the cost of the parts plus time. Each to their own though.

    As for sending the time, no I haven't looking into it sorry. Are you sure you are calculating the crc correctly?

    Matt


    Sent from my iPhone using Tapatalk

  • #84
    Junior Member
    Join Date
    Jul 2016
    Location
    Blue Mountains, NSW
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Thanks for the quick reply Matt. Checksums are OK with other things -- e.g. arm/disarm by serial works fine. Have you managed to get *anything* working via serial in program mode? Trying to set the time by serial, it gets into program mode happily enough and just beeps at me from then on. Doing the same commands at the keypad works fine.

    Have fun,

    Rob.

  • #85
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Quote Originally Posted by auMatt View Post
    Guys,

    Beta has been released to those who contacted me, if there are anyone else interested please PM me.

    Matt
    If you could PM me a link too that would be greatly appreciated.

    Thanks!

  • #86
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Quote Originally Posted by robls View Post
    Thanks for the quick reply Matt. Checksums are OK with other things -- e.g. arm/disarm by serial works fine. Have you managed to get *anything* working via serial in program mode? Trying to set the time by serial, it gets into program mode happily enough and just beeps at me from then on. Doing the same commands at the keypad works fine.

    Have fun,

    Rob.
    Hey Rob just wondering if you have uploaded your code at all for others to use yet?

    If you have sorry for missing the link.

    If not would it be possible for you to upload the code so we can use/port it too?

    Thanks!

  • #87
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    I dont mean to be rude but since I cant PM anyone to ask perhaps someone who got the latest copy of either program can upload it and post a link?

    Thanks!

  • #88
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Bump

  • #89
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Bump once more so I can pm... Sorry for spam

  • #90
    Junior Member
    Join Date
    Jul 2016
    Location
    Blue Mountains, NSW
    Posts
    7
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Quote Originally Posted by infra View Post
    Hey Rob just wondering if you have uploaded your code at all for others to use yet?

    If you have sorry for missing the link.

    If not would it be possible for you to upload the code so we can use/port it too?

    Thanks!
    Hi infra,

    Sorry for not getting back to you sooner -- I don't look in here all that often and PMs don't notify me by e-mail (probably some option I haven't set)

    Anyhow, most of my code is pretty specific to my setup, but I'll include a couple of things that might be useful to others trying to write their own.

    As I said, I'm running Linux. The output of the alarm's RS-232 is streamed to a file. This file ends up containing both the alarm's internal log of events and its responses to status requests. The following Perl script converts this file to something reasonably human-friendly:
    Code:
    #!/usr/bin/perl -w
    use strict;
    
    my @zone = (qw/null front-door lounge laundry-door dining garage-door store
    rumpus rumpus-sliding/);
    
    my @out = (qw/siren soft-siren soft-monitor siren-fire strobe reset
      sonalert keypad display enable/);
    
    #
    # Status request descriptions
    #
    my @req = (
    	"Zone Input Unsealed",
    	"Zone Radio Unsealed",
    	"Zone CBus Unsealed",
    	"Zone in Delay",
    	"Zone in Double Trigger",
    	"Zone in Alarm",
    	"Zone Excluded",
    	"Zone Auto Excluded",
    	"Zone Supervision Fail Pending",
    	"Zone Supervision Fail",
    	"Zone Doors Open",
    	"Zone Detector Low Battery",
    	"Zone Detector Tamper",
    	"Miscellaneous Alarms",
    	"Arming",
    	"Outputs",
    	"View State"
    );
    #
    # Functions to display status request details
    #
    my @form = (
    	\&f4, \&f4, \&f4, \&f4,
    	\&f4, \&f4, \&f4, \&f4,
    	\&f4, \&f4, \&f4, \&f4,
    	\&f4, \&f20, \&f21, \&f22,
    	\&f23
    );
    
    
    #
    # F4 -- zone events
    #
    sub
    f4
    {
    	my (@d) = @_;
    	my ($v, $s, $m);
    
    	$v = hex $d[0];
    	$s = "Z";
    	$m = 1;
    	for (1..8)
    	{
    		$s .= ($v & $m) ? $_ : ' ';
    		$m <<= 1;
    	}
    	$s;
    }
    
    
    #
    # F20 -- miscellaneous alarms
    #
    my (@f20) = (
    	"Duress",
    	"Panic",
    	"Medical",
    	"Fire",
    	"Install End",
    	"Ext. Tamper",
    	"Panel Tamper",
    	"Keypad Tamper",
    	"Pendant Panic",
    	"Panel Battery Low",
    	"Panel Battery Low",
    	"Mains Fail",
    	"CBus Fail"
    );
    sub
    f20
    {
    	my (@d) = @_;
    	my ($v, @s, $m);
    	local $" = "','";
    
    	$v = hex($d[0]) + 256 * hex($d[1]);
    	@s = ();
    	$m = 1;
    	for (0..12)
    	{
    		if ($v & $m)
    		{
    			push @s, $f20[$_];
    		}
    		$m <<= 1;
    	}
    	"'@s'";
    }
    
    
    #
    # F21 -- arming status
    #
    my (@f21) = (
    	"AREA 1 ARMED",
    	"AREA 2 ARMED",
    	"AREA 1 FULLY ARMED",
    	"AREA 2 FULLY ARMED",
    	"MONITOR ARMED",
    	"Day Mode Armed",
    	"Entry Delay 1 ON",
    	"Entry Delay 2 ON",
    	"Manual Exclude mode",
    	"Memory mode",
    	"Day Zone Select",
    );
    sub
    f21
    {
    	my (@d) = @_;
    	my ($v, @s, $m);
    	local $" = "','";
    
    	$v = hex($d[0]) + 256 * hex($d[1]);
    	@s = ();
    	$m = 1;
    	for (0..10)
    	{
    		if ($v & $m)
    		{
    			push @s, $f21[$_];
    		}
    		$m <<= 1;
    	}
    	"'@s'";
    }
    
    #
    # F22 -- Output states
    #
    my (@f22) = (
    	"Siren Loud",
    	"Siren Soft",
    	"Siren Soft Monitor",
    	"Siren Fire",
    	"Strobe",
    	"Reset",
    	"Sonalert",
    	"Keypad Display Enable",
    	"Aux1",
    	"Aux2",
    	"Aux3",
    	"Aux4",
    	"Monitor Out",
    	"Power Fail",
    	"Panel Batt Fail",
    	"Tamper Xpand"
    );
    sub
    f22
    {
    	my (@d) = @_;
    	my ($v, @s, $m);
    	local $" = "','";
    
    	$v = hex($d[0]) + 256 * hex($d[1]);
    	@s = ();
    	$m = 1;
    	for (0..15)
    	{
    		if ($v & $m)
    		{
    			push @s, $f22[$_];
    		}
    		$m <<= 1;
    	}
    	"'@s'";
    }
    
    #
    # F23 -- View states.  Hmm.
    #
    my (%f23) = (
    	F000 => "NORMAL",
    	E000 => "BRIEF DAY (CHIME)",
    	D000 => "HOME",
    	C000 => "MEMORY",
    	B000 => "BRIEF DAY ZONE SELECT",
    	A000 => "EXCLUDE SELECT",
    	9000 => "USER PROGRAM",
    	8000 => "INSTALLER PROGRAM"
    );
    sub
    f23
    {
    	my (@d) = @_;
    	my ($v, $s, $m);
    	local $" = "','";
    
    	$v = hex($d[0]) * 256 + hex($d[1]);
    	$s = sprintf "%04X", $v;
    	exists $f23{$s} ? $f23{$s} : "state $s ????";
    }
    
    
    sub
    printtime
    {
    	my ($t) = @_;
    
    	$t =~ /(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/;
    	printf("%s/%s/%s %s:%s:%s", $3, $2, $1, $4, $5, $6);
    }
    
    sub
    showevent
    {
    	my ($t, $d) = @_;
    
    	printtime $t;
    	$d =~ /^([\da-f]{2})([\da-f]{2})([\da-f]{2})$/;
    	my ($ev, $id, $area) = ($1, $2, $3);
    	if ($ev eq '00')
    	{
    		$ev = "Unsealed: $zone[$id] $area";
    	}
    	elsif ($ev eq '01')
    	{
    		$ev = "Sealed: $zone[$id] $area";
    	}
    	elsif ($ev eq '02' or $ev eq '03')
    	{
    		$ev = $ev eq '02' ? "Alarm " : "Alarm-restore ";
    		if ($id =~ /^0[1-8]$/)
    		{
    			$ev .= $zone[$id];
    		}
    		else
    		{
    			$ev .= $id;
    		}
    		$ev .= " $area";
    	}
    	elsif ($ev eq '10')
    	{
    		$ev = "Power-fail"
    	}
    	elsif ($ev eq '11')
    	{
    		$ev = "Power-restore";
    	}
    	elsif ($ev eq '12')
    	{
    		$ev = "Battery=fail"
    	}
    	elsif ($ev eq '13')
    	{
    		$ev = "Battery-restore";
    	}
    	elsif ($ev eq '14')
    	{
    		$ev = "Report-fail"
    	}
    	elsif ($ev eq '15')
    	{
    		$ev = "Report-ok"
    	}
    	elsif ($ev eq '20' or $ev eq '21')
    	{
    		$ev = "Entry-delay-" . ($ev eq '20' ? "start" : "end");
    		$ev .= " $zone[$id] $area"
    	}
    	elsif ($ev eq '22' or $ev eq '23')
    	{
    		$ev = "Exit-delay-" . ($ev eq '20' ? "start" : "end");
    		$ev .= " $zone[$id] $area"
    	}
    	elsif ($ev eq '24' or $ev eq '25')
    	{
    		$ev = "Armed-" . ($ev eq '24' ? "away" : "home");
    		$ev .= " user-$id $area";
    	}
    	elsif ($ev eq '26')
    	{
    		$ev = "Armed-day";
    	}
    	elsif ($ev eq '2f')
    	{
    		$ev = "Disarmed user-$id $area";
    	}
    	elsif ($ev eq '31' or $ev eq '32')
    	{
    		$ev = $ev eq '31' ? 'on' : 'off';
    		if ($id =~ /^0[1-9]$/ or $id eq '10')
    		{
    			$ev = "Aux-$id-$ev";
    		}
    		elsif ($id =~ /^9([0-9])$/)
    		{
    			$ev = "$out[$1]-$ev";
    		}
    		else
    		{
    			$ev = "Unknown-$ev";
    		}
    	}
    	else
    	{
    		$ev .= " $id $area";
    	}
    	print " $ev\n";
    }
    
    sub
    showstatus
    {
    	my ($req, @d) = @_;
    
    	print "Status:", $req[$req],":", &{$form[$req]}(@d),"\n";
    }
    
    #
    # Turn ASCII alarm output into something a bit more human friendly
    #
    
    while (<>)
    {
    	chomp;
    	next if /^$/;
    	if (/^8700([\da-f]{2})61([\da-f]{6})(\d{12})([\da-f]{2})$/)
    	{
    		my ($len, $data, $time, $cksum) = ($1,$2,$3,$4,$5);
    		showevent($time, $data);
    	}
    	elsif (/^82000360([\da-f]{2})([\da-f]{2})([\da-f]{2})[\da-f]{2}$/)
    	{
    		my ($req,$d1,$d2) = ($1,$2,$3);
    		showstatus($req, $d1, $d2);
    	}
    	else
    	{
    		warn "Unknown '$_'\n";
    	}
    }
    The following C program causes a status report to be sent to that file (I'm assuming you're reading the Ness ASCII Protocol document so you know that "status 0" would report which zones were unsealed, "status 14" would report which zones were armed, etc.).

    Code:
    #include <stdio.h>
    #include <fcntl.h>
    #include <string.h>
    #include <termios.h>
    #include <unistd.h>
    #include <stdlib.h>
    
    
    /*
     * Open the serial port for writing with appropriate comms.
     */
    static int
    open_serial(const char *dev)
    {
            int fd;
            struct termios tio;
    
            if ((fd = open(dev, O_WRONLY)) < 0)
            {
                    return(-1);
            }
            if (tcgetattr(fd, &tio) < 0)
            {
                    close(fd);
                    return(-1);
            }
            cfsetspeed(&tio, B9600);
            tio.c_oflag &= ~(OPOST|ONLCR|OCRNL|ONOCR|ONLRET);
            tio.c_cflag |= (CLOCAL | CREAD | CS8);
            tio.c_cflag &= ~(CRTSCTS | CSTOPB | PARENB);
            if (tcsetattr(fd, 0, &tio) < 0)
            {
                    close(fd);
                    return(-1);
            }
            return(fd);
    }
    	
    /*
     * Append the appropriate checksum termination to a string.
     */
    static void
    cksum(char *s, int cont)
    {
    	unsigned int sum;
    
    	sum = 0;
    
    	while (*s)
    	{
    		sum += *s++;
    	}
    	sum = -sum & 0xff;
    	sprintf(s, (cont ? "%02X?\r\n" : "%02X\r\n"), sum);
    }
    
    
    int
    main(int argc, char **argv)
    {
    	int fd;
    	int i;
    	char cmdbuf[80];
    	int sum;
    	int req;
    
    	if (argc != 2)
    	{
    		fprintf(stderr, "Usage:%s <status#>\n", argv[0]);
    		return(1);
    	}
    	req = atoi(argv[1]);
    	if (req < 0 || req > 16)
    	{
    		fprintf(stderr, "request must bin in [0:16]\n");
    		return(1);
    	}
    	if ((fd = open_serial("/dev/ttyS0")) < 0)
    	{
    		perror("/dev/ttyS0");
    		return(1);
    	}
    	sprintf(cmdbuf, "8300360S%02d", req);
    	cksum(cmdbuf, 0);
    #if 0
    	puts(cmdbuf);
    #else
    	write(fd, cmdbuf, strlen(cmdbuf));
    #endif
    	return(0);
    }
    I'll not bother with my code that was trying to set the time. It's similar to the status code above, but follows the keypad strings protocol rather than status requests.

    Glad if you find this useful, and if anyone works out how to set the time via serial, I'd be glad to hear about it.

    Have fun,

    Rob.
    Last edited by robls; 15-09-16 at 11:00 AM.

  • #91
    Junior Member
    Join Date
    Sep 2016
    Posts
    9
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Thanks for replying to both of you and thanks for your help!

    Very much appreciated!

  • #92
    Junior Member
    Join Date
    Dec 2016
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Quote Originally Posted by auMatt View Post
    Woops, shouldnt read stuff on my iphone and not think about it before posting. Driving Outputs is not supported in any firmware below 7.8. I have 7.3, I will add arming functionality in next version. I do have a list of things I want to add also, but first will be connecting to the Serial/TCP convertor without the need of virtual serial ports.

    Matt
    Old thread, reborn (sorry?). I have been looking at the ASCII protocol as a possibility to interface a new iOS / watchOS app and/or interfacing to a Clipsal CBUS PAC.

    I have tried to switch ON the AUX1 output using a correctly (I believe) formatted string "830036011*10" (i.e. the keypad string "11*"). This command is ignored. I do get a response to status requests.

    My panel is version 7.7. I see the comment above about v7.8 being required to "drive outputs". Is this perhaps the limitation that is preventing my command above working? If so, then I might have to look at getting hold of a new board.

    Any help most appreciated!

    Chris.


    --
    For reference, below are my notes for coming up with the string:

    Input commands
    START
    0x83

    ADDRESS
    0x00

    LENGTH
    0x03 [calculated from '1', '1', '*']

    COMMAND
    0x60 [fixed]

    DATA
    [11* turns on AUX1, 11# turns off AUX1, 22* turns on AUX2 etc]
    11* [0x31 0x31 0x2A]
    or
    11# [0x31 0x31 0x23]

    CHK
    [checksum]
    calc on STR = "830036011*"
    int(8) = 56
    int(3) = 51
    int(0) = 48
    int(0) = 48
    int(3) = 51
    int(6) = 54
    int(0) = 48
    int(1) = 49
    int(1) = 49
    int(*) = 42

    [int(#) = 35]

    Sum = 496 (0x1F0)
    next multiple is 0x200
    0x200 - 0x1F0 = 0x10

    Send string "830036011*10" for AUX1 ON.

  • #93
    Junior Member
    Join Date
    Feb 2016
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Hi,

    I'm after the IP232 software configuration utility, does anyone happen to have it?

    Thanks

  • #94
    Junior Member
    Join Date
    Jun 2017
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    me too! latest serial guide would be sweet

  • #95
    Junior Member brotherbear's Avatar
    Join Date
    Jul 2011
    Location
    Queensland
    Posts
    157
    Thanks
    10
    Thanked 18 Times in 11 Posts
    Rep Power
    164
    Reputation
    185

    Default

    Sorry to revive this old topic but as per requests:

    Ness D8x/D16x Protocol -
    Ness IP232 Utility -
    "I can't believe you totaled a mammoth"

  • #96
    Junior Member
    Join Date
    Jan 2008
    Posts
    22
    Thanks
    2
    Thanked 1 Time in 1 Post
    Rep Power
    198
    Reputation
    15

    Default Ness and Linux

    Anyone created a Linux based server (say for Raspberry Pi) which can control/automate the ness panels in some way? There’s a lot of functionality in the ness commands, but no real easy way of scripting and automating functions. Tks for any help.

  • #97
    Junior Member
    Join Date
    Dec 2017
    Posts
    14
    Thanks
    1
    Thanked 2 Times in 2 Posts
    Rep Power
    0
    Reputation
    50

    Default Interface via serial and Arduino

    I have just started looking at integrating this into my home automation system. I am running and I am thinking I should be able to feed the motion sensor status to HASS via a node.

    My first try today with what I had lying around hasn't worked. I tried using an Arduino Uno and the SoftwareSerial library. My theory is that the Uno would communicate with my D8X via Software Serial and then I could monitor what was read in the serial monitor. However, nothing was shown in the monitor. I have ordered a 16x2 LCD so I can then use the proper TX and RX pins and then output to the LCD. That will take a week to get here.

    If anyone else has attached a UNO and has it working let me know. I have just used standard to connect to the header which didn't feel great pushing them on but I can measure 5V on one of them so at least that pin and the ground are connected so overall I don't think I have a connection issue.
    Last edited by OzTynker; 03-12-17 at 02:02 PM. Reason: Added title

  • #98
    Junior Member
    Join Date
    Feb 2016
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0
    Reputation
    10

    Default

    Will any Ethernet to RS-232 Serial Port Bridge work with the Ness alarms or do you have to use the Ness specific item?

    Thanks

  • #99
    Junior Member
    Join Date
    Dec 2017
    Posts
    14
    Thanks
    1
    Thanked 2 Times in 2 Posts
    Rep Power
    0
    Reputation
    50

    Default

    I was getting nowhere with the Arduino so decided to go down a level of complexity. I connected my Ness D8x to my laptop with this and I am running the software. I am finally getting some output but it is not what I expected. Just for more info when I do a P999999999E on my keypad I see 7 0 0 0.

    If I select ascii in realterm I just get garbled characters. If I select hex with space I see:

    Code:
    6C F6 96 36 D6 D6 F6 F6 F6 F6 F6 F6 D6 2A EB 00 // Mains fail
    6C F6 99 93 9D 9D 9D 9F 9F 9F 9F 8F 8D E5 EB 00 // Mains restore
     
    6C F6 99 93 9D 9F 9F 9F 9B 9F 9F 8D 8F E5 EB 00 // Zone 2 trigger
    6C F6 96 36 D6 F6 D6 F6 B6 F6 F6 D6 16 56 EB 00 // Zone 2 clear
    6C F6 96 36 D6 F6 D6 F6 76 F6 F6 D6 56 56 EB 00 // Zone 4 clear
    6C F6 99 93 9D 9F 9F 9F 97 9F 9F 8D 93 E5 EB 00 // Zone 4 trigger
    For example I was expecting 82 (or 80 something anyway) at the start but I have 6C? If I turn on the address option (P199E1E) the output grows by 2 hex numbers. Time stamp makes it grow another 12.
    I am totally new to this so no doubt missing something fundamental?
    Any ideas? I can trial and error and work out what are the codes I want but interested to know why it is not as per the ascii protocol document?

  • #100
    Junior Member
    Join Date
    Mar 2010
    Posts
    30
    Thanks
    4
    Thanked 1 Time in 1 Post
    Rep Power
    174
    Reputation
    30

    Default

    I would suspect that your port settings are incorrect , most likely the speed of your port

    Matt

  • Page 5 of 7 FirstFirst 1234567 LastLast

    Similar Threads

    1. "Comms fail route1" on Bosch Solution 16+
      By autertip in forum Security Alarms
      Replies: 8
      Last Post: 02-06-18, 10:40 PM
    2. Replies: 1
      Last Post: 17-09-09, 11:25 PM
    3. Comms,networking machine linking ????
      By redmick in forum Networking - Wireless and Cabled
      Replies: 1
      Last Post: 23-04-09, 07:55 PM
    4. Comms Receiver WTB
      By Variable in forum Buy Sell and Trade
      Replies: 0
      Last Post: 25-02-09, 09:55 PM
    5. Ness D16x Questions
      By 7polly7777 in forum Security Alarms
      Replies: 1
      Last Post: 26-03-08, 02:11 AM

    Tags for this Thread

    Bookmarks

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •