[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