set state from statefile on startup

git-svn-id: https://svn.fhem.de/fhem/trunk@2890 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
ntruchsess
2013-03-10 22:54:02 +00:00
parent a52187d171
commit 84c3a1e7b0
3 changed files with 50 additions and 3 deletions

View File

@@ -30,6 +30,7 @@ FRM_LCD_Initialize($)
$hash->{SetFn} = "FRM_LCD_Set";
$hash->{UndefFn} = "FRM_LCD_Undef";
$hash->{AttrFn} = "FRM_LCD_Attr";
$hash->{StateFn} = "FRM_LCD_State";
$hash->{AttrList} = "IODev model backLight:on,off blink:on,off autoClear:on,off autoBreak:on,off loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
# autoScroll:on,off direction:leftToRight,rightToLeft do not work reliably
@@ -188,6 +189,18 @@ sub FRM_LCD_Set(@) {
}
}
sub FRM_LCD_State($$$$)
{
my ($hash, $tim, $sname, $sval) = @_;
STATEHANDLER: {
$sname eq "text" and do {
FRM_LCD_Set($hash,$hash->{NAME},$sname,$sval);
last;
}
}
}
sub
FRM_LCD_Undef($$)
{

View File

@@ -17,6 +17,7 @@ FRM_OUT_Initialize($)
$hash->{DefFn} = "FRM_Client_Define";
$hash->{InitFn} = "FRM_OUT_Init";
$hash->{UndefFn} = "FRM_OUT_Undef";
$hash->{StateFn} = "FRM_OUT_State";
$hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
}
@@ -27,6 +28,10 @@ FRM_OUT_Init($$)
my ($hash,$args) = @_;
my $ret = FRM_Init_Pin_Client($hash,$args,PIN_OUTPUT);
return $ret if (defined $ret);
my $name = $hash->{NAME};
if (! (defined AttrVal($name,"stateFormat",undef))) {
$main::attr{$name}{"stateFormat"} = "value";
}
main::readingsSingleUpdate($hash,"state","Initialized",1);
return undef;
}
@@ -48,9 +53,9 @@ FRM_OUT_Set($@)
return SetExtensions($hash, $list, $name, @a);
}
my $iodev = $hash->{IODev};
main::readingsSingleUpdate($hash,"value",$cmd, 1);
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
$iodev->{FirmataDevice}->digital_write($hash->{PIN},$value);
main::readingsSingleUpdate($hash,"state",$cmd, 1);
} else {
return $name." no IODev assigned" if (!defined $iodev);
return $name.", ".$iodev->{NAME}." is not connected";
@@ -58,6 +63,18 @@ FRM_OUT_Set($@)
return undef;
}
sub FRM_OUT_State($$$$)
{
my ($hash, $tim, $sname, $sval) = @_;
STATEHANDLER: {
$sname eq "value" and do {
FRM_OUT_Set($hash,$hash->{NAME},$sval);
last;
}
}
}
sub
FRM_OUT_Undef($$)
{

View File

@@ -21,6 +21,7 @@ FRM_PWM_Initialize($)
$hash->{DefFn} = "FRM_Client_Define";
$hash->{InitFn} = "FRM_PWM_Init";
$hash->{UndefFn} = "FRM_PWM_Undef";
$hash->{StateFn} = "FRM_PWM_State";
$hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
}
@@ -32,7 +33,11 @@ FRM_PWM_Init($$)
my $ret = FRM_Init_Pin_Client($hash,$args,PIN_PWM);
return $ret if (defined $ret);
my $firmata = $hash->{IODev}->{FirmataDevice};
$main::defs{$hash->{NAME}}{resolution}=$firmata->{metadata}{pwm_resolutions}{$hash->{PIN}} if (defined $firmata->{metadata}{pwm_resolutions});
my $name = $hash->{NAME};
$main::defs{$name}{resolution}=$firmata->{metadata}{pwm_resolutions}{$hash->{PIN}} if (defined $firmata->{metadata}{pwm_resolutions});
if (! (defined AttrVal($name,"stateFormat",undef))) {
$main::attr{$name}{"stateFormat"} = "value";
}
main::readingsSingleUpdate($hash,"state","Initialized",1);
return undef;
}
@@ -47,9 +52,9 @@ FRM_PWM_Set($@)
my $command = $a[1];
my $value = $a[2];
my $iodev = $hash->{IODev};
main::readingsSingleUpdate($hash,"value",$value, 1);
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
$iodev->{FirmataDevice}->analog_write($hash->{PIN},$value);
main::readingsSingleUpdate($hash,"state",$value, 1);
} else {
return $hash->{NAME}." no IODev assigned" if (!defined $iodev);
return $hash->{NAME}.", ".$iodev->{NAME}." is not connected";
@@ -57,6 +62,18 @@ FRM_PWM_Set($@)
return undef;
}
sub FRM_PWM_State($$$$)
{
my ($hash, $tim, $sname, $sval) = @_;
STATEHANDLER: {
$sname eq "value" and do {
FRM_PWM_Set($hash,$hash->{NAME},$sval);
last;
}
}
}
sub
FRM_PWM_Undef($$)
{