HTTP-Befehl (Ausgang) wird doppelt gesendet

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • inswe
    LoxBus Spammer
    • 19.06.2016
    • 230

    HTTP-Befehl (Ausgang) wird doppelt gesendet

    Hallo,

    da wir planen, demnächst ebenfalls unser eigenes Heim zu errichten, bin ich beim Thema Hausautomatisierung auf Loxone gekommen.
    Bisher habe ich in unserer Mietwohnung viel mit Himbeeren und openHAB als zentrale Instanz "gebastelt".

    Nun habe ich mir, um mich schon vor Baubeginn in die Thematik einzuarbeiten, einen Loxone-Miniserver beschafft und bin dabei,
    zu Übungszwecken den IST-Zustand von openHAB zu migrieren. Da bisher wenig über die Relais der Loxone-Komponenten läuft,
    benötige ich oft eine Kommunikation nach "außen", also zu den Himbeeren. Dabei ist mir mehrmals folgendes Problem aufgefallen:

    Wenn ich einen virtuellen Ausgang anlege und den dazugehörigen HTTP-Befehl triggere (beispielsweise mit einem virtuellen Taster),
    dann wird dieser Befehl beinahe immer doppelt gesendet. Dies kann man wunderbar im httpd-log verfolgen. Zwischen den GETs liegen ca.
    4-8 Sekunden. Das tritt jedoch nur beim Protokoll HTTP und bei einer Verwendung des Ausgang als analog auf.

    Natürlich könnte ich die Ausgänge nun als digitale verwenden und die gesamte URL im Ausgang (nicht HTTP-Befehl) definieren, aber
    da geht mir leider eine Menge Dynamik verloren (Stati übergeben wie z.B. "Stunde")

    Ich verwende hierbei die Version 7.4.4.14 (Loxone-Config + Miniserver)
    Vielleicht ist jemanden anderes dieses Problem bereits aufgefallen und kann mir sagen, ob es an mir liegt oder ob ich hier auf einen Bug gestoßen bin.
    Vielen Dank.
  • svethi
    Lebende Foren Legende
    • 25.08.2015
    • 6297

    #2
    Das ist kein Fehler oder Problem. Bei der Verwendung als analog wird bei jeder Werteänderungen logischerweise der neue Wert gesendet. Wenn Du da einen Taster dran hast, dann gibt es bei gedrücktem Taster eine analoge 1. Wenn Du den Taster loslässt geht der Wert wieder auf Null was einer Änderung entspricht und gesendet wird. Die Frage ist ja, was es Dir bringt das digitale Tastersignal als analog zu verwenden. Analog verwendet man eigentlich nur, wenn der Wert, der am Verbinder angelegt wird, auch mit übermittelt werden soll und mehr ist als 0 und 1
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar

    • inswe
      LoxBus Spammer
      • 19.06.2016
      • 230

      #3
      Hallo und danke für deine Antwort.

      Ich glaube, zur Verdeutlichung des Anwendungszweckes nenne ich mal ein Beispiel.
      Auf einer Himbeere läuft ein Webserver, der eine entsprechende Anfrage via TTS auf den angeschlossenen Lautsprechern ausgibt.

      Ich möchte nun einen "Kuckuck" realisieren. Hier nehme ich den Stundenimpuls von Loxone und aktiviere damit den Baustein "Status". Dieser wird an einem weiteren Eingang mit dem Wert "Stunde" gefüttert und generiert daraus die abzufragende URL, die schlussendlich via GET an die Himbeere gesendet wird. Das funktioniert auch wunderbar, bis auf die wiederholte Abfrage der URL seitens Loxone.
      Ich hänge mal ein paar Screenshots für dieses Beispiel an.

      Dieses Problem würde ebenfalls auftreten, wenn ich mit dem HTTP-Ausgang Werte aus Loxone wie Temperaturen oder andere Stati übergeben möchte.

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 1.png
Ansichten: 531
Größe: 10,1 KB
ID: 45735

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2.png
Ansichten: 537
Größe: 26,4 KB
ID: 45736

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 3.png
Ansichten: 547
Größe: 20,1 KB
ID: 45737

      Kommentar

      • romildo
        Lebende Foren Legende
        • 25.08.2015
        • 5128

        #4
        Hallo,
        Aus meiner Sicht gibt es da zwei Möglichkeiten.
        Variante 1
        Du legst den kompletten Befehl in den Statusblock und schreibst im Ausgang bei "Befehl bei EIN" nur noch <v>
        In die zweite Zeile im Statusblock schreibst Du in den Statustext eine andere Befehlsausgabe oder ein Leerzeichen. Dann führt dieser Befehl ins "Nirvana".
        Kompletter Befehl für Statustext 1.Zeile :
        /index.php?do=write&device=tts&attr1=Es+ist+<v4>+Uh r .
        Variante 2
        Ich würde es allerdings mittels eines Analogspeichers lösen.
        Schaltuhr und Stundenimpuls an UND wie bisher
        UND Ausgang an Tr von Analogspeicher
        Stunde an AI von Analogspeicher
        AQ von Analogspeicher an Ausgangsbefehl.
        Kompletten Befehl in Ausgang Befehl bei EIN

        Kompletter Befehl für Ausgansbefehl:
        /index.php?do=write&device=tts&attr1=Es+ist+<v>+Uhr .
        Nachtrag:
        Remanenz nicht vergessen, ausser du möchtest bei Neustart durch den Vogel geweckt werden.
        Zuletzt geändert von romildo; 19.06.2016, 20:05.
        lg Romildo

        Kommentar

        • inswe
          LoxBus Spammer
          • 19.06.2016
          • 230

          #5
          Vielen Dank für die ausführliche Hilfe. Ich habe direkt deine 2. Variante getestet und es funktioniert!
          Mein Gesamtkonstrukt ist nun fertig, nur den passenden Remanenzeingang suche ich noch

          So siehts nun aus:
          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 1.png
Ansichten: 508
Größe: 19,0 KB
ID: 45766

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5128

            #6
            Beim Analogspeicher am unteren Eingang.
            Mit der Maus darüber fahren und wenn der Punkt erscheint auf die Maustaste drücken.
            lg Romildo

            Kommentar

            Lädt...