Ankündigung

Einklappen
Keine Ankündigung bisher.

Pause nach exec Binding

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

    Pause nach exec Binding

    Hi!

    Ich habe eine Temperaturregelung (Kühlung) per 1wire und openHAB implementiert (Details hier)

    Für das Auslesen der Temperatur verwende ich das 1wire Binding. Zum Ein-/Ausschalten des Kühlkreislaufs 1wire Schalter mit Magnetventilen die ich per exec Binding ansteuere ("owwrite")

    Dabei gibt es leider ein Problem. "owwrite" im Terminal ausgeführt braucht ziemlich lange bis es beendet wird. Erst danach ist der Bus wieder benutzbar. Woran das liegt weiß ich noch nicht. Entweder am 1wire generell, an meiner Verkabelung etc..

    Wie auch immer. Das exec Binding führt "owwrite" aus und kehrt sofort zurück. Die gleich darauffolgenden "reads" der Temperatursensoren laufen ins Leere weil der Bus noch beschäftigt ist. Das führt soweit dass alles durcheinander gerät, erst nach längerer Wartezeit wieder funktioniert, oder gar der Bus abstürzt und dann vom System neu erkannt wird (neues Linux Device, owserver findet den Bus nicht mehr...)

    Jetzt hätte ich gerne gewartet bis owwrite zurückkehrt, oder aber zumindest für eine festgelegte Zeitspanne. Geht das mit dem exec Binding? Wenn ja, dann wie?

    Insgesamt soll das alles ohehin noch ein wenig "runder" werden aber erstmal möchte ich den Prototypen zum Laufen bringen und ein bisschen Erfahrung mit openHAB sammeln.

    Danke für Hinweise
    lg
    oifnu

    #2
    Von welcher Stelle aus werden denn die Read angestoßen, aus der gleichen Regel heraus oder unabhängig davon?

    Kommentar


      #3
      Die Temperatursensoren werden vom 1wire Binding ausgelesen. Wie das intern abläuft weiß ich leider nicht.

      Nachdem das 1wire Binding zumindest derzeit noch kein Schreiben auf den 1wire Bus unterstützt, habe ich das durch ein exec Binding gelöst das "owwrite" auf der Kommandozeile ausführt. Und das dauert leider ein paar Sekunden bis es abgelaufen ist (warum weiß ich auch nocht nicht genau)

      Die beiden Vorgänge sind damit mehr oder wenig unabhängig. Wenn ich das exec Binding zu einer kurzen Pause überreden könnte, wäre mir schon sehr geholfen

      danke
      oifnu

      Kommentar


        #4
        Die beiden Vorgänge sind damit mehr oder wenig unabhängig. Wenn ich das exec Binding zu einer kurzen Pause überreden könnte, wäre mir schon sehr geholfen
        Dazu könntest Du ja ein Skript aufrufen was nach dem owwrite ein sleep/msleep einlegt. Nur weiß ich nicht, wie Dir das nutzen soll denn das 1-Wire Binding führt die Abfragen ja in einem anderen Thread aus der von dem sleep nicht beeinflusst wird.

        Ein echt übler Hack könnte sein das write auszuführen wenn gerade alle 1-Wire Sensoren aktualisiert wurden in der Hoffnung das dann erst mal Ruhe ist.

        Vielleicht lässt sich der Aktor der geschrieben werden soll auch an einen eigenen Bus hängen, könnte ggf. auch helfen.

        Kommentar


          #5
          Ohne selbst 1-wire zu nutzen, hört sich das für mich nach rumdoktern an Symptomen an.
          Auch wenn es erstmal hart klingt: versuche doch lieber herauszufinden, warum owwrite den Bus blockiert.
          Also erstmal nur den 1-wire-Stick direkt mit einem Aktor verbinden.
          Tritt dann auch die Blockade auf? Dann dürfte es die Software sein, es sei denn, der Stick ist nicht in Ordnung.
          Treten die Probleme auch mit einem anderen Programm auf?
          Wie sieht es mit dem Perl-Script aus?
          Wie sieht es mit einem anderen Betriebssystem aus (nur zum Eingrenzen des Fehlers)?
          Selbst kurzfristig sind solche Seltsamkeiten auch fern des eigentlichen Problems mindestens ärgerlich.
          Ich hatte bei mir auch ab und zu mal komische Effekte, hab ewig umsonst gesucht, bis ich im Rahmen einer Neuordnung meiner knx-Adressen auf ein paar kleine Fehler stieß (Stichwort sendende Adresse), die sich quasi gegenseitig aufhoben, außer unter bestimmten Bedingungen (und dann gab's halt Seltsamkeiten).

          Kommentar


            #6
            Zitat von udo1toni Beitrag anzeigen
            versuche doch lieber herauszufinden, warum owwrite den Bus blockiert. Also erstmal nur den 1-wire-Stick direkt mit einem Aktor verbinden. Tritt dann auch die Blockade auf?
            Komplexität reduzieren, guter Vorschlag! Das würde ich auch zunächst mal versuchen. Wenn Du mit den OWFS Tools die gleichen Effekte beobachtest, können wir auf openHAB-Ebene weitersuchen …
            Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

            Kommentar


              #7
              OK, danke erstmal für die Hilfe! Ich bin grade unterwegs und kann mir die Installation erst am Montag wieder zur Brust nehmen, aber ich werd's mal ein wenig systematischer angehen. Eventuell hilft es auch "owwrite" in den "uncached" Zweig des 1wire Busses auszuführen. Ich habe auch schon im Netz herumgesucht ob ich auf ähnliche Berichte stoße aber da habe ich nichts interessantes gefunden. Naja, ich werde mal ein bisschen weiter probieren und melde mich dann wieder. Danke, oifnu

              Kommentar


                #8
                Nun, mittlerweile habe ich das Problem ein wenig weiter untersucht. Es sieht wohl so aus als ob die langen Timeouts vom 1wire Bus selber stammen. Immerhin ist er ziemlich lang und es hängen doch ein paar Geräte dran. Obwohl ich mich an die Specs und Anleitungen für größere 1wire Installationen gehalten habe kommt es manchmal einfach zu diesen Pausen und offenbar muss ich damit leben.

                Allerdings habe ich herausgefunden wie ich dem 1wire Buscontroller einen fixen Pfad zuweisen kann (nämlich mittels udev Regeln). Wenn sich der Bus wieder mal erhängt und neu startet wird er so vom owserver wieder gefunden. Im schlimmsten Fall verliere ich einige Temperaturmessungen und das ist nicht so schlimm.

                Im Normalbetrieb gibt es ohnehin fast nur Lesezugriffe, und das funktioniert problemlos. Es wird nur selten auf den Bus geschrieben und darum geht das auch meistens gut.

                Also: Problem gelöst, Ursache unbekannt ;-)

                Danke für die Mithilfe! Ich habe zwar noch weiter Fragen aber die kommen in einen eigenen Thread, und auch nicht mehr heute.

                oifnu

                Kommentar


                  #9
                  Zitat von oifnu Beitrag anzeigen
                  Also: Problem gelöst, Ursache unbekannt ;-)
                  prima, danke für das Update!
                  Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                  Kommentar


                    #10
                    Probleme mit exec

                    Hi, ich bin neu hier und auch bei openHab. Der Thread kommt meinem Problem sehr nah deswegen hoffe ich hier kann mir jemand helfen

                    Ich habe die openHab Software auf einem raspberryPi installiert und versuche ein angeschlossenes 433mhz Funkmodul über das exec Binding anzusprechen. Ich habe schon viele varianten von codes probiert, sehe nur keinerlei Reaktion im Terminal. Das einzige was ich sehe ist recieved command ON / OFF. Aber exec scheint kein Komando zu senden.

                    meine demo.item configuration

                    Switch Funksteckdose_1 "Funksteckdose 1" (A_1, Zentral, Zentral_Funksteckdosen) { exec="ON:send 11111 1 1, OFF:send 11111 1 0"}

                    villeicht könnt ihr mir sagen was ich falsch mache

                    Kommentar

                    Lädt...
                    X