Hauptmenü

Ausdrücke testen

Begonnen von chris_z, 07 März 2015, 04:59:23

Vorheriges Thema - Nächstes Thema

chris_z

Gibt es die Möglichkeit direkt über die Eingabezeile Ausdrücke zu testen z.b. für Notify,DOIF o.ä.?

MrRight

Geht über die Eingabezeile Deines Browsers:

http://www.gidf.de/regex+testen

8)

FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

chris_z

Reguläre Ausdrücke kennen doch keine Fhem devices und können ganz schlecht readings durchführen...

Wäre das falls es wirklich nicht existiert nicht ne gute Idee ?

Damian

Zitat von: chris_z am 07 März 2015, 04:59:23
Gibt es die Möglichkeit direkt über die Eingabezeile Ausdrücke zu testen z.b. für Notify,DOIF o.ä.?

Module, die über Weboberfläche definiert werden, werden mehr oder weniger einem Syntax-Check unterzogen, das was der Entwickler an Checks eingebaut hat. Beim Editieren der cfg-Datei fallen die Fehler erst beim Neustart auf, dann wird das Modul meisten erst gar nicht definiert. Beim DOIF werden immerhin fehlende Klammern bei der Definition erkannt.

Semantische Checks, also Funktionalität eines Moduls, lässt sich schnell mit Test-Dummys testen, die man jederzeit definieren und wieder löschen kann.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

MrRight

ZitatReguläre Ausdrücke kennen doch keine Fhem devices und können ganz schlecht readings durchführen...

Wäre das falls es wirklich nicht existiert nicht ne gute Idee ?

Was ich damit u. a. ausdrücken wollte, war, dass Deine Frage so allgemein ist, dass sie nicht wirklich sinnvoll zu beantworten ist. Was willst Du denn geprüft haben? Eine Syntaxprüfung erhältst Du z. B. bei einem "define notify" schnell. Reguläre Ausdrücke kannst Du an den verschiedensten Stellen im Internet prüfen lassen und die Gesamtfunktion kannst Du meist nur zur Laufzeit prüfen.

Du siehst, wir raten gerne, was Du meinst....

FHEM 5.7 auf Cubietruck mit MySQL
CUL + HMLAN + HUE Bridge + Firmata over Ethernet + Ardunino + 1wire + MiLight + FTUI + Homekit

chris_z

Naja was ich meine ist beim notify und doif zu schauen ob die Bedinungen gerade erfüllt wären.
Evntl beim at wann die Bedingung das nächste mal erfüllt wäre.

Ich habs mit nem Testdefine nicht hinbekommen. Gibts beim notify überhaupt ein reading oder internal das den aktuellen Zustand ausgibt ?

chris_z

OK, der Status gibt bei AT,Notify und Doif den aktuellen Zustand wieder
Sry für die dumme Frage

rudolfkoenig

Was soll beim notify der aktuelle Zustand sein?

Man kann notifies mit trigger testen. Die Argumente fuer trigger schaut man aus dem Event-Monitor oder "info timer" ab, wobei man den Zeitstempel und den Modulnamen weglaesst. In der Notify-Detailansicht gibts ein "Regexp Wizard", um Anfaengern die Angst von Regexps zu nehmen.

chris_z

Stimmt, beim notify trifft das nicht zu.

chris_z

War doch nicht so dumm, DOIF aktualisiert den Status erst wenn er sich ein mal geändert hat.

Ich bin seit 2h am programmieren und es nervt mich unheimlich das ich die Kryptischen Bedingungen nicht testen kann.
Dann wundert man sich nach 2 Tagen das der Kram nicht funktioniert.
Liegt vllt auch etwas dran das ich mit der Syntax nicht richtig warm werd. Wahrscheinlich geht das wenn man die Commandref einmal von vorn bis hinten durchgelesen hat. Aber soll das wirklich der Sinn der Erfindung sein ??

Wie macht ihr das ?

marvin78

So lange du keine Beispiele der "Ausdrücke" lieferst, die dir Probleme bereiten, kann dir wohl niemand wirklich helfen.

Die Commandref lesen und verstehen ist tatsächlich etwas, das man tun sollte. Zumindest für die Module, die man verwendet und den allgemeinen Teil. Es hilft zudem, das Einsteiger-PDF zu lesen. Lesen, verstehen und eigentlich sollte dann das definieren von ats und notifys kein Problem darstellen. Das ist alles kein Hexenwerk.

chris_z

Bei DOIFs ist das eigentliche Problem, ich finde keine Möglichkeit die Ausdrücke zu testen. Und nein der Hinweis auf die Doku hilft nicht. Beim programmieren hat man auch seit 40 Jahren Debugger. Da sagt auch keiner "wenn du dir das Statement 30x durchliest wird dir der Fehler auch schon auffallen"

Für notifys hab ich mit in FHEMcontrol nun schon ein Element gebaut das aus dem Log die betreffenden Elemente anzeigt.
Für ats sagt der state wann es das nächste mal auftritt das ist auch super.

marvin78

Wenn es um DOIF geht, bist du im falschen Forenbereich. Du solltest dich an den DOIF Entwickler wenden (maintainer.txt). Allerdings verstehe ich dein Problem nicht. Gibst du DOIFs über die Kommandozeile ein, werden Fehler im Detail angezeigt.

Im Übrigen ist die Doku für DOIF sehr umfangreich und sogar in deutsch. Das Problem bleibt für mich (auch aufgrund der fehlenden Beispiele) nicht nachvollziehbar.

chris_z

Z.b.
([CUL_HM_HM_CC_RT_DN_2E970E_Clima:desired-temp] eq 12.0 and [Schlafzimmer.DHT11:Humidity])

Was ich meine ist das es schick wäre wenn man solch einen Ausdruck in die Commandozeile werfen könnte und sehen welches ergebnis das jetzt bringen würde

marvin78

Aber da diese Ausdrücke von dem DOIF Autor "erfunden" wurden, bist du hier an der falschen Stelle. Außerdem verkennst du die Tatsache, dass es sich bei FHEM und seinen Modulen, wie DOIF, um Projekte freiwilliger Entwickler in ihrer Freizeit handelt. Da kannst du nicht den gleichen Standard für Debugging, wie bei einer professionellen Programmiersprache erwarten.

Testen kann man solche Dinge, in dem man sie triggert.