Hauptmenü

neues Modul DOIF

Begonnen von Damian, 21 Mai 2014, 15:53:18

Vorheriges Thema - Nächstes Thema

Roaster

Zitat von: ph1959de am 13 August 2014, 09:34:18
Hast Du mal versucht, das DOIF über das Befehls-Eingabefeld zu definieren? Gleiche Reaktion/Fehlermeldung?
Ja, soben mit

DOIF ([GarageTorRechtsZu:state] == "closed" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "closed")


Bei GarageTorRechtsZu und GarageTorRechtsAuf handelt es sich um Max Fensterkontakte, die ansonsten einwandfrei funktionieren. Ich habe sie hier auf dem Schreibtisch. Wenn ich diese Zeilen im Eingabefeld eingeben und Enter drücke erhalte ich:
ZitatUnknown command DOIF, try help.

Für mich bedeutet diese Meldung: DOIF ist nicht vorhanden  ??? oder Liege ich so falsch mit meiner Annahme? Wie muss ich das Modul dann korrekterweise installieren?

Damian

Zitat von: Roaster am 13 August 2014, 18:43:58
Für mich bedeutet diese Meldung: DOIF ist nicht vorhanden  ??? oder Liege ich so falsch mit meiner Annahme? Wie muss ich das Modul dann korrekterweise installieren?

und du hast mit "define modulname DOIF ...." angefangen?

Gruß

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

Roaster

Äh, ja sorry wurde von mir abgeschnitten:

define di_Fenster
DOIF ([GarageTorRechtsZu:state] == "closed" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "closed")


Brockmann

Zitat von: Roaster am 13 August 2014, 18:54:33
Äh, ja sorry wurde von mir abgeschnitten:

define di_Fenster
DOIF ([GarageTorRechtsZu:state] == "closed" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "opened")
DOELSEIF ([GarageTorRechtsZu:state] == "opened" and [GarageTorRechtsAuf:state] == "closed")


Wie gibst Du das denn wo ein? Diese Fehlermeldung kann nur kommen, wenn Du DOIF ohne vorgehendes define <Name> in derselben Zeile eingibst.
Selbst wenn DOIF nicht korrekt installiert wäre, würde es sonst ein "unknow module"-Fehler geben, aber kein "unknow command". Unknow Command bedeutet, dass Du DOIF als FHEM-Befehl verwendest, aber nicht als FHEM-Modul (wie es sein sollte).

Tippe mal in das Befehlsfeld des Weboberfläche folgenden Befehl (in einer Zeile!):
define DI_Fenster DOIF ([Dummy1])(set Dummy1 1)
Dummy1 muss es dabei nicht geben, zumindest wenn Du die aktuelle Version von DOIF benutzt.
Tritt dabei ein Fehler auf oder wird das DOIF angelegt?

Roaster

Oh Mann! Das muss einem aber auch mal gesagt werden, dass das ganze als Einzeiler geschrieben werden muss. Da wäre ich im Leben nicht darauf gekommen  :-\

Bin wohl zu sehr C# Compiler und Editor verwöhnt. Alles klar, nun läuft es auch für Dummies ;D

Vielleicht mal explizit ins erste Posting aufnehmen für solche wie mich  8)

Damian

#365
Zitat von: Roaster am 14 August 2014, 08:30:42
Oh Mann! Das muss einem aber auch mal gesagt werden, dass das ganze als Einzeiler geschrieben werden muss. Da wäre ich im Leben nicht darauf gekommen  :-\

Bin wohl zu sehr C# Compiler und Editor verwöhnt. Alles klar, nun läuft es auch für Dummies ;D

Vielleicht mal explizit ins erste Posting aufnehmen für solche wie mich  8)

Das stimmt nicht.

Du musst nur define di_Fenster DOIF in einer Zeile schreiben, damit DOIF von FHEM überhaupt erkannt wird (etwas anderes wirst du in meiner Doku nicht finden). Das hat aber nichts mit DOIF zu tun, sondern gilt für alle Module. Den Rest hinter DOIF kannst du im DEF-Editor auf einzelne Zeilen verteilen wie du willst. Ab da kommt der DOIF-Parser zum Zuge und der kann mit Zeilenumbrüchen umgehen.

Und noch was, Zeichenketten werden im Gegensatz zu Zahlen nicht mit == verglichen, sondern mit eq (siehe Beispiele in der Doku). Genaueres zu Perl-Operatoren siehe hier: http://de.selfhtml.org/perl/sprache/operatoren.htm

Gruß

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

Brockmann

Damit nicht gleich wieder Missverständnisse aufkommen: Wirklich nur define DI_Fenster DOIF in die Befehlszeile zu schreiben, hilft nicht wirklich.
Dadurch wird zwar ein DOIF definiert, aber das hat keinen DEF-Teil, den man bearbeiten könnte.
Ist das eigentlich so beabsichtigt bzw. ließe sich dass nicht ändern, so dass in diesem Fall einfach eine "leere" DEF angelegt wird?

Ansonsten scheint mir die Minimalversion derzeit define DI_Fenster DOIF ([bla]) zu sein, da hat man dann eine DEF, die man anschließend bearbeiten kann.

Und für von C#-Compiler und -Editor Verwöhnte:
Man kann den DEF-Editor durch eine abgespeckte Version von codemirror ersetzen, dann hat man auch Code-Highlighting, Bracket-Matching, Autocompletion usw. in der FHEM-Weboberfläche.

ph1959de

Zitat von: Brockmann am 14 August 2014, 09:34:50
...
Und für von C#-Compiler und -Editor Verwöhnte:
Man kann den DEF-Editor durch eine abgespeckte Version von codemirror ersetzen, dann hat man auch Code-Highlighting, Bracket-Matching, Autocompletion usw. in der FHEM-Weboberfläche.

Siehe dazu auch diesen Abschnitt im Wiki.
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Roaster

Zitat von: Damian am 14 August 2014, 09:00:19
Und noch was, Zeichenketten werden im Gegensatz zu Zahlen nicht mit == verglichen, sondern mit eq (siehe Beispiele in der Doku). Genaueres zu Perl-Operatoren siehe hier: http://de.selfhtml.org/perl/sprache/operatoren.htm

Danke dir, für die Info mit dem Vergleichsoperator. Ich habs noch nicht am laufen, es war mehr experimentell, aber da wäre ich sicherlich umgehend drübergefallen und gleich wieder hier im Forum aufgeschlagen  ;)

Roaster

Zitat von: ph1959de am 14 August 2014, 10:01:09
Siehe dazu auch diesen Abschnitt im Wiki.
Wow, ganz neues Feeling im Editor! Super - Danke für den Tipp!

Michael

Invers

Ich verstehe nicht, warum ein Fehler gemeldet wird:
([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked")
   (set Schloss lock)
DOELSEIF ([Tuerkontakt] eq "closed" and [Schloss] eq "locked (uncertain)")
   (set Schloss unlock,{ PushBulletText('Türstatus locked (uncertain)') },set Schloss lock)
DOELSEIF ([Tuerkontakt] eq "closed" and [Schloss] eq "unlocked (uncertain)")
   (set Schloss unlock,{ PushBulletText('Türstatus unlocked (uncertain)') },set Schloss lock)
DOELSEIF ([Tuerkontakt] eq "closed" and [Schloss] eq "NACK")
   (set Schloss unlock,{ PushBulletText('Türstatus NACK') },set Schloss lock)


Die Meldung lautet bei Auslösung durch NACK:
last_error

set Schloss unlock;{ PushBulletText('Türstatus NACK') };set Schloss lock: Not enough arguments for main::PushBulletText at (eval 85658) line 1, near "'Türstatus NACK') "


Kann mir bitte jemand helfen, den Fehler zu finden?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Brockmann

Zitat von: Invers am 15 August 2014, 22:42:47
Die Meldung lautet bei Auslösung durch NACK:
last_error

set Schloss unlock;{ PushBulletText('Türstatus NACK') };set Schloss lock: Not enough arguments for main::PushBulletText at (eval 85658) line 1, near "'Türstatus NACK') "

Kann mir bitte jemand helfen, den Fehler zu finden?
Der Fehler hat mit DOIF nichts zu tun. Du rufst die PushBulletText-Funktion mit zuwenig Argumenten auf.
Warum überhaupt eine Funktion, es gibt doch ein eigenes Modul für PushBullet, oder?

Invers

Warum ich mich für dieses Modul entschieden habe, weiss ich nicht. Der Service selber ist halt kostenlos.
Es kann sein, dass durch Umprogrammmierung des Moduls eine neue Syntax entstanden ist. Ich werde danach gucken.
Vielen Dank für den Tipp.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

satprofi

Hallo.
Kurze Frage zu eventsreading, wie stelle ich es an das sr_weather von mytwilight als schaltzeitpunkt erkannt wird?
ich möchte zu diesem zeitpunkt eine lampe schalten, aber nur für 2h.
gruss
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Brockmann

Zitat von: satprofi am 16 August 2014, 11:25:09
Kurze Frage zu eventsreading, wie stelle ich es an das sr_weather von mytwilight als schaltzeitpunkt erkannt wird?
Schau doch mal in die Readings des Twilight-Moduls. Da gibt es ein Reading namens aktEvent, dass immer das zuletzt ausgelöste Event angibt.
([mytwilight:aktEvent] eq "sr_weather")(set...)
sollte also klappen.