Ankündigung

Einklappen
Keine Ankündigung bisher.

bei überschreiten der Temperaturschwelle Kontakt schalten

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

    [wiregate] bei überschreiten der Temperaturschwelle Kontakt schalten

    Guten Abend zusammen,

    ich überwache mit meinem WireGate diverse Temperaturen und möchte, wenn diese außerhalb eines bestimmten Bereichs liegen, einen 1-Wire Kontakt (DS2413 mit externem Netzteil) schaltet, der ein TWG triggert.

    Allerdings habe ich des öfteren Fehlalarme...

    ich verwende folgende Plugins:

    Temperaturschwellen: klick
    mit nachfolgendem Oder: klick
    zu guter letzt kommt noch eine Binärsperre da muss ich den Source erst suchen :-) bin gerade unterwegs.

    Kann mir jemand nen Tipp geben?

    #2
    Was ist ein TWG? Telefonwahlgerät?

    Was für Fehlalarme? Es wird eine falsche Temperatur gemessen? Oder es ist die richtige aber das TWG wird angesprochen? Telegramme waren im Log? Oder? Oder?

    Vielleicht bin ich auch ein wenig übermüdet mit dem Weihnachtsstress, aber ich habe das Gefühl, eine genauere Beschreibung wäre hilfreich.

    Stefan

    Kommentar


      #3
      Mit TWG ist ein Telefonwahlgerät gemeint ja.

      Fehlalarm heißt ich wurde angerufen aber laut WireGate waren die Temperaturen ok. Wo sehe ich die besagte Log?

      Sorry wenn Infos fehlen, werde versuchen diese Bestmöglich nachzuliefern. Was müsst Ihr noch wissen?

      Kommentar


        #4
        - Was steht im eib.log ? (unter EIB/KNX, kann man nach GA filtern)
        Die GA's für Temperatur und den IO wären relevant..
        - Plugin unverändert (bis auf die GA's)?
        Und letztlich alle eingesetzen Plugins am besten 1:1 anhängen, dann kann man da drauf rumdenken..

        In diesem Fall ist vermutlich eine "Ein-/Ausschaltverzögerung" gefragt, mit der man kurze Aussetzer vermeidet (z.B. das hier) aber das kaschiert natürlich nur die Ursache..

        Grundsätzlich ist bei I/O's erheblich wichtiger, das der 1-Wire 100% sauber ist;
        Anders, überspitzt ausgedrück: Temperatursenoren kann man auch (falsch!) über 200m ungeschirmtes NYM sternförmig anschliessen und merkts nichtmal, weils auf Robustheit getrimmt ist..

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

        Kommentar


          #5
          eiblog poste ich komme allerdings gerade nicht von remote auf das WireGate.

          ja, Plugins sind außer den GAs gleich. 1zu1 folgt auch da ich wie oben geschrieben leider gerade keinen Zugriff von remote bekomme.

          I/O ist laut Zeichnung richtig angeschlossen. Verwendet wurde J-Y(ST)Y 2x2x0.8 bei ca. 0,5m Entfernung vom Busmaster.

          Kommentar


            #6
            Hallo zusammen,

            sorry für die Verzögerung bei posten der Scripte. Hier sind sie:

            Temperaturschwellen (insgesammt 6x nur unterschiedleiche GAs):
            Code:
            # Demo-Plugin Schwellwertschalter mit Hysterese
            # V1.0 2011-04-24
            
            ### Definitionen
            # Eigenen Aufruf-Zyklus auf 86400 Sekunden setzen
            # $plugin_info{$plugname.'_cycle'} = 86400;
            my $wert_ga = "0/2/7";  # Gruppenadresse mit dem Wert
            my $schwellwert_an  = 20;     # unterer Schwellwert
            my $schwellwert_aus = 21;     # oberer Schwellwert
            my $ziel_ga = "0/3/9";  # Adresse an die Wert bei Unter/überschreitung gesendet wird
            ### Ende Definitionen
            
            
            my $luftfeuchte;
            # Plugin an Gruppenadresse "anmelden"
            $plugin_subscribe{$wert_ga}{$plugname} = 1;
            
            # Nun kommt es darauf an, ob das Plugin aufgrund eines eintreffenden Telegramms
            # oder zyklisch aufgerufen wird! Wir wollen beides..
            # Bei eintreffenden Telegrammen reagieren wir gezielt auf "Write" (gibt ja auch Read/Response)
            # und die spezifische Gruppenadresse, das Plugin könnte ja bei mehreren "angemeldet" sein.
            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $wert_ga) {
               $luftfeuchte = $msg{'value'};
               #oder nur falls nicht importiert: $msg{'data'} ist dann leer/undef!
               #$luftfeuchte = decode_dpt9($msg{'data'});
            
            } else { # zyklischer Aufruf
               # "9" (DPT) kann entfallen falls richtig importiert!
               $luftfeuchte = knx_read($wert_ga,300,9);
            }
            
            if ($luftfeuchte <= $schwellwert_an and $plugin_info{$plugname.'_merker_schwellwert1'} ne 1) {
               # Sende an ZielGA den Wert "1" als 1bit-Wert (DPT1)
               # "1" (DPT) kann entfallen falls richtig importiert!
               knx_write($ziel_ga,1,1);
               # und merken
               $plugin_info{$plugname.'_merker_schwellwert1'} = 1;
            } elsif ($luftfeuchte > $schwellwert_aus and $plugin_info{$plugname.'_merker_schwellwert1'} eq 1) { 
               # unter Schwellwert,vorher aktiv -> sende 0
               knx_write($ziel_ga,0,1);
               # und merken
               $plugin_info{$plugname.'_merker_schwellwert1'} = 0;
            }
            
            return;
            # verfügbare Daten in %msg:
            # $msg{'repeated'} 0/1
            # $msg{'sequence'} 0-xxx
            # $msg{'buf'} Rohdaten LPDU 
            # $msg{'src'} Quelladresse 
            # $msg{'tpdu_type'} T_DATA_XXX_REQ
            # $msg{'data'} rohe Telegrammdaten
            # $msg{'rcount'} Routing-Zähler
            # $msg{'apci'} A_GroupValue_Write,A_GroupValue_Read,A_GroupValue_Response (u.v.m)
            # $msg{'class'} low/alarm/high/system
            # $msg{'dst'} Zieladresse x/y/z
            # $msg{'datalen'} Datenlänge
            # $msg{'value'} Dekodierter Klartext-Wert (nur falls ESF importiert!)
            Oder-Verknüpfung:
            Code:
            ###################################################################################### 
            # 
            # Oder Verknüpfung
            # V0.1 2012-04-05 
            # Michi26206
            #
            ###################################################################################### 
            
            ######################### 
            ### BEGINN DEFINITION ### 
            ######################### 
            
            # Aufruf-Zyklus auf 300 Sekunden setzen
            $plugin_info{$plugname.'_cycle'} = 300;
            
            
            #GA´s
            my $Oder1GA = '0/3/2';
            my $Oder2GA = '0/3/3';
            my $Oder3GA = '0/3/9';
            my $Oder4GA = '0/3/10';
            my $Oder5GA = '0/3/11';
            my $AusgangOderGA = '0/3/1';
            
            
            #Plugin auf GAs anmelden
            $plugin_subscribe{$Oder1GA}{$plugname} = 1;
            $plugin_subscribe{$Oder2GA}{$plugname} = 1;
            $plugin_subscribe{$Oder3GA}{$plugname} = 1;
            $plugin_subscribe{$Oder4GA}{$plugname} = 1;
            $plugin_subscribe{$Oder5GA}{$plugname} = 1;
            
            
            ######################### 
            ###  ENDE DEFINITION  ### 
            ######################### 
            
            # Plugin aufgrund eines eintreffenden Telegramms oder zyklisch bearbeiten
            # bei eintreffenden Telegrammen auf "Write" reagieren
            
            if ($msg{'apci'} eq "A_GroupValue_Write") {
               if ($msg{'dst'} eq $Oder1GA) {
                  $plugin_info{$plugname.'_Oder1'} = int($msg{'data'});
               }
            
               if ($msg{'dst'} eq $Oder2GA) {
                  $plugin_info{$plugname.'_Oder2'} = int($msg{'data'});
               }
               
               if ($msg{'dst'} eq $Oder3GA) {
                  $plugin_info{$plugname.'_Oder3'} = int($msg{'data'});
               }
            
               if ($msg{'dst'} eq $Oder4GA) {
                  $plugin_info{$plugname.'_Oder4'} = int($msg{'data'});
               }
            
               if ($msg{'dst'} eq $Oder5GA) {
                  $plugin_info{$plugname.'_Oder5'} = int($msg{'data'});
               }
            } else { # zyklischer Aufruf
               #$plugin_info{$plugname.'_Oder1'} = knx_read($Oder1GA,300,1);
               #$plugin_info{$plugname.'_Oder2'} = knx_read($Oder2GA,300,1);
               #$plugin_info{$plugname.'_Oder3'} = knx_read($Oder3GA,300,1);
               #$plugin_info{$plugname.'_Oder4'} = knx_read($Oder4GA,300,1);
               #$plugin_info{$plugname.'_Oder5'} = knx_read($Oder5GA,300,1);
            }
            
            #Oder-Funktion
            if (($plugin_info{$plugname.'_Oder1'} == 1) || ($plugin_info{$plugname.'_Oder2'} == 1) || ($plugin_info{$plugname.'_Oder3'} == 1) || ($plugin_info{$plugname.'_Oder4'} == 1) || ($plugin_info{$plugname.'_Oder5'} == 1)) {
            	knx_write($AusgangOderGA,1,1);
            	$plugin_info{$plugname.'_Ausgang'} = 1;
            } else {
            	knx_write($AusgangOderGA,0,1);
            	$plugin_info{$plugname.'_Ausgang'} = 0;
            }
            
            return;
            Binärsperre:
            Code:
            ###################################################################################### 
            # 
            # Plugin Binaersperre
            # V0.1 2012-04-04 
            # Michi26206
            #
            ###################################################################################### 
            
            ######################### 
            ### BEGINN DEFINITION ### 
            ######################### 
            
            # Eigenen Aufruf-Zyklus auf 300 Sekunden setzen
            $plugin_info{$plugname.'_cycle'} = 300;
            
            #GA´s 
            my $GASperreAlle = '0/3/0'; # Gruppenadresse, über welche komplette gesperrt werden kann
            my $InGA = '0/3/1';
            my $OutGA = '0/1/4'; #an Relais Trigger schicken - Relais wäre 0/1/0
            
            #Plugin auf GAs anmelden
            $plugin_subscribe{$GASperreAlle}{$plugname} = 1; 
            $plugin_subscribe{$InGA}{$plugname} = 1;
            $plugin_subscribe{$OutGA}{$plugname} = 1;
            
            ######################### 
            ###  ENDE DEFINITION  ### 
            ######################### 
            
            # Nun kommt es darauf an, ob das Plugin aufgrund eines eintreffenden Telegramms
            # oder zyklisch aufgerufen wird! Wir wollen beides..
            # Bei eintreffenden Telegrammen reagieren wir gezielt auf "Write" (gibt ja auch Read/Response)
            
            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GASperreAlle) {
               $plugin_info{$plugname.'_Status'} = int($msg{'data'});
            } else { # zyklischer Aufruf
               #$plugin_info{$plugname.'_Status'} = knx_read($GASperreAlle,300,1);
            }
            
            #wenn Sperre nicht aktiv GA lesen und GA weiterleiten
            if ($plugin_info{$plugname.'_Status'} == 0) {
               knx_write($OutGA,knx_read($InGA,0,1),1);
            } else { 
               knx_write($OutGA,0,1);
               return "Global gesperrt"; 
            } 
            
            return;
            und dan gibts noch den Relais-Blinker damit das Relais bei anliegendem Signal nur kurz anzieht und danach wieder abfällt:
            Code:
            ###################################################################################### 
            # 
            # Relais-Blinker
            # V0.1 2012-04-04 
            # Michi26206
            #
            ###################################################################################### 
            
            ######################### 
            ### BEGINN DEFINITION ### 
            ######################### 
            
            # Eigenen Aufruf-Zyklus auf 300 Sekunden setzen
            $plugin_info{$plugname.'_cycle'} = 300;
            
            #GA´s 
            my $GARelaisTrigger = '0/1/4';
            my $GARelais = '0/1/0';
            
            #Plugin auf GAs anmelden
            $plugin_subscribe{$GARelaisTrigger}{$plugname} = 1;
            
            ######################### 
            ###  ENDE DEFINITION  ### 
            ######################### 
            
            # Nun kommt es darauf an, ob das Plugin aufgrund eines eintreffenden Telegramms
            # oder zyklisch aufgerufen wird! Wir wollen beides..
            # Bei eintreffenden Telegrammen reagieren wir gezielt auf "Write" (gibt ja auch Read/Response)
            
            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $GARelaisTrigger) {
               $plugin_info{$plugname.'_RelaisLastTrigger'} = $plugin_info{$plugname.'_RelaisTrigger'};  #Wert des letzten Durchlaufs speichern
               $plugin_info{$plugname.'_RelaisTrigger'} = int($msg{'data'});
            } else { # zyklischer Aufruf
               #$plugin_info{$plugname.'_Status'} = knx_read($GARelais,300,1);
            }
            
            #wenn Relais getrigger Relais kurz anziehen
            if ($plugin_info{$plugname.'_RelaisTrigger'} == 1 and $plugin_info{$plugname.'_RelaisLastTrigger'} == 0) {
               knx_write($GARelais,1,1);
               sleep(1);
               knx_write($GARelais,0,1);
            #} else { 
            #   knx_write($GARelais,0,1);
            #   return "Global gesperrt"; 
            } 
            
            return;
            Beim aufrufen des Eib.log bringt das WG die Meldung: Protokolldatei ist leer. Es liegen allerdings sieben Datein als .gz vor da muss ich mich noch durch arbeiten. Ich bin demnächst vor Ort und versuche mal das Szenario zu provozieren und die Entsprechende Eib.log zu posten.

            Gruß

            Kommentar

            Lädt...
            X