[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: Help needed with Sockets, using Mister House...



Jack Edin wrote:
> Hello,
>
> Please excuse the newbie question...
>
> I want to send the word "Mail", followed by a CR over the Ethernet to IP
> address 192.168.1.123 on Port 2101.
>
> I searched the MH Docs to no avail...
>
> I looked at various code examples, and tried many things.
> I can't get it right!
>
> The code I use now looks like this:
>
>  # Window/Door sensor items
>
>  if ($state = state_now $Mailbox_sensor) {
>    $state = "open"   if ($state =~ /^alert/i);
>    $state = "closed" if ($state =~ /^normal/i);
>    print_log "Mailbox's front door is now $state";
>
>    if ($state eq "open"){play(`file` => "GOTMAIL.wav")}
>  }
>
> I'm using an X10 DS10A embedded into the door of my new plastic mailbox.
>
> Here is a picture:
>
> http://www.logicunlimited.com/images/sModdedDoor-Front&Back+.jpg
>
> I have an Elk M1 panel. It can listen to port 2101 on the Ethernet...
>
> I want Mister House to trigger the mighty M1, via Ethernet in this manor.
>
> Can anybody help?
>
> I'm such a newbie I may need you to show me where to insert it into my
> code, too.
>
> Just get one "(" in the wrong place, or forget a "}" and you're not
> getting there!
>
> Been doing alot of head scratchin. Please help!
>
> Thankx, in advance!
>
> Jack
> :)

You need to open and print to a socket.  I haven't actually tried this,
but adapting from some code in "Programming Perl", it might go something
like this...

require 5.002;
use strict;
use Socket;
my $remote = "192.168.1.123";	# can be a domain name
my $port = 2101;
my $iaddr = inet_aton($remote);
my $paddr = sockaddr_in($port, $iaddr);
my $proto = getprotobyname('tcp');	# unless your device takes 'udp'
socket(MYSOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
connect(SOCK, $paddr);
print SOCK "Mail\n";
close(SOCK);


alt.home.automation Main Index | alt.home.automation Thread Index | alt.home.automation Home | Archives Home