Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Abfrage ORNO OR-WE-516/ 517 Modbus, evtl. Script vorhanden?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    6
    1
    61

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Abfrage ORNO OR-WE-516/ 517 Modbus, evtl. Script vorhanden?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
orno or-we-516 modbus
60 Beiträge 11 Kommentatoren 11.9k Aufrufe 10 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    charakterkopf
    schrieb am zuletzt editiert von charakterkopf
    #1

    Hallo IOBroker Forum,

    hat zufällig jemand die oben genannten Zähler bereits per Modbus angeschlossen? Habe über die Suche nichts gefunden.

    Mein Plan ist per Raspberry und mqtt die Daten an Iobroker zusenden. Gibt es hierfür bereits Erfahrungen bzw. fertige Python Scripts? Möchte vermeiden Stundenlang an der Modbus Abfrage zu Basteln. Die Herstellerdoku scheint auch Fehler zu behalten.

    Das fertige Script für MQTT poste ich dann anschliessend hier.

    Danke und Gruß
    charakterkopf

    TbsJahT 1 Antwort Letzte Antwort
    1
    • C Offline
      C Offline
      charakterkopf
      schrieb am zuletzt editiert von charakterkopf
      #2

      Habe mich durch den Modbus gewühlt und selbst einen Ersten Versuch unternommen:

      Ihr benötigt neben dem Zähler ca 60€ nur einen USB RS485 Konverter von Ebay. Der Bus ist eigentlich noch mit 2 x 120 Ohm Widerständen abzuschliessen, klappt bei mir auch ohne.

      Bitte die Importe im Script beachten:

      import minimalmodbus
      import serial
      import time
      import struct
      import binascii
      import paho.mqtt.client as paho
      

      Ziel ist das Script regelmässig die Daten auslesen und per MQTT Bereitstellen zu lassen.

      Die Registernummer sind in Hexadezimal aus der ORNO Software ersichtlich (s. Herstellerseite).

      1 Antwort Letzte Antwort
      0
      • C Offline
        C Offline
        charakterkopf
        schrieb am zuletzt editiert von charakterkopf
        #3

        So nachdem der Zähler installiert ist (Fachmann!!), hier das Finale Script.IMG_0321.JPG

        Die Sendefrequenz kann eingestellt werden über die Sleep Funktion am Ende (Hier alle 15 Sekunden)

        #!/usr/bin/env python3
        
        import minimalmodbus
        import serial
        import time
        import struct
        import binascii
        import paho.mqtt.client as paho
        from time import gmtime, strftime
        
        def umwandeln_ieee(Wert):  #Umwandlung Array of int ( 4 byte) in float nach IEEE 754
            Wert2=str(hex(Wert))
            Wert2=Wert2.replace('0x', '')
            if Wert2=='0':
               Wert2='00000000'
            Wert3=struct.unpack('>f', binascii.unhexlify(Wert2))[0]
           #Wert3= round(Wert3,3)
            return (Wert3)
        
        #Hilfvariable im bei Auslesefehler nicht zu senden
        go=True
        
        #mqtt  Config Daten hier Eintragen
        mqtt_username=""
        mqtt_password=""
        mqtt_server="192.168.0.2"
        mqtt_port=1885
        mqtt_subscribe="/Zaehler"
        
        def on_subscribe(client, userdata, mid, granted_qos):
           print("Gesendet!")
        
        def on_message(client, userdata, msg):
           print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
        
        client = paho.Client(client_id="Zaehler", clean_session=True, userdata=None, protocol=paho.MQTTv31)
        client.on_subscribe = on_subscribe
        client.on_message = on_message
        client.username_pw_set(mqtt_username, mqtt_password)
        client.connect(mqtt_server, mqtt_port,60)
        client.subscribe(mqtt_subscribe, qos=1)
        
        #Adapter für Modbus Anlegen 
        smartmeter = minimalmodbus.Instrument('/dev/ttyUSB0', 1,) # port name, slave address (in decimal)
        smartmeter.serial.baudrate = 9600         # Baud
        smartmeter.serial.bytesize = 8
        smartmeter.serial.parity   = serial.PARITY_EVEN # vendor default is EVEN
        smartmeter.serial.stopbits = 1
        smartmeter.serial.timeout  = 0.6          # seconds
        smartmeter.mode = minimalmodbus.MODE_RTU   # rtu or ascii mode
        smartmeter.clear_buffers_before_each_transaction = False
        smartmeter.debug = False # set to "True" for debug mode
        
        #Debug Werte für L1 ausgeben
        werteausgeben= True
        
        
        while True:
        
            client.loop_start()
        
         #Werte Abfragen
            try:
                #Adresse = smartmeter.read_register(2, 0, 3, False)  # registeraddress, number_of_decimals=0, functioncode=3, signed=False
                L1Spannung= umwandeln_ieee(smartmeter.read_long(14, 3, False, 0)) #registeraddress, functioncode=3, signed=False, byteorder=0)
                L2Spannung= umwandeln_ieee(smartmeter.read_long(16, 3, False, 0))
                L3Spannung= umwandeln_ieee(smartmeter.read_long(18, 3, False, 0))
                Frequency= umwandeln_ieee(smartmeter.read_long(20, 3, False, 0))
                L1Strom= umwandeln_ieee(smartmeter.read_long(22, 3, False, 0))
                L2Strom= umwandeln_ieee(smartmeter.read_long(24, 3, False, 0))
                L3Strom= umwandeln_ieee(smartmeter.read_long(26, 3, False, 0))
                Strom_gesamt=L1Strom+L2Strom+L3Strom
                Leistung_gesamt= umwandeln_ieee(smartmeter.read_long(28, 3, False, 0))
                L1Leistung= umwandeln_ieee(smartmeter.read_long(30, 3, False, 0))
                L2Leistung= umwandeln_ieee(smartmeter.read_long(32, 3, False, 0))
                L3Leistung= umwandeln_ieee(smartmeter.read_long(34, 3, False, 0))
                L1PowerFactor=umwandeln_ieee(smartmeter.read_long(54, 3, False, 0))
                L2PowerFactor=umwandeln_ieee(smartmeter.read_long(56, 3, False, 0))
                L3PowerFactor=umwandeln_ieee(smartmeter.read_long(58, 3, False, 0))
                Verbrauch_gesamt=umwandeln_ieee(smartmeter.read_long(256, 3, False, 0))
                #L1Verbrauch=umwandeln_ieee(smartmeter.read_long(258, 3, False, 0))
                #L2Verbrauch=umwandeln_ieee(smartmeter.read_long(260, 3, False, 0))
                #L3Verbrauch=umwandeln_ieee(smartmeter.read_long(262, 3, False, 0))
                go=True;
            except:
                print ("\nEinlesen nicht geklappt, versuche es erneut in 15 Sekunden")
                go=False;
        
            if go:
        
             #Werte Ausgeben falls gewünscht
                if werteausgeben:
                    print(strftime("\n%Y-%m-%d %H:%M:%S", gmtime()))
                    print ("Aktuelle Werte:")
                    #AdresseTxt = "Die Slave Adresse ist: %s" % Adresse
                    #print (AdresseTxt)
                    L1Spannungtxt = "L1Spannung ist: %f V" % L1Spannung
                    print (L1Spannungtxt)
                    L1Stromtxt = "L1Strom ist: %f A" % L1Strom
                    print (L1Stromtxt)
                    Frequencytxt = "Frequenz ist: %f hz" % Frequency
                    print (Frequencytxt)
                    L1Leistungtxt = "L1Leistung ist: %f KW/h" % L1Leistung
                    print (L1Leistungtxt)
                    L1PowerFactortxt = "L1Power Faktor ist: %f" % L1PowerFactor
                    print (L1PowerFactortxt)
                    Leistung_gesamttxt = "Leistung Gesamt ist: %f KW" % Leistung_gesamt
                    print (Leistung_gesamttxt)
        
             # Werte Senden
                #client.publish("/Zaehler/Adresse",str(Adresse), qos=1)
                client.publish("/Zaehler/L1/L1Spannung",str(L1Spannung), qos=0)
                client.publish("/Zaehler/L2/L2Spannung",str(L2Spannung), qos=0)
                client.publish("/Zaehler/L3/L3Spannung",str(L3Spannung), qos=0)
                client.publish("/Zaehler/Gesamt/Frequency",str(Frequency), qos=0)
                client.publish("/Zaehler/L1/L1Strom",str(L1Strom), qos=0)
                client.publish("/Zaehler/L2/L2Strom",str(L2Strom), qos=0)
                client.publish("/Zaehler/L3/L3Strom",str(L3Strom), qos=0)
                client.publish("/Zaehler/Gesamt/Leistung_gesamt",str(Leistung_gesamt*1000), qos=0)
                client.publish("/Zaehler/L1/L1Leistung",str(L1Leistung*1000), qos=0)
                client.publish("/Zaehler/L2/L2Leistung",str(L2Leistung*1000), qos=0)
                client.publish("/Zaehler/L3/L3Leistung",str(L3Leistung*1000), qos=0)
                client.publish("/Zaehler/L1/L1PowerFactor",str(L1PowerFactor), qos=0)
                client.publish("/Zaehler/L2/L2PowerFactor",str(L2PowerFactor), qos=0)
                client.publish("/Zaehler/L3/L3PowerFactor",str(L3PowerFactor), qos=0)
                client.publish("/Zaehler/Gesamt/Verbrauch_gesamt",str(Verbrauch_gesamt), qos=0)
                client.publish("/Zaehler/Gesamt/Strom_gesamt",str(Strom_gesamt), qos=0)
                #client.publish("/Zaehler/L1/L1Verbrauch",str(L1Verbrauch), qos=1)
                #client.publish("/Zaehler/L2/L2Verbrauch",str(L2Verbrauch), qos=1)
                #client.publish("/Zaehler/L3/L3Verbrauch",str(L3Verbrauch), qos=1)
            time.sleep(15)
        

        Getestet werden kann das Script mit: python3 Scriptname.py
        Zum dauerhaften ausführen habe ich eine Service eingerichtet, der beim Booten automatisch gestartet wird:

        1. Service Datei erstellen: sudo nano /etc/systemd/system/smartmeter.service
        2. Inhalt der Datei, Pfade oder Dateinamen sind anzupassen:
        [Unit]
        Description=smartmeter
        After=network.target
        
        [Service]
        ExecStart=/usr/bin/python3 -u smart.py
        WorkingDirectory=/home/pi/smartmeter
        StandardOutput=inherit
        StandardError=inherit
        Restart=always
        User=root
        
        [Install]
        WantedBy=multi-user.target
        
        1. Dienst Starten und Status ausgeben:
          sudo systemctl start smartmeter
          sudo systemctl status smartmeter.service
          sudo systemctl stop smartmeter
        2. Dienst anschalten um bei einem Boot automatisch gestartet zu werden:
          sudo systemctl enable smartmeter.service

        Die Daten sollten dann in IObroker regelmässig eintreffen:

        test.png

        H 1 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          rf600r
          schrieb am zuletzt editiert von
          #4

          Hallo charakterkopf,

          Wollte mich bedanken für deine Arbeit.
          Läuft spitze bei mir.

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            charakterkopf
            schrieb am zuletzt editiert von
            #5

            Danke :)

            1 Antwort Letzte Antwort
            0
            • I Offline
              I Offline
              isexglei
              schrieb am zuletzt editiert von
              #6

              Tolle Arbeit!

              Ich habe gelesen, dass es beim 516er und 517er nicht erkennbar ist, ob gerade ins Netz eingespeist wird, oder ob vom Netz bezogen wird. Kann das hier wer widerlegen?

              F 1 Antwort Letzte Antwort
              0
              • I isexglei

                Tolle Arbeit!

                Ich habe gelesen, dass es beim 516er und 517er nicht erkennbar ist, ob gerade ins Netz eingespeist wird, oder ob vom Netz bezogen wird. Kann das hier wer widerlegen?

                F Offline
                F Offline
                fbruckm
                schrieb am zuletzt editiert von
                #7

                @isexglei Ich kann es leider nur bestätigen :-(

                Ich versuche es jetzt mit einem Lovato DMED301, der sollte das können.

                1 Antwort Letzte Antwort
                0
                • C charakterkopf

                  So nachdem der Zähler installiert ist (Fachmann!!), hier das Finale Script.IMG_0321.JPG

                  Die Sendefrequenz kann eingestellt werden über die Sleep Funktion am Ende (Hier alle 15 Sekunden)

                  #!/usr/bin/env python3
                  
                  import minimalmodbus
                  import serial
                  import time
                  import struct
                  import binascii
                  import paho.mqtt.client as paho
                  from time import gmtime, strftime
                  
                  def umwandeln_ieee(Wert):  #Umwandlung Array of int ( 4 byte) in float nach IEEE 754
                      Wert2=str(hex(Wert))
                      Wert2=Wert2.replace('0x', '')
                      if Wert2=='0':
                         Wert2='00000000'
                      Wert3=struct.unpack('>f', binascii.unhexlify(Wert2))[0]
                     #Wert3= round(Wert3,3)
                      return (Wert3)
                  
                  #Hilfvariable im bei Auslesefehler nicht zu senden
                  go=True
                  
                  #mqtt  Config Daten hier Eintragen
                  mqtt_username=""
                  mqtt_password=""
                  mqtt_server="192.168.0.2"
                  mqtt_port=1885
                  mqtt_subscribe="/Zaehler"
                  
                  def on_subscribe(client, userdata, mid, granted_qos):
                     print("Gesendet!")
                  
                  def on_message(client, userdata, msg):
                     print(msg.topic+" "+str(msg.qos)+" "+str(msg.payload))
                  
                  client = paho.Client(client_id="Zaehler", clean_session=True, userdata=None, protocol=paho.MQTTv31)
                  client.on_subscribe = on_subscribe
                  client.on_message = on_message
                  client.username_pw_set(mqtt_username, mqtt_password)
                  client.connect(mqtt_server, mqtt_port,60)
                  client.subscribe(mqtt_subscribe, qos=1)
                  
                  #Adapter für Modbus Anlegen 
                  smartmeter = minimalmodbus.Instrument('/dev/ttyUSB0', 1,) # port name, slave address (in decimal)
                  smartmeter.serial.baudrate = 9600         # Baud
                  smartmeter.serial.bytesize = 8
                  smartmeter.serial.parity   = serial.PARITY_EVEN # vendor default is EVEN
                  smartmeter.serial.stopbits = 1
                  smartmeter.serial.timeout  = 0.6          # seconds
                  smartmeter.mode = minimalmodbus.MODE_RTU   # rtu or ascii mode
                  smartmeter.clear_buffers_before_each_transaction = False
                  smartmeter.debug = False # set to "True" for debug mode
                  
                  #Debug Werte für L1 ausgeben
                  werteausgeben= True
                  
                  
                  while True:
                  
                      client.loop_start()
                  
                   #Werte Abfragen
                      try:
                          #Adresse = smartmeter.read_register(2, 0, 3, False)  # registeraddress, number_of_decimals=0, functioncode=3, signed=False
                          L1Spannung= umwandeln_ieee(smartmeter.read_long(14, 3, False, 0)) #registeraddress, functioncode=3, signed=False, byteorder=0)
                          L2Spannung= umwandeln_ieee(smartmeter.read_long(16, 3, False, 0))
                          L3Spannung= umwandeln_ieee(smartmeter.read_long(18, 3, False, 0))
                          Frequency= umwandeln_ieee(smartmeter.read_long(20, 3, False, 0))
                          L1Strom= umwandeln_ieee(smartmeter.read_long(22, 3, False, 0))
                          L2Strom= umwandeln_ieee(smartmeter.read_long(24, 3, False, 0))
                          L3Strom= umwandeln_ieee(smartmeter.read_long(26, 3, False, 0))
                          Strom_gesamt=L1Strom+L2Strom+L3Strom
                          Leistung_gesamt= umwandeln_ieee(smartmeter.read_long(28, 3, False, 0))
                          L1Leistung= umwandeln_ieee(smartmeter.read_long(30, 3, False, 0))
                          L2Leistung= umwandeln_ieee(smartmeter.read_long(32, 3, False, 0))
                          L3Leistung= umwandeln_ieee(smartmeter.read_long(34, 3, False, 0))
                          L1PowerFactor=umwandeln_ieee(smartmeter.read_long(54, 3, False, 0))
                          L2PowerFactor=umwandeln_ieee(smartmeter.read_long(56, 3, False, 0))
                          L3PowerFactor=umwandeln_ieee(smartmeter.read_long(58, 3, False, 0))
                          Verbrauch_gesamt=umwandeln_ieee(smartmeter.read_long(256, 3, False, 0))
                          #L1Verbrauch=umwandeln_ieee(smartmeter.read_long(258, 3, False, 0))
                          #L2Verbrauch=umwandeln_ieee(smartmeter.read_long(260, 3, False, 0))
                          #L3Verbrauch=umwandeln_ieee(smartmeter.read_long(262, 3, False, 0))
                          go=True;
                      except:
                          print ("\nEinlesen nicht geklappt, versuche es erneut in 15 Sekunden")
                          go=False;
                  
                      if go:
                  
                       #Werte Ausgeben falls gewünscht
                          if werteausgeben:
                              print(strftime("\n%Y-%m-%d %H:%M:%S", gmtime()))
                              print ("Aktuelle Werte:")
                              #AdresseTxt = "Die Slave Adresse ist: %s" % Adresse
                              #print (AdresseTxt)
                              L1Spannungtxt = "L1Spannung ist: %f V" % L1Spannung
                              print (L1Spannungtxt)
                              L1Stromtxt = "L1Strom ist: %f A" % L1Strom
                              print (L1Stromtxt)
                              Frequencytxt = "Frequenz ist: %f hz" % Frequency
                              print (Frequencytxt)
                              L1Leistungtxt = "L1Leistung ist: %f KW/h" % L1Leistung
                              print (L1Leistungtxt)
                              L1PowerFactortxt = "L1Power Faktor ist: %f" % L1PowerFactor
                              print (L1PowerFactortxt)
                              Leistung_gesamttxt = "Leistung Gesamt ist: %f KW" % Leistung_gesamt
                              print (Leistung_gesamttxt)
                  
                       # Werte Senden
                          #client.publish("/Zaehler/Adresse",str(Adresse), qos=1)
                          client.publish("/Zaehler/L1/L1Spannung",str(L1Spannung), qos=0)
                          client.publish("/Zaehler/L2/L2Spannung",str(L2Spannung), qos=0)
                          client.publish("/Zaehler/L3/L3Spannung",str(L3Spannung), qos=0)
                          client.publish("/Zaehler/Gesamt/Frequency",str(Frequency), qos=0)
                          client.publish("/Zaehler/L1/L1Strom",str(L1Strom), qos=0)
                          client.publish("/Zaehler/L2/L2Strom",str(L2Strom), qos=0)
                          client.publish("/Zaehler/L3/L3Strom",str(L3Strom), qos=0)
                          client.publish("/Zaehler/Gesamt/Leistung_gesamt",str(Leistung_gesamt*1000), qos=0)
                          client.publish("/Zaehler/L1/L1Leistung",str(L1Leistung*1000), qos=0)
                          client.publish("/Zaehler/L2/L2Leistung",str(L2Leistung*1000), qos=0)
                          client.publish("/Zaehler/L3/L3Leistung",str(L3Leistung*1000), qos=0)
                          client.publish("/Zaehler/L1/L1PowerFactor",str(L1PowerFactor), qos=0)
                          client.publish("/Zaehler/L2/L2PowerFactor",str(L2PowerFactor), qos=0)
                          client.publish("/Zaehler/L3/L3PowerFactor",str(L3PowerFactor), qos=0)
                          client.publish("/Zaehler/Gesamt/Verbrauch_gesamt",str(Verbrauch_gesamt), qos=0)
                          client.publish("/Zaehler/Gesamt/Strom_gesamt",str(Strom_gesamt), qos=0)
                          #client.publish("/Zaehler/L1/L1Verbrauch",str(L1Verbrauch), qos=1)
                          #client.publish("/Zaehler/L2/L2Verbrauch",str(L2Verbrauch), qos=1)
                          #client.publish("/Zaehler/L3/L3Verbrauch",str(L3Verbrauch), qos=1)
                      time.sleep(15)
                  

                  Getestet werden kann das Script mit: python3 Scriptname.py
                  Zum dauerhaften ausführen habe ich eine Service eingerichtet, der beim Booten automatisch gestartet wird:

                  1. Service Datei erstellen: sudo nano /etc/systemd/system/smartmeter.service
                  2. Inhalt der Datei, Pfade oder Dateinamen sind anzupassen:
                  [Unit]
                  Description=smartmeter
                  After=network.target
                  
                  [Service]
                  ExecStart=/usr/bin/python3 -u smart.py
                  WorkingDirectory=/home/pi/smartmeter
                  StandardOutput=inherit
                  StandardError=inherit
                  Restart=always
                  User=root
                  
                  [Install]
                  WantedBy=multi-user.target
                  
                  1. Dienst Starten und Status ausgeben:
                    sudo systemctl start smartmeter
                    sudo systemctl status smartmeter.service
                    sudo systemctl stop smartmeter
                  2. Dienst anschalten um bei einem Boot automatisch gestartet zu werden:
                    sudo systemctl enable smartmeter.service

                  Die Daten sollten dann in IObroker regelmässig eintreffen:

                  test.png

                  H Offline
                  H Offline
                  herrniffler
                  schrieb am zuletzt editiert von
                  #8

                  @charakterkopf Hi, erstmal danke, dass du deine Arbeit mit uns teilst. Ich bin absoluter Neuling auf dem Gebiet und wollte dich daher fragen wie du den Zähler und den PI verbunden hast....beziehungsweise, ist der PI in deinem Zählerkasten eingebaut oder wohin geht das Kabel samt USB-Adapter?

                  C 1 Antwort Letzte Antwort
                  0
                  • H herrniffler

                    @charakterkopf Hi, erstmal danke, dass du deine Arbeit mit uns teilst. Ich bin absoluter Neuling auf dem Gebiet und wollte dich daher fragen wie du den Zähler und den PI verbunden hast....beziehungsweise, ist der PI in deinem Zählerkasten eingebaut oder wohin geht das Kabel samt USB-Adapter?

                    C Offline
                    C Offline
                    charakterkopf
                    schrieb am zuletzt editiert von
                    #9

                    @herrniffler Servus, ich habe das Kabel (Netzwerkleitung) durch den Hausflur bis zum Raspberry Pi verlegt ca. 5m.

                    Der Raspberry wird über die Fritzbox mit Strom versorgt und hat noch mehr Funktionen (Anwensenheit / LED Leiste) deswegen war eine Montage im Schrank nicht möglich.

                    Gruß Martin

                    1 Antwort Letzte Antwort
                    0
                    • C charakterkopf

                      Hallo IOBroker Forum,

                      hat zufällig jemand die oben genannten Zähler bereits per Modbus angeschlossen? Habe über die Suche nichts gefunden.

                      Mein Plan ist per Raspberry und mqtt die Daten an Iobroker zusenden. Gibt es hierfür bereits Erfahrungen bzw. fertige Python Scripts? Möchte vermeiden Stundenlang an der Modbus Abfrage zu Basteln. Die Herstellerdoku scheint auch Fehler zu behalten.

                      Das fertige Script für MQTT poste ich dann anschliessend hier.

                      Danke und Gruß
                      charakterkopf

                      TbsJahT Offline
                      TbsJahT Offline
                      TbsJah
                      schrieb am zuletzt editiert von
                      #10

                      @charakterkopf Ich habe einen Orno 516 und einen Orno 517 jeweils über die den RS485 S0 Anschluss direkt per USB mit dem Raspi verbunden
                      Zum Auslesen nutze ich den Modbus Adapter

                      ff34ca7a-4ffb-4ebe-9328-ad8cd8dfd374-image.png

                      a30f122a-e4f4-48e0-97fe-058b3f4ec209-image.png

                      deviceId	address	name	description	unit	type	len	factor	offset	role	room	poll	wp
                      1	40015		L1 Voltage	V	floatbe	2	1	0	value		true	false	
                      1	40017		L2 Voltage	V	floatbe	2	1	0	value		true	false	
                      1	40019		L3 Voltage	V	floatbe	2	1	0	value		true	false	
                      1	40021		Grid Frequency	Hz	floatbe	2	1	0	value		true	false	
                      1	40023		L1 Current	A	floatbe	2	1	0	value		true	false	
                      1	40025		L2 Current	A	floatbe	2	1	0	value		true	false	
                      1	40027		L3 Current	A	floatbe	2	1	0	value		true	false	
                      1	40029		Total Active Power	kWh	floatbe	2	1	0	value		true	false	
                      1	40031		L1 Active Power	kWh	floatbe	2	1	0	value		true	false	
                      1	40033		L2 Active Power	kWh	floatbe	2	1	0	value		true	false	
                      1	40035		L3 Active Power	kWh	floatbe	2	1	0	value		true	false	
                      1	40037		Total Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                      1	40039		L1 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                      1	40041		L2 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                      1	40043		L3 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                      1	40045		Total Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                      1	40047		L1 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                      1	40049		L2 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                      1	40051		L3 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                      1	40053		Total Power Factor	PF	floatbe	2	1	0	value		true	false	
                      1	40055		L1 Power Factor	PF	floatbe	2	1	0	value		true	false	
                      1	40057		L2 Power Factor	PF	floatbe	2	1	0	value		true	false	
                      1	40059		L3 Power Factor	PF	floatbe	2	1	0	value		true	false	
                      1	40067		Total Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40069		L1 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40071		L2 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40073		L3 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40075		Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40077		L1 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40079		L2 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      1	40081		L3 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                      
                      

                      Ergebnis

                      0cf4a82e-c7fb-46c0-a7b3-223306d3e994-image.png

                      D 1 Antwort Letzte Antwort
                      0
                      • TbsJahT TbsJah

                        @charakterkopf Ich habe einen Orno 516 und einen Orno 517 jeweils über die den RS485 S0 Anschluss direkt per USB mit dem Raspi verbunden
                        Zum Auslesen nutze ich den Modbus Adapter

                        ff34ca7a-4ffb-4ebe-9328-ad8cd8dfd374-image.png

                        a30f122a-e4f4-48e0-97fe-058b3f4ec209-image.png

                        deviceId	address	name	description	unit	type	len	factor	offset	role	room	poll	wp
                        1	40015		L1 Voltage	V	floatbe	2	1	0	value		true	false	
                        1	40017		L2 Voltage	V	floatbe	2	1	0	value		true	false	
                        1	40019		L3 Voltage	V	floatbe	2	1	0	value		true	false	
                        1	40021		Grid Frequency	Hz	floatbe	2	1	0	value		true	false	
                        1	40023		L1 Current	A	floatbe	2	1	0	value		true	false	
                        1	40025		L2 Current	A	floatbe	2	1	0	value		true	false	
                        1	40027		L3 Current	A	floatbe	2	1	0	value		true	false	
                        1	40029		Total Active Power	kWh	floatbe	2	1	0	value		true	false	
                        1	40031		L1 Active Power	kWh	floatbe	2	1	0	value		true	false	
                        1	40033		L2 Active Power	kWh	floatbe	2	1	0	value		true	false	
                        1	40035		L3 Active Power	kWh	floatbe	2	1	0	value		true	false	
                        1	40037		Total Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                        1	40039		L1 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                        1	40041		L2 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                        1	40043		L3 Reactive Power	kVAR	floatbe	2	1	0	value		true	false	
                        1	40045		Total Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                        1	40047		L1 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                        1	40049		L2 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                        1	40051		L3 Apparent Power	kVA	floatbe	2	1	0	value		true	false	
                        1	40053		Total Power Factor	PF	floatbe	2	1	0	value		true	false	
                        1	40055		L1 Power Factor	PF	floatbe	2	1	0	value		true	false	
                        1	40057		L2 Power Factor	PF	floatbe	2	1	0	value		true	false	
                        1	40059		L3 Power Factor	PF	floatbe	2	1	0	value		true	false	
                        1	40067		Total Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40069		L1 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40071		L2 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40073		L3 Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40075		Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40077		L1 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40079		L2 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        1	40081		L3 Forwarded Active Energy	kWh	floatbe	2	1	0	value		true	false	
                        
                        

                        Ergebnis

                        0cf4a82e-c7fb-46c0-a7b3-223306d3e994-image.png

                        D Offline
                        D Offline
                        derdominik
                        schrieb am zuletzt editiert von
                        #11

                        @tbsjah said in Abfrage ORNO OR-WE-516/ 517 Modbus, evtl. Script vorhanden?:

                        @charakterkopf Ich habe einen Orno 516 und einen Orno 517 jeweils über die den RS485 S0 Anschluss direkt per USB mit dem Raspi verbunden

                        Hallo, Danke für die Idee und das Script!

                        Noch eine Frage zu der Verbindung, da ich alles vorbereiten möchte, bevor der Fachmann kommt.

                        Die USB RS485 Konverter von ebay haben alle erstmal nur Schraubklemmen.

                        • Vom USB-Stick muss ich dann lediglich einen 2-adrigen Klingeldraht bis zum Zählerkasten bekommen, mehr nicht, richtig?
                        • Am ORNO selbst wird der Draht direkt angeklemmt, d.h. kein Stecker?
                        • Habt ihr die Schraubklemmen am UBS-Stick noch irgendwie geschützt oder ist diese offene Verschraubung unkritisch?

                        Grüße

                        TbsJahT E 2 Antworten Letzte Antwort
                        0
                        • D derdominik

                          @tbsjah said in Abfrage ORNO OR-WE-516/ 517 Modbus, evtl. Script vorhanden?:

                          @charakterkopf Ich habe einen Orno 516 und einen Orno 517 jeweils über die den RS485 S0 Anschluss direkt per USB mit dem Raspi verbunden

                          Hallo, Danke für die Idee und das Script!

                          Noch eine Frage zu der Verbindung, da ich alles vorbereiten möchte, bevor der Fachmann kommt.

                          Die USB RS485 Konverter von ebay haben alle erstmal nur Schraubklemmen.

                          • Vom USB-Stick muss ich dann lediglich einen 2-adrigen Klingeldraht bis zum Zählerkasten bekommen, mehr nicht, richtig?
                          • Am ORNO selbst wird der Draht direkt angeklemmt, d.h. kein Stecker?
                          • Habt ihr die Schraubklemmen am UBS-Stick noch irgendwie geschützt oder ist diese offene Verschraubung unkritisch?

                          Grüße

                          TbsJahT Offline
                          TbsJahT Offline
                          TbsJah
                          schrieb am zuletzt editiert von
                          #12

                          @derdominik

                          • richtig
                          • richtig
                          • Schrumpfschlauch
                          D 1 Antwort Letzte Antwort
                          0
                          • TbsJahT TbsJah

                            @derdominik

                            • richtig
                            • richtig
                            • Schrumpfschlauch
                            D Offline
                            D Offline
                            derdominik
                            schrieb am zuletzt editiert von
                            #13

                            @tbsjah Danke!

                            1 Antwort Letzte Antwort
                            0
                            • D derdominik

                              @tbsjah said in Abfrage ORNO OR-WE-516/ 517 Modbus, evtl. Script vorhanden?:

                              @charakterkopf Ich habe einen Orno 516 und einen Orno 517 jeweils über die den RS485 S0 Anschluss direkt per USB mit dem Raspi verbunden

                              Hallo, Danke für die Idee und das Script!

                              Noch eine Frage zu der Verbindung, da ich alles vorbereiten möchte, bevor der Fachmann kommt.

                              Die USB RS485 Konverter von ebay haben alle erstmal nur Schraubklemmen.

                              • Vom USB-Stick muss ich dann lediglich einen 2-adrigen Klingeldraht bis zum Zählerkasten bekommen, mehr nicht, richtig?
                              • Am ORNO selbst wird der Draht direkt angeklemmt, d.h. kein Stecker?
                              • Habt ihr die Schraubklemmen am UBS-Stick noch irgendwie geschützt oder ist diese offene Verschraubung unkritisch?

                              Grüße

                              E Offline
                              E Offline
                              easymeter
                              schrieb am zuletzt editiert von
                              #14

                              @derdominik Hallo zusammen, welchen Adapter habt Ihr verwendet um den Zähler an den USB des Raspi zu bringen?

                              TbsJahT 1 Antwort Letzte Antwort
                              0
                              • E easymeter

                                @derdominik Hallo zusammen, welchen Adapter habt Ihr verwendet um den Zähler an den USB des Raspi zu bringen?

                                TbsJahT Offline
                                TbsJahT Offline
                                TbsJah
                                schrieb am zuletzt editiert von
                                #15

                                @easymeter
                                WINGONEER CH340E USB zu TTL USB zu RS485 Konverter Adapter Windows 7/8 XP Linux Vista https://www.amazon.de/dp/B016IG6X7I/ref=cm_sw_r_apan_i_YGFPE5GW06WD0FXAQXHX

                                1 Antwort Letzte Antwort
                                0
                                • E Offline
                                  E Offline
                                  easymeter
                                  schrieb am zuletzt editiert von
                                  #16

                                  Danke für die Antwort. Nachdem ich mein System auf einen NUC umgezogen habe funktioniert das Auslesen mit dem Modbus Adapter mit den oben genannten Einstellungen fast auf Anhieb.
                                  Mit der schon installierten Modbus Instanz, die ich im Backup schon hatte, hatte ich aber noch Probleme. Damit wollte es nicht rennen.
                                  Nachdem ich die Instanz aber gelöscht und neu Installiert habe ging es wie gesagt auf Anhieb, wo auch immer das Problem lag. Die Versionen waren die gleichen....
                                  Jetzt kommt aber bei mir die nächste Ausbaustufe:
                                  Ich habe mehrere Zweige, die ich gerne erfassen möchte. Hat jemand schon mehrere Zähler an dem Modbus? Wie habt Ihr das dann gemacht? Wie kann die Modbus ID im Zähler angepasst werden?
                                  Würde mich freuen, wenn jemand seine Erfahrungen teilen könnte.

                                  TbsJahT 1 Antwort Letzte Antwort
                                  0
                                  • E easymeter

                                    Danke für die Antwort. Nachdem ich mein System auf einen NUC umgezogen habe funktioniert das Auslesen mit dem Modbus Adapter mit den oben genannten Einstellungen fast auf Anhieb.
                                    Mit der schon installierten Modbus Instanz, die ich im Backup schon hatte, hatte ich aber noch Probleme. Damit wollte es nicht rennen.
                                    Nachdem ich die Instanz aber gelöscht und neu Installiert habe ging es wie gesagt auf Anhieb, wo auch immer das Problem lag. Die Versionen waren die gleichen....
                                    Jetzt kommt aber bei mir die nächste Ausbaustufe:
                                    Ich habe mehrere Zweige, die ich gerne erfassen möchte. Hat jemand schon mehrere Zähler an dem Modbus? Wie habt Ihr das dann gemacht? Wie kann die Modbus ID im Zähler angepasst werden?
                                    Würde mich freuen, wenn jemand seine Erfahrungen teilen könnte.

                                    TbsJahT Offline
                                    TbsJahT Offline
                                    TbsJah
                                    schrieb am zuletzt editiert von
                                    #17

                                    @easymeter Verbaut habe ich einen Orno 516 und einen Orno 517
                                    Läuft über 2 separate Modbus Instanzen.

                                    Das wichtige ist dass du immer den richtigen USB Port ansprichst.
                                    Bei jedem Neustart des Raspberry erhältst du neue Zuordnungen.

                                    Ganz gut erklär hier link

                                    ec1133b3-1e35-4397-81de-f31f4691dc12-image.png

                                    E 1 Antwort Letzte Antwort
                                    0
                                    • TbsJahT TbsJah

                                      @easymeter Verbaut habe ich einen Orno 516 und einen Orno 517
                                      Läuft über 2 separate Modbus Instanzen.

                                      Das wichtige ist dass du immer den richtigen USB Port ansprichst.
                                      Bei jedem Neustart des Raspberry erhältst du neue Zuordnungen.

                                      Ganz gut erklär hier link

                                      ec1133b3-1e35-4397-81de-f31f4691dc12-image.png

                                      E Offline
                                      E Offline
                                      easymeter
                                      schrieb am zuletzt editiert von
                                      #18

                                      @tbsjah Danke für den Link. So ein ähnliches Vorgehen kenne ich. Mein Gedanke wäre es, da es ja ein "Bus" ist, die weiteren Zähler hintereinander am Modbus anzuschließen und mit deren ID dann auszulesen Auslieferungszustand ist bei mir "1" gewesen). Dazu muss man aber die Modbus ID anpassen, und da bin ich noch nicht weiter gekommen. Irgendwie muss man da dann ja schreibend an das Gerät, keine Ahnung, ob der Modbusadapter das bewerkstelligen kann.
                                      Naja, mit weiteren Adaptern an anderen USB Ports wäre vielleicht auch ein Ansatz, die Dinger kosten ja auch nicht die Welt.....da muss ich nur mal schauen, wie sich der NUC dann mit USB Hubs verhält, langsam gehen mir die Ports aus ,-)

                                      TbsJahT 1 Antwort Letzte Antwort
                                      0
                                      • E easymeter

                                        @tbsjah Danke für den Link. So ein ähnliches Vorgehen kenne ich. Mein Gedanke wäre es, da es ja ein "Bus" ist, die weiteren Zähler hintereinander am Modbus anzuschließen und mit deren ID dann auszulesen Auslieferungszustand ist bei mir "1" gewesen). Dazu muss man aber die Modbus ID anpassen, und da bin ich noch nicht weiter gekommen. Irgendwie muss man da dann ja schreibend an das Gerät, keine Ahnung, ob der Modbusadapter das bewerkstelligen kann.
                                        Naja, mit weiteren Adaptern an anderen USB Ports wäre vielleicht auch ein Ansatz, die Dinger kosten ja auch nicht die Welt.....da muss ich nur mal schauen, wie sich der NUC dann mit USB Hubs verhält, langsam gehen mir die Ports aus ,-)

                                        TbsJahT Offline
                                        TbsJahT Offline
                                        TbsJah
                                        schrieb am zuletzt editiert von
                                        #19

                                        @easymeter Ich haben einen simplen USB Verteiler angesteckt
                                        Wichtig ist dann halt das du immer den richtigen Port ansprichst nach einem Neustart

                                        1 Antwort Letzte Antwort
                                        0
                                        • E Offline
                                          E Offline
                                          easymeter
                                          schrieb am zuletzt editiert von
                                          #20

                                          @tbsjah Bin heute auch etwas weiter gekommen.
                                          Ich habe einen weiteren Zähler mit einem USB Adapter direkt am PC angeschlossen und dort mit der Software von ORNO (Gibts auf der HP von ORNO beim Zähler WE517 zum Download) die Zähler ID verändert.
                                          Danach habe ich den Zähler hinter meinen bestehenden Zähler gehangen.
                                          Im Modbus Adapter dann in den "Allgemeinen" Einstellungen den Haken bei "mehrere Geräte IDs" gesetzt und in den Holdingregister die weiteren Messpunkte angelegt. Dort knn in der zweiten Spalte "Slave-ID" die ID des Zählers eingetragen werden.
                                          Damit klappt es auch mit min. zwei Zählern bei mir ohne weitere Probleme, die gewünschten Werte trudeln zuverlässig ein.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          431

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe