Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: Logikprozessor.pl

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

    Kann mir jemand erklären, warum meine Fenster-Reed-Sammler nicht funktionieren?

    Die einzelnen Fenster werden pro Raum (funktioniert immer), per Stockwerk (klappt normalerweise, zeigt aber gerade auch das falsche an) und im ganzen Haus (klappt nur beim testen und in seltenen Fällen) zusammengefasst. Hab schon alles mögliche ausprobiert:
    • kaskadiert (Fenster X -> Raum y -> EG -> Haus) und direkt Fenster X -> Haus)
    • Mit / Ohne Delays
    • transmit_changes_only
    • Ausgabe per rss / debug stimmt mit den falschen Schaltvorgängen überein ...

    Code:
      [...]
      fenster_og_schlafen => { receive=>['5/0/27', '5/0/28'],           transmit=>'5/0/113', transmit_changes_only => 1, translate => sub { return $input->[0] || $input->[1]; }, delay => 4},
      fenster_kg_wellness => { receive=>['5/0/32', '5/0/33'],           transmit=>'5/0/120', transmit_changes_only => 1, translate => sub { return $input->[0] || $input->[1]; }, delay => 4},
      fenster_kg   => { receive=>['5/0/31', '5/0/32', '5/0/33', '5/0/34'],
                        transmit=>'5/0/150', translate => sub { return $input->[0] || $input->[1] || $input->[2] || $input->[3]; }, delay => 6, debug => 1 },
      fenster_eg   => { receive=>['5/0/10', '5/0/11', '5/0/12', '5/0/13', '5/0/14', '5/0/15', '5/0/16', '5/0/17'],
                        transmit=>'5/0/151', translate => sub { return $input->[0] || $input->[1] || $input->[2] || $input->[3] || $input->[4] || $input->[5] || $input->[6] || $input->[7]; }, delay => 6, debug => 1 },
      fenster_og   => { receive=>['5/0/20', '5/0/21', '5/0/22', '5/0/23', '5/0/24', '5/0/25', '5/0/26', '5/0/27', '5/0/28', '5/0/29', '5/0/30'],
                        transmit=>'5/0/152', translate => sub { return $input->[0] || $input->[1] || $input->[2] || $input->[3] || $input->[4] || $input->[5] || $input->[6] || $input->[7] || $input->[8] || $input->[9] || $input->[10]; }, delay => 6, debug => 1 },
      fenster_haus => { receive=>['5/0/31', '5/0/34', '5/0/120', '5/0/10', '5/0/16', '5/0/17', '5/0/100', '5/0/101', '5/0/20', '5/0/29', '5/0/30', '5/0/110', '5/0/111', '5/0/112', '5/0/113'],
                        transmit=>'5/0/160', translate => sub { return $input->[0] || $input->[1] || $input->[2] || $input->[3] || $input->[4] || $input->[5] || $input->[6] || $input->[7] || $input->[8] || $input->[9] || $input->[10] || $input->[11] || $input->[12] || $input->[13] || $input->[14]; }, delay => 8, debug => 1 },
    Hat jemand eine Idee, warum das nicht funktioniert?
    Angehängte Dateien

    Kommentar


      Hast du mal in die eib.log geschaut ob auf den GAs zu dem Zeitpunkt irgendwas gesendet wurde? Und dann fällt mir noch ein Stichwort ein: execute_on_input_changes_only. Evtl hilft das?

      Kommentar


        Mal ganz allgemein: Wenn eine Logik mehrere receive-GAs hat, dann führt jedes Bustelegramm auf einer dieser GA zur Ausführung der Logik. Die übrigen receive-GAs werden dann sofort per knx_read abgefragt. Und da liegt die Crux: es ist das Beste und Sicherste, wenn du dafür sorgst, dass diese knx_read-Requests aus dem eib-Cache bedient werden und nicht undef als Ergebnis zurückliefern.

        Das heißt in der Praxis: setze die Option eibd_cache=>2000 (2000s sind etwas mehr als eine halbe Stunde) und lasse deine Binäreingänge alle Viertel- oder halbe Stunde ihren Status senden.

        Wenn es dann immer noch nicht richtig funktioniert, poste hier nochmal.

        VG, Fry

        PS. Nochmal gelesen: Genau die Klausel "transmit_changes_only" hat bei dir mit Sicherheit dazu geführt, dass auf den meisten GAs mehrere Stunden lang gar nichts gesendet wurde. Dann kommt von einer aggregierenden Logik ein knx_read, das unbeantwortet bleibt (Logiken können einander nie im gleichen Zyklus antworten, das liegt an der Art, wie der wiregate-Daemon funktioniert) - und schon haben wir ein undef als Ergebnis. Bitte nimm also auch "transmit_changes_only" raus. Die richtige Lösung ist: alle Reed-Stati alle 15-30min zyklisch und ZUSÄTZLICH bei jeder Änderung senden lassen, eibd_cache=>2000 setzen, und es wird funktionieren.

        Kommentar


          Zitat von Fry Beitrag anzeigen
          (Logiken können einander nie im gleichen Zyklus antworten, das liegt an der Art, wie der wiregate-Daemon funktioniert)
          Das ist etwas wo ich auch immer mal drüber fall. Einerseits ist es ja kein Drama, einen Haufen GA's über den Logikprozessor regelmässig aufzufrischen. Andererseits ist es auch irgendwo eine Krücke. Eine praktische Möglichkeit, ausserhalb dieser Umgebung auf GA's zu antworten, wäre nett.

          Ich dachte schon darüber nach, genau dafür einen linknx zu reaktivieren - einfach nur, um alle GA's, die ich gerne 'versorgt' hätte, reinzupacken und auf read requests zu antworten.

          Kommentar


            Zitat von johnnychicago Beitrag anzeigen
            Ich dachte schon darüber nach, genau dafür einen linknx zu reaktivieren - einfach nur, um alle GA's, die ich gerne 'versorgt' hätte, reinzupacken und auf read requests zu antworten.
            Ich denke linknx ist dafür überdimensioniert. Ich habe dafür eine Memory-Sektion in den LP eingebaut. Damit werden die Werte der GAs alle 5min auf den Bus geschrieben. Die Liste ist bei mir mittlerweile schon wesentlich länger ;-)

            Code:
            my %memoryGAs = (WPLeistung => '1/2/26', Mediacenter => '1/2/92', BewaesserungFreigabe=>'1/6/0", BewaesserungZeitfaktor=>"1/6/5");
            while (my ($name, $ga) = each(%memoryGAs)) {
            	$logic{'memory'.$name} = { receive=>$ga, transmit=>$ga, reply_to_read_requests=>1, translate=>sub{return $input}, delay=>300, debug=>0},
            }

            Kommentar


              Mach' ich ja auch, und ist ja prinzipiell auch in Ordnung. Allerdings überlebt das keinen Restart des Wiregate (ok, für Reeds ist das kein Problem, aber halt für längerfristige Statii), und es triggert halt dauernd irgendwelche Logiken, auf die man dann explizit aufpassen muss.

              Sieh's als ästhetisches Problem: ich mag das Konzept, dass man einfach mal bei Bedarf auf den Bus nach einer GA fragen kann und eine Antwort kriegt. Das mit dem Cache fühlt sich halt nach einer Krücke an.

              Kommentar


                Zitat von johnnychicago Beitrag anzeigen
                Mach' ich ja auch, und ist ja prinzipiell auch in Ordnung. Allerdings überlebt das keinen Restart des Wiregate (ok, für Reeds ist das kein Problem, aber halt für längerfristige Statii), und es triggert halt dauernd irgendwelche Logiken, auf die man dann explizit aufpassen muss.
                Dafür habe ich mir ein Plugin geschrieben, das einfach alle übergreifende Statuswerte etc. auf einen Standard bzw. berechneten Wert setzt.

                @Fry: Ja sowas in die Richtung dachte ich mir schon, aber mit deiner Erklärung wird es einleuchtend ... werd ich mal ausprobieren / umsetzen.

                Kommentar


                  Zitat von Wookie81 Beitrag anzeigen
                  Dafür habe ich mir ein Plugin geschrieben, das einfach alle übergreifende Statuswerte etc. auf einen Standard bzw. berechneten Wert setzt.
                  Da sollte mit dem LP ja auch gehen. Ich denke da an "transmit_on_startup" aber ich glaube das wird (auch) beim (Re)Start des LP selbst und nicht nur beim Start des wiregated ausgeführt. Richtig Fry? Welche Möglichkeit gibt es eine Logik nur beim Start des wiregated auszuführen?

                  Obwohl: evtl ist "transmit_on_startup" + eine Prüfung ob ein Wert für die GA im eibd-Cache vorhanden ist auch ausreichend?!

                  Danke,
                  Micha

                  Kommentar


                    Hallo,

                    gibt es eigentlich eine Doku zum Logikprozessor-Plugin?

                    Ist evtl. geplant den Logikprozessor künftig mit einer GUI auszustatten? Ich würde dies sehr begrüßen, da es doch ein sehr mächtiges Plugin mit vielen Möglichkeiten ist.

                    Wie kann ich mich am schnellsten in das Plugin einarbeiten? Kenntisse in Pearl sind bei mir leider nicht vorhanden.

                    Peter

                    Kommentar


                      Falls auch keine Linuxkenntnisse vorhanden sind, bitte warten bis ElabNet den wiregated.pl Logikprozessor-konform anbietet.

                      Ansonsten: den modifizierten wiregated.pl installieren (weiter oben in diesem Thread). Den Logikprozessor.pl installieren und die zahlreichen Kommentare in der Beispielkonfiguration Logikprozessor.conf_sample lesen.

                      Am besten anfangs die prowl-Features ignorieren, die laufen unabhängig (und leider etwas anders in der Syntax) vom Rest.

                      Dann eigene Sachen ausprobieren und Fragen hier posten. Das Forum ist besser als jedes Handbuch.

                      Have fun,
                      Fry

                      Kommentar


                        PS GUI ist aktuell nicht geplant, jedenfalls nicht von meiner Seite. Ich kenne mich mit dem modernen Schnickschnack (ECMA aka Javascript) auch überhaupt nicht aus.

                        Perl hingegen ist einfach eine sehr, sehr gute Skriptsprache. Die lohnt es sich in jedem Fall mal zu kennen, man kann viele Alltagsaufgaben damit leicht lösen.

                        Kommentar


                          Zitat von Fry Beitrag anzeigen
                          Falls auch keine Linuxkenntnisse vorhanden sind, bitte warten bis ElabNet den wiregated.pl Logikprozessor-konform anbietet.
                          Da werde ich wohl doch warten müssen.
                          Gibt es dafür ein ungefähres Zeitfenster?

                          Peter

                          Kommentar


                            Zitat von gospelrock Beitrag anzeigen
                            Ist evtl. geplant den Logikprozessor künftig mit einer GUI auszustatten? Ich würde dies sehr begrüßen, da es doch ein sehr mächtiges Plugin mit vielen Möglichkeiten ist.
                            Da müsste es aber erst mal ein unterbau vom Wiregate dazu da sein.

                            Kommentar


                              Zitat von gospelrock Beitrag anzeigen
                              Da werde ich wohl doch warten müssen.
                              Gibt es dafür ein ungefähres Zeitfenster?

                              Peter
                              Du kannst doch gleich mit der Version aus dem SVN anfangen. Die funktioniert auch sehr gut bei mir.

                              Kommentar


                                Funktioniert die ohne der modifizierten wiregated.pl?

                                Kommentar

                                Lädt...
                                X