Set extensions

Begonnen von rudolfkoenig, 27 Januar 2013, 22:23:11

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Hab ein SetExtensions.pm angelegt, um die in manchen Modulen von mir vermisste set Befehle (on-for-timer, off-for-timer, on-till, off-till, blink, intervals) nur einmal zu realisieren. Verwendet wird es z.Zt in EnOcean, ZWave und FS20.
Voraussetzung fuer die aktuell implementierten Befehle ist das Vorhandensein von on und off, oder ein eventMap mapping auf on/off, letzteres ist EnOcean-Spezial. Falls das Modul einen der Befehle implementiert, dann wird diese Version genommen. Normalerweise reicht es im Modul eine Zeile zu ersetzen: das alte
 return "Unknown argument $cmd, choose one of $list";
wird durch
 return SetExtensions($hash, $list, $name, $cmd, @a);
ersetzt, siehe die Beispiele in den erwaehnten Modulen. Von einen generischen Version, der keine Modulaenderung benoetigt, habe ich abgesehen, um nicht unnoetige Performance-Probleme zu bekommen. Ich habe es in commandref_frame.html/commandref_frame_DE.html dokumentiert, und in den erwaehnten Modulen ein Verweis in der Doku eingefuegt.

Ich erstelle noch einen Beitrag in den ZWave, EnOcean und SlowRF Gruppen, damit die Leute darauf reagieren koennen.


P.S.: sourceforge ist quaelend langsam, wenn das noch oefters vorkommt, dann fuehle ich mich genoetigt irgendwohin umzuziehen.

ntruchsess

das ist ja praktisch :-)

habs gleich mal in das 20_FRM_OUT.pm aufgenommen.

Gruß,

Norbert
while (!asleep()) {sheep++};

klausw

Hallo Rudi,

mir ist gerade etwas aufgefallen:

im RPI_GPIO Modul nutze ich die set extensions

ein set on-for-timer 10 beispielsweise funktioniert tadellos.

wenn ich jetzt allerdings ein Attribut eventMap on:an:noArg off:aus:noArg einfüge kommt bei set on-for-timer 10 folgende Fehlermeldung:

Unknown argument an-for-timer, choose one of on:noArg toggle:noArg off:noArg blink on-for-timer on-till off-for-timer intervals off-till

es werden also auch Teilstrings ersetzt.

Ich bin mir relativ sicher, das es im Januar noch funktioniert hat. (Bis dahin hatte ich es für die Weihnachtsbeleuchtung so in Betrieb)

Grüße
Klaus
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

betateilchen

Das ist kein Problem der SetExtensions sondern der eventMap generall - modulübergreifend taucht dieses Problem immer wieder mal hier im Forum auf.

Am vergangenen Wochenende wurde das Problem schonmal hier diskutiert: http://forum.fhem.de/index.php/topic,27462.0.html


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

#4
Zitat von: betateilchen am 11 November 2014, 14:47:20
Das ist kein Problem der SetExtensions sondern der eventMap generall - modulübergreifend taucht dieses Problem immer wieder mal hier im Forum auf.
Wie ich sehe bist Du kein Freund davon  8)
Lässt du einfach on/off stehen oder gibt es eine ander Lösung?

Aber zurück zur setextensions:
ich habe gerade gesehen, das jetzt auch Toggle unterstützt wird.
Habe es testweise ins RPI_GPIO Modul eingebaut (also den eigenen toggle gelöscht) und es funktioniert.
Allerdings ist es noch nicht in der commandref zu finden.
Ist Toggle im Moment ein experimentelles Feature?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

ntruchsess

ich bin auch kein Freund der eventmap. Da wird die Backend-funktionalität zu sehr mit der Darstellung im Frontend vermischt. Völlig klar, dass man die Darstellung internationalisieren möchte, aber warum muss das auch für die Rohdaten und Kommandozeilenbefehle gelten? Das ist ja fast so wie zu der Zeit, als damals Microsoft die VB-libraries in verschiedenen Landessprachen rausgebracht hat ;-)
In einen guten Frontend gibt man (wenn alles konfiguriert ist) keine Befehle mehr ein, sondern klickt die passenden Icons. In dem Augenblick ist es dann irrelevant bzw. überflüssig, ob bzw dass der im Hintergrund ablaufende Befehl dann übersetzt ist, oder nicht.
while (!asleep()) {sheep++};