Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

Problem nach Update auf 2.308

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

  • jjmargis
    antwortet
    Nabend Michael,

    ich habe das nun wie folgt umgesetzt.

    Code:
    [Macros]
    ...
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr1,FreigabeVar,"Alle Rolläden auf/ab-4/3/0",RUNTER,19000000,22,30,00)
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr2,FreigabeVar,"Funkdose 1 Flur-Treppe Schalten-7/0/2",EIN,600000,22,30,00)
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr12,FreigabeVar,"Funkdose 1 Flur-Treppe Schalten-7/0/2",AUS,30000000,23,02,00)
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr10,FreigabeVar,"Funkdose 2 WZ Süd Schalten-7/0/1",EIN,600000,22,30,00)
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr11,FreigabeVar,"Funkdose 2 WZ Süd Schalten-7/0/1",AUS,19060000,22,31,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Sonnenaufgang1,(FreigabeVar) and (!"Beschattung Aktivierung-8/1/0"),"Rolläden Ost-5/2/0",RAUF,7200000,07,28,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Sonnenaufgang2,(FreigabeVar) and (!"Beschattung Aktivierung-8/1/0"),"Wohnen - Süd Rolläden-5/0/5",RAUF,7200000,07,28,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Sonnenaufgang3,FreigabeVar,"Rolläden West-5/2/2",RAUF,7200000,07,28,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Sonnenaufgang4,FreigabeVar,"Wohnen - Terrasse Rolläden-5/0/4",RAUF,7200000,07,28,00)
    ...
    [EibPC]
    ...
    // Zustandsmaschine in [EibPC]
    FreigabeVar=AUS
    TFrueh=chtime(00,00,01) and !chtime(12,00,00)
    // Zustand 1: Frühmodus
    if TFrueh and !sun() then FreigabeVar=AUS endif
    // Zustand 2: TagModus
    if sun() and change("Anwesenheit-8/1/1") then FreigabeVar="Anwesenheit-8/1/1" endif
    // Zustand3   Spätmodus
    if !TFrueh and !sun() and change("Anwesenheit-8/1/1") then FreigabeVar="Anwesenheit-8/1/1" endif 
     
    if button(4)==1 then {write("Anwesenheit-8/1/1",!"Anwesenheit-8/1/1")} endif
    if "Anwesenheit-8/1/1" then display(4,$Abwesend$,ABSENT,DARKRED,BLINKBLUE) else display(4,$Anwesend$,PRESENT,ACTIVE,GREEN) endif
     
    //Eingangstür
    if (!"Türkontakt-8/1/3") and ("Anwesenheit-8/1/1") and (sun()==0b01) then write ("Licht Flur-0/0/5",EIN) endif
    Folgendes passiert:

    1.) Der Türkontakt funktioniert korrekt. Das Licht geht an wie es soll.

    2.) Aktivierung der Abwesenheit nach Sonnenaufgang und nach 12:00h
    Code:
    2013-01-20 14:58:59, EibPC, "Anwesenheit-8/1/1", Binärwert, EIN, Schreiben, bc 00 00 41 01 e1 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 14:58:59, EibPC, "Rolläden Ost-5/2/0", Binärwert, AUS, Schreiben, bc 00 00 2a 00 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 14:58:59, EibPC, "Wohnen - Süd Rolläden-5/0/5", Binärwert, AUS, Schreiben, bc 00 00 28 05 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 14:58:59, EibPC, "Rolläden West-5/2/2", Binärwert, AUS, Schreiben, bc 00 00 2a 02 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 14:58:59, EibPC, "Wohnen - Terrasse Rolläden-5/0/4", Binärwert, AUS, Schreiben, bc 00 00 28 04 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 16:38:00, EibPC, "Funkdose 1 Flur-Treppe Schalten-7/0/2", Binärwert, EIN, Schreiben, bc 00 00 38 02 e1 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 16:38:00, EibPC, "Funkdose 2 WZ Süd Schalten-7/0/1", Binärwert, EIN, Schreiben, bc 00 00 38 01 e1 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 21:44:40, EibPC, "Alle Rolläden auf/ab-4/3/0", Binärwert, EIN, Schreiben, bc 00 00 23 00 e1 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 21:45:40, EibPC, "Funkdose 2 WZ Süd Schalten-7/0/1", Binärwert, AUS, Schreiben, bc 00 00 38 01 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    2013-01-20 23:02:00, EibPC, "Funkdose 1 Flur-Treppe Schalten-7/0/2", Binärwert, AUS, Schreiben, bc 00 00 38 02 e1 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    Das sieht so aus, wie es sein soll.

    3.) Aktivierung der Abwesenheit vor Sonnenaufgang
    Code:
    2013-01-22 06:28:25, EibPC, "Anwesenheit-8/1/1", Binärwert, EIN, Schreiben, bc 00 00 41 01 e1 00 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    Das ist alles. Es passiert nichts weiter.
    Es läuft also nicht, sofern im Frühmodus die Abwesenheit aktiviert wird.



    Ich hoffe du hast da noch eine Idee?

    Vielen Dank und viele Grüße
    Jens

    Einen Kommentar schreiben:


  • jjmargis
    antwortet
    Danke dir, werde ich morgen versuchen zu testen.

    Ggf. mit initGA arbeiten...
    Du meinst sicher ich sollte den beim Neustart des EibPC auf AUS setzen, richtig?

    Hab ich noch nicht gemacht, muss ich mir anschauen.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von jjmargis Beitrag anzeigen
    1.)
    Warum wurde ein AUS für die Funkdose (also mein Testobjekt) gesendet?
    Sorry, da war noch ein Bug: Der Code schaut ja nur nach, ob Anwesenheit gedrückt wurde, wenn der Tag/Nacht-Übergang da ist. FreigabeVar wird also nur beim Wechsel von sun() verändert und nicht beim Wechsel von "Anwesenheit-8/1/1".
    Also muss der Code sein:
    [highlight=epc]
    FreigabeVar=AUS
    TFrueh=chtime(00,00,01) and !chtime(12,00,00)
    // Zustand 1: Frühmodus
    if TFrueh and !sun() then FreigabeVar=AUS endif
    // Zustand 2: TagModus
    if sun() and change("Anwesenheit-8/1/1") then FreigabeVar="Anwesenheit-8/1/1" endif
    // Zustand3 Spätmodus
    if !TFrueh and !sun() and change("Anwesenheit-8/1/1") then FreigabeVar="Anwesenheit-8/1/1" endif
    [/highlight]
    2.)
    Warum wurde plötzlich ein EIN für das Licht im Flur gesendet?
    Ist doch der Code hier:
    [highlight=epc]
    //Eingangstür
    if (!"Türkontakt-8/1/3") and ("Anwesenheit-8/1/1") and (sun()==0b01) then write ("Licht Flur-0/0/5",EIN) endif
    [/highlight]
    "Türkontakt-8/1/3" wird auf AUS stehen. Ggf. mit initGA arbeiten...

    Einen Kommentar schreiben:


  • jjmargis
    antwortet
    Hallo Michael,

    vielen Dank für die Konfig.
    Ich habe das mal wie folgt für Testzwecke umgesetzt.

    Code:
    [Macros]
    //Test für Zustandsabfrage
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(Test1,FreigabeVar,"Funkdose 1 Flur Schalten-7/0/3",EIN,1900000,22,31,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Test2,FreigabeVar,"Funkdose 1 Flur Schalten-7/0/3",AUS,72000000,09,28,00)
     
    ...
    [EibPC]
    // Zustandsmaschine in [EibPC]
    FreigabeVar=AUS
    TFrueh=chtime(00,00,01) and !chtime(12,00,00)
    // Zustand 1: Frühmodus
    if TFrueh and !sun() then FreigabeVar=AUS endif
    // Zustand 2: TagModus
    if sun() then FreigabeVar="Anwesenheit-8/1/1" endif
    // Zustand3   Spätmodus
    if !TFrueh and !sun() then FreigabeVar="Anwesenheit-8/1/1" endif 
     
    //-Anwesenheit
    if button(4)==1 then {write("Anwesenheit-8/1/1",!"Anwesenheit-8/1/1")} endif
    if "Anwesenheit-8/1/1" then display(4,$Abwesend$,ABSENT,DARKRED,BLINKBLUE) else display(4,$Anwesend$,PRESENT,ACTIVE,GREEN) endif
    //
    Ich habe das Ganze um 14:45h geladen und den Button für die Abwesenheit betätigt. Da wurde der Befehl für die Rollos zum hochfahren ausgelöst. Das ist soweit nicht problematisch.

    Dann passierte jedoch bei Sonnenuntergang folgendes:
    Code:
    2013-01-18 16:25:00 | Sender: EibPC | GA: "Licht Flur-0/0/5" | Wert: EIN | Typ: Binärwert |  Schreiben
    % 2013-01-18 16:25:00 | Sender: EibPC | GA: "Funkdose 1 Flur Schalten-7/0/3" | Wert: AUS | Typ: Binärwert |  Schreiben
    Dabei wundern mich zwei Dinge.
    1.)
    Warum wurde ein AUS für die Funkdose (also mein Testobjekt) gesendet?
    2.)
    Warum wurde plötzlich ein EIN für das Licht im Flur gesendet?

    Zu 2.)
    Hierzu habe ich folgenden ergänzenden Code, der das Licht bei Abwesenheit und nach Sonnenuntergang über einen Türkontakt beim Betreten einschaltet.

    Code:
    //Eingangstür
    if (!"Türkontakt-8/1/3") and ("Anwesenheit-8/1/1") and (sun()==0b01) then write ("Licht Flur-0/0/5",EIN) endif
    Es wäre klasse, wenn du da Infos zu den Hintergründen hättest.
    Vielen Dank im Voraus.
    Jens

    Einen Kommentar schreiben:


  • anlo007
    antwortet
    Ich glaube das war der erste Beitrag seit langem der nicht OFFTOPIC war.

    Beim Verschieben hast du vermutlich die Überschriften vertauscht.....

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von EPIX Beitrag anzeigen
    der Link geht aber auf v2.309
    Inhaltlich ok, ansonsten aber sehr OT hier an dieser Stelle.

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Hoi

    Ja das ärgert mich auch jedes mal, wenn im ZIP einfach README.TXT steht.
    Sowohl im Patchupdate als auch im EibStudioupdate als auch bei den Macrolibs.
    Wenn ich das einfach rüberkopiere dann überschreibt das readme vom Patch dasjenige vom EibStudio usw.
    Ausserdem bevorzuge ich Kleinschreibung, zumindest bei der Endung .txt

    Ich würde
    readme_patch.txt
    readme_firmware.txt
    readme_macrolibs.txt
    bevorzugen.

    Einen Kommentar schreiben:


  • EPIX
    antwortet
    kleiner Hinweis: Webseite aktualisieren...

    auf eurer Webseite steht immer noch:
    Enertex® EibPC PatchUpdate (v2.306)

    der Link geht aber auf v2.309

    generelle wäre es besser die Version im Namen mitaufzunehemn- dann wird eine andere Version nicht überschrieben (PatchUpdate.zip) und man sieht sofort (ohne entpacken & readme lesen) welche Version im Zip ist...

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Das wird somit relativ übersichtlich:
    [highlight=epc]
    // Makros ....
    Bei_Sonnenuntergang_Gedeckelt_mitFreigabe(SUGedFr2 9,FreigabeVar,"Licht Wohnen-2/2/3",AUS,22060000,22,31,00)
    Bei_Sonnenaufgang_Gedeckelt_mitFreigabe(Sonnenaufg ang1,FreigabeVar,"Rolläden Ost-5/2/0",RAUF,7200000,07,28,00)
    ...
    // Zustandsmaschine in [EibPC]
    FreigabeVar=AUS
    TFrueh=chtime(00,00,01) and !chtime(12,00,00)
    // Zustand 1: Frühmodus
    if TFrueh and !sun() then FreigabeVar=AUS endif
    // Zustand 2: TagModus
    if sun() then FreigabeVar="Anwesenheit-8/1/1" endif
    // Zustand3 Spätmodus
    if !TFrueh and !sun() then FreigabeVar="Anwesenheit-8/1/1" endif
    [/highlight]
    Besonders ist hier die Verwendung der Variable TFrueh. Diese ist ist über eine Verknüpfung von einer Schaltuhr um Mitternacht und nach Mittag realisiert. Grundsätzlich muss hier sichergestellt werden, dass TFrueh um 0:00 Uhr auf EIN und sicher vor dem Sonnenuntergang auf AUS steht.

    Ich habe dieses Beispiel ins Handbuch übernommen. Es zeigt doch hoffentlich recht eindrucksvoll, wie einfach das ist.

    Einen Kommentar schreiben:


  • jjmargis
    antwortet
    Doch, das Makro schaltet ja jeden Tag bei Sonnenaufgang, wenn die Freigabe auch nur einmal erteilt wurde. Daher nochmal: Passt das dann so?
    Das hört sich doch prima an.
    Dann passt das auch so.


    Ich bin gespannt.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von anlo007 Beitrag anzeigen
    Hallo,
    Wenn man die Fragestellung so liest, hört sich das alles sehr verwirrend an. Mal soll ein Macro aktiviert werden, mal ein Merker definiert werden.
    Alleine beim Begriff "Merker" haben schon viele Unkenntnis - ich habe das erst durch meine Kunden gelernt.
    Am Ende ist es ja auch nicht wirklich kompliziert, ich will nur das Prinzip darlegen, wie ich auch komplexere Makros (wie CF etc.) und Warteschlangenverarbeitung programmiere.
    Letztlich meine ich aber auch (wie Du): Erst mal genau hinschreiben, so dass man es mindestens selber versteht, was man will. Dann sollte die Syntax des EibPC so einfach sein, dass es wie "von alleine" von der Hand geht.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Zitat von jjmargis Beitrag anzeigen
    Das wäre nur ein zeitlicher Wechsel. Allerdings wäre bereits 1/2/3'b01 auf EIN - vom Vortag.
    Dann würde das Macro Sonnenaufgang_gedeckelt nicht aktiv sein, richtig?
    Doch, das Makro schaltet ja jeden Tag bei Sonnenaufgang, wenn die Freigabe auch nur einmal erteilt wurde. Daher nochmal: Passt das dann so?

    Einen Kommentar schreiben:


  • jjmargis
    antwortet
    Hallo Michael,

    vielen Dank schon mal.
    Zu deiner Zusammenfassung habe ich noch eine kleine Frage.

    Zustand 1:
    Beschreibung:
    Früh-Modus
    Ziel:
    Es soll kein Macro durchlaufen werden, unabhängig davon, ob 1/2/3'b01 auf EIN oder AUS steht.
    Damit muss FREI auf AUS gesetzt werden bzw. in diesem (AUS-) Zustand verharrren.
    Das würde bedeuten, dass im Frühmodus nichts passiert. Wenn dann der zeitliche Wechsel in den Tagmodus (Bsp. mit Sonnenaufgang) erfolgt, dann greift der Zustand 2 und die "Tagesmacros" wären aktiv, richtig?

    Was wäre wenn ein längerer Zeitraum (mehr als 1 Tag) überwacht werden soll?
    Beispiel:
    Voraussetzung:
    Macro für Sonnenaufgang_gedeckelt soll bei Abwesenheit (1/2/3'b01=EIN) die Rollos morgens hochfahren.

    - Tag 1 = Frühmodus
    - 1/2/3'b01 auf EIN => nichts passiert, Das Macho für Sonnenaufgang_gedeckelt würde nicht aktiv sein.
    - Wechsel von Frühmodus in Tagesmodus
    - Tagesmacros aktiv
    - Wechsel von Tagesmodus und Nachtmodus
    - Nachtmacros aktiv
    - Wechsel von Nachtmodus in Frühmodus
    - Tag 2 im Frühmodus
    Das wäre nur ein zeitlicher Wechsel. Allerdings wäre bereits 1/2/3'b01 auf EIN - vom Vortag.
    Dann würde das Macro Sonnenaufgang_gedeckelt nicht aktiv sein, richtig?

    Oder erkenne ich das nur nicht?

    @Andreas
    Wenn man die Fragestellung so liest, hört sich das alles sehr verwirrend an.
    Das scheint so.
    Ziel ist es eine Verzögerung für eine GA einzubauen, die nur wirkt, wenn die GA auf EIN geht und der Aktivierungszeitpunkt vor Sonnenaufgang des gleichen Tages liegt.
    Als Beispiel...
    Es werden die Macros "Sonnenuntergang_gedeckelt" und "Sonnenaufgang_gedeckelt" für die Rollo-Steuerung verwendet.
    - Man steht um 07:00h auf und lässt alle Rollos im Haus hochfahren.
    - Man verlässt um 08:00h das Haus (es ist vor Sonnenaufgang) und aktiviert
    die Abwesenheitssteuerung.
    - Nun wird das Macho "Sonnenuntergang_gedeckelt" aktiv und die Rollos fahren runter.
    - Wenn dann der Sonnenaufgang erfolgt fahren die Rollos wieder hoch.
    -> Dieses runter/hoch soll unterdrückt werden, in dem die Aktivierung des GA für die Abwesenheit verzögert wird, so dass die Rollos nicht runterfahren.
    - Das ganze soll aber ansonsten, bei mehrtägiger Abwesenheit durchgängig mit beiden Macros "Sonnenuntergang_gedeckelt" und "Sonnenaufgang_gedeckelt" laufen.

    Viele Grüße
    Jens

    Einen Kommentar schreiben:


  • anlo007
    antwortet
    Hallo,

    Wenn man die Fragestellung so liest, hört sich das alles sehr verwirrend an. Mal soll ein Macro aktiviert werden, mal ein Merker definiert werden.

    Probleme dieser Art werden normalerweise bedeutend übersichtlicher, wenn man sie von der Ausgangsseite her aufdröselt und sich entsprechende Hilfsmerker macht.

    1. Merker_Tag = nach Sonnenaufgang und vor Sonnenuntergang
    2. Merker_Nacht= !Merker_Tag
    3. Merker Morgenstunden= <Sonnenaufgang
    4. Merker Abendstunden= >Sonnenuntergang
    5. Merker Vorwahl_Abwesenheit =
    6. Merker_Abwesenheit ein = .... und .... und ....
    Merker_Abwesenheit aus = Taster Anwesenheit

    Dann kannst du für alle gewünschten Zustände deiner Ausgange/Aufrufe mit und, oder, Zeitfunktion,setzen, rücksetzen entsprechend definieren.

    Einen Kommentar schreiben:


  • enertegus
    antwortet
    Entwurf einer Zustandsmaschine im EibPC

    Ich mache mal den Thread https://knx-user-forum.de/eibpc/2449...f-2-308-a.html hier weiter, da es für alle interessant werdne könnte...

    Einen Kommentar schreiben:

Lädt...
X