Ankündigung

Einklappen
Keine Ankündigung bisher.

Tor Status funktioniert nicht mehr nach patch 2.300

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

  • kuczerek
    antwortet
    Zitat von joggele777 Beitrag anzeigen
    Danke erstmal für eure super schnellen Antworten!! D.h. beim Validierungsschema hat sich mit dem Patch 2.300 etwas geändert?!
    Das würde mich auch interessieren. Ich habe nämlich auch die ein oder andere verschachtelte if-Abfrage, die nach dem Update nicht mehr funktioniert. Ein Code-Beispiel kann ich demnächst mal posten, aber ich muss das erstmal einkürzen.

    Grüße,
    Boris.

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Probier es doch mal so:

    [highlight=epc]
    if (event ("Garagentor hoch-4/0/1") and ("Garagentor hoch-4/0/1"==EIN) and ("Garagentor Ausgang oben-4/0/5"==AUS)) then {
    Tor_fahrt_AUF=!Tor_fahrt;
    Tor_fahrt_AB=AUS;
    Tor_fahrt=!Tor_fahrt
    } endif
    [/highlight]

    Einen Kommentar schreiben:


  • joggele777
    antwortet
    Ich brauche nochmals eure Hilfe - komme einfach nicht weiter und bin langsam aber sicher am verzweifeln.

    Ich habe jetzt all eure Vorschläge durchprobiert. Leider ohne Erfolg.

    Bin jetzt auf folgendes gestossen. In der GA "Garagentor hoch-4/0/1" ist der Taster sowie der entsprechende Schaltausgang für das Tor, welcher als Treppenhausimpuls eine Sekunde ein EIN ausgeben soll bzw. gegeben hat. Dies hat für Tor auf/hoch gereicht. Nun habe ich beim debuggen im EIBSTUDIO gesehen, dass diese GA immer auf EIN steht?!?!? Kann das sein? Wenn ich den Taster betätige höre ich wie der Schaltausgang ca. eine Sekunde auf EIN geht und dann wieder klickt und vermutlich dann wieder auf AUS geht. Das Tor fährt auch sauber hoch.

    Frägt sich warum ist die GA immer auf EIN?!?!? Und warum hat das Ganze Monate lang einwandfrei funktioniert bis zum update auf den patch 2.300??? Ich hab gerade keinen Plan an was das noch liegen könnte???

    Grüsse
    Jochen

    Einen Kommentar schreiben:


  • klaus
    antwortet
    Da verschachtelte IFs aufgrund des Validierungsschemas des EibPC meistens anderns funktionieren als man es intuitiv erwarten würde, habe ich darauf generell verzichtet. Alles was sich durch verschachtelte IFs machen lässt kann man eigentlich auch mit normalen IFs machen, wenn man den Code entsprechend anders formuliert. In deinem Fall zum Beispiel so:

    Code:
    if event("Garagentor hoch-4/0/1") and "Garagentor hoch-4/0/1" == EIN and "Garagentor Ausgang oben-4/0/5" == AUS and Tor_fahrt == AUS then {
       Tor_fahrt_AUF = EIN;
       Tor_fahrt_AB = AUS;
       Tor_fahrt = EIN
    }
    if event("Garagentor hoch-4/0/1") and "Garagentor hoch-4/0/1" == EIN and "Garagentor Ausgang oben-4/0/5" == AUS and Tor_fahrt == EIN then {
       Tor_fahrt_AUF = AUS;
       Tor_fahrt_AB = AUS;
       Tor_fahrt = AUS
    } endif
    Du solltest auch nicht benötigte Klammern weglassen. Macht den Code nur unnötig kompliziert.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Moin, moin,

    den Kommentar verstehe ich jetzt nicht. Dein Code erklärt warum Tor_fahrt_AUF nicht auf EIN geht, aber genau darum formuliert man sowas doch mit ELSE statt als zwei getrennt IF Statements.
    Schau mal im Handbuch

    Zitat von Version 20 auf Seite 125
    Der else-Zweig einer if-Funktion ist wie eine zweite eigenständige if-Funktion mit negierter Abfragebedingung zu verstehen.
    Gruß,
    Bernd

    Einen Kommentar schreiben:


  • joggele777
    antwortet
    Danke erstmal für eure super schnellen Antworten!! D.h. beim Validierungsschema hat sich mit dem Patch 2.300 etwas geändert?!

    Gruss
    Jochen

    Einen Kommentar schreiben:


  • saft6luck
    antwortet
    Ja, aber genau das ist ein Mangel der Programmiersprache im eibPC: das 'else' wird im eibPC intern als negiertes 2. 'if' compiliert.
    'else' ist also verkümmert zu einer Abkürzung und Programmierfalle.

    Zur Ehrenrettung des eibPCs sollte man allerdings bedenken, dass in der obersten Ebene der Verarbeitung eine Event-Auswertung statt findet und dort ein 'gewöhnliches else' wenig Sinn macht.
    -> Wenn Event, dann mach etwas, ansonsten mach ???

    Das 'ansonsten' lässt sich schwer darstellen oder würde zu einer fortwährenden Abarbeitung des else-Zweiges führen.

    In den tieferen Ebenen (eben im Zweig des 'if's) findet überwiegend eine C-ähnliche Auswertung statt und dort würde das else im C-Sinn auch wieder passen.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hi Bernd,

    den Kommentar verstehe ich jetzt nicht. Dein Code erklärt warum Tor_fahrt_AUF nicht auf EIN geht, aber genau darum formuliert man sowas doch mit ELSE statt als zwei getrennt IF Statements.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Moin Jochen,

    Du kannst den else Zweig umformulieren:
    [highlight=epc]
    if (event ("Garagentor hoch-4/0/1") and ("Garagentor hoch-4/0/1"==EIN) and ("Garagentor Ausgang oben-4/0/5"==AUS)) then {
    if Tor_fahrt==AUS then {
    Tor_fahrt_AUF=EIN;
    Tor_fahrt_AB=AUS;
    Tor_fahrt=EIN
    };
    if Tor_fahrt != AUS then {
    Tor_fahrt_AUF=AUS;
    Tor_fahrt_AB=AUS;
    Tor_fahrt=AUS
    } endif
    } endif
    [/highlight]

    Ich denke so wird es klar: wenn Tor_fahrt==AUS wird auch gleich Tor_fahrt=EIN gesetzt. Das erfüllt aber auch Tor_fahrt != AUS ...

    Gruß,
    Bernd

    Einen Kommentar schreiben:


  • joggele777
    hat ein Thema erstellt Tor Status funktioniert nicht mehr nach patch 2.300.

    Tor Status funktioniert nicht mehr nach patch 2.300

    Hallo zusammen,

    habe folgenden Code für meinen Tor-Status (fährt AUF), indem ich die Taster GA für "auf" ("Garagentor hoch-4/0/1") abfrage. Das hat vor dem update auch einwandfrei funktioniert. Nun geht Tor_fahrt_AUF nie auf EIN?!?!? Kann sich das jemand erklären?

    [highlight=epc]
    if (event ("Garagentor hoch-4/0/1") and ("Garagentor hoch-4/0/1"==EIN) and ("Garagentor Ausgang oben-4/0/5"==AUS)) then {
    if Tor_fahrt==AUS then {
    Tor_fahrt_AUF=EIN;
    Tor_fahrt_AB=AUS;
    Tor_fahrt=EIN
    } else {
    Tor_fahrt_AUF=AUS;
    Tor_fahrt_AB=AUS;
    Tor_fahrt=AUS
    } endif
    } endif
    [/highlight]


    Danke und viele Grüsse
    Jochen
Lädt...
X