Ankündigung

Einklappen
Keine Ankündigung bisher.

LinKNX: Diskussionen zu Tipps, Tricks und Beispiele

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

    #91
    Hallo Oliver,

    Zitat von Merlin123 Beitrag anzeigen
    Ich bekomme im FF beim Test des XMLs den Fehler:
    Code:
    XML-Verarbeitungsfehler: "Junk" nach Dokument-Element
    Adresse: file:///C:/Users/D055700/Programme/xampp/htdocs/visu/linknx.xml
    Zeile Nr. 3, Spalte 1:<config>
    ^
    Das blöde:
    Ich finde da nix
    ich bin mir nicht 100% sicher, aber ich glaube das gehört so:

    Code:
    <?xml version="1.0" ?>
    <config>
    <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2" />
        <services>

    Kommentar


      #92
      Laut dem Posting stimmt es, der hat auch bisher nicht gemeckert...
      Hab heute morgen ne Rule eingefügt, seit dem ist das. Aber auch wenn ich die rausnehme ändert das nichts. Hab da vermutlich versehentlicht noch was anderes verändert

      Wenn ich rumprobiere sieht es so aus:
      Code:
      <?xml version="1.0" ?>
      <config>
      </config>
      geht

      Code:
      <?xml version="1.0" ?>
      <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2"/>
      geht

      Code:
      <?xml version="1.0" ?>
      <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2"/>
      <config>
      </config>
      geht nicht.

      Code:
      <?xml version="1.0" ?>
      <config>
      <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2"/>
      </config>
      geht

      *grübel*

      Werd mal Deine Version probieren. Frag mich nur, wieso das bisher ging... Oder hab ich die Änderung direkt auf meinem Raspi gemacht ohne XML Check...
      Gruß,
      Oliver

      Kommentar


        #93
        Hallo Oliver,

        Zitat von Merlin123 Beitrag anzeigen
        Laut dem Posting stimmt es, der hat auch bisher nicht gemeckert...
        Ja, laut dem Posting stimmt es auch, es stimmt aber bei Dir nicht.

        Zitat von panzaeron Beitrag anzeigen
        und wenn du noch eine Logdatei angibst, findest du auch dort weitere Infos, dazu vor dem </config> folgende Zeile ergänzen:
        Meine Logdatei steht nämlich auch vor </config>, ist mir jetzt wieder eingefallen.

        Gruß
        Michael

        Kommentar


          #94
          Ah jetzt.... Hab das "/" überlesen...
          Danke für's draufstubsen



          Kann noch jemand was zur Syntax des Timers in dem Post sagen?
          Gruß,
          Oliver

          Kommentar


            #95
            Hi,

            ist in erster Näherung richtig

            Code:
            <object type="3.008" id="Rolladen_zentral_zu" gad="0/2/0">Rolladen_zentral_zu</object>
            [...]
            <rule id="RollaedenZeitZu">
              <!-- <condition type='timer' trigger='true' />  die zeile ist falsch -->
              <condition type=[COLOR="Red"]"[/COLOR]timer[COLOR="Red"]"[/COLOR] trigger=[COLOR="Red"]"[/COLOR]true[COLOR="Red"]"[/COLOR]>
                <at hour="22" min="00" wdays="1234567" exception="no" />
              [COLOR="Red"]</condition>[/COLOR]
              <actionlist>
                <action type="set-value" id="Rolladen_zentral_zu" value="close"/>
              </actionlist>
            </rule>
            In Worten:
            • at gehört zur timer condition
            • Ich würde attribute immer mit " notieren, auch wenn die Parser wohl auch ' verstehen...
            • mit exception="no" sagst Du "Nicht an Feiertagen", wenn Du wirklich jeden Tag haben willst, mußt Du exception weglassen (und wdays mit allen Tagen ist default, kann also auch wegfallen)


            Gruß, Waldemar
            OpenKNX www.openknx.de

            Kommentar


              #96
              Danke!

              Gleich mal testen und warten...

              Mir macht meine Szene aus dem Post immer noch Probleme.
              Gestern ging sie, heute wieder nicht. Im Log sieht alles normal aus, aber es hat sich nichts sichtbares getan. Weder am Licht noch an den Rollläden.

              Edit:
              Nach etwas probieren hab ich rausgefunden, dass ich das Flag "s" im Objekt setzten muss und dann als letzte Action das Aufrufobject wieder auf "0".
              Dann sieht das im Log so aus:
              Code:
              2013-02-11 20:05:26,789  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:26,790  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='1' to value='1'
              2013-02-11 20:05:26,791  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '1'
              2013-02-11 20:05:26,793  INFO > Rule  - Rule Szene1 evaluated as 1, prev value was 0
              2013-02-11 20:05:26,798  INFO > Action  - Execute SetValueAction: set Wohn_licht_TV with value on
              2013-02-11 20:05:26,799  INFO > KnxConnection  - write(gad=0/0/6, buf, len=2)
              2013-02-11 20:05:26,801  INFO > Object  - New value on for object Wohn_licht_TV (type: 1.001)
              2013-02-11 20:05:26,902  INFO > Action  - Execute SetValueAction: set Wohn_licht_Couch with value off
              2013-02-11 20:05:26,903  INFO > KnxConnection  - write(gad=0/0/12, buf, len=2)
              2013-02-11 20:05:26,904  INFO > Object  - New value off for object Wohn_licht_Couch (type: 1.001)
              2013-02-11 20:05:27,003  INFO > Action  - Execute SetValueAction: set Wohn_roll_links with value close
              2013-02-11 20:05:27,003  INFO > KnxConnection  - write(gad=0/1/4, buf, len=2)
              2013-02-11 20:05:27,004  INFO > Object  - New value close for object Wohn_roll_links (type: 3.008)
              2013-02-11 20:05:27,103  INFO > Action  - Execute SetValueAction: set Wohn_roll_mitte with value close
              2013-02-11 20:05:27,103  INFO > KnxConnection  - write(gad=0/1/7, buf, len=2)
              2013-02-11 20:05:27,105  INFO > Object  - New value close for object Wohn_roll_mitte (type: 3.008)
              2013-02-11 20:05:27,203  INFO > Action  - Execute SetValueAction: set Wohn_roll_rechts with value close
              2013-02-11 20:05:27,203  INFO > KnxConnection  - write(gad=0/1/6, buf, len=2)
              2013-02-11 20:05:27,205  INFO > Object  - New value close for object Wohn_roll_rechts (type: 3.008)
              2013-02-11 20:05:27,207  INFO > Action  - Execute SetValueAction: set AufrufSzene1 with value off
              2013-02-11 20:05:27,208  INFO > KnxConnection  - write(gad=2/0/1, buf, len=2)
              2013-02-11 20:05:27,214  INFO > Object  - New value off for object AufrufSzene1 (type: 1.001)
              2013-02-11 20:05:27,216  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:27,217  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='0' to value='1'
              2013-02-11 20:05:27,218  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '0'
              2013-02-11 20:05:27,219  INFO > Rule  - Rule Szene1 evaluated as 0, prev value was 1
              2013-02-11 20:05:27,246  INFO > Object  - New value off for object AufrufSzene1 (type: 1.001)
              2013-02-11 20:05:27,246  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:27,247  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='0' to value='1'
              2013-02-11 20:05:27,247  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '0'
              2013-02-11 20:05:27,247  INFO > Rule  - Rule Szene1 evaluated as 0, prev value was 0
              2013-02-11 20:05:35,863  INFO > Object  - New value on for object AufrufSzene1 (type: 1.001)
              2013-02-11 20:05:35,864  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:35,864  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='1' to value='1'
              2013-02-11 20:05:35,864  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '1'
              2013-02-11 20:05:35,865  INFO > Rule  - Rule Szene1 evaluated as 1, prev value was 0
              2013-02-11 20:05:35,867  INFO > Action  - Execute SetValueAction: set Wohn_licht_TV with value on
              2013-02-11 20:05:35,969  INFO > Action  - Execute SetValueAction: set Wohn_licht_Couch with value off
              2013-02-11 20:05:36,069  INFO > Action  - Execute SetValueAction: set Wohn_roll_links with value close
              2013-02-11 20:05:36,169  INFO > Action  - Execute SetValueAction: set Wohn_roll_mitte with value close
              2013-02-11 20:05:36,270  INFO > Action  - Execute SetValueAction: set Wohn_roll_rechts with value close
              2013-02-11 20:05:36,270  INFO > Action  - Execute SetValueAction: set AufrufSzene1 with value off
              2013-02-11 20:05:36,271  INFO > KnxConnection  - write(gad=2/0/1, buf, len=2)
              2013-02-11 20:05:36,271  INFO > Object  - New value off for object AufrufSzene1 (type: 1.001)
              2013-02-11 20:05:36,272  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:36,272  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='0' to value='1'
              2013-02-11 20:05:36,272  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '0'
              2013-02-11 20:05:36,273  INFO > Rule  - Rule Szene1 evaluated as 0, prev value was 1
              2013-02-11 20:05:36,311  INFO > Object  - New value off for object AufrufSzene1 (type: 1.001)
              2013-02-11 20:05:36,313  INFO > Rule  - Evaluate rule Szene1
              2013-02-11 20:05:36,314  INFO > ObjectValue  - SwitchingObjectValue: Compare value_m='0' to value='1'
              2013-02-11 20:05:36,315  INFO > Condition  - ObjectCondition (id='AufrufSzene1') evaluated as '0'
              2013-02-11 20:05:36,317  INFO > Rule  - Rule Szene1 evaluated as 0, prev value was 0
              Beim ersten Aufruf sieht man ja genau was er macht. Beim zweiten Aufruf scheint er nichts mehr zu machen. Wenn ich das Licht aber manuell ausschalten und die Szene ausführe macht er das Licht wieder an. Im Log steht dann für das Licht wieder
              Code:
              2013-02-11 20:11:57,254  INFO > Action  - Execute SetValueAction: set Wohn_licht_TV with value on
              2013-02-11 20:11:57,259  INFO > KnxConnection  - write(gad=0/0/6, buf, len=2)
              2013-02-11 20:11:57,261  INFO > Object  - New value on for object Wohn_licht_TV (type: 1.001)

              Ist vielleicht für den ein oder anderen Einsteiger wie mich interessant zu sehen...
              Gruß,
              Oliver

              Kommentar


                #97
                Zitat von Merlin123 Beitrag anzeigen
                ... und dann als letzte Action das Aufrufobject wieder auf "0".
                Hallo,

                hast Du es stattdessen mal mit der <actionlist type="if-true"> probiert? Soweit ich es vermute, ist der Standard "on-true", was bedeutet, dass die Action nur dann ausgeführt wird, wenn sich der Wert von false auf true ändert. Mit "if-true" wird die action IMMER ausgeführt.

                Viele Grüße,

                Stefan

                ... für den Aktor habe ich keine Anleitung gefunden, aber mal die PDB geladen. Es scheint echt so zu sein, dass der keine Positions-Objekte hat. Das ist wohl ein etwas älteres Schätzchen
                Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                Kommentar


                  #98
                  Das mit if-true hab ich noch nicht probiert. Kann ich heute abend machen.

                  Die Aktoren sind jetzt über 12 JAhre alt Dachte mir, dass die das nicht können... Also doch meine Variation... schade eigentlich....
                  Gruß,
                  Oliver

                  Kommentar


                    #99
                    Ich habe mal meine vollständigen Parameter in den Parallelthread gestellt. Dort gibt es auch eine Umsetzung von 1-bit auf 8bit (auch mit if-true). Vielleicht hilft es ja (auch wenn es sonst kein Hexenwerk ist).

                    Viele Grüße,

                    Stefan
                    Mein Sammelsurium: TS2, Zennio Z38, Siemens LOGO!, Medeodata 140 S, Weinzierl KNX ENO 620, Eibmarkt IP Router, MDT KNX IP IF, Wiregate, Node-Red mit KNX Ultimate, MDT Smart II, diverse Aktoren verschiedener Hersteller ...

                    Kommentar


                      Ah danke!
                      Gruß,
                      Oliver

                      Kommentar


                        Moin Jungs,

                        ich bin am überlegen, ob es mittelt LinKNX möglich ist, dumme Jalousieaktoren besser zu machen, da meine Aktoren nur Auf, Zu und Stop kennen. Jedoch bekomme ich weder die aktuelle Position, noch kann ich eine Position anfahren.

                        Die Idee ist folgende: Man müsste ab dem Start-Kommando einfach die Zeit zählen, bis entweder die vorgegebene Laufzeit erreicht ist oder ein Stop-Kommando gesendet wird und somit sollte sich ja halbwegs die aktuelle Position ermitteln lassen.

                        Zusammen damit sollte man in der Lage sein, eine Zielposition anzufahren. Also einfach die aktuelle Position mit der Zielposition vergleichen und daraus die Fahrtrichtung und Fahrtzeit berechenen.

                        Jemand 'ne Idee?!


                        gruß, Netsrac

                        Kommentar


                          Das habe ich mich auch schon gefragt, aber außer der Idee, erst eine definierte Position (z.B. ganz oben) anzufahren und von dort aus zeitgesteurt weiterzumachen hab ich auch keinen Plan...

                          Deswegen habe ich das auch noch nicht umgesetzt.
                          Gruß,
                          Oliver

                          Kommentar


                            [WARNUNG]Sinnfreies Komplettzitat des unmittelbar vorhergehenden Beitrags gelöscht.

                            Forenregeln beachten![/WARNUNG]


                            Die Frage ist doch, kann ich einen Timer auslösen, wenn die Jalousie ein "Start" Telegramm bekommt und diesen Timer stoppen, sobald ein Stop-Signal kommt oder die maximale Fahrtdauer x überschritten ist...

                            Wenn man da hätte, wäre das ja schonmal ein guter Start :-)

                            Kommentar


                              Hi,

                              hier soll ja Zeit gemessen werden - da kenne ich nichts in linknx. Ich habe es auch noch nicht geschafft, einen Timer per condition zu starten oder zu stoppen.

                              Zum Brainstorming: Das Einzige, was ich mir vorstellen könnte, ist einen Timer z.B. alle 200ms feuern zu lassen, der über and-conditions passende Start- und Stop-Bedingungen und Fahrtrichtung einen Zähler hoch- bzw. runterzählt. Von diesem Zähler kann man dann weitere Infos ableiten.

                              Allerdings führt das bestimmt zur hoher Last im linknx...

                              Keine Ahnung, wie man das sonst machen könnte.

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar


                                Hallo linknx-Experten!

                                Anlässlich des Bedarfs von Fenster-Logiken ("and" aller Fensterzustände) und Tagesfalle für die Haustür habe ich mich mal mit linknx auseinander gesetzt. Vorige Logiken funtkionieren so gut bzw. übersichtlich, das ich nun gerne einige Logiken die ich momentan als Perl-Plugins auf einem Communitygate habe portieren möchte, um da mal wegzukommen. Leider beinhalten diese beiden Plugins "Kniffe", die ich nicht direkt in linknx finde:

                                1. "Duschlicht"
                                Onewire-Tempsensor an der Duschleitung sorgt dafür, dass bei warmen Vorlauf das Licht nicht ausgeht (triggert den PM, der dann die Helligkeit regelt).
                                Logik: Wenn Temp>30°C, dann trigger PM und rufe dich alle 50 sec auf. Bei jedem Aufruf wird der aktuelle Wert abgefragt. Falls unter 30°C wird das zyklische Pollen und Triggern beendet.
                                Frage: wie zwinge ich linknx den Wert neu abzurufen? Die Zeit setze ich mit einem timer mit "every" zusammen mit der Temperatur in eine "and" condition? Problem: dann würde die Logik womöglich IMMER alle 50sec aufgerufen?

                                2. "Nachtlicht"
                                Wenn das "Nachtlicht" per GA aktiviert wurde, werden ca. 10 verschiedene Schalt-GAs abonniert. Kommt ein Schaltbefehl, wird auf eine Dimm-GA ein Dimmwert nachgesendet. In Perl habe ich dafür einen Hash, der je Schaltaddresse, Dimmwert und -GA enthält. Per Schleife wird aboniert und bei Empfang können automatisch dank des Hashes die Dimmparameter der betroffenen Schaltaddresse zugeordnet werden. Brutal würde ich jetzt ca. 10 eigene Rules machen? Geht das eleganter? Zudem: Tagsüber müssten die GAs gar nicht evaluiert werden - kann ich irgendwie verhindern, dass die Logiken überhaupt ausgeführt werden?

                                Zusatz:
                                obige Tagesfallenfunktion: die GA "haustuer_oeffnungsimpuls" geht beim öffnen kurz auf 1 und dann wieder 0. Ich rätsel, ob ich die Funktionalität irgendwie in eine Logik bekomme?
                                Code:
                                    <rule id ="haustuer_tagesfalle_ein">
                                      <condition type="and">
                                        <!-- wenn die Tür zwischen 7:00 und 20:55 geöffnet wird, wird die Tagesfalle aktiviert -->
                                        <condition type="timer" trigger="false">
                                          <at hour="7" min="0"/>
                                          <until hour="20" min="55"/>
                                        </condition>
                                        <condition type="object" id="haustuer_oeffnungsimpuls" value="1" trigger="true"/>
                                      </condition>
                                      <actionlist type="on-true">
                                        <action type="set-value" id="haustuer_tagesfalle_aktiviert" value="1"/>
                                      </actionlist>
                                    </rule>
                                    <rule id ="haustuer_tagesfalle_aus">
                                      <!-- um 21:00 Tagesfalle deaktivieren -->
                                      <condition type="timer" trigger="true">
                                        <at hour="21" min="0"/>
                                      </condition>
                                      <actionlist type="on-true">
                                        <action type="set-value" id="haustuer_tagesfalle_aktiviert" value="0"/>
                                      </actionlist>
                                    </rule>
                                Zuletzt: obwohl ich bei meinen Fenster-Objekten überall init="request" gesetzt habe, werden die GAs beim Starten von linknx nicht abgefragt, sondern erst wenn das erste Fenster seinen Zustand verändert?

                                Tipps zu einzelnen Punkten würden mir auch schon sehr helfen! Vielen Dank!

                                Grüße
                                Robert

                                Kommentar

                                Lädt...
                                X