Kombination von 67_ECMDDevice.pm SetExtensions.pm Integration on-for-timer etc.

Begonnen von alexsavi, 18 Januar 2017, 18:04:35

Vorheriges Thema - Nächstes Thema

alexsavi

Ich nutze das ECMDDevice-Modul seit einiger Zeit
und würde nun gerne das Modul SetExtensions.pm damit kombinieren.

Meine ECMDDevices sind meistens Aktoren (Relais usw.) In den .classdef-Dateien habe ich
Set- und Reset-Befehle realisiert. Nun möchte ich neben diesen Befehlen vgl. mit FS20
Steckdosen oder Intertechno-Funksteckdosen auch bei ECMD-Geräten folgende Befehle verwenden:

"on-for-timer"
    "off-for-timer"
    "on-till"
    "off-till"
    "on-till-overnight"
    "off-till-overnight"
    "blink"
    "intervals"
    "toggle"

Sieht jemand eine Möglichkeit das SetExtensions.pm in das 67_ECMDDevice.pm Modul zu integrieren?
Oder gibt es eine Variante dieses Feature direkt in die .classdef-Dateien
der ECMD-Devices hinein zu schreiben?

Meine Versuche führen bis dato leider nur zu Fehlern.


Joe_D

Hallo Zusammen,

falls es noch jemand braucht - bei mir geht es so, in 67_ECMDDevice.pm Zeile 31 folgende violette Ziele hinzufügen:

Zitatpackage main;

use strict;
use warnings;
use Time::HiRes qw(gettimeofday);
use SetExtensions;

sub ECMDDevice_Get($@);
sub ECMDDevice_Set($@);

und in der Nähe von Zeile 268 die rote Zeile auskommentieren (oder löschen) und das Violette hinzufügen:

Zitatmy $cmdname= $a[1];

        my $IOhash= $hash->{IODev};
        my $classname= $hash->{fhem}{classname};
        if(!defined($IOhash->{fhem}{classDefs}{$classname}{sets}{$cmdname})) {
                my $sets= $IOhash->{fhem}{classDefs}{$classname}{sets};
                my $list = join(' ', sort keys %$sets);
                return SetExtensions($hash, $list, $name, $cmdname, @a[2 .. $#a]);
                #return "Unknown argument $cmdname, choose one of " . join(' ', sort keys %$sets);
        }

Fertig!  ;) Mein ECMDDevice kann nun auch on-for-timer, etc. pp...

Gruß

   Jochen