Problem mit watchdog

Begonnen von tomspatz, 26 Januar 2016, 07:55:33

Vorheriges Thema - Nächstes Thema

t.huber

Hm, also du meinst daß sich der Watchdog bzw. die Semikolonverwendung deswegen so "unlogisch" aus Sicht von Anfängern verhält weil sich die Commands wie Watchdogs u.ä. teilweise anders verhalten.
Je nach dem ob sie direkt oben in der Commandleiste eingegeben werden oder ob sie als fertige Definition in der fhem.cfg stehen ?

Wenn dem so wäre kann ich dazu in der FHEM-Referenz nichts zu dem Thema finden.
Das wäre auch doppelt schlecht da nahezu alle Beispiele und Anleitungen den Watchdog mit 2 Semikolons zeigen.

Das wäre ja für Anfänger katastrophal da eigentlich kein Anfänger gleich eine fertige Definiton fertig 100%ig richtig gleich oben eingeben kann.
Das entsteht speziell am Anfang immer durch Anpassen der DEF des Watchdogs im FHEMWEB.

Danke auf alle Fälle schon mal für deine Mühe.

Zitat von: BenniAlso 1 Semikolon würde in dem o.g. Beispiel erst den define des watchdog vornehmen und in dessen Ausführungsteil als Befehl das setreading aufhnehmen und nach dem define würde sofort versucht den watchdog mit Punkt zu triggern.
Also zuerst "setreading Bewegungsmelder state nomotion" und danach "trigger wd ."
Genau so macht er es tatsächlich richtig und so ist die praktische Beobachtung.
Aber das wäre genau das Gegenteil von den Anleitungen.

In der CommandRef steht:
ZitatZ.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.

Zitatdefine lampoff at 07:00 set Lamp1 off; set Lamp2 off
define lampoff at 07:00 set Lamp1 off;; set Lamp2 off
Also mit 1 Semikolon Lamp2 sofort und Lamp1 um 7Uhr.
Und mit 2 Semikolon beide um 7Uhr.

Genauso steht es in "Erste Schritt in FHEM":
ZitatAuch innerhalb eines notify (oder anderen fhem-Befehlen) kann man mehrere Befehle auflisten, jedoch ist hier eines zu beachten:
Zitatdefine n1 notify mySchalter1:on set myLampe1 on;set myLampe2 off
Die Befehle sind durch ein Semikolon getrennt. Effekt ist: Das notify schaltet myLampe1 wann immer mySchalter1 den Event on sendet. Der nächste Befehl in dieser Zeile ist set myLampe2 off. Dieser wird sofort bei der Eingabe der o.g. Befehlszeile abgearbeitet. Es schaltet also myLampe2 sofort, myLampe1 erst nach dem Event von mySchalter1.
Soll auch der zweite Befehl set myLampe2 off erst nach dem Event ausgeführt werden, muss ein doppeltes Semikolon genutzt werden:
Zitatdefine n1 notify mySchalter1:on set myLampe1 on;;set myLampe2 off

Das es in der Praxis sich genau anders herum verhalten kann steht nirgends.
Und leider steigert das meine Verwirrung eher als mich eindeutig zu einem "Aha !!" zu bringen.

Benni

Zitat von: t.huber am 31 Januar 2016, 14:13:32
Das es in der Praxis sich genau anders herum verhalten kann steht nirgends.

Das ist definitiv auch nicht der Fall, es verhält sich so, wie es da beschrieben steht, das war auch genau das was ich beschrieben habe.


t.huber

Ich glaube ich habe die Ursache des Problems gefunden.

Im DEF steht was anderes wie in der gespeicherten fhem.cfg  :o

Im DEF des Watchdogs:
(http://gdurl.com/vpjm)

In der fhem.cfg steht dann:
(http://gdurl.com/xilK)

Deswegen verhält sich der Watchdog auch mit einem eingestellten Semikolon im DEF anders als in den Anleitungen beschrieben. :(

Aus ;; im DEF wird dann z.B. ;;;; in der fhem.cfg


Ihr könnt mir natürlich irgendwas erzählen von "das ist schon richtig so" oder "It's no Bug its a feature" ...
Das ist in meinen Augen ein Fehler.
Es mag sein daß es aus Programmierer-Sicht logisch und richtig ist.
Aber genau so was führt dazu daß kein Anfänger die watchdogs versteht.
Sieht man ja schon allein daran wie oft das Problem im Forum angesprochen wird.

Benni

Jetzt wirfst du hier aber auch vollends alles durcheinander, DEF-Bereich, fhem.cfg und WebIF-Kommandozeile.

Ich habe deswegen explizit nur von der WebIF Kommandozeile (oder telnet) gesprochen und von der geht die Commandref an der Stelle auch aus.

Also nochmal, diesmal noch etwas abstrakter:
In der Kommandozeile musst du zwei Semikolons eingeben, wenn du nachher im DEF-Bereich eines stehen haben willst.

Genauso werden in die fhem.cfg 2 Semikolons geschrieben, wenn nachher im DEF-Bereich eines stehen soll. Es wird ja beim Start von FHEM im wesentlichen auch erst mal nichts anderes gemacht, als die devices wieder per define anzulegen, so als ob sie über die Kommandozeile eingegeben würden.

Und dass man sich als Anfänger am besten auch erst mal gar nicht um den Inhalt fhem.cfg kümmern sollte wurde ja auch schon in unzähligen Threads hier diskutiert.


t.huber

Zitat von: BenniIn der Kommandozeile musst du zwei Semikolons eingeben, wenn du nachher im DEF-Bereich eines stehen haben willst.

Genauso werden in die fhem.cfg 2 Semikolons geschrieben, wenn nachher im DEF-Bereich eines stehen soll.

Dann sind die sinngemäßen Inhalte der WebIF-Kommandozeile und der fhem.cfg gleich und nur in der DEF steht immer was anderes.
Oder ?

Dann wäre es egal das ich die fhem.cfg "dazugenommen habe".
Weil ja auch WebIF-Kommandozeile und DEF unterschiedlich sind.  :)
Das ist ja genauso schlimm.


Auf was beziehen sich dann die ganzen Anleitungen und Command-Ref's ?
Auf WebIF-Kommandozeile und fhem.cfg
oder auf die Definitionen in der DEF ?

marvin78

Leider ist das sehr unterschiedlich. Das ist sehr schade, ist aber so.

Otto123

Zitat von: t.huber am 31 Januar 2016, 17:27:56
Auf was beziehen sich dann die ganzen Anleitungen und Command-Ref's ?
Auf WebIF-Kommandozeile und fhem.cfg
oder auf die Definitionen in der DEF ?

Das ist wirklich schwierig  :-X
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz