|
Home > Archive > Home Automation > September 2005 > Help needed with Sockets, using Mister House...
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Help needed with Sockets, using Mister House...
|
|
| Jack Edin 2005-09-16, 2:21 am |
| 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/image...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

| |
| rlsusenet@NOSPAMPUHLEEZschnapp.org 2005-09-16, 2:21 pm |
| 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/image...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);
| |
| Jack Edin 2005-09-18, 3:21 pm |
| Hello,
And thank you for making the effort!
You've written in Perl, and I need it in Mister House... Similar..?
In MH there is a "Socket_Item" and it has Parameters O'plenty, separated
by commas - very much like your "socket" command, maybe more...
I suspect much of your code example will work. The definition of your
variables, etc. I tried putting them in quotes within the Socket_item
statement. Wasn't certain if I wanted Single (') or double (") quotes.
I found an example (earlier - for the RF portion) which I copied and
pasted into my code file. Bruce was kind enough to correct it for me.
The example used a "=" and it should have been an "eq". Who knew?!!
Currently Bruce is too busy to reply. I understand, but now I'm high and
dry!
Again; thanks for all of your efforts...
Sincerely,
Jack
;-)
rlsusenet@NOSPAMPUHLEEZschnapp.org wrote:
> 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);
[color=darkred]
> Jack Edin wrote:
>
| |
| rlsusenet@NOSPAMPUHLEEZschnapp.org 2005-09-19, 2:21 pm |
| Jack Edin wrote:
> Hello,
>
> And thank you for making the effort!
>
> You've written in Perl, and I need it in Mister House... Similar..?
Mister House is WRITTEN IN Perl. You're running a perl program. I
know, 'cause I gutted MH to use in my (MUCH simplified, customize) home
automation system. The code I suggested could be incorporated into MH.
You would move the "use" statements out of any subs, ahead of where
you're using the socket stuff. In fact, for MH, you should drop the "use
strict;" statement entirely. And MH might already use Sockets. You can
search for it.
> In MH there is a "Socket_Item" and it has Parameters O'plenty, separated
> by commas - very much like your "socket" command, maybe more...
Probably, but that doesn't mean you HAVE to use it if you don't have
time to figure it out.
> I suspect much of your code example will work. The definition of your
> variables, etc. I tried putting them in quotes within the Socket_item
> statement. Wasn't certain if I wanted Single (') or double (") quotes.
The only difference between single and double quotes is interpolation of
variables contained within the string. Single quoted strings will not
have variables replaced with their content, while double-quoted strings
will.
[color=darkred]
> I found an example (earlier - for the RF portion) which I copied and
> pasted into my code file. Bruce was kind enough to correct it for me.
> The example used a "=" and it should have been an "eq". Who knew?!!
>
> Currently Bruce is too busy to reply. I understand, but now I'm high and
> dry!
>
> Again; thanks for all of your efforts...
>
> Sincerely,
>
> Jack
> ;-)
>
>
> rlsusenet@NOSPAMPUHLEEZschnapp.org wrote:
>
>
|
|
|
|
|