Ankündigung

Einklappen
Keine Ankündigung bisher.

Licht-GA direkt per IP-Telegramm (z.B. im LAN) steuern

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

    HS/FS Licht-GA direkt per IP-Telegramm (z.B. im LAN) steuern

    Hi,

    gerne möchte ich für besondere Zwecke bestimmte Licht-GA (z.B. RGB-LED) von einem anderen PC im LAN aus direkt ansteuern. Mir scheint, dass dies nur über IP-Telegramm direkt umsetzbar wäre.

    A) Gibt es eine Alternative zum IP-Telegramm, um aus einem Programm heraus im LAN eine oder mehrere Licht-GA direkt anzusteuern? Vielleicht seh' ich ja auch völlig auf dem Schlauch und denke viel zu kompliziert...

    B) Beispiel für ein RGB mit drei Telegrammen auf 45%-12%-6% könnten 3 aufeinander folgende Telegramm sein.
    3.3.56;45%
    3.3.57;12%
    3.3.58;6%

    C) Kann man das universell für mitgelieferte GA machen?

    D) Oder müsste man per RegEx für jede relevante GA ein IP-Telegramm einrichten? Bei 30 möglichen GA wären das 30 RegEx.

    E) Könnte man auch RGB auf drei GA direkt mit einem IP-Telegramm lösen (Annahme, dass die drei stets beieinander sind)? Zum Beispiel:
    3.3.56;RGB; 45;12;6 # 3 aufeinander folgende Aktoren für RGB auf Werte setzen (RegEx "RGB")
    3.3.88;TW; 10;88 # 2 aufeinander folgende Aktoren für Tunable White auf Werte setzen (RegEx "TW")
    3.3.122;;45 # Aktor auf Wert setzen (einzeln)
    3.1.125;;1 # Aktor anschalten (1bit)

    Anmerkung für mein Beispiel: HG 3 = Beleuchtung, MG 1/2/3 = schalten/dimmen/Wert setzen, UG = eindeutige Leuchte/Aktor

    Ich bin für jeden Hinweis dankbar, wie ich das angehen kann. Gerne dokumentiere ich auch die Lösung am Ende für andere User, die diese Frage auch spannend finden.

    saegefisch

    #2
    Als Nachtrag vielleicht ein Wort zu möglichen Anwendung:
    So kann man sehr leicht z.B. Status-Infos per Lichtsignal von Serverprozessen, (langlaufenden) PC-Programmen (Konvertierungen,...) sichtbar machen. Oder synchron zu bestimmten Prozessen passende Lichtstimmungen erzeugen. Oder auch aus Apps heraus (okay: hier fällt iOS dann wohl heraus) beim eintreffen einer Nachricht oder sonstige events daheim im LAN. Es gibt zahllose Dinge, die man nicht leichten Fußes vom HS abfragen kann, aber selber oder per Skript etwas senden könnten. Die pull-Lösung per HS ist für dauerhafte DInge sinnvoll, aber die Welt ist manchmal viel volatiler und schneller - da wäre eine push-Lösung für ein paar Licht-GAs hilfreich....

    saegefisch

    Kommentar


      #3
      Das hatte ich schon vor 12 Jahren umgesetzt, ist auch wirklich kein Ding. Man kann in einem IP-Telegramm ja zig Werte versenden mit einem Trenner und das dann beim Eingang wieder auseinanderdividieren.

      Ich habe mit meinem RGB-Tool gesendet "50#60#100#100# und das beim Emfang wieder aufgeteilt in RGBW. Genaus so kamen damals die Wetterabfragen in den HS, wetter2hs hieß das Ding. Lang lang ist's her...

      Pull ist da unüblich, das wird aktiv gesendet. Bei mir von Heizung, Server, Telefonanalage usw.
      Gruß Matthias
      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
      - PN nur für PERSÖNLICHES!

      Kommentar


        #4
        OK, nach Deinem zweiten Post glaube ich zu verstehen was Du willst (falls nicht und Dir die Antwort nicht hilft, bitte ingnorieren ;-)

        Ich habe mir eine "push-Lösung" auf RasPi für die Heizungsanbindung an KNX mittells eibd (habe noch nicht den knxd im Einsatz) und ein wenig python gebastelt. Es läuft ein daemon, der bei bestimmten events ein Skript triggert, das mit Hilfe von groupwrite und groupswrite die Daten auf den Bus sendet.
        So bekomme ich jede Änderung am Status der Heizung mit, ohne das der HS pollen muss - aber zum "Preis" von mehr Telegrammen auf dem KNX-Bus.

        Soweit mir bekannt ist, gibt es kein fertiges Gerät für so etwas (na, evtl. kann man ein wiregate "missbrauchen"). Man braucht m.E. eine Logik, um die IP-Telegramme auszuwerten und eine Konfiguration, welcher Wert auf welche GA bei welchem IP-Telegramminhalt gesendet werden soll.
        Ich kann mir gut vorstellen, dass die (linuxbasierten) Logiken wie linknx, smarthome.py etc. auch so etwas können, kenne mich aber damit nicht aus.

        Vielleicht hilft es ja als Denkanstoß
        Gruß Marco

        Kommentar


          #5
          Vielen Dank, dass ist ja schon mal guter Input. Ich nehme mit zu
          A): IP-Telegramm ist eine gute Idee (und war das auch schon vor 12 Jahren... ). Oder man versucht es mit einer programmierbaren HW, die direkt KNX-Telegramme auf den Bus bringen kann.

          Bei der 2. Lösung erübrigt sich die Frage, macht aber auch viel mehr initialen Aufwand und Einarbeitung, da ich derlei nicht am Laufen habe. Flexibel, aber es wäre neben dem HS eine 2. Logik-Instanz, was ich für meinen Bedarf vermeiden mag. Daherdie ergänzende Frage bei IP-Telegrammen zu C)-E)...

          @ Matthias: ...kann man eine universelle Lösung machen, bei der die GA mitgeben werden kann? Also eine universelle Lösung? Die müsste nur per RegEx auf erlaubte GAs gefiltert werden. Sonst braucht es ja für jede gewünschte GA eine dedizierte Einstellung für das IP-Telegramm.

          Kommentar


            #6
            Können kann man immer.

            GA direkt geht nicht. Was du machen kannst: deinem Telegramm eine ID mitgeben und dann abhängig davon die Werte auf eine GA verteilen. Aber das musst du auch wieder fest verdrahten, deshlab imho wenig sinnvoll.

            Eine andere Lösung wäre das KO-Gateway (siehe Doku dazu). Da kann ich natürlich eine beliebige GA (intern oder extern) direkt ansprechen.
            Gruß Matthias
            EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
            - PN nur für PERSÖNLICHES!

            Kommentar


              #7
              ah, cool, das KO-Gateway hatte ich noch nicht auf dem Schirm - hört sich nach meinem Plan A an. Danke. Die Option mit x fest verdrahteten IP-Telegramm ist jetzt erstmal Plan B. Muss mir jetzt mal die Doku anschauen und wie ich aus einem Programm zuliefern muss.

              Kommentar


                #8
                Nun sitze ich schon seit einigen Stunden daran, eine allgemeine Doku zu finden, wie ich das KO-Gateway konkret verwenden kann (nicht was es tut). Teile der Doku von Dacom sind leider nicht mehr aufrufbar, es gibt eine paar Forenbeiträge, aber für meine rudimentäre Programierfähigkeit war da nichts zu holen/zu kompliziert (Links von Makki zu cEMI,...), irgendwie habe ich nirgendwo "Butter bei die Fische" gesehen, um damit unter Perl, .Net oder sonstwas loslegen zu können.
                https://knx-user-forum.de/forum/%C3%B...bzw-ko-gateway

                "swHSexit" habe ich gefunden, um per KO-Gateway AKtionen auf einem WIndows-PC auszulösen. Für mich aber die falsche Richtung. Wäre "hsd" das richtige?

                Dann habe ich zwei Seiten gefunden, die mit einer hs.csv für beide Richtungen und Bespielen wie "<HS><SETVALUE=4/1/1,1></HS>" KO setzen. Das wäre genau, was ich brauche, doch es scheint sich um Lösungen in einem größeren Applikationskontext mit einer Menge dran zu handeln. Aber wie kann ich dem KO-Gateway das zukommen lassen?

                Funktioniert das exakt wie das IP-Telegramm, nur mit anderem Port (meist wohl 7003) und anderem Satzaufbau. Aber welchem? MIt welchen Mitteln sendet/empfängt wohl qHSMon.exe...?

                Wenn es wie IP-Telegramm wäre, dann könnte es unter Perl so ausehen, wenn in $send_data das richtige stehen würde:
                Code:
                    my $socket = new IO::Socket::INET (
                      PeerHost => $ip_hs,
                      PeerPort => $port_hs,
                      Proto => 'tcp',
                    );
                    die "cannot connect to the server $!\n" unless $socket;
                    my $size = $socket->send($send_data);
                    shutdown($socket, 1);
                    $socket->close();
                Ich wär' echt dankbar, wenn mir jemand auf's Pferd helfen könnte... vielleicht steh' ich ja auch nur auf dem Zügel...

                saegefisch
                Zuletzt geändert von saegefisch; 14.06.2015, 03:37.

                Kommentar


                  #9
                  Hier fiindest du was dazu
                  Angehängte Dateien
                  Gruß Matthias
                  EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                  - PN nur für PERSÖNLICHES!

                  Kommentar


                    #10
                    Hallo Matthias,
                    super danke. Ab Seite 11 finde ich, was ich suchte. Vielleicht habe ich nicht gut genug gesucht, aber die Dokument die ich fand, hörten nach dem SQL-Beispiel vorher auf. Es ist doch ein wenig schade, dass Gira die Doku dieser wichtigen Schnittstelle so gut versteckt. Egal, jetzt haben wir's ja da...

                    Auf die Schnelle noch die Frage: Wert setzen ist beschrieben, wie kann ich eine Wert anfordern? Ich kann ja nicht immer warten, bis der Wert einer GA sich ändert und vom HS dann unaufgefordert gesendet wird. Lasse ich den Wert im Satz weg und der HS antwortet mit einem Satz inkl. dem aktuellen Wert?

                    Kommentar


                      #11
                      Brauchst du eigentlich nicht. Nach Verbindungsauufabu sind deine Daten immer aktuell:

                      Ablauf des Verbindungsaufbaus:
                      1.) Aufbau der TCP-Verbindung (HS/FS ist der Server). Als Zielport wird der im Experten unter Projekt/KO-Gateway eingestellte Port verwendet.
                      2.) Nach Verbindungsaufbau zum HS/FS muss der Key gefolgt von 0x00 zur Authentifizierung gesendet werden. Wird ohne Key gearbeitet, muss nur 0x00 gesendet werden.
                      3.) Der HS/FS antwortet mit den Initialisierungs-telegrammen. Dabei werden alle gekennzeichneten Kommunikationsobjekte (Experte/Projekt/KO-Gateway) mit ihrem aktuellen Wert übertragen.
                      Gruß Matthias
                      EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
                      - PN nur für PERSÖNLICHES!

                      Kommentar


                        #12
                        ..ah, okay. mir war nicht klar, dass der init alle liefert und sich die Empfängerseite ab dann alle Werte merken muss. Eine einzelne Nachfrage geht also nicht, bei Werte-Alzheimer würde also nur eine neue Verbindung helfen. Aber Werte merken ist ja kein Ding, wollte es nur gänzlich verstehen... Danke! Jetzt muss ich es nur noch machen...Wenn ich ein einfaches Beispiel in Perl geschafft habe, werd' ich's hier gerne ergänzen...

                        Kommentar

                        Lädt...
                        X