NEWS
Latest posts made by Ma Sch
-
kabelgebunden Luftfeuchte/Temperatur messen
Hallo,
im Heizungsraum möchte ich Temperatur und Luftfeuchte messen. Dort habe ich allerdings kein WLan und sonstige Funktverbindungen. Ethernet aber schon und auch eine Datenleitung zum ioBroker ist einfach möglich. Kennt jemand einen Sensor (am besten mit Display), den ich über LAN oder andere Datenleitungen an den ioBroker anschließen kann?
Danke
-
Sungrow Modbus: Zustand des D0-Relais auslesen
Hallo,
ich habe eine Sh25T von sungrow. Die Register-Definitionen für modbus stehen hier file:///home/mschulte/Downloads/TI_20231019_Communication.Protocol.of.Residential.Hybrid.Inverter_V1.1.2_EN.pdf
Das läuft auch so weit für die Input-Register. Ich würde aber gerne den Zustand des D0-Relais (läuft im intelligenten Modus) auslesen. Das müsste mit dem Holdingregister 13011 gehen. Steht im verlinkten pdf auf Seite 1
Kann mir jemand sagen, wie der Eintrag in der modbus-INstanz dafür aussieht
_address name description unit type len factor offset formula role room poll wp cw isScale 13011 D0 D0 Relais uint16be 1 1 0 level
Gibt zwar keinen Fehler aber auch keinen sinnvollen Wert
Danke
-
Skript: eta Modbus zu tsv für Modbusadapter konvertieren
Hallo,
bei den Heizkesseln von eta muss man man für die einzelnen Parameter selbst festlegen, in welche modbus-Register sie geschrieben werden. Das Vorgehen wird hier beschrieben: https://www.eta.co.at/typo3conf/ext/lg_tecdoc/pi1/download.php?url=/TechDoku/Files/P-0000003693-DE-003.pdf&gid=4b5b50e37f409538fc4d23ac8cdbd618
Somit ist bei jedem die Zuordnung Wert <-> Register eine andere, und eine universelle Datei wie z.B. bei so manchem Wechselrichter steht nicht zur Verfügung.
Man kann die Zuordnung aber in eine xml-Datei exportieren. Das unten stehende python-Skript erzeugt aus der xml-Datei eine fertig formatierte tsv-Datei, deren Inhalt man direkt über den Reiter Holdingregister der modbus-Instanz einfügen kann.Vorgehen
- Zunächst muss man die xml-Datei am Kessel auf einen usb-Stick kopieren. Das ist in der Anleitung oben beschrieben. Die Datei heißt standardmäßig modbusTcpService.xml
- Diese Datei kopiert man auf einen Rechner mit installierten python3 (z.B. den rpi auf dem ioBroker läuft).
- Auf diesem Rechner muss auch das Skript etaXML2ioBrokerModbus.py liegen. Nun ruft man das Skript mit dem Dateinamen und dem Namen der Ausgabedatei auf
python3 etaXML2ioBrokerModbus.py -o eta.tsv
- Danach liegt die fertige tsv-Datei im selben Ordner.
- Hinweis: Alle Registereinträge sind Integer. In der xml-Datei stehen die Entsprechungen (z. B. 1000 für 'Aus', 1001 für 'An'). Das Skript erzeugt eine Formel, so dass die Entsprechungen in den Objekten bei ioBroker stehen und nicht die Rohwerte.
- Hinweis: lässt man den Parameter -o und den Ausgabedateinamen weg, wird alles in die Konsole ausgegeben. Braucht man manchmal zum probieren.
- Hinweis: Heißt die xml-Datei nicht modbusTcpService.xml, ruft man das Skript mit dem Namen der Datei auf
python3 etaXML2ioBrokerModbus.py andererName.xml
- Hinweis:
python3 etaXML2ioBrokerModbus.py -h
gibt die Hilfe aus
Anmerkungen und Anregungen sind herzlich willkommen
Hier das Skript
# etaXML2ioBrokerModbus.py # M. Schulte, 2024 # Convert eta modbus xml-File to tsv-file for ioBroker modbus adpater. # See https://www.eta.co.at/typo3conf/ext/lg_tecdoc/pi1/download.php?url=/TechDoku/Files/P-0000003693-EN-003.pdf&gid=4b5b50e37f409538fc4d23ac8cdbd618 how to configure and export modbus configuration from etaTouch to xml. import sys import os.path import argparse import xml.etree.ElementTree as ET seperator = "\t" parser = argparse.ArgumentParser(description="Convert eta Modbusfile to ioBroker (tsv)",formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('filename', nargs='?', default="modbusTcpService.xml", help="The xml file generated from eta (Logs -> Export)") # positional argument parser.add_argument('-o', '--outputFile', help="Name of the output file. If not set, the result will be prompt to the console.") args = parser.parse_args() # File exists? if not os.path.isfile(args.filename): print(args.filename + " doesn't exists. Abort.") sys.exit(0) #head of outputfile head=["_address","name","description","unit","type","len","factor","offset","formula","role","room","poll","wp","cw","isScale"] # result as tsv output = seperator.join(head) # Load xml file tree = ET.parse(args.filename) root = tree.getroot() # iterate over tree for register in root: line = [None]*len(head) # adress line[0]=register.attrib['id'] # variable is the only subchid of register variable = register[0] #name line[1]=variable.attrib["fubName"] #description line[2]=variable.attrib["name"] #unit line[3]=variable.attrib["unit"] #type (always int32be) line[4]="int32be" #len (always 2) line[5]="2" #factor line[6]=str(1/int(variable.attrib["scaleFactor"])) #offset line[7]="0" #role line[9]="value" #room line[10]="" #poll line[11]="true" #wp line[12]="false" #cw line[13]="false" #isScale line[14]="false" variableType = variable.find('type') if variableType.text == "TEXT": # find substitutions for values validValues = variable.find('validValues') formular ="" # Build formular for validValue in validValues: #x = 1001 ? 'An' :x=1002 ? 'Aus':'' formular = formular+"(x=="+validValue.text+")?'"+validValue.attrib["strValue"]+"':" formular=formular+"''+x"# Print value if no substitution line[8]=formular else: # No formular required #formula line[8]="" #append to output output = output+"\n"+seperator.join(line) if args.outputFile is not None: # Write to file if output filename is given print("Write result to file "+args.outputFile+".") f = open(args.outputFile, "w") f.write(output) f.close() else: print(output)
-
RE: SDM630 uns SDM120 Stromzähler: Fragen RS485 Bus
Danke, dann kann ich loslegen
-
RE: SDM630 uns SDM120 Stromzähler: Fragen RS485 Bus
Danke für die Antwort
Nutzt du auch einen Modbus zu USB Adpater?
Wie ist dein IR-Lesekopf eingebunden? auch über USB.? Brauchst du ein Hub oder direkt am rpi?
-
RE: Eltako F3Z14D Zählersammler mit RS485-USB Adapter
Mach es jetzt gleich mit Modbusfähigen Zählern: https://forum.iobroker.net/topic/77705/sdm630-uns-sdm120-stromzähler-fragen-rs485-bus
-
SDM630 uns SDM120 Stromzähler: Fragen RS485 Bus
Hallo,
eigentlich wollte ich mehrere Eltako-Zähler mit S0 Ausgang an einen Sammler anschließen und dann per Modbus im iOBroker auslesen. Jetzt habe ich mich entschieden gleich Zähler die Modbus unterstützen zu verwenden. Das wären für Drehstrom der SDM630-Modbus und der SDM120-Modbus für Wechselstrom. Die unterstützen den RS485 Bus.
Dieser soll dann am Ende in einen RS485-zu-USB-Konverter enden.
Muss ich am letzten Zähler in diesem Bus und beim Master dann einen 120 Ohm Widerstand einbringen?Danke
Danke
-
RE: Eltako F3Z14D Zählersammler mit RS485-USB Adapter
Bis jetzt lese ich nur mit Modbus die Heizung und den Wechselrichter aus.
Dazu kommen in kürze noch zwei Wärmemengenzähler, bei denen ich mich für die Datenschnittstelle noch nicht entschieden habe.Wäre also jetzt mein Einstieg in ein System. Gibt's da ein Empfehlung?
Vielen Dank
-
RE: Eltako F3Z14D Zählersammler mit RS485-USB Adapter
Danke für die Antwort
@jey-cee sagte in Eltako F3Z14D Zählersammler mit RS485-USB Adapter:
Das beste was du machen kannst ist ein io Modul aus einem System deiner Wahl n
Könntest du mir ein Beispiel für ein solches System nennen. Ich weiß nicht genau was du meinst.