2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

76_MSGMail: tidy up code

git-svn-id: https://svn.fhem.de/fhem/trunk@8536 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
gandy92 2015-05-06 13:37:59 +00:00
parent 2f105a421c
commit fa8429adaf

View File

@ -1,15 +1,27 @@
########################################################
# $Id$
########################################################
#
# Created 2012 by rbente
#
########################################################
#
# History:
#
# 2015-05-06: tidy up code for restructuring
# 2015-05-05: remove dependency on Switch
#
#
package main;
use strict;
use warnings;
my %sets = (
"add" => "MSGMail",
"clear" => "MSGMail",
"list" => "MSGMail"
"add" => "MSGMail",
"clear" => "MSGMail",
"list" => "MSGMail"
);
##############################################
# Initialize Function
# Attributes are:
@ -23,15 +35,14 @@ my %sets = (
# CR 0 = no CR added to the end of the line
# 1 = CR added to the end of the line
##############################################
sub
MSGMail_Initialize($)
sub MSGMail_Initialize($)
{
my ($hash) = @_;
my ($hash) = @_;
$hash->{SetFn} = "MSGMail_Set";
$hash->{DefFn} = "MSGMail_Define";
$hash->{UndefFn} = "MSGMail_Undef";
$hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 authfile smtphost smtpport subject from to cc CR:0,1";
$hash->{SetFn} = "MSGMail_Set";
$hash->{DefFn} = "MSGMail_Define";
$hash->{UndefFn} = "MSGMail_Undef";
$hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 authfile smtphost smtpport subject from to cc CR:0,1";
}
##############################################
@ -39,119 +50,117 @@ MSGMail_Initialize($)
# all the data are stored in the global array @data
# as counter we use a READING named msgcount
##############################################
sub
MSGMail_Set($@)
sub MSGMail_Set($@)
{
my ($hash, @a) = @_;
my ($hash, @a) = @_;
return "Unknown argument $a[1], choose one of -> " . join(" ", sort keys %sets)
if(!defined($sets{$a[1]}));
my $name = shift @a;
if (!defined($sets{ $a[1] }));
my $name = shift @a;
return "no set value specified" if(int(@a) < 1);
# return "Unknown argument ?" if($a[0] eq "?");
my $v = join(" ", @a);
##### we like to add another line of data
if($a[0] eq "add")
{
##### split the line in command and data
my $mx = shift @a;
my $my = join(" ",@a);
##### check if we like to have and CR at the end of the line
if(AttrVal($name, "CR", "0") eq "1")
{
$my = $my . "\n";
}
##### get the highest number of lines, stored the line in @data and increase
##### the counter, at the end set the status
my $count = $hash->{READINGS}{msgcount}{VAL};
$data{$name}{$count} = $my;
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = $count + 1;
$hash->{STATE} = "addmsg";
return "no set value specified" if (int(@a) < 1);
}
##### we like to clear our buffer, first clear all lines of @data
##### and then set the counter to 0 and the status to clear
# return "Unknown argument ?" if($a[0] eq "?");
my $v = join(" ", @a);
# we like to add another line of data
if ($a[0] eq "add")
{
# split the line in command and data
my $mx = shift @a;
my $my = join(" ", @a);
# check if we like to have and CR at the end of the line
if (AttrVal($name, "CR", "0") eq "1")
{
$my = $my . "\n";
}
# get the highest number of lines, stored the line in @data and increase
# the counter, at the end set the status
my $count = $hash->{READINGS}{msgcount}{VAL};
$data{$name}{$count} = $my;
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = $count + 1;
$hash->{STATE} = "addmsg";
elsif($a[0] eq "clear")
{
my $i;
for($i=0;$i<ReadingsVal($name,"msgcount",0);$i++)
{
$data{$name}{$i} = "";
}
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = 0;
$hash->{STATE} = "clear";
}
# we like to clear our buffer, first clear all lines of @data
# and then set the counter to 0 and the status to clear
}
elsif ($a[0] eq "clear")
{
my $i;
for ($i = 0 ; $i < ReadingsVal($name, "msgcount", 0) ; $i++)
{
$data{$name}{$i} = "";
}
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = 0;
$hash->{STATE} = "clear";
##### we like to see the buffer
}
elsif($a[0] eq "list")
{
my $i;
my $mess = "---- Lines of data for $name ----\n";
for($i=0;$i<ReadingsVal($name,"msgcount",0);$i++)
{
$mess .= $data{$name}{$i};
}
return "$mess---- End of data for $name ----";
}
Log GetLogLevel($name,2), "messenger set $name $v";
# we like to see the buffer
# set stats
# $hash->{CHANGED}[0] = $v;
$hash->{READINGS}{state}{TIME} = TimeNow();
$hash->{READINGS}{state}{VAL} = $v;
return undef;
elsif ($a[0] eq "list")
{
my $i;
my $mess = "---- Lines of data for $name ----\n";
for ($i = 0 ; $i < ReadingsVal($name, "msgcount", 0) ; $i++)
{
$mess .= $data{$name}{$i};
}
return "$mess---- End of data for $name ----";
}
Log GetLogLevel($name, 2), "messenger set $name $v";
# set stats
# $hash->{CHANGED}[0] = $v;
$hash->{READINGS}{state}{TIME} = TimeNow();
$hash->{READINGS}{state}{VAL} = $v;
return undef;
}
##############################################
# Define Function
# set the counter to 0
##############################################
sub
MSGMail_Define($$)
sub MSGMail_Define($$)
{
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
my $errmsg = "wrong syntax: define <name> MSGMail from to smtphost authfile";
my $name = $hash->{NAME};
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
my $errmsg = "wrong syntax: define <name> MSGMail from to smtphost authfile";
my $name = $hash->{NAME};
return $errmsg if(@a != 6);
##### set all the Attributes
$attr{$name}{from} = $a[2];
$attr{$name}{to} = $a[3];
$attr{$name}{smtphost} = $a[4];
$attr{$name}{authfile} = $a[5];
$attr{$name}{subject} = "FHEM ";
$attr{$name}{CR} = "1";
return $errmsg if (@a != 6);
# set all the Attributes
$attr{$name}{from} = $a[2];
$attr{$name}{to} = $a[3];
$attr{$name}{smtphost} = $a[4];
$attr{$name}{authfile} = $a[5];
$attr{$name}{subject} = "FHEM ";
$attr{$name}{CR} = "1";
$hash->{STATE} = "ready";
$hash->{TYPE} = "MSGMail";
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = 0;
return undef;
$hash->{STATE} = "ready";
$hash->{TYPE} = "MSGMail";
$hash->{READINGS}{msgcount}{TIME} = TimeNow();
$hash->{READINGS}{msgcount}{VAL} = 0;
return undef;
}
##############################################
# Undefine Function
# flush all lines of data
##############################################
sub
MSGMail_Undef($$)
sub MSGMail_Undef($$)
{
my ($hash, $name) = @_;
my $i;
############ flush the data
for($i=0;$i<ReadingsVal($name,"msgcount",0);$i++)
{
$data{$name}{$i} = "";
}
my ($hash, $name) = @_;
my $i;
# flush the data
for ($i = 0 ; $i < ReadingsVal($name, "msgcount", 0) ; $i++)
{
$data{$name}{$i} = "";
}
delete($modules{MSGMail}{defptr}{$hash->{CODE}}) if($hash && $hash->{CODE});
return undef;
delete($modules{MSGMail}{defptr}{ $hash->{CODE} }) if ($hash && $hash->{CODE});
return undef;
}
1;