Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX Controller (Android)

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

    #61
    Zitat von Saturn61 Beitrag anzeigen
    Habe gesehen das es hier wohl Unklarheiten gibt bezüglich Gruppenadressen und Statusobjekte.

    1. Grundsätzlich muss man wissen das der KNX-Bus eine Multicast Adressierung verwendet und Event gesteuert ist, z.B. Taster sendet den Wert 1 an Schaltaktor für Licht ein. Der Schaltaktor kann dann zurücksenden eine 1 für Licht ist eingeschaltet. Diese Rückmeldung wird aktiv von der Schaltaktor-Applikation zurückgesendet. Hier legt der Ersteller der Applikation fest ob und wie eine Rückmeldung erfolgen kann.

    2. Das Read auf eine Gruppenadresse hingegen wird vom jeweiligen KNX-Stack zurückgesendet. Die Implementierung ist für den Stack-Hersteller Pficht. Der Ersteller der Applikation kann über Flags ggf. nur festlegen ob ein Read auf ein Objekt erlaubt ist. In der Regel dann über die ETS aktivierbar.

    3. Das Read-Telegramm wird von der Applikation nicht von einem Write-Telegramm unterschieden. Beide setzen in der Objektstruktur des KNX ein Update-Flag und schreiben den Wert in das Objekt. Dies ist wichtig zu wissen, das die Antwort auf ein Objekt-Read kaum von einem Objekt-Write zu unterscheiden ist.

    4. Visualisierungen haben hier oft ein Problem da der Status permanent angezeigt werden soll. Hierzu sind die Schaltbefehle als auch die Rückmeldungen heranzuziehen. Die Frage ist hier, welche Wahrheit will man anzeigen. Es gibt eigentlich drei Zustände für eine Lampe, EIN, AUS und undefiniert. Beim Start einer Visualiserung ist der Zustand zunächst undefiniert. Erst mit dem ersten eintreffenden Schalttelegramm ist der Zustand definiert EIN oder AUS.

    5. Status ist nicht Status. Normalerweise zeigt die Statusanzeige eines Tasters an ob die Lampe Ein- oder Ausgeschaltet ist. Dumm nur, das eine Lampe über mehrere Gruppenadressen geschaltet werden kann. Man spricht von überlappenden Schaltgruppen, z.B. zwei einzeln schaltbare Lampen und ein Zentral-EIN/AUS. Die Zentralschaltung erfolgt in der Regel über eine dritte Gruppenadresse. Wenn nun der Status der Lampen an jeweils einer der ersten Lampen hängt wirds kritisch. Eingeschaltet über jeweils die Einzelgruppenadresse zeigt der Status an den Tastern EIN, ausgeschaltet über Zentral, schon ist's passiert, die Taster zeigen Status EIN, obwohl die Lampen beide aus sind.

    6. Aktive Rückmeldung über Rückmeldegruppenadresse heisst hier die Lösung. Die Applikation meldet aktiv den Schaltvorgang zurück. Es wird hierfür dann eine eigene Rückmeldegruppenadresse verwendet. Wird nun im obigen Beispiel eine 4. und 5. Gruppenadresse als Rückmeldung auf die Einzeltaster verwendet, so können die Taster jeweils den richtigen Zustand der Lampe wiedergeben auch wenn diese nicht von den Einzeltastern eingeschaltet wurden. Oft werden hier wegen der einfacheren Konfiguartion in der ETS separate Rückmeldeobjekte verwendet.

    7. Problemfall Dimmaktoren. Die Dimmaktoren haben nach KNX-Spezifikation mindestens 3 Objekte, ein Schaltobjekt, ein Dimmobjekt und ein Werteobjekt. Das Schaltobjekt hat zwei Funktionen, EIN-Aus-schalten als auch den Schaltzustand senden. Der Schaltzustand wird auch gesendet, wenn der Dimmaktor aussgeschaltet war und über ein Dimm- oder Wertetelegramm eingeschaltet wurde. Habe ich jetzt mehr als einen Dimmaktor in der Gruppe und ich sende z.B. 50% auf das Werteobjekt, so schaltet der Dimmaktor ein und dimmt auf 50%. Das Einschalten wird jetzt über das Schaltobjekt auf alle Dimmaktoren in der Gruppe gesendet und alle schalten auf 100%. Da das Schalten nach KNX EIS2 Spezifikation auch Rückgemeldet werden muss kommt es zum Lawineneffekt. Daher haben heute fasst alle Dimmaktoren ein separates Rückmeldeobjekt.

    8. Statuslesen bei Programmstart. Grundsätzlich haben alle Visualisierungen das Problem, das der Status mit dem Programmstart gelesen werden muss. Dies macht nicht immer Sinn und kann ggf. sogar eine Funktion auslösen, siehe Beispiel oben mit dem Dimmaktor. Bei Jalousieaktoren macht es z.B. keinen Sinn da der Status nur Auf oder Zu wiedergeben kann. Der Status einer Jalousie die nur halb gefahren ist kann nicht wiedergegeben werden (es sei denn der Jalousieaktor hat auch ein Werteobjekt). Das unbedarfte Lesen kann so auch eine Funktion auslösen. Der Jalousieaktor auf 50% könnte durch das Lesen des BEWEG-Objektes sogar seine Fahrt fortsetzen. Werden viele Gruppenadressen verwendet, so kann das Lesen aller gleichzeitig ebenfalls Probleme in den Gateways verursachen wenn alle Rückmeldungen auch gleichzeitig empfangen werden müssen.

    9. Implementierungsvorschlag:
    Die Rückmeldung sollte parametrierbar sein, z.B. Taster, Anzeige des Schaltbefehls, Anzeige eines Rückmeldeobjektes (separate Gruppenandresse), keine Statusanzeige solange kein gültiger Wert vorliegt.
    Bei Initialisierung: die Rückmeldung lesen, auf erste Rückmeldung warten, Zeitverzögerung für Lesen Rückmeldung.
    Beim Dimmem will man oft den Status einer Lampe auf einen Blick sehen. Da empfielt es sich eine Balken- oder Prozentanzeige anzuzeigen. Ggf. noch kombiniert mit einer Leuchte die heller und dunkler wird. Die Dimmanzeige sollte zwei Objekte haben, eine für den Helligkeitswert und eine für den Schaltwert. Grundsätzlich ist der Helligkeitswert in % zu übernehmen, Empfang auf dem Schaltobjekt setzt entsprechen 0% oder 100%.

    10. Die optimale Implementierung für einen Dimmer hat 3 Elemente und 5 Objekte.
    Elemente: 1. Taster Aus/AB, 2. Taster Ein/Auf, 3. Schieberegler 0-100%. Die Beiden Taster gehören zusammen und haben gemeinsam ein Schaltobjekt, ein Rückmeldeobjekt und ein Dimmobjekt. Analog zum Verhalten richtiger KNX-Taster kurze Betätigung sendet EIN bzw. AUS, lange Betätigung (und halten) größer 0,6 Sekunden sendet Dimm-Auf bzw. DIM-Ab, mit dem Loslassen wird Dimm-Stop gesendet.
    Der Schieberegler sendet nach Verstellung und loslassen den entsprechenden Prozentwert. Die Elemente Taster und Schieberegler müssen nicht zwingend kombiniert werden. Vorrausgesetzt entsprechend verbundene Rückmeldeobjekte bei den Dimmaktoren sorgen dafür das der Status der Taster und des Schiebereglers entspreched aktualisiert werden.


    Ich hoffe ich konnte mit diesem Beitrag etwas Licht in dieses schwierige Thema bringen.

    lg
    Roland
    Hallo Roland,

    vielen Dank für die ausführliche Beschreibung! Ich habe gestern bereits mit der Implementierung angefangen und werde heute vielleicht noch fertig. Meine Idee ist folgende:
    1.) Beim definieren einer Gruppenadresse (egal ob schalt oder dimmen) kann man zusätzlich noch eine Status-Gruppenaddresse definieren. Das ist aber optional.
    2.) Beim starten der App schicke ich auf alle Status-Gruppenaddressen ein Read-Command.
    2.1.) Wenn keine Status-Gruppenadresse eingetragen ist verwende ich für den Read Command die eigentliche Schalt-/Dimm Gruppenadresse.
    2.2.) (noch nicht implementiert) die App wird ja alle Telegramme mitbekommen und auf diejenigen "reagieren" die eben in der App definiert wurden. Meine "Wahrheit" über den Status wäre somit der letzte Wert der für eine Gruppenadresse gekommen ist - egal ob über die Schalt-Adresse oder Status-Adresse.

    Da liegt es dann ja am Nutzer ob und wie er mit Rückmeldeobjekten arbeitet, oder? In meinem Fall hätt's ja vorher auch schon funktioniert, da es keine Rückmeldeobjekte gibt.

    Wie geht's eigentlich mit dem Router? Konntest die Verbindung schon herstellen?
    lg
    markus

    Kommentar


      #62
      Zitat von avajon Beitrag anzeigen
      Wie geht's eigentlich mit dem Router? Konntest die Verbindung schon herstellen?
      Nein bis jetzt nicht. Habe nochmal die IP/Port überprüft.
      Habe beim Anlegen des Projektes die Fehlermeldung "Invalid Argument" erhalten. Direkt danach kam die Meldung "KNX Verbindung konnte nicht hergestellt werden". Beim Versuch einen Taster zu Schalten gab es wieder einen Absturz. Habe die Meldung gesendet, hoffe ich.

      lg
      Roland

      Kommentar


        #63
        Zitat von Saturn61 Beitrag anzeigen
        Nein bis jetzt nicht. Habe nochmal die IP/Port überprüft.
        Habe beim Anlegen des Projektes die Fehlermeldung "Invalid Argument" erhalten. Direkt danach kam die Meldung "KNX Verbindung konnte nicht hergestellt werden". Beim Versuch einen Taster zu Schalten gab es wieder einen Absturz. Habe die Meldung gesendet, hoffe ich.

        lg
        Roland
        Invalid Argument klingt irgendwie komisch, kann mich nicht erinnern diese Meldung eingebaut zu haben.
        Wichtig, du musst nur die IP intern und Port intern angeben. Port ist normalerweise 3671. Wie sieht denn die IP aus? Kommst du mit dem Telefon dort hin?

        Naja, wenn die App sich gar nicht zum Bus verbinden konnte, dann stürtzt sie gerne ab wenn man dann irgendwo auf einen Schalter/Dimmer klickt.

        lg + viel Glück noch.
        markus

        Kommentar


          #64
          Zitat von avajon Beitrag anzeigen
          1.) Beim definieren einer Gruppenadresse (egal ob schalt oder dimmen) kann man zusätzlich noch eine Status-Gruppenaddresse definieren. Das ist aber optional.
          Ja, das ist OK

          Zitat von avajon Beitrag anzeigen
          2.) Beim starten der App schicke ich auf alle Status-Gruppenaddressen ein Read-Command.
          Hier würde ich noch einen Parameter mit einfügen ob der Status beim Start gelesen werden soll, siehe Punkt 8.

          Zitat von avajon Beitrag anzeigen
          2.1.) Wenn keine Status-Gruppenadresse eingetragen ist verwende ich für den Read Command die eigentliche Schalt-/Dimm Gruppenadresse.
          Ja, ist OK

          Zitat von avajon Beitrag anzeigen
          2.2.) (noch nicht implementiert) die App wird ja alle Telegramme mitbekommen und auf diejenigen "reagieren" die eben in der App definiert wurden. Meine "Wahrheit" über den Status wäre somit der letzte Wert der für eine Gruppenadresse gekommen ist - egal ob über die Schalt-Adresse oder Status-Adresse.

          Da liegt es dann ja am Nutzer ob und wie er mit Rückmeldeobjekten arbeitet, oder? In meinem Fall hätt's ja vorher auch schon funktioniert, da es keine Rückmeldeobjekte gibt.
          Ja, so gets.

          Gruß
          Roland

          Kommentar


            #65
            Zitat von Saturn61 Beitrag anzeigen
            Hier würde ich noch einen Parameter mit einfügen ob der Status beim Start gelesen werden soll, siehe Punkt 8.
            Den Parameter kann ich noch hinzufügen - aber wenn dann würd ich das global machen, also pro Projekt und nicht auf Gruppenadressen-Ebene.

            lg
            markus

            Kommentar


              #66
              Zitat von avajon Beitrag anzeigen
              Den Parameter kann ich noch hinzufügen - aber wenn dann würd ich das global machen, also pro Projekt und nicht auf Gruppenadressen-Ebene.
              Solltest du vielleicht nochmal überdenken. Grundsätzlich ist es ja nicht falsch die Gruppenadressen beim Start zu lesen. Mann sollte nur die Problemfälle ausschließen können.

              lg
              Roland

              Kommentar


                #67
                Zitat von Saturn61 Beitrag anzeigen
                Ja, das ist OK


                Hier würde ich noch einen Parameter mit einfügen ob der Status beim Start gelesen werden soll, siehe Punkt 8.


                Ja, ist OK


                Ja, so gets.

                Gruß
                Roland
                Zitat von Saturn61 Beitrag anzeigen
                Solltest du vielleicht nochmal überdenken. Grundsätzlich ist es ja nicht falsch die Gruppenadressen beim Start zu lesen. Mann sollte nur die Problemfälle ausschließen können.

                lg
                Roland
                stimmt... werde ich mir nochmal anschauen wo/wie ich es am Besten einbaue. Werde es mal in meiner Taskliste notieren. Danke für die Tipps!

                lg
                markus

                Kommentar


                  #68
                  Zitat von avajon Beitrag anzeigen
                  Wichtig, du musst nur die IP intern und Port intern angeben. Port ist normalerweise 3671. Wie sieht denn die IP aus?
                  Die IP ist 192.168.132.40. Die IP des Android ist 192.168.132.100,

                  Zitat von avajon Beitrag anzeigen
                  Kommst du mit dem Telefon dort hin?
                  Verstehe die Frage nicht. Das Motorola XOOM ist ein Tablett-PC, ohne GMS, nur WIFI. Kann das das Problem sein ?

                  lg
                  Roland

                  Kommentar


                    #69
                    Zitat von Saturn61 Beitrag anzeigen
                    Die IP ist 192.168.132.40. Die IP des Android ist 192.168.132.100,


                    Verstehe die Frage nicht. Das Motorola XOOM ist ein Tablett-PC, ohne GMS, nur WIFI. Kann das das Problem sein ?

                    lg
                    Roland
                    stimmt, das hatte ich leider vergessen. Ich hab damit gemeint, ob es im selben Netz ist, aber das tut's ja. sehr komisch.

                    Heute bringe ich noch eine Version raus; aber bei der nächsten (kommt wahrscheinlich am wochenende) werde ich eine Art Testseite einbauen, auf der man seine Einstellungen verändern und testen kann. Vielleicht muss man da etwas ändern. Ich schau dass es so "flexibel" wie möglich wird.

                    Was ich dir noch anbieten kann, ist, dass ich versuche den Kontakt mit dem User, der den selben KNX/IP Router hat wie du, herzustellen. Also ich würde ihm deine Kontaktdaten geben und fragen ob er dir helfen kann/will. okay? vielleicht hilft das ja.

                    lg
                    markus

                    Kommentar


                      #70
                      Zitat von avajon Beitrag anzeigen
                      Was ich dir noch anbieten kann, ist, dass ich versuche den Kontakt mit dem User, der den selben KNX/IP Router hat wie du, herzustellen. Also ich würde ihm deine Kontaktdaten geben und fragen ob er dir helfen kann/will. okay? vielleicht hilft das ja.
                      Ja, gute Idee

                      Habe gerade mal einen Netzwerk-Sniffer auf dem PC mit der ETS getested. Das Gateway meldet sich einwandfrei. Da ich das XOOM nicht tracken kann habe ich auf dem Tablett ein neues Projekt erstellt und auf die IP des PC verbunden. War aber kein Zugriffsversuch zu erkennen.
                      Mal sehen ob es so was wie Wireshark auch für Android gibt.

                      lg
                      Roland

                      Kommentar


                        #71
                        Zitat von Saturn61 Beitrag anzeigen
                        Ja, gute Idee

                        Habe gerade mal einen Netzwerk-Sniffer auf dem PC mit der ETS getested. Das Gateway meldet sich einwandfrei. Da ich das XOOM nicht tracken kann habe ich auf dem Tablett ein neues Projekt erstellt und auf die IP des PC verbunden. War aber kein Zugriffsversuch zu erkennen.
                        Mal sehen ob es so was wie Wireshark auch für Android gibt.

                        lg
                        Roland
                        kannst mir bitte per pm deine mail-adresse schicken?

                        achja, nur zur Sicherheit, wenn du irgendwas bei den IP/Port änderst, beende die App oder kill sie mit einem Taskkiller. Nicht, dass irgendwo was gecached wird.

                        lg

                        Kommentar


                          #72
                          Hallo,

                          ich habe die Version 1.0.5 nun online gestellt. ACHTUNG: beim update werden alle bestehenden Projekte gelöscht! Das ist leider wegen Datenbankänderungen notwendig. Da ich nicht garantieren kann, dass dies in Zukunft nicht nochmal passieren wird, bitte ich euch die Projekte lokal auf dem PC zu erstellen und dann im KNX Controller zu importieren. Bei Fragen bitte kurz melden (ist aber auf der Homepage beschrieben).

                          Neue Funktionen: Man kann nun bei den Gruppenadressen eine neue Status-Adresse anlegen. Wenn diese befüllt ist, dann wird beim Start ein Read Command auf diese durchgeführt. Wenn sie nicht befüllt ist, dann auf die Hauptadresse.
                          Und noch ein paar kleinere bugfixes - ich hoffe es wird dadurch etwas stabiler.

                          lg
                          Markus

                          Kommentar


                            #73
                            Super Projekt

                            Hi!
                            Schickes Projekt soweit.

                            Ich habe mich letztes Jahr auch an einen "KNX Sender" für Android gesetzt. Der ist aber nur zum Testen gewesen und sendet an hardcodete GAs.

                            Schreibst du das alles von Scratch? Ich habe damals Calimero auf Android zum laufen gebracht. Dann war der Rest ca. 20 MInuten Programmierarbeit ;-)

                            Verfolgst du später kommerzielle Ziele? Falls nicht könntest du es ja als OpenSource ansetzen und dir quasi Hilfe ins Boot holen.

                            Ansonsten habe ich noch einen Vorschlag: Meine App nutzt die Discover Funktion vom EIBD und findet im ihn LAN automatisch. Wäre vielleicht auch was für deine App.

                            Gruß
                            René

                            Kommentar


                              #74
                              Zitat von ICEbAIR Beitrag anzeigen
                              Hi!
                              Schickes Projekt soweit.

                              Ich habe mich letztes Jahr auch an einen "KNX Sender" für Android gesetzt. Der ist aber nur zum Testen gewesen und sendet an hardcodete GAs.

                              Schreibst du das alles von Scratch? Ich habe damals Calimero auf Android zum laufen gebracht. Dann war der Rest ca. 20 MInuten Programmierarbeit ;-)

                              Verfolgst du später kommerzielle Ziele? Falls nicht könntest du es ja als OpenSource ansetzen und dir quasi Hilfe ins Boot holen.

                              Ansonsten habe ich noch einen Vorschlag: Meine App nutzt die Discover Funktion vom EIBD und findet im ihn LAN automatisch. Wäre vielleicht auch was für deine App.

                              Gruß
                              René
                              Hallo René

                              danke für den Tipp mit dem Discover - hab das gestern zufällig gefunden und möchte es für die nächste Version einbauen.
                              Und ja, ich verwende auch Calimero. Mein erster Test war auch hardcoded das Licht im Wohnzimmer einzuschalten. Aber der Weg bis hier her war schon etwas zach, da es für mich die erste Android App ist. Aber es wird schon.

                              Kommerzielle Ziele verfolge ich gar keine, war nie geplant und wird es auch nicht sein. Ich helfe den Usern wirklich sehr gerne und versuche mehr oder weniger guten Support zu geben, aber das nur weil ich möchte und nicht weil ich mich dazu verpflichtet fühle. Ob ich irgendwann den Source öffentlich verfügbar mache weiß ich ehrlich gesagt nicht, hab ich mir noch nie Gedanken darüber gemacht; Stand heute würd ich sagen nein, da ich es als mein Hobby sehe und meine Ideen verwirklichen möchte.

                              lg
                              markus

                              Kommentar


                                #75
                                Funktioniert !

                                Bei mir funktioniert es auch Super !
                                Projektimport schalten , alles geht .
                                Vielen Dank !

                                Kommentar

                                Lädt...
                                X