set state from statefile on startup
git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@2890 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -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($$)
|
||||
{
|
||||
|
||||
@@ -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($$)
|
||||
{
|
||||
|
||||
@@ -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($$)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user