Returnwert als Variable setzen

Begonnen von JMW, 17 April 2016, 22:08:56

Vorheriges Thema - Nächstes Thema

JMW

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.

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

JMW

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?

MadMax-FHEM

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...

}

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

JMW

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.

MadMax-FHEM

Gerne, wenn's geholfen hat...

Viel Spaß/Erfolg weiterhin...
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)