Hauptmenü

3 Anfägerfragen zu DOIF

Begonnen von beSmart, 17 Dezember 2014, 11:41:06

Vorheriges Thema - Nächstes Thema

beSmart

Hallo.

Habe wieder etwas herumgespielt und gelesen. Dabei ist folgendes heruasgekommen:

Define Switch1 DOIF ([Taster1] eq ,,closed" and [Switch1] eq ,,off") (set Switch1 on) DOELSEIF ([Taster1] eq ,,closed" and [Switch1] eq ,,on") (set Switch1 off)

Das Einschalten von Switch1 funktioniert, aber das Ausschalten nicht.

1. Frage: Ist die o.g. Eingabe so richtig?

2. Frage: Gibt es eine Möglichkeit alles was passiert oder eben nicht passiert inkl. Status, Fehler etc. pp zu Loggen? (im "normalen" Log ist nichts interessantes)

Im Event-Monitor taucht etwas wie cmd1, cmd2 oder cmd_1, cmd_2 auf. Dies scheint im Zusammenhang mit dem o.g. define zu stehen.
Die Sufu hat dazu einige Ergebnisse aber diese führen alles ins nichts bzw. sind unverständlich. In der Commandref ist nichts dazu enthalten.

3. Frage: Was ist dieses cmd...?

Dank und Gruß

beSmart

Brockmann

Zitat von: beSmart am 17 Dezember 2014, 11:41:06
2. Frage: Gibt es eine Möglichkeit alles was passiert oder eben nicht passiert inkl. Status, Fehler etc. pp zu Loggen? (im "normalen" Log ist nichts interessantes)
Im Event-Monitor taucht etwas wie cmd1, cmd2 oder cmd_1, cmd_2 auf. Dies scheint im Zusammenhang mit dem o.g. define zu stehen.
Die Sufu hat dazu einige Ergebnisse aber diese führen alles ins nichts bzw. sind unverständlich. In der Commandref ist nichts dazu enthalten.
3. Frage: Was ist dieses cmd...?
Eventmonitor ist schon mal gut. Dann kannst Du Dir mit list Switch1 die kompletten Daten des DOIFs anschauen. Da steht dann auch drin, was das DOIF zuletzt warum gemacht hat.
cmd_1 usw. ist in der Commandref erklärt, allerdings nur in der deutschen Fassung ("Status des Moduls").
Ansonsten verstehe ich den Sinn der Definition nicht. Das DOIF soll sich selbst schalten?

beSmart

Vielen Dank für deine Hilfe.

Nein, das DOIF soll sich natürlich nicht selbst schalten.  ;). Habe das heute am Morgen aus dem Kopf eingetippt und war wohl noch nicht ganz wach.

Richtig ist:

Define Switch1 DOIF ([Taster1] eq ,,closed" and [Ausgang1] eq ,,off") (set Ausgang1 on) DOELSEIF [Taster1] eq "closed" and ([Ausgang1] eq ,,on" (set Ausgang1 off)
(ist glaube ich selbsterklärend) :D

Aber, warum wird Ausgang1 nicht auf Off gesetzt?

Bin blutiger Anfänger und arbeite mich Stück für Stück in Fhem ein. Das define von oben ist zum üben sehr einfach gehalten. Wenn ich die Syntax verstanden und verinnerlicht habe, kann ich später ja alles mögliche abfragen, auswerten und Steuern.

Kannst du noch etwas zu cmd_1 schreiben? Kann es nämlich nicht finden. Dies ist doch Commandref, oder?
http://fhem.de/commandref_DE.html

Vielen Dank und Gruß

beSmart

Puschel74

#3
Hallo,

abgesehen davon das define klein geschrieben wird meckert mir Notepad++ einen Klammerfehler an.

define Switch1 DOIF ([Taster1] eq ,,closed" and [Ausgang1] eq ,,off") (set Ausgang1 on) DOELSEIF [Taster1] eq "closed" and ([Ausgang1] eq ,,on" (set Ausgang1 off)

Grüße

P.S.: In Code-Tags kann man Zeichen so schlecht markieren daher ohne Tags.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Brockmann

Zitat von: beSmart am 17 Dezember 2014, 20:22:01
Richtig ist:
Define Switch1 DOIF ([Taster1] eq ,,closed" and [Ausgang1] eq ,,off") (set Ausgang1 on) DOELSEIF [Taster1] eq "closed" and ([Ausgang1] eq ,,on" (set Ausgang1 off)

Nee, richtig ist das nicht. Wenn dann so:
define Switch1 DOIF ([Taster1] eq "closed" and [Ausgang1] eq "off") (set Ausgang1 on) DOELSEIF ([Taster1] eq "closed" and [Ausgang1] eq "on") (set Ausgang1 off)

Zitat von: beSmart am 17 Dezember 2014, 20:22:01
Kannst du noch etwas zu cmd_1 schreiben? Kann es nämlich nicht finden. Dies ist doch Commandref, oder?
http://fhem.de/commandref_DE.html
Ja, das ist Conmandref. Und wenn Du dort nach dem von mir namentlich erwähnten Abschnitt suchst ("Status des Moduls"), wirst Du fündig.

beSmart

Hallo und vielen Dank für eure Geduld und Hilfe.

Habe "Status des Moduls" jetzt auch gefunden.  :-[ (man muss nur die Augen ganz aufmachen)

Für die Tippfehler (groß/klein," usw.) muss ich mich entschuldigen. Schreibe oft mit einem Tablet und dann wird schnell aus "define Delfine" oder am Satzanfang "define Define" Anführungsstriche-oben/ und unten sind auch problematisch. Hier hilft nur Auto- vervollständigen /-korrektur aus.

Ich gehe jetzt wieder in die Lernphase und werde dann berichten..

Nochmal vielen Dank und Gruß

beSmart

beSmart

#6
Hallo.
Habe wieder etwas probiert und komme nicht weiter.

Vorhanden:
     - Raspberry Pi B mit fhem installation und MCP23017.
     - MCP23017 Port A0 = Taster1
     - MCP23017 Port A1 = Ausgang1
     - an Ausgang1 ist ein Relaismodul angeschlossen
     - Ausgang1 kann ich per Tablet Ein- und Ausschalten ( allerdings ist ein=aus und aus=ein)

Nach Betätigung des Tasters schaltet Ausgang1 ein, aber nach erneuter Betätigung nicht wieder aus.
Wenn ich jetzt per Tablett den Ausgang1 aus- und wieder einschalte, kann ich über den Taster ausschalten. Anschließend aber nicht wieder einschalten. Dazu muss erst per Tablett ein- und wieder ausgeschaltet werden.
##
###I2C-Device###
define i2cBus RPII2C 1
attr i2cBus group MCP23017
##
##
###MCP23017-0x20###
define icMCP23017 I2C_MCP23017 0x20
attr icMCP23017 IODev i2cBus
attr icMCP23017 Interrupt A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 InterruptOut connected_active-low
attr icMCP23017 OutputPorts A1,A2
attr icMCP23017 Pullup A0,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 group MCP23017

###Interrupt A&B####
define Interrupt RPI_GPIO 4
attr Interrupt active_low yes
attr Interrupt direction input
attr Interrupt group MCP23017
attr Interrupt interrupt both
attr Interrupt userReadings test {fhem ("get icMCP23017")}


#--Bank-A--#
define Taster1 readingsProxy icMCP23017:PortA0
attr Taster1 group InputPorts
attr Taster1 valueFn {($VALUE eq "on")?"open":"closed"}

define Ausgang1 readingsProxy icMCP23017:PortA1
attr Ausgang1 devStateIcon aus:off an:on
attr Ausgang1 group OutputPorts
attr Ausgang1 setFn {($CMD eq "on")?"PortA1 on":"PortA1 off"}
attr Ausgang1 setList off on
attr Ausgang1 valueFn {($VALUE eq "on")?"on":"off"}
##
define Switch12 DOIF ([Taster1] eq "closed" and [Ausgang1] eq "off") (set Ausgang1 on) DOELSEIF ([Taster1] eq "closed" and [Ausgang1] eq "on") (set Ausgang1 off)
attr Switch12 loglevel 1


Hat jemand eine Idee bzw. Lösung für dieses Phänomen?


Dank und Gruß

beSmart