Ankündigung

Einklappen
Keine Ankündigung bisher.

Trotz "EIN" auf GA keine Aktion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Trotz "EIN" auf GA keine Aktion

    Hallo zusammen,

    ich verzweifel aktuell an einer GA "Master_Bewegung-8/5/1"

    Egal welchen Code ich hiermit schreibe, es folgt keine Aktion, obwohl kein Syntaxfehler erkannt wird...

    Vielleicht kann einer der alten Hasen mal drüberschauen und mir ggf. helfen.

    [Highlight=epc]
    //Stehlampe
    Freigabe_Nacht_Flur=sun()==EIN
    if event ("Master_Bewegung-8/5/1")and \\
    ("Master_Bewegung-8/5/1"==EIN)and \\
    Freigabe_Nacht_Flur then \\
    write ("Schalten_Raumecke-8/2/1",EIN) \\
    else \\
    write ("Schalten_Raumecke-8/2/1",AUS) \\
    endif
    [/Highlight]

    Eigentlich eine total einfache Sache von dem was passieren soll. Zwischen Sonnenunter- und aufgang soll die GA des Bewegungsmelders die GA des Aktors schalten.

    Das ganze ist letzten Endes ein Beispiel, da ich weitere Aktoren beifügen will, etc.
    Egal welchen Code ich aber mit GA "Master_Bewegung-8/5/1" schreibe, er wird nicht ausgeführt.

    Über Hilfe freue ich mich und bedanke mich vorab.
    Zuletzt geändert von Janosch25786; 02.01.2017, 21:58.
    Die Steuerung per SmartPhone macht ein Haus nicht zum SmartHome...

    #2
    Geht Master_Bewegung denn auch immer wieder auf AUS?
    Sonst erkennt die Validierung keine Änderung und führt folgerichtig nichts aus.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Ja, geht nach 2min auch wieder auf AUS

      Habe den Log mitgeschrieben und vom Bewegungsmelder werden alle GA's sauber gesendet.
      Die Steuerung per SmartPhone macht ein Haus nicht zum SmartHome...

      Kommentar


        #4
        Hi,

        ich würde das erstmal runterschrauben und folgendes testen:
        Code:
        Freigabe_Nacht_Flur = EIN
        
        if event ("Master_Bewegung-8/5/1") and Freigabe_Nacht_Flur then {
        write ("Schalten_Raumecke-8/2/1", "Master_Bewegung-8/5/1")
        }
        endif
        Im Debugger kannst Du dann die Freigabe ein- oder ausschalten. Über die ETS oder durch Laufen über den Flur kannst Du das if triggern.
        Ich hatte mir angewöhnt das else zu meiden weil es bedingt durch das Validierungsschema nicht so läuft wie man das aus anderen Programmiersprachen erwartet und gewöhnt ist.
        Du willst im Endeffekt ja den Event weiterreichen, wenn es eine Freigabe gibt.

        Gruß,
        Bernd


        Kommentar


          #5
          Danke dir!

          Ich habe den Code noch etwas geändert, siehe unten, und es funktioniert...
          Freigabe_Nacht_Flur = !sun()
          if event ("Master_Bewegung-8/5/1")and \\
          ("Master_Bewegung-8/5/1"==EIN)and \\
          Freigabe_Nacht_Flur then \\
          write ("Schalten_Raumecke-8/2/1",EIN) \\
          endif
          Ich danke dir vielmals für die Hilfe!

          Aber nur aus reinem Interesse und da ich es einfach verstehen will: Wo lag der Fehler bei meinem obigen Code? Denn auch ohne den else-Zweig bekam ich kein Ergebnis...
          Die Steuerung per SmartPhone macht ein Haus nicht zum SmartHome...

          Kommentar


            #6
            Hi,

            da ich mich gerade in die Materie einarbeite und tatsächlich das Handbuch studiere, habe ich glaube ich die passende Info gefunden auf Seite 46 unten: "Eine Besonderheit der event-Funktionen ist, dass diese nicht bei if-Anweisungen mit else-Zweig stehen dürfen...." Die weitere Erläuterung (die ich beim ersten Lesen auch nur halb durchdringe) folgt dort auch.

            Bernd, deine Variante finde ich prima (bin sowieso gern Code-Sparfuchs), habe ich bei meinem Anwendungsfall jetzt auch genommen.

            Gruß, Maren

            Kommentar


              #7
              Im obigen Beispiel ist aber kein event() im else-Zweig ;-)
              Die Steuerung per SmartPhone macht ein Haus nicht zum SmartHome...

              Kommentar


                #8
                Stimmt natürlich ;-) Hatte das nur im obersten Beispiel gelesen... und war wohl voll stolz, was kapiert zu haben ;-)

                Unterschied sehe ich logisch nur bei der Freigabe_Nacht_Flur-Zuweisung. Nach meiner Logik ergeben die Ausdrücke sun()==EIN und !sun() genau gegenteilige Werte, wobei der letztere eben der gesuchte (no sun) ist, oder?

                Kommentar


                  #9
                  Das mit dem sun() könnte einer der Gründe für das obige Beispiel sein. Aber wie auch oben beschrieben, hatte ich auch andere Codes, die ebenfalls nicht funktionierten.

                  Aber nun gut, zu 99,9% liegt das Problem vorm PC/Editor ;-)
                  Die Steuerung per SmartPhone macht ein Haus nicht zum SmartHome...

                  Kommentar


                    #10
                    Zitat von Janosch25786 Beitrag anzeigen
                    Im obigen Beispiel ist aber kein event() im else-Zweig ;-)
                    vielleicht etwas "unglücklich" formuliert - daher deutlicher:

                    wenn ein event() im if-zweig vorkommt DARF es keinen else Zweig geben...
                    (weil das "else" bei jedem NICHT-event() ausgeführt werden würde - was es einfach so nicht gibt/vorgesehen ist)
                    EPIX
                    ...und möge der Saft mit euch sein...
                    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                    Kommentar

                    Lädt...
                    X