Ankündigung

Einklappen
Keine Ankündigung bisher.

Einbindung von Modbus TCP

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

  • Tom Bombadil
    antwortet
    Zitat von ivande Beitrag anzeigen
    Code:
    'I_AC_Power' : 40083, # 40084: AC Power Value, int16
    'I_AC_Power_SF' : 40084, # 40085: AC Power Scale Factor, int16
    
    Result = Value + ScaleFaktor
    Ja, in dem Fall dann wohl sowas hier:

    Code:
    'I_AC_Power_SF':
       type: num
    
    'I_AC_Power':
        type: num
    
    'I_AC_Power_final':
        type: num
        eval: ..I_AC_Power_SF() * ..I_AC_Power()
        eval_trigger: ..I_AC_Power_SF, ..I_AC_Power
    Wenn das häufiger vorkommt, kann man z.B. im Trovis-Plugin auch einfach eine Spezialbehandlung für diese 'Sonderlocken' definieren.

    /tom
    Zuletzt geändert von Tom Bombadil; 11.12.2021, 11:42.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    die kosalmodbus und ksemmodbus sind bereit recht universell aufgebaut, und man könnte mit dem selben Prinzip andere Gerätschaften adaptiert. Für das solaredge - Plugin geht das leider nicht so ganz universell, da dort einige Werte aus zwei Registern berechnet werden müssen: in einem Register steht der Wert und im anderen der Scale-Faktor. (dies könnte natürlich dann über die SH-Items mit eval,.. verrechnet werden)

    Code:
    'I_AC_Power' : 40083, # 40084: AC Power Value, int16
    'I_AC_Power_SF' : 40084, # 40085: AC Power Scale Factor, int16
    
    Result = Value + ScaleFaktor
    Zuletzt geändert von ivande; 11.12.2021, 10:23.

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    Vl wäre es besser, das trovis plugin zu nutzen um ein eventuelles modbus master plugin zu generieren, welches universell für viele geräte genutzt werden kann..
    Die register müssten ja in einer doku stehen..
    Was eventuell schwierig werden könnte sind die verschiedenen modbus functions, wobei ich aber glaube, bei normalen geräten wird da nur die registerfunktion genutzt, in der automatisierungstechnik siehts da etwas anders aus...

    Achso, modbus funktioniert nach dem master-client prinzip, du musst dir das so vorstellen, im WR is ne art tabelle hinterlegt, die register sind die Zeilen, der WR schreibt seine aktuellen Daten in diese Tabelle rein. SHNG schickt dann über modbus die anforderung eine gewisse zeile auszulesen, und der WR sendet diese daten dann zurück .. das wäre so der vereinfachte anwendungsfall..
    Zuletzt geändert von Bonze; 11.12.2021, 09:21.

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Maexle Beitrag anzeigen
    Bin gespannt ob wenigstens ein Teil von meiner Ausführung richtig ist.
    Ja. Die Hauptarbeit ist die Identifikation der Register und die Übersetzung der zurückgelieferten Int-Werte in die finalen 'echten' Werte samt Kommastellen und Maßeinheiten. Kannst Du Dir im Trovis-Plugin alles ansehen - und sogar dessen Config-Dateien so umbiegen, dass Du statt einer Trovis Dein Gerät mit dem Plugin ausliest. Das Plugin ist mit Absicht so geschrieben, dass man weitere Geräte einfach adaptieren kann ...

    Konfigurationsdatei mit Registern: hier
    Als Beispiel die VL-Temp im Heizkreis 1:
    Mein Variablenname (von mir frei definiert): VorlauftempVF1; Register Nr. 12, Datentyp Zahl, Faktor 0.1, Einheit °C.
    Derzeit liefert das Register 12 auf Anfrage den Wert 284 zurück = 28.4 °C.

    Zugehörige Itemdefinition:
    Code:
            vf1:
                desc: Vorlauffühler 1 (Anlage 2.1 - sekundär, Heizkreis 1)
                type: num
                trovis557x_var: VorlauftempVF1
                liste: []
                visu_acl: ro
                database: 'init'
    Hoffe, das hilft weiter.

    /tom

    Edit: Zusätzlich hat jedes Item des Trovis-Plugins ein Attribut "liste", in dem die wichtigen Werte nochmal als einfache Liste vorgehalten werden: [Buswert, Echtwert, Einheit] - [284, 28.4, '°C']. So wird sichergestellt, dass die ausgelesenen Werte auch durch Drittplugins beliebig verwendet können.
    Zuletzt geändert von Tom Bombadil; 11.12.2021, 11:29.

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Zitat von Bonze Beitrag anzeigen
    könnte eventuell ein Grundplugin zur verfügung stellen , müsste es vorher nur etwas aufräumen
    Das wäre eine feine Sache.

    Wenn ich diese Modbus-Geschichte richtig verstanden habe.
    Ich erklär es jetzt mal mit "Nicht-Programmierer-Worten"

    In diesem Beispiel: ein Wechselrichter und ein RasPi die im selben Netzwerk hängen.

    (vgl. hierzu Seite 17 vom Handbuch https://www.solaredge.com/sites/defa...nical-note.pdf )

    Der WR ruft die Nummer 40083 kurze Pause 2135
    Der RasPi hört die 40083 / 2135 --> weiß 40083 = I_AC_Power in Watt --> schreibt "aktuelle Leistung 2135 Watt

    60 sekunden später
    selbes Spiel

    ich glaube aber das der WR bzw. Modbus nur auf Anforderung sendet, richtig? --> dann müsste es heißen RasPi ruft 40083 --- WR sendet 2135 --- RasPi schreibt Leistung 2135 Watt.


    Dann wäre es nur eine Fleißaufgabe, die Nummern (Adress / base0 - base1) mit der richtigen Einheit und kurzem Kommentar in der plugin.yaml (die vom Plugin selbst) einzutragen.





    Bin gespannt ob wenigstens ein Teil von meiner Ausführung richtig ist.
    Danke

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    mh hatte da was, ist aber recht alt und unspezifisch, es gab doch dieses Modbus Plugin für den Trovis? Naja egal, das lesen usw von modbus tcp sollte kein Problem darstellen ..

    könnte eventuell ein Grundplugin zur verfügung stellen , müsste es vorher nur etwas aufräumen, dann könntest du für dein gerät eventuell ein struct anlegen ...
    Zuletzt geändert von Bonze; 10.12.2021, 21:08.

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Zitat von macs412 Beitrag anzeigen
    Hätte großes Interesse an deinem PlugIn.
    Zitat von fuppy Beitrag anzeigen
    Kann ich bei Interesse aber gerne machen...

    Hey Jungs, was ist den daraus geworden?

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    Ja z.b. ginge das nur wenn man nem array -liste oder aehnliches als item wert hat
    vl sollten wir mal auf ner plugin basis, ein sehr allgemeines plugin entwickeln.. 1bit , 8bit , 16bit werte sollte es schon können ...

    Einen Kommentar schreiben:


  • heckmannju
    antwortet
    Zitat von Bonze Beitrag anzeigen
    am besten wäre es das Modbus TCP Plugin ähnlich dem KNX plugin aufzubauen, sodass man im item das Register und die Funktion angeben kann und dann den inhalt bekommt, dann wäre es universell für alles einsetzbar ..
    Das wäre wirklich eine gute Idee. Allerdings gibt es da auch funktionen wo das nicht so einfach geht. z.b. meherere Register auf einmal lesen.

    Einen Kommentar schreiben:


  • macs412
    antwortet
    Zitat von fuppy Beitrag anzeigen
    Kann ich bei Interesse aber gerne machen...
    Hätte großes Interesse an deinem PlugIn.

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    am besten wäre es das Modbus TCP Plugin ähnlich dem KNX plugin aufzubauen, sodass man im item das Register und die Funktion angeben kann und dann den inhalt bekommt, dann wäre es universell für alles einsetzbar ..

    Einen Kommentar schreiben:


  • fuppy
    antwortet
    Hallo zusammen,
    ich hab ein Plugin für meine Dimplex Wärmepumpe geschrieben. Greif ebenfalls über Modbus TCP die Daten ab.
    Läuft schon seit ca. einem Jahr problemlos bei mir. Hab das Plugin nur leider noch nicht der Community zur Verfügung gestellt...

    Kann ich bei Interesse aber gerne machen...

    Gruß
    Christian

    Einen Kommentar schreiben:


  • celari
    antwortet
    Kollege, gleiches/identisches Thema nur ein paar km südlich ...
    https://knx-user-forum.de/forum/%C3%...sw-l%C3%B6sung

    Vielleicht telefonieren wir mal kurz ...

    Einen Kommentar schreiben:


  • ratzi82
    antwortet
    Es gibt verschiedene Möglichkeiten, hängt davon ab wie deine Kenntnisse sind:

    1. Du schreibst dir ein eigenes SmartHomeNG Plugin, dass Modbus TCP über die pymodbus lib https://pymodbus.readthedocs.io/en/latest/ verwendet. Ein fertiges Beispiel ist z.B. mein Pluggit plugin, siehe https://github.com/smarthomeNG/plugi...evelop/pluggit
    Dafür brauchst du auf jeden Fall die Modbus Register Beschreibung vom Hersteller.

    2. Du installierst dir node-red ( https://nodered.org/ ) und einen MQTT Broker ( https://mosquitto.org/ ) und verwendest z.B. node-red-contrib-modbus um die Anbindung für deine Wärmepumpe zu realisieren. Von node-red werden die Daten dann über MQTT an den MQTT Broker geschickt und auf SmartHomeNG-Seite gibt es seit kurzem ein MQTT Client Plugin https://github.com/smarthomeNG/plugi...e/develop/mqtt womit du die Daten dann nach SmartHomeNG bekommst.

    3. Wenn 1. und 2. rausfällt, laut https://www.idm-energie.at/de/idm-navigator.html gibt es ja eine KNX-Schnittstelle, z.B. die hier http://www.siblik.com/produkte/heizu...knx-modul.html

    Hoffe das hilft dir schon mal weiter.

    Gruß,
    Henning

    Einen Kommentar schreiben:


  • macs412
    hat ein Thema erstellt Einbindung von Modbus TCP.

    Einbindung von Modbus TCP

    Hallo Leute,

    würde gerne meine IDM Wärmepumpe in SmartHome integrieren.
    IDM stellt mir Modbus TCP zur Verfügung.

    Gibt es dafür ein funktionierendes Plugin?
Lädt...
X