Ankündigung

Einklappen
Keine Ankündigung bisher.

Programm aus EibPC-Schulung

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

    #31
    Sollte die Lösung so einfach sein?
    Gruß
    Volker

    Wer will schon Homematic?

    Kommentar


      #32
      Zitat von enertegus Beitrag anzeigen
      Eine andere Idee wäre die sleep()-Funktion zu nutzen und erst so nach 10 Sekunden, den EibPC wieder online schalten (das hab ich aber noch nicht getestet):
      if systemstart() then {
      read()....
      sleep(EIN)
      }
      if after(systemstart(),10000u64) then sleep(AUS) endif
      Da sleep() 'nur' das Senden der Telegramme unterbindet und nicht die Verarbeitung bzw. Abarbeitung des Codes, stelle ich mir das chaotisch vor, denn das Validierungsschema wird verhindern, dass dann aktuell gültige Zustände erneut eine Aktion auslösen.
      D.h. Aktionen, die man nicht unterdrücken bräuchte, müssen durch Freigaben unterdrückt werden, z.B. Fehler der Teilnehmer des DALI GW abfragen geht über: 1. Teilnehmer senden und 2. Daten lesen. Da geht dann nichts raus und die Antwort ist immer die gleiche (BTW auch wieder ein Beispiel für Schleifen und Felder).
      BR
      Marc

      Kommentar


        #33
        Eine andere Möglichkeit ist, wenn man die Sytemstart abfragen zusammenstellt und nur von der letzten die Antwort über change abfragt und eine Variable steuern läßt, die man bei beliebigen kritischen Ausgaben mit abfragt:

        If systemstart() then read '1/1/1'; \\
        read '1/2/2'; \\
        .
        .
        .
        .
        .
        'read 2/3/1' endif

        if change ('2/3/1'), then Startende=1 endif
        oder: if after (change ('2/3/1'), 2000) then Startende=1 endif

        "startende" kann man nun in alle kritischen Anweisungen beliebig mit and verknüpfen.
        Im Busmonitor kann man sehen, welche als lezte abgefragt wird, neue setzt man immer vorher dazwischen.
        Der schöne Niederrhein läßt Grüssen

        Andreas


        Alter Hof mit neuer Technik

        Kommentar


          #34
          Da sleep() 'nur' das Senden der Telegramme unterbindet und nicht die Verarbeitung bzw. Abarbeitung des Codes
          Doch nicht so einfach.
          Ich sitze zwar noch auf Arbeit und konnte nicht wirklich viel darüber nachdenken, aber...

          Das hinzufügen bei jeder Abfrage würde mich persönlich nerven.
          Da möcht ich es einfacher haben. Auch wenn es für Michael mehr arbeit bedeutet.

          Marcs Ansatz finde ich gut. Wenn auch schon wieder etwas "überladen" (nicht böse gemeint).
          - Temperaturabhängige Aktionen können einen 'neutralen' Default Wert erhalten oder einen alternativen Messwert
          - Uhrzeit könnte aus dem Zeitmodul gelesen werden
          - Lampe war ein, aber DALI meldet Fehler und somit ist der Zustand AUS
          Das ist mir schon zu viel des guten.
          Wobe ies vermutlich nur ein wenig Programmierung im extra Abschnitt ist, oder?
          Dir würde es ja dann auch genügen, wenn einfach die normale Programmverarbeitung NACH der Abarbeitung eines bestimmten Abschnitts beginnen würde, stimmts?
          Gruß
          Volker

          Wer will schon Homematic?

          Kommentar


            #35
            Die Verknüpfung ist doch nur bei sehr wenigen Sachen überhaupt erforderlich.
            Die Default-Werte bei Systemstart sind doch 0, das heißt viele Funktionen werden erst geschaltet, wenn eine 1 oder ein positiver Wert vorhanden sind.

            Ausserdem habe ich z.B. auch so an vielen Stelle "if change" auch für den normalen Betrieb verwendet um Berrechnungen im normalen Validierungsschema anzustoßen. Bei den meisten dieser Verknüpfungen gibt es überhaupt kein Problem.

            Ich habe inzwischen meinen EibPC mit 3% Programm voll und es ist erst 2 Mal aufgetreten, das ich mit einem Zusatz über "after systemstart" arbeiten mußte.

            Den Weg über sleep sehe ich auch nicht, denn wie trigger ich anschließend die bereits "verschlafenen" Write-Anweisungen. Das wird noch umständlicher.
            Der schöne Niederrhein läßt Grüssen

            Andreas


            Alter Hof mit neuer Technik

            Kommentar


              #36
              Ich selbst benötige die auch nicht oft.
              Vielleicht so 2-3 mal.

              Ich kann nur den Wunsch nachvollziehen.
              Ich glaube, dass wäre auch für viele Elektriker einfacher.
              Wenn die ständig überlegen müssen, ob das jetzt wichtig beim Systemstart ist, dann nervt das. Das reduziert die Akzeptanz.
              Kann man einfach sagen: Das hier wird beim Boot gemacht, danach geht´s los mit der Verarbeitung. Dann steigert das den Komfort, reduziert die Denkarbeit und im Endeffekt auch die Arbeitszeit.
              Zumindest stelle ich mir das so vor, wenn ich mich in "meinen" Elektriker versetze.
              Gruß
              Volker

              Wer will schon Homematic?

              Kommentar


                #37
                Zitat von SnowMaKeR Beitrag anzeigen
                Ich kann nur den Wunsch nachvollziehen.
                Ich glaube, dass wäre auch für viele Elektriker einfacher.
                Dann steigert das den Komfort, reduziert die Denkarbeit und im Endeffekt auch die Arbeitszeit.
                Zumindest stelle ich mir das so vor, wenn ich mich in "meinen" Elektriker versetze.
                Das ist ein wichtiges Argument für besseren Verkaufserfolg.
                Der schöne Niederrhein läßt Grüssen

                Andreas


                Alter Hof mit neuer Technik

                Kommentar


                  #38
                  Das ist eine neues Programm für eine weitere geplante Aktivität.
                  Kompiler meckert bei Helligkeit komme nicht weiter. Wer hat eine Idee.

                  //Steuerung Rollo Essen EG
                  Sommer=month(01,04) and !month(31,10)
                  Hoch=("Helligkeit.Süd-1/0/22">200.0) and Zeit
                  Zeit=AUS
                  if wtime(08,30,00,WOCHENENDE) then Zeit=EIN endif
                  if wtime(05,30,00,WERKTAGS) then Zeit=EIN endif
                  Werktags=wtime(5,30,00,MONTAG) or wtime(5,30,00,DIENSTAG) or wtime(5,30,00,MITTWOCH)\\
                  or wtime(5,30,00,DONNERSTAG) or wtime(5,30,00,FREITAG)\\

                  if Hoch and Sommer and Werktags then \\
                  write("%Pos.anfahren Rollo Essen Ost OG-3/2/105",0%); \\
                  write("%Pos.anfahren Rollo Essen Süd OG-3/2/115",0%); \\
                  write("%Pos.anfahren Rollo Essen West OG-3/2/125",0%); endif
                  Zeit=AUS endif

                  Danke

                  Kommentar


                    #39
                    Zitat von redstar Beitrag anzeigen
                    Sommer=month(01,04) and !month(31,10)
                    Hoi Karl-Heinz

                    Das mit dem Sommer kommt mir spanisch vor.
                    Es soll doch von bis sein oder?
                    Vielleicht liegt da der Fehler.

                    Du bist natürlich schon viel weiter als ich mit den Programmierungen, respekt.
                    Da muss ich noch durch.
                    Grüsse Bodo
                    Fragen gehören ins Forum, und nicht in mein Postfach;
                    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                    Kommentar


                      #40
                      Zitat von redstar Beitrag anzeigen
                      Kompiler meckert bei Helligkeit komme nicht weiter. Wer hat eine Idee.
                      Hoch=("Helligkeit.Süd-1/0/22">200.0) and Zeit
                      Hallo,

                      Helligkeit ist Fließkommawert, die Klammer ist somit 1 oder 0 und die Zeit hast du mit EIN/AUS definiert. Versuch mal die Zeit mit 1 bzw. 0 zu definieren.

                      und ausserdem bei:
                      write("%Pos.anfahren Rollo Essen West OG-3/2/125",0%); endif
                      endif ist zuviel statt dessen fehlt \\

                      Die Zeile:
                      or wtime(5,30,00,DONNERSTAG) or wtime(5,30,00,FREITAG)\\
                      ist das Ende der Aufzählung da darf kein \\ mehr stehen.
                      Der schöne Niederrhein läßt Grüssen

                      Andreas


                      Alter Hof mit neuer Technik

                      Kommentar


                        #41
                        Um nicht noch eine Änderung zu schreiben:

                        Ist dein Helligkeitswert überhaupt eine Fließkomma-Zahl oder ist er ein Prozentwert bzw. 0-255, dann müßte es heißen <200u08 oder <200
                        Der schöne Niederrhein läßt Grüssen

                        Andreas


                        Alter Hof mit neuer Technik

                        Kommentar


                          #42
                          Zitat von Bodo Beitrag anzeigen
                          Hoi Karl-Heinz

                          Das mit dem Sommer kommt mir spanisch vor.
                          Es soll doch von bis sein oder?
                          Vielleicht liegt da der Fehler.
                          Hallo Bodo,
                          nee, das stimmt. Schau doch mal im Handbuch auf Seite 49 unten.

                          Kommentar


                            #43
                            Zitat von redstar Beitrag anzeigen
                            Kompiler meckert bei Helligkeit komme nicht weiter. Wer hat eine Idee.
                            Wie lautet denn die Fehlermeldung genau?
                            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                            Enertex Produkte kaufen

                            Kommentar


                              #44
                              Die Programmierung stammt aus den ersten Beta-Tagen des EibPC und lief mal.
                              Wurde allersdings immer wieder mal angepasst und jetzt kommt Fehler

                              Deklaration der Variable muss eindeutig sein in >Hoch="Helligkeit.Süd-1/0/22">200.0andZeit<

                              Kommentar


                                #45
                                Ein IF mit 2 endif können aber nie gelaufen sein, da ist inzwischen mehr geändert worden.

                                Hast du die Variable mal überprüft, ob sie überhaupt ein Fließkomma-Wert ist?
                                Der schöne Niederrhein läßt Grüssen

                                Andreas


                                Alter Hof mit neuer Technik

                                Kommentar

                                Lädt...
                                X