Ankündigung

Einklappen
Keine Ankündigung bisher.

Anbindung Modbus / Nibe

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

    #91
    Geht das auch mit der neueren 1155/1255?.. Hast du vl einen Schaltplan wie ich alles zusammenschalte und eine Stückliste?... also alle Register gehen nicht?
    Gibts die Lösung nur für Openhab und ich muss das dann für Edomi umsetzen oder anders auch?

    Kommentar


      #92
      Ja, das geht auch mit einer F1155/1255. Ich selbst habe eine F1255-6 erfolgreich angebunden.
      Zunächst mal brauchst Du etwas das die Register von der WP empfängt und per UDP an eine beliebige IP-Adresse schickt. Dazu habe ich einen Arduino Uno, ein Ethernet Shield und ein RS485 Shield gekauft. Pinbelegung kontrollieren, aufeinander stecken und über die Arduino Suite programmieren. Im Falle der F1255/1155 an die Klemmen 10+11 des Blocks AA3-X4 A+B des RS485 shields anklemmen. Jetzt mit dem Nibe Modbus Manager die gewünschten Register auswählen auf nen FAT32 formatierten USB Stick schreiben und in die WP stecken. Arduino mit Strom versorgen (USB-Port an der WP reicht nicht!!) und in der WP im Servicemenü das Modbus Accessory aktivieren. Im USB-Menü das Logging aktivieren und Stick nach 15 sec wieder abziehen. Jetzt weiß die WP was sie per Modbus senden soll und tut es dann auch. Wenn die Statuslampe grün bleibt, dann hast Du erstmal alles richtig gemacht ;-) Der Arduino muss nämlich jedes RS485 Paket bestätigen, sonst geht die WP in Störung.
      Jetzt brauchst Du noch was zum empfangen. Der HS kann zwar UDP-Pakete empfangen, das Problem wird allerdings sein diese sauber zu decodieren. Echte Programmierung ist da ja etwas herausfordernd ;-) Für openHab gibt es ein fertiges Binding mit dem man sich das sparen kann. Dazu noch Grafana für die Visualisierung und Du brauchst kein Nibe Uplink mehr :-)

      VG,
      Klayman

      Kommentar


        #93
        klayman
        Welches Github-Projekt verwendest du?

        Kommentar


          #94
          klayman Weißt du ob die F1255-6 auch mit dem aktuellen Openhab Binding funktioniert?

          Kommentar


            #95
            Jein - das Binding kann nur bestimmte Nibe WPs (das ist zumindest mein Stand von März oder so). Die Register und zugehörigen Datentypen sind im Code des Bindings hinterlegt, was dazu führt, dass neue Register nicht einfach per Nummer angegeben werden können. Außerdem hat sich bei dem einen oder anderen auch der Datentyp geändert. Ich hatte das mal umgeschrieben und neu compiliert, kann mich aber nicht mehr genau erinnern wie ich das gemacht habe. Dummerweise hab ich im Zuge des neuen KNX Binding mein openHab frisch aufgesetzt und das angepasste Nibe Binding verloren ;-) Aber ich werde mich in den nächsten Wochen nochmal dran machen, will im Winter ja die Heizung überwachen. Zusammen mit Grafana lassen sich da übrigens sehr schicke Auswertungen fahren...

            Edit: Ich seh grad, auf der vorherigen Seite hab ich es ja beschrieben. Damit wird es also gehen. Wenn das neue(?) Binding die F1255-6 bereits unterstützt, solltest Du die fehlenden Register schon im Code finden. Vorschlag: Bastel Dir erstmal den Arduino zusammen und lies BT1_OutdoorTemp und BT2_SupplyTemp aus. Das funktioniert sicher auch ohne Codeanpassungen. Wenn Du das in openHAB rein bekommen hast, dann machen wir uns an die restlichen Register.

            VG,
            Klayman
            Zuletzt geändert von klayman; 12.10.2018, 10:10.

            Kommentar


              #96
              Das klingt gut. Wir haben die Pumpe noch nicht da stehen, werden sie aber spätestens im Winter auch haben. Ich hab zwar kein Problem mit NibeUplink aber eine native Lösung direkt im Haus wäre auch nicht zu verachten. Vielleicht kann man ja das Binding sauber um die 1255-6 erweitern und hat dann auch für die anderen in der Community was getan. Ich schaue mir dass im Winter auch mal an.

              Ach ich sehe gerade für NibeUplink gibt es ja auch ein Openhab Addon. Hast du hiermit schon Erfahrung gesammelt?
              Zuletzt geändert von droid; 12.10.2018, 10:12.

              Kommentar


                #97
                Nee. Ich wollte auch weg von Uplink und was rein lokales haben. Uplink ist gut, keine Frage. Aber es kostet und es ist schwer in eigene Visualisierungen einzubauen. Außerdem gibt es in Uplink nicht alle Register die die WP anbietet. Aber: Der Zugriff ist nur lesend.

                Kommentar


                  #98
                  Ja uplink ist mir auf dauer auch zu teuer, zu blöd und kann zu wenig..

                  Kommentar


                    #99
                    I hope I can get an answer here in english, google translate is not optimal to use
                    I have a Nibe F1255-16 and is wondering if this will work with my pump ?

                    Thanks.

                    Kommentar


                      It will not work out of the box as the binding does not support the F1255. You can make it work by adding the required registers and data types to the java source code and compile it yourself. I've done it quite a while ago, but cannot remember how
                      And you still need to put together an Arduino with a RS485 shield and appropriate software to read out the values from the heat pump and transmit them via TCP/IP.

                      Best,
                      Klayman

                      Kommentar


                        Ich habe auch eine Nibe F1155 im Keller stehen.
                        An dieser hängt das openhab NibeGW.
                        Besteht bei mir aus einem Arduino uno mit passendem EtherShield. Dazu ein Rs 485 Konvertermodul und ein Step-Down Regler.
                        Damit wird der Arduino direkt aus der WP mit Strom versorgt. Bild kann ich bei Bedarf nachreichen.
                        Ich habe dann auch mit openhab2 angefangen, werde damit aber nicht wirklich warm :-(
                        Also habe ich angefangen, mir selber was zusammen zu kopieren. (werkeine Ahnung von Programierung hat, muss zusammenstoppeln.

                        Ich habe jetzt ein Shell-Script, das den UDP-Stream empfängt und zerlegt.
                        Es werden Dateien mit dem Namen der Datenpunkte entsprechend dem Nibe Modbus erzeugt (zb 40004 für die Aussentemp.)
                        In der Datei steht dann der Wert. Der Wert ist entsprechend dem Modbusmanager dargestellt. Also in der Datei 40004 steht jetzt 80 für 8,0Grad drin.
                        Da ich noch keine Negativen Daten habe, weiss ich noch nicht, wie diese dargestellt werden.
                        Auch die Behandling von 8 oder 32bit Werten habe ich noch nicht richtig gedeutet.
                        Also nur ein 1. massiv unfertiger Versuch.
                        Trotzdem möchte ich es hier mal zeigen und zum Weiterentwickeln einladen.

                        Code:
                        #/!bin/bash
                        
                        tcpdump -i enp8s0 udp port 9999 and greater 80 -c 1 -w hexroh.txt  #Datenstrom aus UDP 9999auslesen
                        dathex=$(xxd -plain -cols 9999 -u hexroh.txt)
                        rm hexroh.txt
                        POS=174
                        LEN=160
                        daten=${dathex:$POS:$LEN}
                        
                        LEN=2
                        
                        #Wert 1
                        POS=0
                        bez011=${daten:$POS:$LEN}
                        POS=2
                        bez012=${daten:$POS:$LEN}
                        bez01k=$bez012$bez011
                        bez01=$(echo "obase=10; ibase=16; $bez01k" | bc)
                        POS=4
                        wer011=${daten:$POS:$LEN}
                        POS=6
                        wer012=${daten:$POS:$LEN}
                        wer01k=$wer012$wer011
                        wer01=$(echo "obase=10; ibase=16; $wer01k" | bc)
                        
                        #Wert 2
                        POS=8
                        bez021=${daten:$POS:$LEN}
                        POS=10
                        bez022=${daten:$POS:$LEN}
                        bez02k=$bez022$bez021
                        bez02=$(echo "obase=10; ibase=16; $bez02k" | bc)
                        POS=12
                        wer021=${daten:$POS:$LEN}
                        POS=14
                        wer022=${daten:$POS:$LEN}
                        wer02k=$wer022$wer021
                        wer02=$(echo "obase=10; ibase=16; $wer02k" | bc)
                        
                        #Wert 3
                        POS=16
                        bez031=${daten:$POS:$LEN}
                        POS=18
                        bez032=${daten:$POS:$LEN}
                        bez03k=$bez032$bez031
                        bez03=$(echo "obase=10; ibase=16; $bez03k" | bc)
                        POS=20
                        wer031=${daten:$POS:$LEN}
                        POS=22
                        wer032=${daten:$POS:$LEN}
                        wer03k=$wer032$wer031
                        wer03=$(echo "obase=10; ibase=16; $wer03k" | bc)
                        
                        #Wert 4
                        POS=24
                        bez041=${daten:$POS:$LEN}
                        POS=26
                        bez042=${daten:$POS:$LEN}
                        bez04k=$bez042$bez041
                        bez04=$(echo "obase=10; ibase=16; $bez04k" | bc)
                        POS=28
                        wer041=${daten:$POS:$LEN}
                        POS=30
                        wer042=${daten:$POS:$LEN}
                        wer04k=$wer042$wer041
                        wer04=$(echo "obase=10; ibase=16; $wer04k" | bc)
                        
                        #Wert 5
                        POS=32
                        bez051=${daten:$POS:$LEN}
                        POS=34
                        bez052=${daten:$POS:$LEN}
                        bez05k=$bez052$bez051
                        bez05=$(echo "obase=10; ibase=16; $bez05k" | bc)
                        POS=36
                        wer051=${daten:$POS:$LEN}
                        POS=38
                        wer052=${daten:$POS:$LEN}
                        wer05k=$wer052$wer051
                        wer05=$(echo "obase=10; ibase=16; $wer05k" | bc)
                        
                        #Wert 6
                        POS=40
                        bez061=${daten:$POS:$LEN}
                        POS=42
                        bez062=${daten:$POS:$LEN}
                        bez06k=$bez062$bez061
                        bez06=$(echo "obase=10; ibase=16; $bez06k" | bc)
                        POS=44
                        wer061=${daten:$POS:$LEN}
                        POS=46
                        wer062=${daten:$POS:$LEN}
                        wer06k=$wer062$wer061
                        wer06=$(echo "obase=10; ibase=16; $wer06k" | bc)
                        
                        #Wert 7
                        POS=48
                        bez071=${daten:$POS:$LEN}
                        POS=50
                        bez072=${daten:$POS:$LEN}
                        bez07k=$bez072$bez071
                        bez07=$(echo "obase=10; ibase=16; $bez07k" | bc)
                        POS=52
                        wer071=${daten:$POS:$LEN}
                        POS=54
                        wer072=${daten:$POS:$LEN}
                        wer07k=$wer072$wer071
                        wer07=$(echo "obase=10; ibase=16; $wer07k" | bc)
                        
                        #Wert 8
                        POS=56
                        bez081=${daten:$POS:$LEN}
                        POS=58
                        bez082=${daten:$POS:$LEN}
                        bez08k=$bez082$bez081
                        bez08=$(echo "obase=10; ibase=16; $bez08k" | bc)
                        POS=60
                        wer081=${daten:$POS:$LEN}
                        POS=62
                        wer082=${daten:$POS:$LEN}
                        wer08k=$wer082$wer081
                        wer08=$(echo "obase=10; ibase=16; $wer08k" | bc)
                        
                        #Wert 9
                        POS=64
                        bez091=${daten:$POS:$LEN}
                        POS=66
                        bez092=${daten:$POS:$LEN}
                        bez09k=$bez092$bez091
                        bez09=$(echo "obase=10; ibase=16; $bez09k" | bc)
                        POS=68
                        wer091=${daten:$POS:$LEN}
                        POS=70
                        wer092=${daten:$POS:$LEN}
                        wer09k=$wer092$wer091
                        wer09=$(echo "obase=10; ibase=16; $wer09k" | bc)
                        
                        #Wert 10
                        POS=72
                        bez101=${daten:$POS:$LEN}
                        POS=74
                        bez102=${daten:$POS:$LEN}
                        bez10k=$bez102$bez101
                        bez10=$(echo "obase=10; ibase=16; $bez10k" | bc)
                        POS=76
                        wer101=${daten:$POS:$LEN}
                        POS=78
                        wer102=${daten:$POS:$LEN}
                        wer10k=$wer102$wer101
                        wer10=$(echo "obase=10; ibase=16; $wer10k" | bc)
                        
                        #Wert 11
                        POS=80
                        bez111=${daten:$POS:$LEN}
                        POS=82
                        bez112=${daten:$POS:$LEN}
                        bez11k=$bez112$bez111
                        bez11=$(echo "obase=10; ibase=16; $bez11k" | bc)
                        POS=84
                        wer111=${daten:$POS:$LEN}
                        POS=86
                        wer112=${daten:$POS:$LEN}
                        wer11k=$wer112$wer111
                        wer11=$(echo "obase=10; ibase=16; $wer11k" | bc)
                        
                        #Wert 12
                        POS=88
                        bez121=${daten:$POS:$LEN}
                        POS=90
                        bez122=${daten:$POS:$LEN}
                        bez12k=$bez122$bez121
                        bez12=$(echo "obase=10; ibase=16; $bez12k" | bc)
                        POS=92
                        wer121=${daten:$POS:$LEN}
                        POS=94
                        wer122=${daten:$POS:$LEN}
                        wer12k=$wer122$wer121
                        wer12=$(echo "obase=10; ibase=16; $wer12k" | bc)
                        
                        #Wert 13
                        POS=96
                        bez131=${daten:$POS:$LEN}
                        POS=98
                        bez132=${daten:$POS:$LEN}
                        bez13k=$bez132$bez131
                        bez13=$(echo "obase=10; ibase=16; $bez13k" | bc)
                        POS=100
                        wer131=${daten:$POS:$LEN}
                        POS=102
                        wer132=${daten:$POS:$LEN}
                        wer13k=$wer132$wer131
                        wer13=$(echo "obase=10; ibase=16; $wer13k" | bc)
                        
                        #Wert 14
                        POS=104
                        bez141=${daten:$POS:$LEN}
                        POS=106
                        bez142=${daten:$POS:$LEN}
                        bez14k=$bez142$bez141
                        bez14=$(echo "obase=10; ibase=16; $bez14k" | bc)
                        POS=108
                        wer141=${daten:$POS:$LEN}
                        POS=110
                        wer142=${daten:$POS:$LEN}
                        wer14k=$wer142$wer141
                        wer14=$(echo "obase=10; ibase=16; $wer14k" | bc)
                        
                        #Wert 15
                        POS=112
                        bez151=${daten:$POS:$LEN}
                        POS=114
                        bez152=${daten:$POS:$LEN}
                        bez15k=$bez152$bez151
                        bez15=$(echo "obase=10; ibase=16; $bez15k" | bc)
                        POS=116
                        wer151=${daten:$POS:$LEN}
                        POS=118
                        wer152=${daten:$POS:$LEN}
                        wer15k=$wer152$wer151
                        wer15=$(echo "obase=10; ibase=16; $wer15k" | bc)
                        
                        #Wert 16
                        POS=120
                        bez161=${daten:$POS:$LEN}
                        POS=122
                        bez162=${daten:$POS:$LEN}
                        bez16k=$bez162$bez161
                        bez16=$(echo "obase=10; ibase=16; $bez16k" | bc)
                        POS=124
                        wer161=${daten:$POS:$LEN}
                        POS=126
                        wer162=${daten:$POS:$LEN}
                        wer16k=$wer162$wer161
                        wer16=$(echo "obase=10; ibase=16; $wer16k" | bc)
                        
                        #Wert 17
                        POS=128
                        bez171=${daten:$POS:$LEN}
                        POS=130
                        bez172=${daten:$POS:$LEN}
                        bez17k=$bez172$bez171
                        bez17=$(echo "obase=10; ibase=16; $bez17k" | bc)
                        POS=132
                        wer171=${daten:$POS:$LEN}
                        POS=134
                        wer172=${daten:$POS:$LEN}
                        wer17k=$wer172$wer171
                        wer17=$(echo "obase=10; ibase=16; $wer17k" | bc)
                        
                        #Wert 18
                        POS=136
                        bez181=${daten:$POS:$LEN}
                        POS=138
                        bez182=${daten:$POS:$LEN}
                        bez18k=$bez182$bez181
                        bez18=$(echo "obase=10; ibase=16; $bez18k" | bc)
                        POS=140
                        wer181=${daten:$POS:$LEN}
                        POS=142
                        wer182=${daten:$POS:$LEN}
                        wer18k=$wer182$wer181
                        wer18=$(echo "obase=10; ibase=16; $wer18k" | bc)
                        
                        #Wert 19
                        POS=144
                        bez191=${daten:$POS:$LEN}
                        POS=146
                        bez192=${daten:$POS:$LEN}
                        bez19k=$bez192$bez191
                        bez19=$(echo "obase=10; ibase=16; $bez19k" | bc)
                        POS=148
                        wer191=${daten:$POS:$LEN}
                        POS=150
                        wer192=${daten:$POS:$LEN}
                        wer19k=$wer192$wer191
                        wer19=$(echo "obase=10; ibase=16; $wer19k" | bc)
                        
                        #Wert 20
                        POS=152
                        bez201=${daten:$POS:$LEN}
                        POS=154
                        bez202=${daten:$POS:$LEN}
                        bez20k=$bez202$bez201
                        bez20=$(echo "obase=10; ibase=16; $bez20k" | bc)
                        POS=156
                        wer201=${daten:$POS:$LEN}
                        POS=158
                        wer202=${daten:$POS:$LEN}
                        wer20k=$wer202$wer201
                        wer20=$(echo "obase=10; ibase=16; $wer20k" | bc)
                        
                        
                        echo -n $wer01 > $bez01
                        echo -n $wer02 > $bez02
                        echo -n $wer03 > $bez03
                        echo -n $wer04 > $bez04
                        echo -n $wer05 > $bez05
                        echo -n $wer06 > $bez06
                        echo -n $wer07 > $bez07
                        echo -n $wer08 > $bez08
                        echo -n $wer09 > $bez09
                        echo -n $wer10 > $bez10
                        echo -n $wer11 > $bez11
                        echo -n $wer12 > $bez12
                        echo -n $wer13 > $bez13
                        echo -n $wer14 > $bez14
                        echo -n $wer15 > $bez15
                        echo -n $wer16 > $bez16
                        echo -n $wer17 > $bez17
                        echo -n $wer18 > $bez18
                        echo -n $wer19 > $bez19
                        echo -n $wer20 > $bez20

                        Kommentar


                          Es gehört wohl mehr hier hin:
                          https://knx-user-forum.de/forum/%C3%...w-ohne-openhab
                          Zuletzt geändert von elelom; 06.01.2019, 11:09.

                          Kommentar


                            Zitat von elelom Beitrag anzeigen
                            Ich habe auch eine Nibe F1155 im Keller stehen.
                            Dazu ein Rs 485 Konvertermodul und ein Step-Down Regler.
                            [...]
                            Bild kann ich bei Bedarf nachreichen.
                            Bilder wären nett. Wo greifst du die Versorgung an der WP ab?

                            Kommentar


                              Zitat von DerSeppel Beitrag anzeigen

                              Bilder wären nett. Wo greifst du die Versorgung an der WP ab?
                              naja er wird wie das original Modul am Ausgang für das externe Bedienteil abgreifen oder?

                              Kommentar


                                Ja, ich greife die 12V an der Nibe ab, wo auch das Modbus40-Modul seine Stromversorgung herbekommt.
                                Ansonsten möchte ich aber im DIY-Bereich weiter machen, da Meine versuche dort besser aufgehoben sind.

                                MfG
                                Jens

                                Kommentar

                                Lädt...
                                X