Verbesserte ModBus Anbindung (IP-Symcon 7.0)

Das funktioniert auch nicht.
Variablen sind an Instanzen gebunden.
Die Instanz ist die „Intelligenz“; die Variable „nur“ ein doofes Objekt was einen Wert anzeigt.

Verschiebst du die Variable, hat sie keine Zuordnung mehr.

Schau mal in die Grundlagen der Doku unter Statusvariablen:

Michael

Danke, d.h. um die Instanzen ähnlich dem Import anzulegen müsste man ein php Script schreiben. Macht es für Symcon einen Unterschied ob ich die Modbus Adresse einzeln (alle Händisch) anlege oder unter einem Device laufen lasse? Für die Visualisierung passt’s besser die Modbusadressinstanz einzeln anzulegen. Mit dem richtigen Variablen Profil ist da gleich die Basis vorhanden.

Ich hab jetzt schon sehr viel versucht/gesucht/gelesen, auch die Seiten wo ich dann auf die Hilfe verwiesen wurde :face_with_spiral_eyes: vielleicht bin ich da zu ungeduldig. Die Möglichkeiten von Symcon gefallen mir sehr gut. Hoffe jetzt „fällt dann mal der Schalter“ um vom Trial and Error Prinzip weg zu kommen. :upside_down_face:

Wenn dir die Einzeladresse gefallen → Super. Dann würde ich die doch nutzen. Die Devices haben den Charme der Vorlagen. Aber wenn du Einzeladressen fertig hast, kannst du auf die SymBox einfach ein Backup einspielen und bist fertig.

paresy

Für die Visualisierung würde ich fast immer nur auf Dummy Instanzen und Links auf Variablen setzen. Da gehört eigentlich in den wenigsten fällen direkt eine Variable oder Instanz rein.

Gruß
Stephan

Hallo, eine Möglichkeit wäre z.B. lediglich Kategorien im Geräte-Konfigurator zu haben und diese nur dem Variablennamen voranzuhängen. Das eröffnet dann wieder ein paar Möglichkeiten…

Ich hätte noch einen klitzekleinen FeatureRequest:

  • wie weiter oben schon mal von da8ter erwähnt wurde: die Einführung von Kategorien oder Namenspräfixen
  • Sortierbare Spalten → ganz wichtig :pray:
  • Kopieren einer bestehenden Zeile in eine neue, bspw. durch einen Button „Kopie hinzufügen“ und den Dialog mit der markierten Zeile vorausfüllen.

Ansonsten ist es eine tolle Neuerung, die ich absolut gelungen finde. Danke euch.

1 „Gefällt mir“

Gibt es hierzu schon eine Roadmap?

Ich muss das Thema noch einmal hochholen, denn bei mir sieht es zur Zeit schrecklich aus :slight_smile:

Ursache sind die Werte des Wechselrichters, der gerade im StandBy ist:

Wie geht man da am besten mit um
A) auf eine Lösung (Unterdrückung von NaN Werten) von @paresy warten?
B) für alle Variablen, die in Frage kommen, eine virtuelle Adresse anlegen und den Wert selber ignorieren?
C) eine Schattenvariable anlegen und selber befüllen

Vielleicht habe ich auch etwas übersehen. Wie gehen andere damit um? Gibt es weitere Möglichkeiten?

Am Besten gefällt mir eigentlich Variante A :loveips:

Ich mach Knall hart immer 0 wenn’s Nacht ist. Mein WR zeigt sporadisch eine Produktion an obwohl es dunkel ist.

Ich habe das gleiche Problem mit den SMA Wechselrichtern…
Über die virtuelle Adresse hatte ich versucht, den Wert immer auf 0 zu setzen, wenn kleiner 0…
Aber im Archiv habe ich dann immer abwechselnd die Werte - 2147483648 und 0.

So hatte ich mir das mit den virtuellen Adressen nicht vorgestellt. Oder ich habe es nicht verstanden…


Bildschirmfoto 2024-03-17 um 13.54.07

Wie habt ihr die 0 das richtig hinbekommen, wenn der Wechselrichter nichts produziert ?
Die Schreiben des „nicht gewünschten“ Wertes bzw. des ursprünglichen Wertes lässt sich bei mir nicht verhindern.

Es sollte halt eine Modus-Vorlage werden, die für SMA ohne große Anpassungen nutzbar wird…

Grüße
Björn

so sollte es eigentlich funtionieren
image

Gruß
Rainer

1 „Gefällt mir“

Ich habe diesen Versuch vorhin aufgesetzt:

Nebenbei: die alten Archivwerte habe ich mit diesem Codeschnipsel bereinigt:

        define('ID_ARCHIVE_HANDLER', IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);

        //Variablen mit zu prüfenden NaNwerten
        define('VARIABLES', [
            14114 => -2147483648
        ]);

        $test = false;

        $start_time = strtotime('2019-01-01 00:00:00');
        $end_time   = time();

        foreach (VARIABLES as $variable_id => $NaNValue) {
            $values = AC_GetLoggedValues(ID_ARCHIVE_HANDLER, $variable_id, $start_time, $end_time, 0);
            echo PHP_EOL . sprintf('GetLoggedValues: Variable: %s, NaN: %s', $variable_id, $NaNValue) . PHP_EOL;

            $reaggregate = false;
            foreach ($values as $i => $iValue) {
                $found = ($iValue['Value'] === $NaNValue);
                 if ($found) {
                     echo sprintf('Key: %s: TimeStamp: %s, Value: %s', $i, date('Y-m-d G:i:s', $values[$i]['TimeStamp']), $values[$i]['Value'])
                          . PHP_EOL;
                     if (!$test) {
                         AC_DeleteVariableData(ID_ARCHIVE_HANDLER, $variable_id, $values[$i]['TimeStamp'], $values[$i]['TimeStamp']);
                         $reaggregate = true;
                     }
                }
            }

            if ($reaggregate) {
                AC_ReAggregateVariable(ID_ARCHIVE_HANDLER, $variable_id);
            }
        }

Danke @erpe und @bumaas
Habe die Anpassungen soweit übernommen.
Bin mal gespannt, wie sich die Werte verhalten.

Der Codeschnipsel ist cool … :wink: und spart Arbeit…

Funktioniert leider nicht … es werden zwar 0 Watt angezeigt, aber der Minuswert ist kurzzeitig zu sehen und wird auch ins Archiv geschrieben …

Bildschirmfoto 2024-03-17 um 19.04.48

Irgendwie ist das mit dem virtuellen Adressen noch nicht so optimal…
Oder muss ich da etwas neu erzeugen ?
Ich habe nur das vorhandene Ident angegeben…
Wäre ja irgendwie ungünstig, da man sonst keine Vorlagen weitergeben könnte.

10 Minuten später…:
Okay… ich antworte mir mal selbst…

  • Den Namen der Virtuellen Adresse hatte ich genauso benannt, wie das Ident
  • es hatte sich mir nicht erschlossen, dass dieser Name frei gewählt werden kann
  • jetzt habe ich eine zusätzliche Variable im ModBus Gerät, welche sich richtig verhält und die ich nun loggen kann.
  • irgendwie finde ich auch keine richtige Doku dazu… überall nur Schnipsel

Danke für die Geduld…

ich habe gerade gesehen, in beiden screenshots zu den Listenelementen fehlt jedes mal die } in der letzten Zeile.
also eine Zeile mit } ergänzen.

ist mir aufgefallen und hatte ich ergänzt…
THX

falls die Variable nur der Anzeige dient und nicht geloggt werden soll:
ich habe im Profil mal folgendes eingetragen
image

Damit wird der negative NaN Wert zu Null und alles andere normal angezeigt. Für Float Profile dann entsprechend anpassen.

Gruß
Rainer

:scream: bei mir nicht :smile:

Wichtig ist, dass immer mit Return ein Wert zurückgegeben wird.

ja, stimmt. Jetzt sehe ich das auch :+1:

Das ist mit der 7.1 nicht mehr ganz korrekt. Wenn du null zurück gibt, wird die Variable einfach nicht aktualisiert. Das wurde gewünscht, um genau solche Fälle abzufangen.

paresy

1 „Gefällt mir“