Help needed with Sockets, using Mister House...

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:

formatting link
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 :)

Reply to
Jack Edin
Loading thread data ...

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);

Reply to
NoSuchPerson

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 ;-)

snipped-for-privacy@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... >

Reply to
Jack Edin

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.

Probably, but that doesn't mean you HAVE to use it if you don't have time to figure it out.

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.

Reply to
NoSuchPerson

Cabling-Design.com Forums website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.