Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Steuerung elektrische FBH

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

  • StefanW
    antwortet
    Sehr gut.

    Ich denke, es ist ok, dass ich den gelöst Haken für Dich gesetzt habe .

    lg

    Stefan

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    Statusupdate für alle mitleser:

    habs hinbekommen.
    Lösung:
    Über Web-Oberfläche alle Plugins gelöscht, anschließend mit notepasd++ und root user auf wire gate und im verzeichnis conf.d die alten konfigurationen gelöscht.

    Dann über:
    Open Automation / Code / [r1900] /wiregate/plugin/generic

    das Multi-RTR plugin runtergeladen, mit notepad++ geöffnet und den text markiert, kopiert und über die Web-Oberfläche der Wire Gate unter Plugin neu anlegen wieder eingefügt, gespeichert, dann nochmals den Code für den "Hauptschalter" vor den RTR-Plugin-Code eingegeben.
    Anschließend noch die config als sample von sourceforge kopiert und neu in der Multi-RTR-config eingefügt, Gruppenaddressen angepasst und die + - Zeichen vor jeder Zeile entfernt.
    Funktioniert jetzt..
    Bin wieder happy!


    Danke an alle!

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    habe alles neu gemacht..geht immer noch nicht.

    wiregate neustart hat auch nix gebracht.
    mir scheint, als hätte sich da was aufgehangen - gibt kein update der logfiles mehr..

    kann man da irgendwas löschen? cache oder so?

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    mh..

    Meine Änderungen:
    Plugin Name
    und die Einträge zur DisableGA gelöscht..

    lösche nochmal alles und beginne von vorne.

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Mir fallen im Log spontan 2 Dinge auf:
    1. In dem Zeitraum, in dem das Plugin deaktiviert über Hauptschalter meldet, wird es in Bruchteilen von Sekunden mehrfach ausgeführt. Der cycle sollte in dem Fall auf 86400 gesetzt werden, Plugin sollte also nur 1x am Tag ausgeführt werden.
    2. in dem Zeitraum, in dem das Plugin aktiv geschaltet ist, wird es ordnungsgemäß ca. alle 60 s ausgeführt. Allein die Ausgabe der Stellgrößen bleibt aus.
    Beides kann ich mir aktuell nicht erklären, vor allem sehe ich keinen Zusammenhang zum Hauptschalter-Baustein. Bei mir läuft's exakt in der Kombination...
    Hast du noch was anderes geändert? Plugin-Name? Conf.d gelöscht?

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    Abend,

    danke für die Unterstützung.
    Habe gleich den neuen Part zum aktivieren/deaktivieren im Plugin eingefügt..lässt sich jetzt ausschalten/einschalten aber:
    die Temperaturen werden nicht mehr verglichen, Heizung bleibt aus..?

    Anbei für die Profis mein Code aus dem Plugin:

    ################################################## ###########################
    # Plugin: Multi RTR
    # V0.7 2011-11-20
    # Copyright: Christian Mayer (mail at ChristianMayer.de)
    # License: GPL (v3)
    #
    # Plugin for multiple RTR (room temperature controllers) by using a PI
    # controller
    #
    # Suggested settings:
    # ===================
    # floor heating: ProportionalGain = 5 K, IntegralTime = 240 min (*)
    # hot water heating: ProportionalGain = 5 K, IntegralTime = 150 min (*)
    #
    # Uebersetzungshilfe:
    # ===================
    # ProportionalGain = Proportionalbereich in Kelvin
    # IntegralTime = Nachstellzeit in Minuten
    #
    # ---------
    # (*): GIRA manual for TS2+ with RTR 1052-00 / 1055-00, 01/06, page 71
    ################################################## ###########################

    ################################################## ###########################
    # Configuration:
    # --> change values in the conf.d directory!
    my %controllers = ();
    my %default = ();

    my $reset = 0; # set to 1 to reset the states, run script and change to 0 again
    my $show_debug = 0; # switches debug information that will be shown in the log

    ################################################## ###########################
    # Do NOT change anything below!
    ################################################## ###########################
    my $ga_Plugin_Hauptschalter = '3/2/2'; #1bit Trigger fuer aktivierung/deaktivierung Plugin, 1=Aktivieren
    my $show_debug = 1;
    # relevante GA's abonnieren
    $plugin_subscribe{$ga_Plugin_Hauptschalter}{$plugn ame} = 1;
    my $busActive = !(!keys %msg); # true if script was called due to bus traffic
    if( !$busActive ) { # unnecesary during bus traffic
    if( not exists $plugin_info{ $plugname . '_' . '_Hauptschalter' } ) {
    $plugin_info{ $plugname . '_' . '_Hauptschalter' } = 1;
    }
    }
    # Verhalten bei Aufruf durch Busaktivität
    if( $busActive ) {
    # Response-Telegramme ignorieren - sollten nur vom Plugin selbst kommen...
    if( $msg{'apci'} eq 'A_GroupValue_Response' ) { return; }
    # Read-Telegramme beantworten - erfolgt hier auch bei deaktiviertem Plugin. Bitte mindestens für den Hauptschalter...
    if( $msg{'apci'} eq 'A_GroupValue_Read' ) {
    if( $msg{'dst'} eq $ga_Plugin_Hauptschalter) {
    my $value = $plugin_info{ $plugname . '_' . '_Hauptschalter' };
    knx_write( $msg{'dst'}, $value, 1, 1 ); # send response
    }
    # Diesen Teil mehrfach einfuegen für jede GA die beantwortet werden soll
    # elsif( $msg{'dst'} eq $ga_ANTWORT) {
    # knx_write( $msg{'dst'}, $ANTWORT, DPT, 1 ); # send response
    # }
    }
    # Write-Telegramme verarbeiten - erfolgt hier auch bei deaktiviertem Plugin. Bitte mindestens für den Hauptschalter...
    elsif( $msg{'apci'} eq 'A_GroupValue_Write') {
    if( $msg{'dst'} eq $ga_Plugin_Hauptschalter) {
    $plugin_info{ $plugname . '_' . '_Hauptschalter' } = $msg{'data'};
    }
    }
    }
    # Plugin ohne weitere Aktion beenden wenn Hauptschalter aus
    if ($plugin_info{ $plugname . '_' . '_Hauptschalter' } == 0) {
    if($show_debug > 0){ plugin_log($plugname,"Deaktiviert ueber Hauptschalter-GA."); }
    $plugin_info{$plugname.'_cycle'} = 86400;
    return('deaktiviert');
    }
    else { $plugin_info{$plugname.'_cycle'} = 60; }
    # Ab hier der Hauptteil des Plugins....

    #
    my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl').'.conf';
    if (! -f $confFile)
    {
    plugin_log($plugname, " no conf file [$confFile] found.");
    }
    else
    {
    plugin_log($plugname, " reading conf file [$confFile].") if( $show_debug > 1);
    open(CONF, $confFile);
    my @lines = <CONF>;
    close($confFile);
    my $result = eval("@lines");
    if( $show_debug > 1 )
    {
    ($result) and plugin_log($plugname, "conf file [$confFile] returned result[$result]");
    }
    if ($@)
    {
    plugin_log($plugname, "conf file [$confFile] returned:") if( $show_debug > 1 );
    my @parts = split(/\n/, $@);
    if( $show_debug > 1 )
    {
    plugin_log($plugname, "--> $_") foreach (@parts);
    }
    }
    }

    ################################################## ###########################
    # main()
    ################################################## ###########################
    my $busActive = !(!keys %msg); # true if script was called due to bus traffic

    my $ret_val = '';
    ################################################## ###########################
    # Initialisation
    if( !$busActive ) # unnecesary during bus traffic
    {
    for my $this_controller_name ( keys %controllers )
    {
    my %this_controller = (%{$controllers{ $this_controller_name }}, %default);

    # Initialise controller state variables
    if( $reset or not exists $plugin_info{ $plugname . '_' . $this_controller_name . '_Actuator' } )
    {
    $plugin_info{ $plugname . '_' . $this_controller_name . '_SetPoint' } = $this_controller{ 'SetPointInit' };
    $plugin_info{ $plugname . '_' . $this_controller_name . '_Integral' } = 0;
    $plugin_info{ $plugname . '_' . $this_controller_name . '_Actuator' } = 0; # Reset
    if( defined $this_controller{ 'SetPointGA' } and defined $this_controller{ 'SetPointDPT' } )
    {
    knx_write( $this_controller{ 'SetPointGA' }, $this_controller{ 'SetPointInit' }, $this_controller{ 'SetPointDPT' } ); # send initial value
    }
    # The ActuatorGA doesn't need to be sent here as !$busActive will also
    # cause the first round of controller calculations
    }

    # subscribe SetPointGA
    if( defined $this_controller{ 'SetPointGA' } )
    {
    $plugin_subscribe{ $this_controller{ 'SetPointGA' } }{ $plugname } = 1;
    }
    # subscribe SensorGA
    if( defined $this_controller{ 'SensorGA' } )
    {
    $plugin_subscribe{ $this_controller{ 'SensorGA' } }{ $plugname } = 1;
    }
    # subscribe ActuatorGA
    if( defined $this_controller{ 'ActuatorGA' } )
    {
    $plugin_subscribe{ $this_controller{ 'ActuatorGA' } }{ $plugname } = 1;
    }
    # subscribe DisableGA
    if( defined $this_controller{ 'DisableGA' } )
    {
    $plugin_subscribe{ $this_controller{ 'DisableGA' } }{ $plugname } = 1;

    $ret_val .= $this_controller_name . ' disabled?';
    my $active = knx_read( $this_controller{ 'DisableGA' } ) || 1; # active if unreadable
    if ( !int($active) and defined $this_controller{ 'ActuatorGA' } ) {
    if (knx_read( $this_controller{ 'ActuatorGA' } ) ne 0) { # only if not already 0
    knx_write( $this_controller{ 'ActuatorGA' }, 0, $this_controller{ 'ActuatorDPT' } );
    }
    $plugin_info{ $plugname . '_' . $this_controller_name . '_Integral' } = 0;
    $plugin_info{ $plugname . '_' . $this_controller_name . '_Actuator' } = 0; # Reset
    $ret_val .= ' yes';
    } else {
    $ret_val .= ' no';
    }
    }
    }
    }

    # Set the update cycle to one minute
    $plugin_info{$plugname.'_cycle'} = 60;

    ################################################## ###########################
    # Handle the bus traffic
    my $SetPointChange = 0;
    if( $busActive )
    {
    # Early exit during a response messeage - it's usually from us...
    if( $msg{'apci'} eq 'A_GroupValue_Response' )
    {
    return;
    }

    # a linear search isn't smart but OK for only a few states:
    for my $this_controller_name ( keys %controllers )
    {
    my %this_controller = (%{$controllers{ $this_controller_name }}, %default);
    if( $msg{'apci'} eq 'A_GroupValue_Read' )
    {
    if( $msg{'dst'} eq $this_controller{ 'SetPointGA' } and $this_controller{ 'SetPointLFlag' })
    {
    # A read request for this GA was sent on the bus and the L-flag is set
    my $value = $plugin_info{ $plugname . '_' . $this_controller_name . '_SetPoint' };
    my $DPT = $this_controller{ 'SetPointDPT' };
    knx_write( $msg{'dst'}, $value, $DPT, 1 ); # send response
    $ret_val .= 'read(' . $msg{'dst'} . '=' . $this_controller_name . ') SetPoint -> ' . $value;
    } elsif( $msg{'dst'} eq $this_controller{ 'ActuatorGA' } and $this_controller{ 'ActuatorLFlag' })
    {
    # A read request for this GA was sent on the bus and the L-flag is set
    my $value = $plugin_info{ $plugname . '_' . $this_controller_name . '_Actuator' };
    my $DPT = $this_controller{ 'ActuatorDPT' };
    knx_write( $msg{'dst'}, $value, $DPT, 1 ); # send response
    $ret_val .= 'read(' . $msg{'dst'} . '=' . $this_controller_name . ') Actuator -> ' . $value;
    }
    }
    elsif($msg{'apci'} eq 'A_GroupValue_Write')
    {
    if( $msg{'dst'} eq $this_controller{ 'SetPointGA' } )
    {
    # A new(?) setpoint was sent on the bus => update internal state
    # read from eibd cache, so we'll get the cast for free:
    my $value = knx_read( $msg{'dst'}, 0, $this_controller{ 'SetPointDPT' } );
    $plugin_info{ $plugname . '_' . $this_controller_name . '_SetPoint' } = $value;
    $SetPointChange = 1;
    $ret_val .= 'write(' . $msg{'dst'} . '=' . $this_controller_name . ') ' . $value . ' -> SetPoint';
    }
    }
    }
    } # if( $busActive )

    ################################################## ###########################
    # Update the controllers
    if( !$busActive or $SetPointChange ) # only at init, cycle or set point change
    {
    my $dt = time() - $plugin_info{ $plugname . '_tlast' };
    $plugin_info{ $plugname . '_tlast' } = time();
    $ret_val .= sprintf( ' dt: %.3f; ', $dt );

    for my $this_controller_name ( keys %controllers )
    {
    my %this_controller = (%{$controllers{ $this_controller_name }}, %default);
    my $prefix = $plugname . '_' . $this_controller_name;

    my $Sensor = knx_read( $this_controller{ 'SensorGA' }, 0, $this_controller{ 'SensorDPT' } );
    my $SetPoint = $plugin_info{ $prefix . '_SetPoint' };
    my $old = $plugin_info{ $prefix . '_Actuator' };

    my $kp = 1.0 / $this_controller{ 'ProportionalGain' };
    my $error = $SetPoint - $Sensor;

    # caclulate the I part of the PI controller:
    $plugin_info{ $prefix . '_Integral' } = $plugin_info{ $prefix . '_Integral' } + $error * $dt;
    my $integral = $plugin_info{ $prefix . '_Integral' } / (60.0 * $this_controller{ 'IntegralTime' });

    # put together the PI controller:
    $plugin_info{ $prefix . '_Actuator' } = 100.0 * $kp * ($error + $integral);

    # clip at maximum to avoid windup:
    if( $plugin_info{ $prefix . '_Actuator' } > 100 )
    {
    $ret_val .= '[>]';
    $plugin_info{ $prefix . '_Actuator' } = 100;
    $plugin_info{ $prefix . '_Integral' } = (1.0 / $kp) * 60.0 * $this_controller{ 'IntegralTime' };
    }
    # clip at minimum
    if( $plugin_info{ $prefix . '_Actuator' } < 0 or $plugin_info{ $prefix . '_Integral' } < 0 )
    {
    $ret_val .= '[<]';
    $plugin_info{ $prefix . '_Actuator' } = 0 if $plugin_info{ $prefix . '_Actuator' } < 0;
    $plugin_info{ $prefix . '_Integral' } = 0;
    }
    #$plugin_info{ $prefix . '_Actuator' } = round( $plugin_info{ $prefix . '_Actuator' } );

    # If a GA is defined, send the new actuator value
    if( defined $this_controller{ 'ActuatorGA' } and (
    ($old ne $plugin_info{ $prefix . '_Actuator' }) or (time() - $plugin_info{ $prefix . '_lastSent' } > $this_controller{'MinUpdateRate'} )) )
    {
    knx_write( $this_controller{ 'ActuatorGA' }, $plugin_info{ $prefix . '_Actuator' }, $this_controller{ 'ActuatorDPT' } );
    $plugin_info{ $prefix . '_lastSent' } = time();
    }

    if( defined $this_controller{ 'SetPointRRD' } )
    {
    update_rrd( $this_controller{ 'SetPointRRD' }, '', $SetPoint );
    }
    if( defined $this_controller{ 'ActuatorRRD' } )
    {
    update_rrd( $this_controller{ 'ActuatorRRD' }, '', $plugin_info{ $prefix . '_Actuator' } );
    }

    $ret_val .= $this_controller_name . ': ' . $SetPoint . '<>' . $Sensor . '=>' . $plugin_info{ $prefix . '_Actuator' } . ' [' . ($error*$kp) . '/' . $integral*$kp . ']; ';
    }
    }

    if( $show_debug ) { return $ret_val; }
    return;

    ################################################## ###########################
    # Version history:
    # ================
    #
    # 0.7:
    # * change to external config (-> conf.d)
    # 0.6:
    # * Bug fix for setups where the WireGate didn't know the ActuatorGA
    # * Force sending of actuator after x seconds/minutes so that the watchdog in
    # the actuator doesn't time out
    # 0.5:
    # * initial release
    #
    ################################################## ###########################
    # ToDo:
    # =====
    # * Limit bus traffic by sending actuator values after a change that is bigger
    # than x%
    # * Add GA for sending delta values for the setpoint
    # * External Config
    # * Actuator overwrite ("Zwangsstellung")
    # * Hard temperature limit (min, max)
    ################################################## ###########################
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Zitat von swiss Beitrag anzeigen
    Wird es deine erweiterte Version im SVN geben?
    Ja, so war eigentlich der Plan. Muss ich die Tage mal hochladen. Den Zugang habe ich inzwischen, bin nur noch nicht dazu gekommen.

    Einen Kommentar schreiben:


  • swiss
    antwortet
    Klar da gebe ich dir absolut recht. War auch nur ein Schnellschuss

    Der Weg über GA Abonierenund zustand zwischenspeichern ist natürlich der sauberste. Braucht aber aucheinpaar Zeilen mehr ^^ Bei meinen Plugins die ich für die Masse bereitstelle betreibe ich den grössten Aufwand den Code widerstandsfähig zu machen.

    Da gehörten dann auch noch sachen hinein wie...

    Wenn in der Variable etwas anderes als eine GA in gültiger Notation steht, dann führe keinen Leseversuch aus

    Oben genannter schnippsel von mir soll also eher als Anregung gesehen werden.

    Wird es deine erweiterte Version im SVN geben?

    Einen Kommentar schreiben:


  • Hauke
    antwortet
    Das könnte aber Probleme geben wenn die GA nicht gelesen werden kann.

    Ich habe bei mir auch eben dieses Plugin im Einsatz und bin damals über die gleiche Stelle im Code gestolpert. Anscheinend wurde der Teil noch nicht umgesetzt. Ich fand's aber trotzdem toll sowas zu haben (haben inzwischen alle meine Plugins bekommen) und habe mir mal überlegt wie das am besten umzusetzen wäre. Meine Lösung sieht so aus...

    Code:
    my $ga_Plugin_Hauptschalter = '14/0/0'; #1bit Trigger fuer aktivierung/deaktivierung Plugin, 1=Aktivieren
    my $show_debug = 1;
    # relevante GA's abonnieren
    $plugin_subscribe{$ga_Plugin_Hauptschalter}{$plugname} = 1;
    my $busActive = !(!keys %msg); # true if script was called due to bus traffic
    if( !$busActive ) { # unnecesary during bus traffic
      if( not exists $plugin_info{ $plugname . '_' . '_Hauptschalter' } ) {
        $plugin_info{ $plugname . '_' . '_Hauptschalter' } = 1;
      }
    }
    # Verhalten bei Aufruf durch Busaktivität 
    if( $busActive ) {
      # Response-Telegramme ignorieren - sollten nur vom Plugin selbst kommen...
      if( $msg{'apci'} eq 'A_GroupValue_Response' ) { return; }
      # Read-Telegramme beantworten - erfolgt hier auch bei deaktiviertem Plugin. Bitte mindestens für den Hauptschalter...
      if( $msg{'apci'} eq 'A_GroupValue_Read' ) {
        if( $msg{'dst'} eq $ga_Plugin_Hauptschalter) {
          my $value = $plugin_info{ $plugname . '_' . '_Hauptschalter' };
          knx_write( $msg{'dst'}, $value, 1, 1 ); # send response
        }
      # Diesen Teil mehrfach einfuegen für jede GA die beantwortet werden soll
      #    elsif( $msg{'dst'} eq $ga_ANTWORT) {
      #    knx_write( $msg{'dst'}, $ANTWORT, DPT, 1 ); # send response
      #  }
      }
      # Write-Telegramme verarbeiten - erfolgt hier auch bei deaktiviertem Plugin. Bitte mindestens für den Hauptschalter...
      elsif( $msg{'apci'} eq 'A_GroupValue_Write') {
        if( $msg{'dst'} eq $ga_Plugin_Hauptschalter) {
          $plugin_info{ $plugname . '_' . '_Hauptschalter' } = $msg{'data'};
        }
      }
    }
    # Plugin ohne weitere Aktion beenden wenn Hauptschalter aus
    if ($plugin_info{ $plugname . '_' . '_Hauptschalter' } == 0) {
      if($show_debug > 0){ plugin_log($plugname,"Deaktiviert ueber Hauptschalter-GA."); }
      $plugin_info{$plugname.'_cycle'} = 86400;
      return('deaktiviert');
    }
    else { $plugin_info{$plugname.'_cycle'} = 60; }
    # Ab hier der Hauptteil des Plugins....
    Das kann man bestimmt noch weiter optimieren, wenn man GA's selektiv (nur read, nur write) abonnieren kann. Ich habe aber noch den original wiregated laufen, daher ist eine Fallunterscheidung nötig.

    Einen Kommentar schreiben:


  • swiss
    antwortet
    Ich habe nochmal kurz in den Programmcode geschaut. Anscheinend wird $GlobalDisableGA garnicht verwendet...

    Wäre aber sehr einfach das noch einzubauen...

    Einfach z.B. in der Zeile 69 des Programmcode folgenden Codeschnipsel einfügen:

    Code:
    if (knx_read($GlobalDisableGA,0,1) == 1) {
        return;
    }
    Eine Programmiersprache erlernt man nicht in 2-3- Säzen Ich selber hangle mich mehr schlecht als recht durch. Aber Perl ist eine recht dankbare Sprache in die man sich mit der Zeit immer besser hineindenken kann

    Wenn du konkrete Fragen hast, wird dir hier bestimmt gerne geholfen

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    Abend,

    vielen Dank für den Tipp. Ich habe das Plugin + config nochmal kmpl. gelöscht und neu begonnen.
    Die kopierte config-Sample Datei habe ich bereinigt um die + -Zeichen vor jeder Zeile und den Einträgen vor "configuration". Außerdem habe ich nur die Gruppenadressen angepasst und den Rest gelassen wie er war.

    Das Plugin läuft und scheint soweit zu funktionieren. )
    Was aber wohl nicht klappt ist das stoppen des Plugins über die in der config hinterlegten $GlobalDisableGA = '3/2/2';

    Habe eben in der Plugin Datei die Adresse der DisableGA angepasst. evtl. klappt es ja jetzt.
    In jedem Fall bin ich schon mal freudig eregt, das das grundsätzlich funktioniert.
    Gibts hier einen Freiwilligen, der mir Pearl beibringt?

    Einen Kommentar schreiben:


  • swiss
    antwortet
    Hallo Steve

    Das mit der Konfiguration in einer separaten Datei steht zwar im Programmcode des Plugins selbst aber ist wirklich nicht sonderlich gut kommuniziert. Man kann nicht generell sagen, dass jedes Plugin eine config braucht. Einen Hinweis dazu steht immer relativ weit oben im Plugin-code...

    Code:
    22:# Configuration: 
    23:# --> change values in the conf.d directory!
    Dies bedeutet, dass nach dem du das Plugin in das Editorfenster kopiert und gespeichert hast, du hinter dem Namen des Plugin auf config klicken und dort noch die separate Konfiguration einfügen musst.

    Der Grund wiso es bei dir wohl nicht funktioniert, ist weil du anscheinen die conf_sample als Dtei kopiert hast. Die Userconfig endet immer mit pluginname.conf was dazu führt, dass deine config gar nicht gelesen wird. Deine config sollte also Multi-RTR.conf ohne _sample heissen

    Im Anhang mal etwas Dokumentation

    Ob das Plugin mit DPT 1.001 umgehen kann, kann ich dir noch nicht sagen. Dazu müsste ich den Programmcode mal etwas genauer durchsehen...
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Ziegelstein
    antwortet
    So, ich habe das plugin "multi-rtr" installiert.

    habe folgendes im plugin-code geändert:

    # --> change values in the conf.d directory!
    my %controllers = ();
    my %default = ();
    my $GlobalDisableGA = '3/2/2';
    my $reset = 0; # set to 1 to reset the states, run script and change to 0 again
    my $show_debug = 0; # switches debug information that will be shown in the log
    ################################################## ###########################


    und folgende Einträge in der .config vorgenommen:
    b/wiregate/plugin/generic/conf.d/Multi-RTR.conf_sample
    @@ -0,0 +1,45 @@
    +#-----------------------------------------------------------------------------
    +# ACHTUNG: Variablen duerfen nur im Plugin mit 'my' definiert werden,
    +# 'my' hier nicht verwenden!
    +#-----------------------------------------------------------------------------
    +
    +################################################# ############################
    +# Configuration:
    +%controllers = (
    + 'OG BAD_FBH-Temperatur' => {
    + 'SetPointGA' => '3/2/1', 'SetPointRRD' => 'OG BAD_FBH-Temperatur_Sollwert',
    + 'SensorGA' => '5/2/15',
    + 'ActuatorGA' => '3/2/0', 'ActuatorRRD' => 'OG BAD_FBH-Temperatur_Regelung',
    + 'ProportionalGain' => 5, 'IntegralTime' => 150
    },
    +);
    +%default = (
    + 'SetPointDPT' => 9.001,
    + 'SensorDPT' => 9.001,
    + 'ActuatorDPT' => 1,
    + 'DisableDPT' => 1,
    + 'SetPointInit' => 21.0,
    + 'SetPointLFlag' => 1, # true
    + 'ActuatorLFlag' => 1, # true
    + 'MinUpdateRate' => 5 * 60, # 5 minutes
    +);
    +
    +$GlobalDisableGA = '3/2/2';
    +
    +$reset = 1; # set to 1 to reset the states, run script and change to 0 again
    +$show_debug = 1; # switches debug information that will be shown in the log
    +
    +################################################# ############################
    +1;
    +
    +# emacs setting
    +# ;;; Local Variables: ***
    +# ;;; modeerl ***
    +# ;;; End: ***
    +# vim: set filetype=perl expandtab tabstop=8 shiftwidth=2 autoindent smartindent:

    Fragen: Woran sehe ich ob das Plugin läuft?
    Haben die Rot markierten einträge eine Bedeutung/Funktion?

    wie oben beschrieben, möchte ich einen Schaltaktor betätigen - daher actor dpt auf 1 gesetzt.
    Alles in allem kann ich sagen: Es funktioniert nicht. Was muss ich verändern oder wo stehts geschrieben?

    So als Rückmeldung als Beginner: Es steht nirgens geschrieben, dass zu einem Plugin noch eine config-Datei zu erstellen ist. Es war bei mir Zufall, dass ich im WireGate unter den aufgelisteteten Plugins auf den Button/link für "config" gedrückt habe..für mich war der Name und config ein link..

    Der Eintrag für GlobalDisableGA = '3/2/2'; habe ich in der config und im plugin angepasst. Richtig oder falsch? - auf diese Addresse sende ich eine 1 mit der Hoffnung, dass Plugin in die Gänge zu bekommen. Und mit 0 wieder zu stoppen. - wäre das korrekt?

    Vielen Dank vom Planlosen.
    Steve

    Einen Kommentar schreiben:


  • Ziegelstein
    hat ein Thema erstellt [wiregate] - √ - Steuerung elektrische FBH.

    - √ - Steuerung elektrische FBH

    Abend,

    ich benötige Unterstützung zur Umsetzung eines Plugins zur Steuerung einer elektrischen FBH.

    Habe eine GA für die Temperatur im Fussboden
    Eine GA für das Schalten des Aktors ein/aus
    Eine Rückmelde-GA -Status Aktor.

    Steuern möchte ich über die Comet Visu.
    Am Ende möchte ich die Steuerung aktivieren/deaktivieren und Soll-Temperaturen über die Visu vorgeben.

    Kann mir da jemand unter die Arme greifen?

    habe fertige Plugins gefunden:
    Heizungsregelung.pl --> da blicke ich Null durch
    Mulit-RTR.pl --> ??

    Scheint mir aber, als wenn das für Wassergeführte Anlagen gedacht ist. Bei mir gibts ja nur ein / aus..

    Vielen Dank.

    MFG
    Steve
Lädt...
X