Ankündigung

Einklappen
Keine Ankündigung bisher.

HTTP und Ziel nicht ständig erreichbar

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

    HTTP und Ziel nicht ständig erreichbar

    Hallo,

    ich hab das Problem, dass ich verschiedene IP Teilnehmer habe (zum Beispiel TV, Verstärker oder jetzt der CyberQ) die nur wenn sie an sind auch wirklich erreichbar sind.

    Über das HTTP Binding polle ich einzelne Statii (Lautstärke, Kanal, Grillrosttemperatur).

    Wenn die Teilnehmer nicht an sind, laufen diese Polls (alle 60sec) natürlich ins Leere:
    Code:
    10:04:55.370 ERROR o.o.b.h.internal.HttpBinding[:165]- No response received from 'cyberqCache'
    10:04:58.369 ERROR o.openhab.io.net.http.HttpUtil[:211]- Fatal transport error: java.net.NoRouteToHostException: No route to host
    Ich hab den Eindruck, dass das die Stabilität meiner OH Installation beeinträchtigt. Heute morgen gingen einige Regeln nicht, die seit August einwandfrei funktionieren. Gestern habe ich den CyberQ integriert. TV und Verstärker sind im Moment nicht am Bus.

    Kann das ein Memory Leck verursachen? Wie löst ihr das?

    Eigentlich müssen die Items nur dann aktualisiert werden, wenn per Network Health der Teilnehmer auch da ist.

    Könnte man auf der Kommandozeile machen mit einem Cronjob der minütlich läuft, testet ob der Teilnehmer da ist und dann das Itemsfile entsprechend umbenennt, damit es von OH für die Offline Zeit nicht gefunden wird.

    Andere Ideen?

    Viele Grüße
    Ralf

    #2
    Hi,
    deinen Grill in Openhab zu integrieren ist echt mal ne coole Idee.

    Zur Sache:
    Du könntest das denke ich auch mit einer / mehreren Regeln lösen.
    Dafür müsste man das Networkhealth binding zum pollen nutzen und bei Erfolg würde man innerhalb der Regel die Items aktualisieren.
    Das hätte zur Folge, dass du das HTTP Binding nicht mehr in Verbindung mit deinen Items nutzt, sondern nur noch innerhalb der Regeln selbst.

    btw:
    Die Mehrzahl von Status ist Status (das u wird betont) - nicht Statii

    Gruß Marc

    Kommentar


      #3
      Zitat von fog Beitrag anzeigen
      das Networkhealth binding zum pollen nutzen und bei Erfolg würde man innerhalb der Regel die Items aktualisieren.
      Wie geht das genau? Kannst du mir dazu ein Beispiel geben.

      Wie würde das aussehen in der *.rules?

      Kommentar


        #4
        Hi RaK,

        es ist erstmal nur eine Idee gewesen.
        Leider bin ich die nächsten Tage unterwegs und kann es nicht testen.
        Ich kann es daher nur vom Prinzip erklären:

        Du legst dir ein Switch Item an nennen wir es SWITCH_GRILL. Das verbindest du nun mit dem NH Binding, welches sagen wir alle 5sec den Status pollt.
        In der Items sieht das dann etwa so aus:
        Switch SWITCH_GRILL "Grill Online" { nh="Grill.ip" }
        Innerhalb der Rules brauchst zunächst einen Trigger, das sollte mit "SWITCH_GRILL received update" funktionieren, alternativ per cron.
        Dann prüfst du das Item auf ON und beginnst mit deinen Abfragen.
        Mit sendHttpGetRequest(url) sollte das eigentlich gehen. Hier bin ich mir nicht 100% sicher wie genau, da ich auf die schnelle keine Doku gefunden habe. Falls man hier keine Temperatur bekommt, müsste man Notfalls mit einem ext. Script arbeiten.
        Dann per postUpdate(GRILL_TEMP, temp) die Temperatur an das entsprechende Item geben.

        Edit:
        zum lesen der XML kannst du dann XPathTransformationService benutzen. Leider ist der nicht wirklich dokumentiert (ich habe zumindest nix gefunden), daher mal der link zu Github.
        Die Methode transform() ist hier dein Freund.
        https://github.com/openhab/openhab/b...onService.java
        https://github.com/openhab/openhab/wiki/Transformations

        viel Erfolg

        Kommentar

        Lädt...
        X