Hallo, ich möchte den Returnwert eines Scripts als Wert in FHEM setzen.
Wie mache ich das?
Hier das Script:
sub RPiReadADC ($)
{
my ($port) = @_;
if (-e "/usr/local/bin/adc")
{
# read the adc value
my $command = "adc " . $port;
my $result = qx($command);
return $result;
}
else {return "error: ADC is not installed"};
}
Der Rückgabewert soll dann in FHEM verwendet werden.
Danke.
Hallo,
wie in fhem verwenden??
evtl. ein Reading bei einem dummy setzen!?
dummy definieren:
define returnDummy dummy
und am ende der sub:
{fhem "setreading returnDummy ReturnValue $result"}
statt:
return $result
Gruß, Joachim
Ich möchte das Script generisch lassen, damit ich per Parameter unterschiedliche ADC-Kanäle an verschiedene Variablen setzen kann,
z.B.
ADC_Kanal0 = RPiReadADC(0)
ADC_Kanal1 = RPiReadADC(1)
Wie kann ich den Returnwert in FHEM einer Dummy Variable zuweisen?
eigentlich so wie ich geschrieben habe...
in fhem.cfg das dummy Device 'ADC_Channels' definieren
define ADC_Channels dummy
sub RPiReadADC ($)
{
my ($port) = @_;
my $Channel = "ADC_Channel" . $port;
if (-e "/usr/local/bin/adc")
{
# read the adc value
my $command = "adc " . $port;
my $result = qx($command);
{fhem "setreading ADC_Channels $Channel $result"}
return $result; # wenn das irgendwo ausgewertet wird
}
else {return "error: ADC is not installed"}; # wenn das irgendwo ausgewertet wird. Ansonsten halt entsprechend ein anderes Reading setzen oder einen Fehlerwert für den Kanal $port...
}
Ich habe es jetzt herausgefunden:
define ADC_lesen dummy
define ADC_Kanal_0 dummy
define ADC_Kanal_1 dummy
define ADC_Kanal_2 dummy
define ADC_Kanal_3 dummy
define nt_ADC_lesen notify ADC_lesen { my $ADC_Kanal0 = RPiReadADC(0);;\
my $ADC_Kanal1 = RPiReadADC(1);;\
my $ADC_Kanal2 = RPiReadADC(2);;\
my $ADC_Kanal3 = RPiReadADC(3);;\
fhem("set ADC_Kanal_0 $ADC_Kanal0");;\
fhem("set ADC_Kanal_1 $ADC_Kanal1");;\
fhem("set ADC_Kanal_2 $ADC_Kanal2");;\
fhem("set ADC_Kanal_3 $ADC_Kanal3");;\
}
Danke für die Tipps.
Gerne, wenn's geholfen hat...
Viel Spaß/Erfolg weiterhin...