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->{SetFn} = "FRM_LCD_Set";
|
||||||
$hash->{UndefFn} = "FRM_LCD_Undef";
|
$hash->{UndefFn} = "FRM_LCD_Undef";
|
||||||
$hash->{AttrFn} = "FRM_LCD_Attr";
|
$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";
|
$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
|
# 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
|
sub
|
||||||
FRM_LCD_Undef($$)
|
FRM_LCD_Undef($$)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ FRM_OUT_Initialize($)
|
|||||||
$hash->{DefFn} = "FRM_Client_Define";
|
$hash->{DefFn} = "FRM_Client_Define";
|
||||||
$hash->{InitFn} = "FRM_OUT_Init";
|
$hash->{InitFn} = "FRM_OUT_Init";
|
||||||
$hash->{UndefFn} = "FRM_OUT_Undef";
|
$hash->{UndefFn} = "FRM_OUT_Undef";
|
||||||
|
$hash->{StateFn} = "FRM_OUT_State";
|
||||||
|
|
||||||
$hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
|
$hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
|
||||||
}
|
}
|
||||||
@@ -27,6 +28,10 @@ FRM_OUT_Init($$)
|
|||||||
my ($hash,$args) = @_;
|
my ($hash,$args) = @_;
|
||||||
my $ret = FRM_Init_Pin_Client($hash,$args,PIN_OUTPUT);
|
my $ret = FRM_Init_Pin_Client($hash,$args,PIN_OUTPUT);
|
||||||
return $ret if (defined $ret);
|
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);
|
main::readingsSingleUpdate($hash,"state","Initialized",1);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@@ -48,9 +53,9 @@ FRM_OUT_Set($@)
|
|||||||
return SetExtensions($hash, $list, $name, @a);
|
return SetExtensions($hash, $list, $name, @a);
|
||||||
}
|
}
|
||||||
my $iodev = $hash->{IODev};
|
my $iodev = $hash->{IODev};
|
||||||
|
main::readingsSingleUpdate($hash,"value",$cmd, 1);
|
||||||
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
|
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
|
||||||
$iodev->{FirmataDevice}->digital_write($hash->{PIN},$value);
|
$iodev->{FirmataDevice}->digital_write($hash->{PIN},$value);
|
||||||
main::readingsSingleUpdate($hash,"state",$cmd, 1);
|
|
||||||
} else {
|
} else {
|
||||||
return $name." no IODev assigned" if (!defined $iodev);
|
return $name." no IODev assigned" if (!defined $iodev);
|
||||||
return $name.", ".$iodev->{NAME}." is not connected";
|
return $name.", ".$iodev->{NAME}." is not connected";
|
||||||
@@ -58,6 +63,18 @@ FRM_OUT_Set($@)
|
|||||||
return undef;
|
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
|
sub
|
||||||
FRM_OUT_Undef($$)
|
FRM_OUT_Undef($$)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ FRM_PWM_Initialize($)
|
|||||||
$hash->{DefFn} = "FRM_Client_Define";
|
$hash->{DefFn} = "FRM_Client_Define";
|
||||||
$hash->{InitFn} = "FRM_PWM_Init";
|
$hash->{InitFn} = "FRM_PWM_Init";
|
||||||
$hash->{UndefFn} = "FRM_PWM_Undef";
|
$hash->{UndefFn} = "FRM_PWM_Undef";
|
||||||
|
$hash->{StateFn} = "FRM_PWM_State";
|
||||||
|
|
||||||
$hash->{AttrList} = "IODev loglevel:0,1,2,3,4,5 $main::readingFnAttributes";
|
$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);
|
my $ret = FRM_Init_Pin_Client($hash,$args,PIN_PWM);
|
||||||
return $ret if (defined $ret);
|
return $ret if (defined $ret);
|
||||||
my $firmata = $hash->{IODev}->{FirmataDevice};
|
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);
|
main::readingsSingleUpdate($hash,"state","Initialized",1);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@@ -47,9 +52,9 @@ FRM_PWM_Set($@)
|
|||||||
my $command = $a[1];
|
my $command = $a[1];
|
||||||
my $value = $a[2];
|
my $value = $a[2];
|
||||||
my $iodev = $hash->{IODev};
|
my $iodev = $hash->{IODev};
|
||||||
|
main::readingsSingleUpdate($hash,"value",$value, 1);
|
||||||
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
|
if (defined $iodev and defined $iodev->{FirmataDevice} and defined $iodev->{FD}) {
|
||||||
$iodev->{FirmataDevice}->analog_write($hash->{PIN},$value);
|
$iodev->{FirmataDevice}->analog_write($hash->{PIN},$value);
|
||||||
main::readingsSingleUpdate($hash,"state",$value, 1);
|
|
||||||
} else {
|
} else {
|
||||||
return $hash->{NAME}." no IODev assigned" if (!defined $iodev);
|
return $hash->{NAME}." no IODev assigned" if (!defined $iodev);
|
||||||
return $hash->{NAME}.", ".$iodev->{NAME}." is not connected";
|
return $hash->{NAME}.", ".$iodev->{NAME}." is not connected";
|
||||||
@@ -57,6 +62,18 @@ FRM_PWM_Set($@)
|
|||||||
return undef;
|
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
|
sub
|
||||||
FRM_PWM_Undef($$)
|
FRM_PWM_Undef($$)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user