[GELÖST] Doif initialisirungsproblem mit Disable

Begonnen von Robert1963, 11 November 2019, 10:33:54

Vorheriges Thema - Nächstes Thema

Frank_Huber

Zitat von: Damian am 11 November 2019, 20:36:46
Ein Reboot führt aber eine Definition aus, es sollte keine Unterschiede bei der Erkennung der Syntax geben. Wenn doch, dann brauche ich einen nachvollziehbaren Beweis.
Ja, dann sollte es egal sein ob reboot oder Änderung.
Ich werd morgen mal den Code des TE testen.
Klingt schon dubios.

Gesendet von meinem Telekom Puls mit Tapatalk


Damian

Mal nebenbei, weil ich gerade nach Änderungen gesucht habe: Das DOIF-Modul hat seit seiner Entstehung im Jahre 2014 inzwischen 122 Anpassungen (neue Features, Bugfixes) erfahren  ;D
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Zitat von: Damian am 11 November 2019, 20:54:59
Mal nebenbei, weil ich gerade nach Änderungen gesucht habe: Das DOIF-Modul hat seit seiner Entstehung im Jahre 2014 inzwischen 122 Anpassungen (neue Features, Bugfixes) erfahren  ;D
Und bestimmt einige tausend Stunden Arbeit.
Hut ab dafür. [emoji6]

Gesendet von meinem Telekom Puls mit Tapatalk


Damian

Zitat von: Frank_Huber am 11 November 2019, 20:56:24
Und bestimmt einige tausend Stunden Arbeit.
Hut ab dafür. [emoji6]

Gesendet von meinem Telekom Puls mit Tapatalk

Bestimmt! Tja, wenn man einmal anfängt ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Robert1963


Habe mit einem Testdoif eine kleine Testreihe durchgeführt.
Zwei Faktoren (Führenes Kommentar und Attribut Disable = 0 ) in unterschiedlichter Konstellationen.
Ergebniss:
Um ein defektes  DOIF mit führendem Kommentar und Attribut Disable = 0 wieder zum laufen zu bringen reicht das entfernen des Kommentars aus. Braucht kein reboot.
Das selbe defekte DOIF kann aber auch durch entfernen des Attribut Disable = 0 und anschließendem reboot wieder zum laufen gebracht werden.

Zur Zeit läuft es alles bei mir, mach mir nur Sorgen das meine ganze Haussteuerung auf tönernen Füßen steht.

Bin kein Programierer, möchte nur mein Haus steuern (plus Spieltreib ;-) ) , bin durch das leichter zu verstehende FHEM-DOIF in der Lage mein ganzes Haus zu steuern und das auch noch nach Monaten zu verstehen.
Ganz vielen Dank dafür.
Die Entwicklung vom Perl-DOIF ist für mich toomuch.
Ich kauf lieber nen potenteren Rechner der mir meine Dummheiten verzeiht. ::)

Woran kann ich eigentlich feststellen ob mein DOIF als Fhem DOIF bzw. Perl DOIF erkannt wurde?
Ich finde den Vorschlag von Frank ganz schön
ZitatDamian, könnte man nicht die Raute erkennen und dann diese Zeile des DEF ignorieren für die Modus Erkennung?
.
Hatte gedacht, das eine Kommentarzeile immer ignoriert wird.

Nuc 7i7, Ubuntu 20.04.2 LTS, FS20, Homematic, EnOcean, Hue, Conbee, Fritzbox 6490kd,

Damian

Die Frage ist erst mal: Hast du mit deiner Testreihe ein "Defekt" reproduzieren können? Wenn ja, dann poste mal ein Testdoif, welches nicht funktioniert hat.

Wie hier schon geschrieben, ## als Kommentar vor der ersten Klammer auf stört nicht - es wird überlesen.

Ebenfalls, wie hier schon geschrieben, im Internal "Model" siehst du den erkannten Modus.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Ein Import des Code aus dem Start-Post (ohne setstate Zeilen) bringt mir den Perl Modus.

Die Ursache ist auch gefunden: Die Leerzeilen zwischen den Kommentaren am Anfang.

Mach es so und es geht: (Auch "##" vor die Leerzeilen)
defmod act_DOIF_wz_Roll_Terassenseite_I DOIF ## Rollladensteuerung Wohnzimmer Terrassenseite\
###\
## Rolladen werden den Schaltimpuls gesteuert. Der Status bzw. die Statusänderung, erzeugt kein Fahrbewegung.\
## Dadurch kann man die Position manuell ändern ohne das, wg. des veränderten Status, der Rollladen wieder zurück fährt\
##\
## Der Rolladen fährt 60 sec nach Schaltvorgang (Damit nicht alle Rolläden gleizeitig fahren)\
## Beim senken wird der Rolladen nach 60 sec, zur Sicherheit, noch mal runter gefahren\
##\
## Plichten:\
## Wenn Anwesend und Wach Rollladen immer hoch\
## Wenn Abwesend Rollladen immer im Tag/Nachtwechsel\
## Der Rolladen fäfrt nicht, nach man. verfahren, auf alte Position zurück\
##\
## 1\
##  wenn Tag eingeschaltet wird, Rolladen immer hoch\
([TagRollladen:"on"]) \
\
(set wz_Roll_Terrassenseite Auf)\
\
## 2\
## Wenn auf Anwesend geschaltet wird (Nachts nach hause kommend)\
DOELSEIF\
([Anwesenheit_Status:"Anwesend"]) \
\
(set wz_Roll_Terrassenseite Auf)\
\
## 3\
## Wenn auf wach geschaltet wird, Rolladen immer hoch\
DOELSEIF\
([WachSchlafen:"wach"] )\
\
(set wz_Roll_Terrassenseite Auf)\
\
\
\
## 4\
## Wenn auf Nacht geschaltet wird und nicht Zuhause Rolladen runter\
DOELSEIF\
([TagRollladen:"off"] and [Anwesenheit_Status] eq "Abwesend") \
\
(set wz_Roll_Terrassenseite Ab)\
\
## wait 60\
(set wz_Roll_Terrassenseite Ab)\
\
\
## 5\
## Wenn auf Abwesend geschaltet wird und Nacht\
DOELSEIF\
([Anwesenheit_Status:"Abwesend"] and  [TagRollladen] eq "off") \
\
(set wz_Roll_Terrassenseite Ab)\
\
## wait 60\
(set wz_Roll_Terrassenseite Ab)\
\
\
## 6\
## Wenn auf schlafen geschaltet wird und Nacht Rolladen immer runter\
DOELSEIF\
([WachSchlafen:"schlafen"] and  [TagRollladen] eq "off")\
\
(set wz_Roll_Terrassenseite Ab)\
\
## wait 60\
(set wz_Roll_Terrassenseite Ab)\
\
\

attr act_DOIF_wz_Roll_Terassenseite_I disable 0
attr act_DOIF_wz_Roll_Terassenseite_I do always
attr act_DOIF_wz_Roll_Terassenseite_I room Rollladen
attr act_DOIF_wz_Roll_Terassenseite_I wait 60:60:60:60,60:60,60:60,60
attr act_DOIF_wz_Roll_Terassenseite_I widgetOverride cmdState:textField-long wait:textField-long


Robert1963

MODEL hab ich jetzt endlich gefunden, Asche auf mein Haupt.  :-[
Aber damit ist alle klar.
Kann das jetzt mit jedem DOIF nachspielen.
Neben dem führendem Kommentat, kommen auch Leerzeilen vor der ersten Klammer und das Attribut Disabel zum tragen.

Gerade Probiert. Funktioniert.... ich glaubs ja nicht ;)
Damit kann ich leben :)

Ist mein Vormittag gerettet... editieren der DOIFs..

Vielen Dank für euren Mühe und Nachsicht
Nuc 7i7, Ubuntu 20.04.2 LTS, FS20, Homematic, EnOcean, Hue, Conbee, Fritzbox 6490kd,

Frank_Huber

Zitat von: Damian am 12 November 2019, 08:25:52
Wie hier schon geschrieben, ## als Kommentar vor der ersten Klammer auf stört nicht - es wird überlesen.

Moin Damian,

Ich überarbeite meinen Vorschlag von gestern:
-> wäre es evtl sinnvoll alles außer "(" und "{" am Anfang der DEF zu ignorieren?
Beginnt die DFF mit "{" --> Perl Modus
Beginnt die DEF mit "(" --> FHEM Modus.
Alle anderen Zeichen haben hier eh keine Funktion und führen zu Probleme.

Grüße
Frank

Damian

Zitat von: Frank_Huber am 12 November 2019, 09:49:33
Moin Damian,

Ich überarbeite meinen Vorschlag von gestern:
-> wäre es evtl sinnvoll alles außer "(" und "{" am Anfang der DEF zu ignorieren?
Beginnt die DFF mit "{" --> Perl Modus
Beginnt die DEF mit "(" --> FHEM Modus.
Alle anderen Zeichen haben hier eh keine Funktion und führen zu Probleme.

Grüße
Frank

Es muss schon die korrekte Syntax eingehalten werden. Irgendwelche Zeichen zwischen den Blöcken gehören nicht in die Definition - das würde in keiner Programmiersprache gut gehen.

Kommentare, Leerzeichen, Tabulatoren und Leerzeilen werden jetzt schon ignoriert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Zitat von: Damian am 12 November 2019, 11:11:14
Es muss schon die korrekte Syntax eingehalten werden. Irgendwelche Zeichen zwischen den Blöcken gehören nicht in die Definition - das würde in keiner Programmiersprache gut gehen.

Kommentare, Leerzeichen, Tabulatoren und Leerzeilen werden jetzt schon ignoriert.
d.h. das Problem hier war nicht die Leerzeile an sich, sondern der "\" in der Leerzeile?
Oder wie kommt es zu dem Fehlverhalten?

Ist echt interessant, importiere ich den Code über die RAW DEF ist das DOIF im Perl Modus.
Gehe ich in den DEF Editor und wieder raus ohne etwas zu ändern ist er im FHEM Modus.

in der RAW DEF sind die Zeilenabschlüsse als "\" ausgeführt, im DEF sind diese dann nicht mehr drin.
Könnte hier die Ursache liegen?



Damian

Zitat von: Frank_Huber am 12 November 2019, 11:21:06
d.h. das Problem hier war nicht die Leerzeile an sich, sondern der "\" in der Leerzeile?
Oder wie kommt es zu dem Fehlverhalten?

Ist echt interessant, importiere ich den Code über die RAW DEF ist das DOIF im Perl Modus.
Gehe ich in den DEF Editor und wieder raus ohne etwas zu ändern ist er im FHEM Modus.

in der RAW DEF sind die Zeilenabschlüsse als "\" ausgeführt, im DEF sind diese dann nicht mehr drin.
Könnte hier die Ursache liegen?

"\" am Zeilenende kommt nicht von DOIF, sondern ist das Zeilenende-Zeichen, wenn die Definition über mehrere Zeilen geht. Dieses Zeichen wird von FHEM automatisch hinzugefügt.

Im DEF-Editor werden diese Zeichen nicht dargestellt. Dafür sind sie in der cfg-Datei bzw. in der RAW-DEF. Das ist bei allen Modulen so und keine Eigenschaft von DOIF.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frank_Huber

Zitat von: Damian am 12 November 2019, 11:28:56
"\" am Zeilenende kommt nicht von DOIF, sondern ist das Zeilenende-Zeichen, wenn die Definition über mehrere Zeilen geht. Dieses Zeichen wird von FHEM automatisch hinzugefügt.

Im DEF-Editor werden diese Zeichen nicht dargestellt. Dafür sind sie in der cfg-Datei bzw. in der RAW-DEF. Das ist bei allen Modulen so und keine Eigenschaft von DOIF.
Das sagt ja auch niemand.

Aber wo ist der Unterschied?
- importieren per RAW DEF --> Perl Modus
- öffnen un schließen der DEF ohne Änderung --> FHEM Modus?

Klar ist dass jede Kommentarzeile mit ## Beginnen sollte, auch eine leere.
Aber das Verhalten hier muss ja eine Ursache haben.

Damian

Zitat von: Frank_Huber am 12 November 2019, 11:32:35
Das sagt ja auch niemand.

Aber wo ist der Unterschied?
- importieren per RAW DEF --> Perl Modus
- öffnen un schließen der DEF ohne Änderung --> FHEM Modus?

Klar ist dass jede Kommentarzeile mit ## Beginnen sollte, auch eine leere.
Aber das Verhalten hier muss ja eine Ursache haben.

OK. Dann habe ich es falsch verstanden. Dann muss ich es mir mal genauer anschauen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Fehler gefunden. Es hatte etwas mit dem disable 0 Attribut zu tun. Die Leerzeilen oder Kommentare waren nicht das Problem. Neue Version morgen per Update verfügbar.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF