Ankündigung

Einklappen
Keine Ankündigung bisher.

Fragensammlung EibPC programmierung

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

    Fragensammlung EibPC programmierung

    Hallo.
    Ich habe zwar schon gefühlt ewig den EibPC im Einsatz, aber mache leider immer noch zu wenig damit.
    Daher habe ich ein paar Fragen die ich jetzt gerne gesammelt loswerden würde.

    1. Wie kann ich in einem Zeitdiagramm eine 0/1 Größe anzeigen lassen? Ich würde gern z.B. die Zeiten an denen es über den Tag geregnet hat anzeigen lassen. Ich habe schon mal versucht den b01 Wert zu konvertieren - falls das ein Problem sein sollte. Hat leider auch nicht geholfen.

    2. Wie kann man die Extremwerte in der Anzeige in einem einfachen Button zurücksetzen. Ich lasse also z.B. die Maximale Windgeschindigkeit anzeigen. Die wird aber offenbar endlos weitergeführt. Ich würde sie gerne pro Tag/Woche/Monat usw. sehen bzw. anzeigen können. Ich finde leider keinen Zugriff auf die Extremwertbestimmung.

    3. Kann man die Extremwerte in der einfachen Button-Anzeige auch abhängig von der gewählten Zeitachse in Zeitdiagrammen ändern? Wenn ich also die aktuelle Woche in einem Diagramm anzeigen lasse, dass dann auch der entsprechende Min/max Wert in dem Button angezeigt wird.

    4. Kann man irgendwie erreichen, dass die gespeicherten Daten z.B. eines Zeitdiagramms nicht beim Überschreiben des Programms zurückgesetzt werden? Gerade wenn man alle paar Tage mal was neues draufspielt sind jedesmal die interessanten Werte weg.

    Vielen Dank schon mal für jede Hilfe!

    Thorsten


    #2
    Zitat von fth Beitrag anzeigen
    Hallo.
    1. Wie kann ich in einem Zeitdiagramm eine 0/1 Größe anzeigen lassen? Ich würde gern z.B. die Zeiten an denen es über den Tag geregnet hat anzeigen lassen. Ich habe schon mal versucht den b01 Wert zu konvertieren - falls das ein Problem sein sollte. Hat leider auch nicht geholfen.
    Über den Visusassistenten. Oder was genau meinst Du?
    2. Wie kann man die Extremwerte in der Anzeige in einem einfachen Button zurücksetzen. Ich lasse also z.B. die Maximale Windgeschindigkeit anzeigen. Die wird aber offenbar endlos weitergeführt. Ich würde sie gerne pro Tag/Woche/Monat usw. sehen bzw. anzeigen können. Ich finde leider keinen Zugriff auf die Extremwertbestimmung.
    Die Beobachtung stimmt so, war mir heute zufällig auch aufgefallen und wir wohl auf die Featureliste kommen. Derweil musst Du dir den Code selbst erstellen und dann auf die Variable schreiben. Ich habe das z.B. so realisiert.
    Code:
    AnzeigeUpdate=cycle(30,0) or systemstart()
    fTagestiefsttemperaturHeute=100.0
    fTageshoechstemperaturHeute=-100.0
    if AnzeigeUpdate then {
    fTagestiefsttemperaturHeute= min("ThermeAußentemperatur-3/3/13",fTagestiefsttemperaturHeute);
    fTageshoechstemperaturHeute= max("ThermeAußentemperatur-3/3/13",fTageshoechstemperaturHeute);
    } endif
    
    if htime(0,0,0) then {
    fTagestiefsttemperaturHeute=100.0;
    fTageshoechstemperaturHeute=-100.0;
    } endif
    4. Kann man irgendwie erreichen, dass die gespeicherten Daten z.B. eines Zeitdiagramms nicht beim Überschreiben des Programms zurückgesetzt werden? Gerade wenn man alle paar Tage mal was neues draufspielt sind jedesmal die interessanten Werte weg.
    Wenn du das über das Zeitdiagramm löst, speichert das wie parametriert die Daten automatisch. Allerdings ist hier noch ein Bug im aktuellen Release, dauert wohl nur noch ein paar wenige Tage (nur EibPC2).
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hallo und danke für die schnellen Antworten.

      Zu 1.:
      Naja. Wenn ich im Visu-Assistenten ein Zeitdiagramm verwende und z.B. die GA mit der Info Regen ja/nein parametriere, bleibt das Diagramm später in der Anzeige immer leer. Egal wie häufig sich was ändert es werden keine Werte übernommen. Wohingegen der Button die Info korrekt anzeigt. Die GA liefert also Werte, nur das Diagramm zeigt es nicht. Für andere Messwerte wie Tempertur klappt es dagegen.

      BTW: Die Auswahl des anzuzeigenden Zeitraumes in dem Diagramm ist auch eine Wissenschaft für sich... also ich schaffe selten das zu machen was ich möchte. Gibt es da nochmal ein Update? Zum Beispiel habe ich gestern Abend ein neues Programm aufgespielt - das Digramm für z.B. Temperaturen ist also zum Start "leer". Nachdem die ersten Werte eintrudeln kann ich es mir ja dann ansachauen. Es startet mit dem Zeitraum von 1.Januar bis heute - was in einer Geraden von 0 am 1. Januar bis zum aktuallen Temeraturwert heute zeigt. Wenn ich dann "Letzter Tag" auswähle ändert sich das Diagramm nicht. Ich kann dann mühsam mit dem Zoom und Verschieben versuchen den aktuellen Zeitraum zu treffen.

      Zu 2.:
      Super - danke für die Info. Ich werde mal den Code probieren. Das sollte ja schon mal klappen. Wenn ich mir zu dem Feature was wünschen darf :-) Für Wetterwerte wären natürlich solche Auswahlen super:
      Jeweils min/max/avg/median für:
      • aktuelle Stunde
      • letzte vollständige Stunde
      • aktueller Tag
      • letzter Tag
      • aktuell laufenden 24 Stunden (gleitend)
      • letzten 24 Stunden davor (gleitend)
      • aktuelle Woche
      • letzte Woche
      • aktueller Monat
      • letzter Monat
      • aktuelles Jahr
      • letztes Jahr

      Zu 4.:
      Das Zeitdiagramm startet bei mir bei jedem Programm upload komplett leer. Wie kann ich das einstellen?

      Danke!

      Kommentar


        #4
        Zitat von fth Beitrag anzeigen
        Zu 1.:
        Naja. Wenn ich im Visu-Assistenten ein Zeitdiagramm verwende und z.B. die GA mit der Info Regen ja/nein parametriere, bleibt das Diagramm später in der Anzeige immer leer. Egal wie häufig sich was ändert es werden keine Werte übernommen. Wohingegen der Button die Info korrekt anzeigt. Die GA liefert also Werte, nur das Diagramm zeigt es nicht. Für andere Messwerte wie Tempertur klappt es dagegen.
        Kann es sein, dass die GA häufiger zwischen 0 und 1 wechselt und zum Zeitpunkt der Wertübernahme die GA auf 0 steht? Dauerregen hat es ja nicht so oft.
        BTW: Die Auswahl des anzuzeigenden Zeitraumes in dem Diagramm ist auch eine Wissenschaft für sich... also ich schaffe selten das zu machen was ich möchte. Gibt es da nochmal ein Update? Zum Beispiel habe ich gestern Abend ein neues Programm aufgespielt - das Digramm für z.B. Temperaturen ist also zum Start "leer"
        Mit Sicherheit (für den V2). Hier wollen einiges verbessern, wird wohl Ende diesen Jahres werden.
        Das Zeitdiagramm startet bei mir bei jedem Programm upload komplett leer. Wie kann ich das einstellen?
        Es macht das automatisch, Du musst allerdings "Shutdown" in Projekteinst./EibPC aktivieren. foobar0815 kann da morgen sicher was zu sagen, ich denke, letzteres wird mit dem Update auch nicht mehr notwendig.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          zu 1:
          Versuch' mal, das b01-Objekt zu skalieren, im Experten zB mit
          RegenWert=convert("Regen-1/2/3", 0)*100 und verwende den RegenWert für's Diagramm.

          Die Verbesserung Zeitwahl ist in Arbeit.

          zu 2:
          Gute Idee, hier wäre wahrscheinlich ein Logikknoten am besten, der genau dies tut. Nehme ich als sinnvolles Feature auf.

          zu 4:
          Beim Start ist das Zeitdiagramm leer und wird mit dem ersten neuen Eintrag aktualisiert, falls was gespeichert ist.
          Dazu muss, wie enertegus schreibt, SHUTDOWN in den Projekteinstellungen aktiviert sein.

          Kommentar


            #6
            Hallo foobar.

            Danke für die Rückmeldungen.

            Zu 1.
            Ich habe es jetzt über folgende Logic gelöst. So wird alle 15 Minuten oder nach Wertänderung ein Wert ins Diagramm geschrieben. Sieht ganz gut aus. Bis soweit zufrieden.

            Regen.jpg

            Zu 2.
            Das klingt gut :-) Gerne auch so. Noch flexibler.

            Zu 4.
            Da bin ich noch am testen ob es das macht was ich erwarte.

            Angehängte Dateien

            Kommentar


              #7
              Hallo nochmal.

              Habe das Thema Extremwerte für Temperaturen jetzt so umgesetzt. Die Init-Werte musste ich als f16 deklarieren, da sonst der -100 Wert nicht akzeptiert wurde.
              Was mir nicht klar ist, warum die Init-Werte wie hier mit z.B. 100/-100 angegeben werden müssen. Wenn ich das durch den aktuellen Messwert ersetzte (was mir eigentlich sinnvoller erscheint) werden alle geänderten Messwerte der Sensoren direkt aus alle Variablen mit den Extremwerten geschrieben... Warum??? Ich hätte erwartet, dass die Änderung nur zu htime(0,0,0) erfolgt.


              // Trigger
              anzeigeUpdate30min = cycle(30,0) or systemstart()

              // Init
              fMinTempToday = 100f16
              fMaxTempToday = -100f16
              fMinTempYesterday = 100f16
              fMaxTempYesterday = -100f16
              fMinTempThisWeek = 100f16
              fMaxTempThisWeek = -100f16
              fMinTempLastWeek = 100f16
              fMaxTempLastWeek = -100f16
              fMinTempThisMonth = 100f16
              fMaxTempThisMonth = -100f16
              fMinTempLastMonth = 100f16
              fMaxTempLastMonth = -100f16
              fMinTempThisYear = 100f16
              fMaxTempThisYear = -100f16
              fMinTempLastYear = 100f16
              fMaxTempLastYear = -100f16

              // min/max Temperaturen Außen
              if anzeigeUpdate30min then {
              fMinTempToday = min("Dach Temperatur (°C)-5/0/3", "1W Aussen NO Temp-3/2/14", fMinTempToday);
              fMaxTempToday = max(min("Dach Temperatur (°C)-5/0/3", "1W Aussen NO Temp-3/2/14"), fMaxTempToday);
              } endif

              if htime(0,0,0) then {
              fMinTempYesterday = fMinTempToday;
              fMaxTempYesterday = fMaxTempToday;
              fMinTempThisWeek = min(fMinTempToday, fMinTempThisWeek);
              fMaxTempThisWeek = min(fMaxTempToday, fMaxTempThisWeek);
              fMinTempThisMonth = min(fMinTempToday, fMinTempThisMonth);
              fMaxTempThisMonth = min(fMaxTempToday, fMaxTempThisMonth);
              fMinTempThisYear = min(fMinTempThisYear, fMinTempThisYear);
              fMaxTempThisYear = min(fMaxTempThisYear, fMaxTempThisYear);

              fMinTempToday = 100f16;
              fMaxTempToday = -100f16;
              } endif

              if dayofweek()==MONTAG then {
              fMinTempLastWeek = fMinTempThisWeek;
              fMaxTempLastWeek = fMaxTempThisWeek;
              fMinTempThisWeek = 100f16;
              fMaxTempThisWeek = -100f16;
              } endif

              if day(1) then {
              fMinTempLastMonth = fMinTempThisMonth;
              fMaxTempLastMonth = fMaxTempThisMonth;
              fMinTempThisMonth = 100f16;
              fMaxTempThisMonth = -100f16;
              } endif

              if month(1,1) then {
              fMinTempLastYear = fMinTempThisYear;
              fMaxTempLastYear = fMaxTempThisYear;
              fMinTempThisYear = 100f16;
              fMaxTempThisYear = -100f16;
              } endif

              Kommentar


                #8
                Zitat von fth Beitrag anzeigen
                Was mir nicht klar ist, warum die Init-Werte wie hier mit z.B. 100/-100 angegeben werden müssen. Wenn ich das durch den aktuellen Messwert ersetzte (was mir eigentlich sinnvoller erscheint) werden alle geänderten Messwerte der Sensoren direkt aus alle Variablen mit den Extremwerten geschrieben... Warum???
                Das ist gerade die Stärke des EibPC - es werden nur Objekte neu ausgewertet, wenn sich etwas geändert hat, statt zyklisch alles auszuwerten.
                Das ist als Validierungsschema im Handbuch beschrieben.

                Wenn du eine Zuweisung der Form
                Code:
                Variable=Anderevariable
                hast, dann ändert sich Variable immer, wenn sich Anderevariable ändert.

                Das
                Code:
                if
                verlagert diese Änderungs-Abhängigkeit auf die Bedingung, wertet diese aber auch nur dann neu aus, falls sich etwas geändert hat.

                Kommentar


                  #9
                  Hallo foobar.

                  Vielen Dank für die Erklärung. Gut - so macht das dann Sinn was passiert. Allerdings hätte ich eher erwartet, das Initial alles ausgewertet wird und dann nur noch die Sachen die von Bedingungen abhängen. So könnte man halt besser Initialwerte definieren. Aber es ist wie es ist - damit kann man gut leben ;-)

                  Jedenfalls funktioniert mein Programm jetzt wie erwartet (nachdem ich den Code oben erst mal noch Bug-fixen musste).

                  Grüße
                  Thorsten

                  Kommentar

                  Lädt...
                  X