Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfängerprobleme Statusupdate und Beispiele

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Also ich würde ernsthaft darüber nachdenken das Projekt in der ETS komplett neu aufzusetzen. Sofern da nicht 1000 Sonderlocken und Logiken verbaut sind geht das im EFH relativ fix und dann hat man auch den nötigen Background für spätere Probleme.

    Klingt erstmal nach viel Arbeit, ist aber am Ende vielleicht doch der schnellere und einfachere Weg.

    Gruß
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #17
      Ja, im Grunde bin ich da schon dran. Die Licht- und Rollosteuerung macht mir auch keine Sorgen. Respekt habe ich vor der Einzelraumsteuerung der FBH.
      Grüsse!

      Kommentar


        #18
        Hallo

        Wegen dem DPT...

        1.001 ist da schon korrekt. Das bedeutet nur, dass es sich um ein 1bit Telegramm handelt. Du must also für die Rollosteuerung mit dem Trigger auch DPT 1.001 auswählen
        Gruss Patrik alias swiss

        Kommentar


          #19
          Hallo Miteinander,
          nochmal herzlichen Dank für die Hilfe soweit.
          Hier mein Stand: der Infotrigger funktioniert nicht vollständig, ist hier aber egal. Die Rolloaktoren sind falsch parametriert. Ich muss das erst neu machen - wie mir hier empfohlen wurde.
          Die Aktoren haben folgende GA's: /16 mit 1 auf DPT 1.001 für rauf und 0 für runter sowie /17 für Stop.
          Ich habe das Problem nun über 3 Trigger und eine Info gelöst:
          /16 --> 0
          /16 --> 1
          /17 --> 1 für stop
          und eine Info auf /16 readonly.
          Funktioniert solange man die Visu nicht neu startet. Sobald eine andere GA (z.B. alle im Haus runter) wird nicht aktualisiert.

          Ich würde die Aktualisierung jetzt anders machen (auch als Fingerübung):
          Plugin schreiben, das je Fenster den Status in eine Datei schreibt und dann den Status aus der Datei anzeigen.
          Schreiben habe ich schon gelöst, habe aber nur eine Idee, wie ich mit Bordmitteln den Status anzeigen kann:
          Ich schicke den Status (0 oder 1) einfach an eine neue GA, die ich in /etc/wiregate/eibga.conf konfiguriert habe und lege wieder ein Info-Control readonly auf diese GA.
          Nun meine Frage: wird das funktionieren?
          Habt Ihr eine bessere Idee einen Wert aus einer Datei zu lesen und in der Visu anzuzeigen. Habe hier nur etwas über andere Visus gefunden.

          Nochmals Danke!
          Herbert

          Kommentar


            #20
            Hallo Herbert,

            schau Dir doch mal das hier an:
            https://knx-user-forum.de/forum/supp...wiregate/23691

            Gruß

            Kommentar


              #21
              Ohne jetzt das Problem/Gerät im Detail zu kennen: Lass dir gesagt sein:
              - trenne Schalt- und Rückmelde-GA's!
              - mache externe Logik, nur wenn absolut unvermeidbar
              -> Sowas geht normalerweise auch ohne..

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #22
                Ich habe das Plugin nun mal angepaßt und den Subscribe-Fehler gefixt.
                Bei mir funktioniert's nun.
                Danke für Eure Hilfe!
                Für Interessierte hier der Code:

                # Tueroeffnungen kontrollieren
                # 2012-11-04
                # JuMi2006 -> https://knx-user-forum.de
                # Pro Rollo: geschlossen = 1 , offen = 0
                # Gesamtstatus: alles zu = 1 noch mindestens ein Rollo offen = 0
                # $send_ga ist der Gesamtstatus
                # Die GAs sollten sauber in die //etc/wiregate/eibga.conf eingepflegt sein
                # bzw. aus der ETS importiert werden

                $plugin_info{$plugname.'_cycle'} = 0; # nur durch die GA getriggert

                my (@rollos,$closed,@opened,$status, %rollos, $ga_called); # Variablen initialisieren

                ### KONFIGURATION ###

                # Jede Zeile eine Tuer
                push @rollos, { name => "RolloWZ 1", ga => "3/0/16"};
                push @rollos, { name => "RolloWZ 2", ga => "3/0/18"};
                push @rollos, { name => "RolloWZ 3", ga => "3/0/20"};
                # push @rollos, { name => "TriggerGA", ga => "0/0/200"}; # Test-GA
                # push @rollos, { name => "Tuer 4", ga => "1/2/50"};
                # push @rollos, { name => "Tor 1", ga => "1/2/60"};
                # push @rollos, { name => "Tor 2", ga => "1/2/35"};

                my $send_ga = '0/0/100'; #An diese GA wird der Gesamtstaus gesendet.

                ### prüfen, ob die gerufene GA eine aus dem Array of hashes ist ###
                foreach my $rollo (@rollos){
                if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $rollo->{ga}) {
                $ga_called = 1;
                # open (DATEI, ">>/var/log/Rollostatus.log") or die $!;
                # print DATEI $rollo->{ga} . " passende GA gecalled\n";
                # close (DATEI);
                }
                }


                ### KONFIGURATION ENDE ###

                if ($ga_called) {

                my $elements = @rollos;

                foreach my $rollo (@rollos){
                # $plugin_subscribe{$rollo->{ga}}{$plugname} = 1;
                # $status = 0;
                $status = knx_read($rollo->{ga},0,1); # liest den Status aus der GA 0 für offen, 1 für geschlossen
                open (DATEI, ">>/var/log/Rollostatus.log") or die $!;
                print DATEI $rollo->{ga} . " " . "$status\n";
                close (DATEI);
                $closed += $status; # summiert den Status aller Rollos

                if ($status == 0){
                push @opened, ($rollo->{name}); # schreibt in den hash @opened den Namen der geschlossenen Tür
                }
                } # end foreach

                if ($closed == $elements){
                knx_write($send_ga,1,1);
                # print $closed;
                return "Alle Wohnzimmerrollos geschlossen!";
                }
                else{
                my $open = $elements - $closed;
                knx_write($send_ga,0,1);
                my $open_rollos = join(" ! ",@opened);
                # print "$open_doors\n";
                return "$open Wohnzimmerrollos offen: $open_rollos";
                }

                } else { # zyklischer Aufruf
                # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
                # $plugin_subscribe{$temp1_ga}{$plugname} = 1;
                foreach my $rollo (@rollos){
                $plugin_subscribe{$rollo->{ga}}{$plugname} = 1;
                }
                }
                return;

                Kommentar


                  #23
                  Sorry, ich muss das immer fragen, sonst gehen mögliche Lösungen evtl. gnadenlos unter:
                  Bekommen wir das ins SVN?

                  Wer machts? (Sonst mach ichs - bei unbekanntem, das ich schlecht/garnicht testen kann aber immer sehr ungern)

                  Makki
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #24
                    Ist es eigentlich schon, ich seh da auch keinen gravierenden Unterschied bzgl. Laufzeithandhabung. Einzig das separate Logfile, dafür geht aber die Meldung im Plugin-Log verloren.
                    Welchen subscribe-Fehler meinst Du ?SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/Fenster_Tueren_Stati.pl

                    Gruß Mirko
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      #25
                      ja, das habe ich gemeint.
                      Bei dem subscribe-Fehler beziehe ich mich auf den diesen Thread:
                      https://knx-user-forum.de/forum/supp...wiregate/23691

                      Wenn ich das gesamte Modell richtig verstehe, dann soll subscribe nur einmal durchlaufen werden, und nicht jedesmal, wenn das plugin gerufen wird. Oder liege ich da falsch?
                      Wenn ich $plugin_info{$plugname.'_cycle'} = 0 setze, wird das Plugin genau einmal gerufen, wenn es gespeichert wird, danach nur noch, wenn die GA "subscribed" ist. Richtig?
                      Nun möchte ich aber nicht jedesmal subscriben. Deshalb die Prüfung:

                      foreach my $rollo (@rollos){
                      if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $rollo->{ga}) {
                      $ga_called = 1;
                      # open (DATEI, ">>/var/log/Rollostatus.log") or die $!;
                      # print DATEI $rollo->{ga} . " passende GA gecalled\n";
                      # close (DATEI);
                      }
                      }
                      ### KONFIGURATION ENDE ###
                      if ($ga_called) {

                      und dann im else-Zweig die subscribe Anweisung.


                      } else { # zyklischer Aufruf
                      # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
                      # $plugin_subscribe{$temp1_ga}{$plugname} = 1;
                      foreach my $rollo (@rollos){
                      $plugin_subscribe{$rollo->{ga}}{$plugname} = 1;
                      }
                      }
                      return;

                      ---

                      Das zusätzliche Log habe ich mir nur für Testzwecke eingebaut. Kommentiere ich dann aus. Liege ich da falsch?
                      Warum verliere ich die Meldung im Plugin-log?


                      Gruss, Herbert

                      Kommentar


                        #26
                        Nein das Problem liegt woanders begraben. Den subscribe Befehl kannst Du (davon abgesehen dass es unnütz ist) im Plugin auch 10.000 setzen. Das macht nix.

                        Wenn alle Adressen per subscribe abonniert werden wird das Plugin immer ausgeführt wenn eine der entsprechende GAs einen Wert sendet. Dann wird auch der Gesamtstatus gesendet. Wenn nun alle Binäreingänge/Kontakte zur gleichen Zeit bzw. kurz hintereinander (Milisekunden-Bereich) ihren aktuellen Wert senden dann gibt es z.B. 12 GAs die schnell hintereinander senden. Damit wird aber auch das Plugin 12 x hintereinander aufgerufen und der Gesamtstatus 12x hintereinander gesendet. Dem Bus ist das erstmal ziemlich egal ... zumindest im EFH. Das abzufangen würde gehen, aber macht den Code einfach unübersichtlich und komlizierter.

                        Gruß Mirko
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          #27
                          kann das einer ins WG Forum verschieben?
                          Derzeit zwischen Kistenauspacken und Garten anlegen.
                          Baublog im Profil.

                          Kommentar


                            #28
                            @Mirko: danke für die Klarstellung. Jetzt habe ich es verstanden ;o).
                            Nur noch eine letzte Frage in diesem Zusammenhang, dann kann ich den Thread auch gerne als gelöst markieren und er kann ist WG-Forum. Ich habe erst später gesehen, dass solche Themen da hin gehören!

                            Wie kann ich eigentlich eine GA wieder "de-subscriben", für den Fall, dass ich möchte, dass ein Plugin nicht mehr auf eine bestimmte GA reagiert?

                            Danke,
                            Herbert

                            Kommentar


                              #29
                              Ich glaube das geht nur mit einem Neustart des wiregated nachdem man das Plugin entsprechend geändert hat (Webmin->Status->
                              WireGate Serverprozess Restart) oder eben einem kompletten Neustart des WireGates, aber da kann makki mehr dazu sagen.
                              Umgezogen? Ja! ... Fertig? Nein!
                              Baustelle 2.0 !

                              Kommentar


                                #30
                                Zitat von greentux Beitrag anzeigen
                                kann das einer ins WG Forum verschieben?
                                Gute Idee, hab's gleich mal gemacht.
                                TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                                Kommentar

                                Lädt...
                                X