Ankündigung

Einklappen
Keine Ankündigung bisher.

DIY-Logikmodul - Diskussionsthread (Fragen/Beispiele/Lösungen)

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

    #16
    Was mir hier noch aufgefallen ist (als Info an alle): Die Von- und Bis-Felder in der ETS bei den Eingangskonvertern können keine Kommazahlen, sorry. Das bedeutet, ich kann keinen DPT9-Eingangskonverter von 0,25 bis 1,75 machen. Die minimale Auflösung ist 1. Ich werde da erst was machen, wenn wenn es wirklich gebraucht/gefordert wird, weil eine Änderung bisherige Intervalle für DPT9 kaputtmachen würde. (Das war nicht korrekt, wie weitere Tests ergeben haben!)

    Es war nicht ein Fehler im Coding, sondern in der ETS-Applikation. Ich habe nur beim Differenzintervall und Differenzhysterese für DPT9 in der knxprod versehentlich Integer-Felder genommen (copy&paste-Fehler), für Wertintervall und für Hysterese aber korrekte Float-Felder.
    Das kann ich nur in der Applikation korrigieren, indem ich korrekterweise Float-Felder auch bei Differenzintervall und Differenzhysterese verwende. Dies bedeutet aber, dass bisherige DPT9-Eingangskonverter mit Differenzintervall oder Differenzhysterese (und nur die für DPT9) beim Upgrade ihre Von-/Bis- bzw. Einschalt-/Ausschalt-Werte verlieren werden und manuell nachgetragen werden müssen!

    Vorteil dieser Korrektur: Eigentlich soll es so sein und man kann doch DPT9-Eingangskonverter mit Kommazahlen (also z.B. von 0,25 bis 1,75) definieren.

    Die restlichen Aussagen zu DPT9 sind aber korrekt und beachtenswert:

    Der andere Punkt, den man immer bei DPT9 berücksichtigen muss, ist die Genauigkeit von 2-Byte-Float-Werten. Beachtet somit bitte bei euren Tests, dass DPT9 kein exakter Wert ist. Was aus einer Zahl x für ein Wert gemacht wird, kann man in der ETS sehen, indem man mit dem Gruppenmonitor einen DPT9-Wert sendet und dann beim gesendeten Telegramm nachschaut, was wirklich gesendet wurde.
    DPT9-Ungenauigkeit.jpg
    In dem obigen Beispiel sieht man, dass eine 99.0 als DPT9 auf dem Bus mit dem Wert 99.04 gesendet wird.

    Ich habe an möglichst alles Stellen versucht, das "richtige" mit DPT9 zu machen, aber es gibt sicherlich noch Lücken (wie von Sönke gefunden). Meldet es mir einfach und ich sehe, was man dann machen kann.

    Gruß, Waldemar
    Zuletzt geändert von mumpf; 12.01.2022, 15:39.
    OpenKNX www.openknx.de

    Kommentar


      #17
      Hi allerseits,

      ab sofort ist die Version 3.8 release vom Sensormodul verfügbar. In dieser Version ist das obige DPT9-Problem behoben.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #18
        Im erstem Beitrag habe ich ergänzt, dass es jetzt eine eigene Firmware für das Logikmodul "standalone" gibt.

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #19
          Hallo zusammen,

          es hat eine Weile gedauert, aber ich habe den Feuchtigkeitssensor für die Dusche hinbekommen. Hier die "Anleitung" als Anregung oder zum Nachbauen

          Ausgangssituation:
          Im Bad gibt es einen BWM. Dieser hat während des Duschens die bekannte Schwäche, dass er unterm Strahl keine Bewegung erkennt.
          Als Lösung habe ich die Sperre des BWM an die Status-GA der Duschleuchte geklöppelt. Somit muss man die Duschlampe von Hand einschalten und sie schaltet sich über die Treppenlichtfunktion des Aktors selbständig wieder ab (und gibt damit auch den BWM wieder frei), wenn keiner von Hand ausschaltet.


          Aufgabe für das Logikmodul:
          Anhand der Luftfeuchtigkeit registrieren, ob jemand unter der Dusche steht und dann die Duschlampe einschalten/den BWM sperren wenn hell genug.


          Ansatz:
          • Jede Minute die Luftfeuchtigkeit auf eine GA schreiben
          • Der Feuchtigkeitssensor sendet bei 3% Abweichung, bei 3% Abweichung vom vorherigen Wert und jede Stunde
          • Es wird die aktuelle Luftfeuchtigkeit alle 60 Sekunden weggeschrieben
          • Es wird die aktuelle mit der alten Luftfeuchtigkeit verglichen
          • Wenn mindestens 10 Prozentpunkte Unterschied sind, dann wird geduscht.

          Umsetzung:
          Logik Kanal 1: Feuchtigkeit jede Minute speichern
          • Eingang 1: Luftfeuchtigkeit (DPT 9.002)
          • Eingang 2: Minutensignal (DPT 1.017)
          • Ausgang: Luftfeuchtigkeit 60 Sekunden (DPT 9.002)
            • Wert für EIN und AUS: Wert von Eingang 1

          Logik erst auswerten, wenn alle Werte gültig sind
          Logik sendet ihren Wert weiter bei: nur Eingang 2

          Das Minutensignal habe ich sowieso auf dem Bus. Alternativ kann man das auch über einen vorgelagerten Logikkanal mit Treppenlicht machen.

          Logik Kanal 2: Luftfeuchtigkeit gestiegen
          • Eingang 1: Luftfeuchtigkeit (DPT 9.002)
            • Differenzintervall von 10 bis 999
          • Eingang 2: Luftfeuchtigkeit 60 Sekunden (DPT 9.002)
          • Ausgang: Es wird geduscht (DPT 1.001)
            • Nur Wert für EIN senden

          Die nicht näher beschriebenen Eingänge habe ich auf Wertintervall von 0 bis 99999 gestellt. Die sollen halt nur da sein und sonst nichts machen.



          Das ganze funktioniert seit einigen Tagen wunderbar.
          Tausend Dank an Waldemar für die fixe Reparatur des DPT 9.x und für die richtige Idee zur Lösung.

          Duschen war übrigens gestern... Die neue Herausforderung ist jetzt die Erkennung der Geruchsbelästigung, wenn wer auf Klo war.
          Doch das ist eine andere Geschichte, die ein andermal erzählt wird...

          Schönes Wochenende,
          Sönke

          Kommentar


            #20
            Hi Sönke, danke fürs Teilen und danke, dass Du nochmal den DPT9 beim Differenzintervall nachgetestet hast.

            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #21
              Hallo Waldemar,

              ich verzweifel mal wieder...
              Ich möchte gerne bei Schlafzimmer Szene 1 oder 2 den Nachtmodus auf EIN schalten.

              Dazu habe ich einen Logikkanal genommen:
              Logikoperation ODER, nur Eingang 1 aktiv
              Die Logik sendet weiter bei jedem Eingangstelegramm

              Meine Eingangs-Konfiguration sieht so aus:
              Screenshot 2022-03-17 175220.jpg

              Mein Ausgang hat DPT 1 und soll bei 1 ein EIN senden. Bei 0 wird nichts gesendet.
              Meine KOs sind
              Screenshot 2022-03-17 175522.jpg


              Egal, was ich auf 31/0/0 oder 5/5/0 sende (0,1,2,3,7,...)
              Auf 5/5/1 wird niemals etwas ausgegeben.

              Habe ich etwas übersehen?
              Du schreibst: "Es werden nur die Zeilen ausgewertet, die auch einen Haken gesetzt haben." Muss ich da noch irgendwo Haken setzen?
              Kannst Du mal nachsehen, ob es bei DPT 17 noch irgendwo klemmt?
              Hat das so jemand am Laufen?

              31/0/0 ist übrigens meine Testadresse, wie Du es in https://knx-user-forum.de/forum/%C3%...74#post1729074 gezeigt hast. Der Tipp hat mich schon einige Male weitergebracht.

              Beste Grüße und schonmal Danke,
              Sönke

              Kommentar


                #22
                Hallo Waldemar,

                ich würde gerne das Logikmodul um die österreichischen Feiertage ergänzen. Damit das Abwärtskompatibel bleibt muss ich die im cHolidays Array bzw. Logikmodul.share.xml am Ende anfügen und nicht an der richtigen Datumsposition, oder? Soweit ich sehe hätte die Logikauswertung damit jedenfalls kein Problem.

                Grüße, Michael

                Kommentar


                  #23
                  Hi Michael,

                  ja, das könnte man machen. Und ja, müsste eigentlich unten angefügt werden. Ich weiß nicht, ob es in Österreich weitere osterabhängige Feiertage gibt. Für fixe Feiertage könntest Du einfach einen Zeitschaltuhrkanal nehmen, ohne was zu programmieren.

                  Aber wie gesagt, Du kannst gerne auch einen PR stellen.

                  Noch eine Anmerkung wegen Apple-Kompatibilität (Dein Issue auf github): Die ETS6 signiert anders, es wir ein neues Tool geben, dass auch das kann. Das alte MultiplyChannels wird nicht mehr weiterentwickelt.

                  Gruß, Waldemar
                  OpenKNX www.openknx.de

                  Kommentar


                    #24
                    Übrigens: Du kannst im XML die Feiertage schon in der richtigen Reihenfolge anzeigen, nur die Nummern vorne müssen weiter aufsteigend sein (>28, wenn ich mich Recht erinnere).
                    Gruß, Waldemar
                    OpenKNX www.openknx.de

                    Kommentar


                      #25
                      Hi nochmal,

                      Zitat von doenke Beitrag anzeigen
                      ich verzweifel mal wieder...
                      Ich möchte gerne bei Schlafzimmer Szene 1 oder 2 den Nachtmodus auf EIN schalten.
                      nachdem es erst auf einem anderen Logikmodul prima geklappt hat, und ich ein wenig hin und her gespielt habe, klappt es nun auch auf dem, auf dem es soll.
                      Ich habe keine Ahnung, was ich falsch gemacht habe, augenscheinlich habe ich nun genau die Ausgangskonfiguration. Offensichtlich aber doch nicht ;-)

                      Naja, Hauptsache es geht.

                      Grüße,
                      Sönke

                      Kommentar


                        #26
                        Hallo Waldemar,

                        wahrscheinlich steh ich auf dem Schlauch oder kann die Doku nicht richtig lesen...
                        Es geht um einen Alarm für eine offenstehende Tür. Und zwar würde ich gerne einen Buzzer Alarm über eine Logik erstellen, die bei einem EIN-Signal alle 0,5 Sekunden durchgehend piepst, und zwar so lange, bis ein AUS-Signal kommt. Ich habe es mit der Treppenlichtfunktion versucht, bekomme aber bisher immer nur ein einziges kurzes Signal.
                        Zeitbasis für Treppenlicht is 1/10 Sekunde, Zeit für Treppenlicht 0 und Treppenlicht blinkt im n/10 Sekunden Rhythmus ist 5.
                        Ein Versuch, das EIN-Telegramm bei "Ausgang wiederholt zyklisch" alle 0,5 oder 1 Sekunde zu wiederholen hat auch nicht geholfen.

                        Viele Grüße, Jens​

                        Kommentar


                          #27
                          Hi Jens,

                          Zitat von jgerhart Beitrag anzeigen
                          wahrscheinlich steh ich auf dem Schlauch oder kann die Doku nicht richtig lesen...
                          Oder ich hab es nicht deutlich genug geschrieben...

                          Zitat von jgerhart Beitrag anzeigen
                          Zeitbasis für Treppenlicht is 1/10 Sekunde, Zeit für Treppenlicht 0
                          Wenn die Zeit für das Treppenlicht 0 ist, schaltet es sofort ab, sobald ein EIN-Signal eingeht. Die EIN-Zeit ist dann nur so lange, wie ein Kanal zur Verarbeitung benötigt, das ist irgendwas zwischen 10ms bis 80ms.

                          Stell die Zeit auf die maximale Dauer, die das Ding piepen soll. Es geht zwar nicht ohne ein Zeitlimit, aber 10000 Stunden wäre auch ein "immer".

                          Zitat von jgerhart Beitrag anzeigen
                          Treppenlicht blinkt im n/10 Sekunden Rhythmus ist 5.
                          Das ist prima so.

                          Zitat von jgerhart Beitrag anzeigen
                          Ein Versuch, das EIN-Telegramm bei "Ausgang wiederholt zyklisch" alle 0,5 oder 1 Sekunde zu wiederholen hat auch nicht geholfen.
                          Natürlich nicht, da es nach 0.05 Sekunden schon kein EIN-Telegramm mehr gab.

                          Du musst für diese Funktion keine Wiederholung am Ausgang machen, da ja bereits das Treppenlicht 10000 Stunden lang im 0.5-Sekunden-Takt EIN und AUS sendet.

                          Und bitte "Treppenlicht kann ausgeschaltet werden" nicht vergessen, sonst piept es wirklich 10000 Stunden

                          Um das Bild abzurunden: Blinken (und damit auch Piepen) kann man nur solange, wie das Treppenlicht an ist. Normalerweise ist solches Piepen ja äußerst nervig, so dass man von Anfang an bestimmen kann, wie lange es maximal Piept. Früher beenden kann man das durch "Treppenlicht ausschalten".
                          Ein weiterer Vorteil ist, dass man durch die Treppenlichtzeit (unter berücksichtigung der Blinkzeit) auch bestimmen kann, wie oft geblinkt wird. Wenn Du z.B. 0.5 Sekunden blinkzeit angibst, dann ist der Ausgang 0.5 Sekunden an und 0.5 aus. Also eine Puls-Pause-Dauer von 1 Sekunde. Wenn die Treppenlichtzeit auf 3.5 Sekunden gestellt wird, hast Du genau 3 mal blinken.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #28
                            Hallo Waldemar,

                            vielen Dank für deine schnelle Antwort, jetzt funktioniert es!
                            Diese Einstellung hatte ich auch schon versucht und jetzt herausgefunden, dass das Problem woanders liegt: Wenn ich diese Einstellung partiell programmiere, funktioniert es nicht. Erst wenn ich die gesamte Applikation übertrage, klappt es mit dem Alarm

                            Tolle Funktion übrigens! Ansonsten hätte ich alle halbe Sekunde über den Bus EIN und AUS schreiben müssen, was bestimmt nicht gut für die Buslast ist.

                            Gruß, Jens
                            Angehängte Dateien

                            Kommentar


                              #29
                              Zitat von jgerhart Beitrag anzeigen
                              Wenn ich diese Einstellung partiell programmiere, funktioniert es nicht.
                              Ich werde das nochmal ausprobieren, aber ich bezweifle das. Das wäre schon ein grober Schnitzer in der ETS. Und ich programmiere meine Module wirklich fast immer partiell (nur nach einem Upgrade komplett). Ich denke, das wäre schon aufgefallen. Oder Du bist auf einen der Zufälle gestoßen, die im Leben eigentlich nie passieren: Der Hashwert der Parametrisierung vor und nach der Änderung ist gleich. Dann erkennt die ETS nicht den Unterschied, aber in einem solchen Fall solltest Du Lotto spielen, ein 6-er ist häufiger.

                              Ansonsten würde ich aus den 30 /10 Sekunden 32 / 10 machen. Sonst kann es sein, dass der letzte Ton sich etwas abgeschnitten anhört, weil das AUS vom Treppenlicht vor dem Blinken-AUS kommt. Und Du willst wirklich nur 3 mal Piepen? Ursprünglich hieß es "so lange bis es ausgeschaltet wird"?

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                #30
                                Hallo Waldemar,

                                jetzt funktioniert das partielle Programmieren auch bei mir. Ich bin vor 3 Monaten von der ETS5 auf die ETS6 umgestiegen und habe seitdem diesen Sensor noch nie programmiert. Könnte das die Erklärung sein? Würde das bedeuten, dass man nach dem Upgrade der ETS erst mal alle Geräte komplett programmieren muss, damit die partielle Programmierung wieder funktioniert?

                                Die 30/10 Sekunden waren nur erstmal zum Testen, damit die Familie nicht dauerbeschallt wird. Wahrscheinlich stelle ich das auf 30 Minuten oder so.

                                Gruß, Jens

                                Kommentar

                                Lädt...
                                X