[erledigt] Ergänzung console.js - Create Device um DOIF

Begonnen von Ellert, 11 März 2017, 13:44:31

Vorheriges Thema - Nächstes Thema

Ellert

Mit dem anliegenden Patch kann eine DOIF Definition auch aus dem Event-Monitor über den Button "Create/Modify Device" erzeugt werden.

Es wäre schön, wenn das offiziell werden könnte.

Gruß
Ellert

rudolfkoenig

Sorry aber:
- der diff ist mir zu gross
- Falls DOIF nicht ausgewaehlt ist, werden zu viele Leerzeichen dargestellt
- im DOIF Fall sind mir zu viele Optionen vorhanden.
- Jede DOIF Option wird mit "(DOIF only)" abgeschlossen (?)
- Falls man auf modify umschaltet, bleiben die DOIF Optionen da obwohl gerade ein FileLog ausgewaehlt ist
- Bei Zahlen wird der Regexp nicht angeboten.

Ich biete an DOIF ohne weitere Optionen einzubauen, es gibt nur, wie bei allen anderen die Moeglichkeit zwischen Exakt und Zahl-Regexp zu waehlen.

Ellert

Ja, es sind viele Optionen. (only DOIF) war drin als ich noch nichts ausgeblendet hatte.

Die häufigste, typische Angabe im DOIF ist

[<devicename>:<readingname>]

für den für den numerischen Teil dann

[<devicename>:<readingname>:d]

wenn Du das einbauen würdest, wäre es perfekt.

Ellert

Im ersten Beitrag habe ich die überarbeitete Datei angehängt.

- diff ist etwas kleiner
- die Leerzeilen sind raus
- nur die 2 häufigsten, doiftypischen Varianten werden dargestellt
- der angezeigte Text ist überarbeitet
- beim Umschalten auf modify werden die richtigen Optionen angezeigt
  Allerdings gelingt es mir nicht die Selection auf die jeweils erste Option zu setzen, da komme ich nicht weiter und benötige Hilfe.
- regexp ist nicht doiftypisch, daher habe ich die [device:reading]-Variante gewählt. Ich hoffe das ist trotzdem o.k.

rudolfkoenig

Zitat- regexp ist nicht doiftypisch, daher habe ich die [device:reading]-Variante gewählt.
Event ist nicht gleich Reading: es gibt Events wie "global DEFINED dummy" und "global DELETED dummy", aber das findet man nicht im state von global. Wuerde eine als
define global_DOIF_1 DOIF ([global:state]) ()
definierte Instanz (wie dein Patch das vorschlaegt) darauf reagieren?

Ellert

#5
Es ist eine gültige DOIF Definition.

Aber global ist natürlich ein Sonderfall und [global:state] ist immer 0. Für jedes Gerät das state hat, ist diese Angabe sinnvoll und das ist die Mehrzahl.
Konkret wechselt DOIF auf cmd_2.

Wenn ich mehr Optionen haben dürfte, dann könnte man eine sinnvollere Variante wählen.
Oder wenn ich nicht auf Exakt und Zahl-Regexp beschränkt wäre, würde ich einmal

[device:reading] anbieten und ["^device$:^reading: "] entspricht device:reading.*

Konkret für global würde es so aussehen ["^global$:"] (entspricht global:.*) das kann man dann weiter individualisieren mit einer Ausgabeformatierung des Event-Wertes.

Wenn man auf den Typ auslösen möchte mit ( ["^global$:":"DEFINED (.*)":$1,"none"] eq "dummy") so etwas kann man nicht vorwegnehmen, dass muss jeder Benutzer selbst entscheiden und ergänzen.


rudolfkoenig

Ich bin weiterhin verwirrt. Das ist das Event-Monitor und nicht ein "Readings-Monitor".

Wenn du mir eine DOIF-Definitions-Schreibweise zeigst, was mit einem generischen Event-Regexp (kein READING) zurechtkommt, dann werde ich es übernehmen. Wenn DOIF lieber mit Readings arbeitet, dann ist der Event-Monitor die falsche Stelle, um es anzulegen. Man muss ja nicht zwangsweise alles hier einbauen, nur weil es ein FHEM Modul ist, ich habe auch nicht average oder readingsChange aufgenommen, nur weil es mit viel Fantasie in manchen Faellen irgendwie passen koennte.

Ellert

Ich hatte meinen Blick mehr auf den Button "Create/Modify Device" gerichtet und so verstanden, dass hier so eine Art grafisches Frontend zum Erzeugen von Definitionen entsteht, basierend auf Events.

Daher wollte DOIF-Operanden aus Events ableiten, so gesehen wäre der Event-Monitor schon eine geeignete Stelle.

Ich habe auch immer noch diese Äusserung im Sinn
Zitat von: rudolfkoenig am 11 Februar 2017, 20:37:24
... Eigentlich duerfte man IF und DOIF erst dann verwenden, wenn man verstanden hat, dass das jeweils Module mit eigener Syntax sind, und nicht perl. ...
und denke, dass die DOIF-Syntax an möglichst vielen Stellen und möglichst früh mit der notify-Syntax zu sehen sein sollte, damit der Unterschied sichtbar wird und auch Anfänger erkennen, dass es zweierlei Dinge sind.

Daher auch meine Bemühungen, die DOIF-Syntax neben der von notify und at im Wiki-Artikel "Erste Schritte in FHEM" zu platzieren.

Ich werden mal versuchen einen DOIF-Operanden zu finden, der Deinen Vorstellung entspricht, danke erstmal.

Ellert

Im ersten Beitrag habe ich die überarbeitete Datei angehängt.

Es geht auch mit einer neuen Codezeile.  :D

Wäre es nicht auch für notify interessant eine dritte Option zu haben: "with any value matching"?

rudolfkoenig

ZitatEs geht auch mit einer neuen Codezeile.  (https://forum.fhem.de/Smileys/default/cheesy.gif)
Habs eingecheckt.

ZitatWäre es nicht auch für notify interessant eine dritte Option zu haben: "with any value matching"?
Das widerspricht mAn dem Sinn vom Event-Monitor. Sowas sollte man vom Detailansicht des Geraetes machen, da kann man ja auch FHEMWEB-Code (bei at und notify nenne ich es Wizard) bauen.