Ankündigung

Einklappen
Keine Ankündigung bisher.

Linknx - Logik Fehler? - ich steh auf dem Schlauch

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

    Linknx - Logik Fehler? - ich steh auf dem Schlauch

    Moin zusammen,

    ich habe in meiner Linknx mehrere (meist Zeitabhängige) Logiken. Jetzt versuche ich mich an der Solarabsorber Steuerung für den Pool und teste schon den ganzen Abend.

    Ziel: Wenn Absorbertemperatur > (Pooltemperatur+3°) dann soll Absorber eingeschaltet werden ...

    ich versuche hin und her aber irgendwie greift da was an Logik nicht. Kann mal jemand draufschauen und mir die Augen öffnen?

    Hier die objects:
    Code:
    <object id="pumpe_automatik" gad="6/2/0" type="1.001" flags="cwtus">Pumpe Automatik</object>
    
                    <object id="pumpe_pool" gad="1/1/71" type="1.001" flags="cwtus">Pumpe Pool</object>
    
                    <object id="absorber_pool" gad="1/1/73" type="1.001" flags="cwtus">Absorber Pool</object>
    
                    <object id="kueche_wand_steckdose" gad="1/1/19" type="1.001" flags="cwtus">Küche Wand Steckdose</object>
    
                    <object id="flur_wand_steckdose" gad="1/1/34" type="1.001" flags="cwtus">Flur Wand Steckdose</object>
    
                    <object id="flur_led_rgbw_w" gad="1/3/78" type="5.xxx" flags="cwtus">Flur LED RGBW (W)</object>
    
                    <object id="abwesend_automatik" gad="6/2/3" type="1.001" flags="cwtus">Abwesend Automatik</object>
    
                    <object id="beregnung_rasen" gad="1/1/68" type="1.001" flags="cwtus">Beregnung Rasen</object>
    
                    <object id="beregnung_terrasse" gad="1/1/69" type="1.001" flags="cwtus">Beregnung Terrasse</object>
    
                    <object id="temp_pool" gad="7/1/8" type="9.xxx" flags="cwtus">Temperatur Pool</object>
    
                    <object id="temp_absorber" gad="7/1/9" type="9.xxx" flags="cwtus">Temperatur Absorber</object>
    
                    <object id="deltapool" gad="7/1/11" type="9.xxx" flags="cwtus">Delta Pool Temp</object>
    und hier die rule um die es geht:

    Code:
           <rule id="absorberautomatik">
    
                <condition type="and">
    
                    <condition type="object" id="pumpe_automatik" value="on" />
    
                    <condition type="object-compare" id="temp_absorber" id2="temp_pool" op="gt" />
    
    <!--            <condition type="object-compare" id="temp_pool" id2="30.0" op="lte" trigger="true" /> -->
    
                </condition>
    
                <actionlist>
    
                    <action type="formula" id="deltapool" x="temp_pool" c="3"/> <!-- deltapool = temperatur_pool + 3 -->
    
                    <condition type="object-compare" id="temp_absorber" id2="deltapool" op="gt" />
    
                    <actionlist>
    
                            <action type="set-value" id="absorber_pool" value="on" />
    
                    </actionlist>
    
    <!--            <actionlist type="on-false">
    
                            <action type="set-value" id="absorber_pool" value="off" />
    
                    </actionlist>   -->
    
                </actionlist>
    
           </rule>
    Liebe Grüße

    Wanni

    #2
    Hi,

    ich mach zwar nichts mehr mit linknx, aber soweit ich mich erinnere, geht das so überhaupt nicht...

    Vorgehen:
    - eine Rule, die bei jeder Änderung von temp_pool die Formel (+3) ausführt
    Code:
    <rule id="rechnen">
        <condition type="object" id="temp_pool" trigger="true"/>
        <actionlist>
           ... hier Deine Formel ...
        </actionlist>
    </rule>
    - dann eine Rule for den Vergleich
    Code:
    <rule id="Vergleich">
        <condition type="object-compare" id="temp_absorber" id2="deltapool" op="gt" trigger="true"/>
        <actionlist>
        ... was auch immer Du machen willst...
        </actionlist>
    </rule>
    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Vielen Dank Waldemar, hatte schon gehofft dass Du dich meldest. Deine Version funktioniert (ich hatte auch nichts anderes gedacht). Irgendwie denke ich wohl noch nicht ganz linknx konform.

      Eine Frage noch: Wenn ich in der compare condition den Wert des pools mit einer Konstanten vergleichen will:

      <condition type="object-compare" id="temp_pool" id2="30" op="lt" trigger="true"/>

      startet linknx nicht (das war oben auch auskommentiert) ... hast Du auch ne Idee warum?

      Wanni
      Zuletzt geändert von wanni; 23.05.2016, 19:09.

      Kommentar


        #4
        Hi Wanni,

        ja klar... object-compare ist, wie der Name schon sagt, der Vergleich zwischen 2 Objekten. Den Vergleich mit der Konstanten hast Du doch auch schon in der ersten Zeile (der Vergleich mit true bzw. on).

        In diesem Fall:
        Code:
            <condition type="object" id="temp_pool" op="lt" value="30"/>
        Wenn linknx nicht startet, schaue einfach ins log, das ist sehr ausführlich und sagt auch, was nicht geklappt hat. Da stand sicherlich etwas wie "object mit id=30 nicht gefunden".

        Deine Logik lief übrigens u.A. auch nicht, weil Du in Deinem AND die einzige Trigger-Condition auskommentiert hattest.

        Ansonsten darfst Du auch keine geschachtelten actionlist machen!

        Gruß, Waldemar
        OpenKNX www.openknx.de

        Kommentar


          #5
          ..das mit den geschachtelten hatte ich mir fast gedacht, zu früheren Programmierzeiten war das oft die einzige (und teils auch die eleganteste) Lösung. Bei Linknx muss man schon arg umdenken. Alleine eine extra Rule nur für die Berechnung "plus drei" widerstrebt mir.

          Mit was arbeitest du denn inzwischen wenn nicht mehr linknx? Wenn ich mich recht erinnere waren deine Logiken mehr als umfangreich und sehr ausgetüftelt.

          Wanni

          Kommentar


            #6
            Schau mal ins Callidomus-Forum, da ist Waldemar inzwischen aktiv. :-)

            Kommentar


              #7
              Hi,

              ich verwende derzeit smarthome.py in Verbindung mit smartvisu. Ich werde mir aber auch kommenden Monat callidomus ansehen, dann habe ich wieder etwas Zeit.

              Ansonsten: linknx ist durchaus mächtig, allerdings richtet sich die Syntax nicht danach, was Dir gefällt
              Die Regeln sind sehr atomar und es gibt keine "Unterstrukturen", ich habe nach ca. 1000 rules auch die Übersicht verloren...

              sh.py ist etwas übersichtlicher, da es baumartig strukturiert ist. Die Visu ist mir aber zu langsam. Deswegen interessiere ich mich für callidomus.

              Gruß, Waldemar

              OpenKNX www.openknx.de

              Kommentar


                #8
                ich hab bei callidomus nur mal kurz reingeschaut. Im Prinzip doch wieder eine Visu (mit etwas mehr CPU Leistung als der RasPi weil er dafür Bedingungen stellt) wo siehst du die großen Vorteile?

                Kommentar


                  #9
                  Hi Wanni,

                  es ist nicht "nur" eine Visu, sondern auch ein passendes Backend (in Form von einem weiterentwickelten smarthome.py). Ob es wirklich Vorteile hat, werde ich in den kommenden Monaten testen. Die bisherigen Demos, die ich gesehen habe, haben das Adressiert, was mir bisher an der sh.py+smartvisu Kombi nicht gefallen hat: Die callidomus Visu ist sauschnell. Ich werde das entsprechend auch zu Hause testen und wenn es in meinem Hausnetz auch so schnell ist, wird es wahrscheinlich mein Basissystem werden.

                  Ich sage "wahrscheinlich", weil es davon abhängt, ob ich auch selber die Sourcen für das Backend und die Visu erzeugen kann. Im Gegensatz zu sehr vielen hier im Forum stehe ich nämlich gar nicht auf irgendwelche "klicki-bunti-visu-editoren", die alles vernachlässigen, was einen sinnvollen Software-Entwicklungsprozess ausmacht: Versionsverwaltung, Diffs, integrierte Entwicklungsumgebung, Code-Completion, Syntax-Highlighting, Search, Replace, Cut&Paste, frühzeitige Fehlererkennung etc.
                  Leider hat Marcus genau so eine (in meinen Augen überflüssige) "klicki-bunti" Editier-Oberfläche geschaffen, und ich hoffe, es gibt die Möglichkeit, die nicht nutzen zu müssen. Die Visu an sich finde ich toll und schnell, das ist auf jeden Fall der Hammer.

                  Gruß, Waldemar


                  OpenKNX www.openknx.de

                  Kommentar


                    #10
                    HI, ich hab einen Fehler in meinem Linknx und seh in mal wieder nicht, es geht immer noch um die TDR für den Pool Absorber. Hier der Ausschnitt:

                    Code:
                    
                    
                            <rule id="rechnen">
                    
                                    <condition type="object" id="temp_absorber" trigger="true"/>
                    
                                    <actionlist>
                    
                                            <action type="formula" id="deltapool" n="1.0" m="1.0" c="3.0" b="0.0" a="1.0" x="temp_pool"/> <!-- deltapool = temperatur_pool + 3 -->
                    
                                    </actionlist>
                    
                            </rule>
                    
                    
                    
                    
                           <rule id="absorberautomatik_an">
                    
                                <condition type="and">
                    
                                    <condition type="object-compare" id="temp_absorber" id2="deltapool" op="gt" trigger="true"/>
                    
                                    <condition type="object" id="temp_pool" op="lte" value="30"/>
                    
                                </condition>
                    
                                <actionlist>
                    
                                            <action type="set-value" id="absorber_pool" value="on" />
                    
                                </actionlist>
                    
                           </rule>
                    
                    
                    
                    
                            <rule id="absorberautomatik_aus">
                    
                                <condition type="or">
                    
                                    <condition type="object-compare" id="temp_pool" id2="temp_absorber" op="gt" trigger="true"/>
                    
                                    <condition type="object" id="temp_pool" op="gt" value="30"/>
                    
                                </condition>
                    
                                <actionlist>
                    
                                            <action type="set-value" id="absorber_pool" value="off" />
                    
                                </actionlist>
                    
                           </rule>
                    irgendwas stimmt mit den Vergleichstemperaturen nicht. Hat Linknx da irgendwas "gespeichert" was ich nicht sehe? Mir scheint als ob es immer mit dem Letzten Maximalwert vergleicht, sprich die Rechung wird ausgeführt und das größte Ergebnis bleibt irgendwo hängen ... ich weiss grad (mal wieder) nicht weiter ...

                    Wanni

                    Kommentar

                    Lädt...
                    X