Gibt es die Möglichkeit direkt über die Eingabezeile Ausdrücke zu testen z.b. für Notify,DOIF o.ä.?
Geht über die Eingabezeile Deines Browsers:
http://www.gidf.de/regex+testen (http://www.gidf.de/regex+testen)
8)
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 ?
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
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....
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 ?
OK, der Status gibt bei AT,Notify und Doif den aktuellen Zustand wieder
Sry für die dumme Frage
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.
Stimmt, beim notify trifft das nicht zu.
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 ?
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.
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.
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.
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
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.
Zitat von: chris_z am 09 März 2015, 05:21:48
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
Das kannst du auch. DOIF benutzt weitgehend die gleiche Syntax wie der IF-Befehl (nicht mit perl-if verwechseln).
Du könntest z. B. in der Kommandozeile eingeben:
IF ([CUL_HM_HM_CC_RT_DN_2E970E_Clima:desired-temp] eq 12.0 and [Schlafzimmer.DHT11:Humidity]) ({1}) ELSE ({0})
Entweder kommt 1 heraus bei wahr, 0 bei falsch, eine Fehlermeldung von IF oder eine Fehlermeldung vom Perlinterpreter, denn der Ausdruck wird aufbereitet und an Perl-if übergeben. In der deutschen Commandref zu IF, wird aufgezeigt wie die Umwandlung zu Perl-if aussieht.
Gruß
Damian
Unknown command if, try help.
Irgendwie spinnt mein fhem rum:
define test dummy
>Unknown module dummy
Vielleicht doch erstmal einen Blick ins Einsteiger-PDF werfen?
Da steht bestimmt auch was über die richtigen Zugriffsrechte auf die Dateien. Weiß nicht, obs daran liegt, aber das würde ich als erstes prüfen.
Bei Deinem DOIF machst Du einen numerischen Vergleich, dafür nimmt man ==. eq ist zum Vergleichen von Zeichenketten.
Und das Reading heisst bei vielen Sensoren humidity (klein h!).
... und if != IF !
Groß-/Kleinschreibung beachten...
die Fehlermeldung kommt immer kleingeschrieben. Zugriffsrechte sollten stimmen ich hab seit Monaten ausser updates nix an der Installation gemacht.
Reading namen stimmen. (versteh den Kommentar mit dem h auch nicht)
Ich hab die rechte jetzt nochmal explizit gesetzt - keine Änderung
Beim dummy ist der Witz ja zusätzlich das ich in meiner Config 6 dummy devices hab, die legt fhem an und sind benutzbar. Von der Kommandozeile darf ich plötzlich keine dummys mehr anlegen. Wo ist da der Unterschied ?
@Damian übrigends vielen dank für die Lösung das ist genau das was ich gesucht hab :)
Wie lautet denn bei dir die Ausgabe von version?
# $Id: fhem.pl 8115 2015-03-01 12:53:35Z rudolfkoenig $
# $Id: 00_CUL.pm 7770 2015-01-30 07:04:52Z rudolfkoenig $
# $Id: 10_CUL_HM.pm 8137 2015-03-02 19:15:59Z martinp876 $
# $Id: 93_DbLog.pm 6573 2014-09-19 17:08:11Z tobiasfaust $
# $Id: 36_EMT7110.pm 6490 2014-08-31 16:31:08Z hcs-svn $
# $Id: 01_FHEMWEB.pm 8097 2015-02-26 06:47:28Z rudolfkoenig $
# $Id: 95_FLOORPLAN.pm 8062 2015-02-22 08:18:15Z ulimaass $
# $Id: 92_FileLog.pm 7854 2015-02-03 19:23:22Z rudolfkoenig $
# $Id: 98_HTTPMOD.pm 7313 2014-12-23 09:37:35Z ststrobel $
# $Id: 98_IF.pm 6855 2014-11-01 19:12:51Z damian-s $
# $Id: 36_JeeLink.pm 7805 2015-01-31 19:26:58Z justme1968 $
# $Id: 36_LaCrosse.pm 7027 2014-11-20 20:08:00Z justme1968 $
# $Id: 73_PRESENCE.pm 7485 2015-01-09 16:16:07Z markusbloch $
# $Id: 99_SUNRISE_EL.pm 6765 2014-10-14 18:24:29Z rudolfkoenig $
# $Id: 59_Twilight.pm 7462 2015-01-06 17:13:36Z dietmar63 $
# $Id: 99_Utils.pm 7914 2015-02-08 11:14:10Z rudolfkoenig $
# $Id: 98_WOL.pm 8102 2015-02-26 20:13:38Z dietmar63 $
# $Id: 59_Weather.pm 6705 2014-10-07 17:41:42Z borisneubert $
# $Id: 90_at.pm 8098 2015-02-26 10:12:24Z rudolfkoenig $
# $Id: 98_autocreate.pm 8138 2015-03-02 19:26:54Z rudolfkoenig $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 91_eventTypes.pm 8136 2015-03-02 19:09:18Z rudolfkoenig $
# $Id: 98_help.pm 8148 2015-03-04 11:32:36Z betateilchen $
# $Id: 98_telnet.pm 8017 2015-02-17 11:10:16Z rudolfkoenig $
./FHEM/95_webViewControl.pm: Datei oder Verzeichnis nicht gefunden
# $Id: 98_weblink.pm 5608 2014-04-23 10:57:16Z rudolfkoenig $
Ist aktuell. Mach mal ein reload 98_dummy.
läuft. Danke.