Ankündigung

Einklappen
Keine Ankündigung bisher.

Nibe GW ohne openhab

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

    Nibe GW ohne openhab

    Da es wohl mehr hier hin gehört, mache ich hier weiter.

    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.
    Ich habe dann auch mit openhab2 angefangen, werde damit aber nicht wirklich warm :-(
    Also habe ich angefangen, mir selber was zusammen zu kopieren. (wer keine 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.
    Das ist der 2. Versuch, die erste Version funktionierte zwar als Script, hat jedoch als cronjob Fehler erzeugt.
    Dieser Code läuft (zumindest bei mir) auf einem Debian 9 als cronjob bisher ohne Probleme.
    Trotzdem möchte ich es hier mal zeigen und zum Weiterentwickeln einladen.
    Code:
    Entfernt, da Fehlerhaft
    20190105_181703aa.jpg
    Angehängte Dateien
    Zuletzt geändert von elelom; 12.01.2019, 11:45.

    #2
    Welche software hast du auf den arduino laufn? Emuliert diesen nibe-modbus und setzt den auf modbus um? Hast du auch einen bauplan oder.bauliste?

    Kommentar


      #3
      Heute nur noch kurz: Hard/Software findest du wenn du nach nibegw openhab suchst. Genaue Beschreibung folgt.
      Die Umsetzung der Daten stimmt momentan scheinbar nur bei s16 Typen (zB alle Tempwerte)
      Die anderen Datentypen muss ich mir die Tage nochmals genauer anschauen.
      Wie gesagt, ist ein erster sehr unfertiger Stand.

      Jens

      Kommentar


        #4
        Also:
        20190105_181703aa.jpg
        So sieht mein Modul aus.
        Besteht aus einem Arduino Uno, passendem Ethernetshield, einem Arduino RS 485 Wandler und einem Step-Down-Regler. Alles zusammen bei Ebay unter 20€.
        Als Software läuft die openhab2-Software: https://github.com/openhab/openhab2-...eatpump/NibeGW

        Das Modul emuliert gegenüber der Nibe ein Modbus-Modul inkl. der nötigen ACK, das die Nibe nicht in Fehler läuft.
        Die Daten werden als UDP-Paket an eine festgelegte IP-Adresse gesendet.
        Ich möchte jetzt diese Daten mitloggen, ohne dazu openhab2 nutzen zu müssen. Ich mag es einfach nicht.

        Das Datenpaket lesen scheint erstmal soweit richtig zu sein.

        Die Datenpakete enthalten nach dem Header 20 Datenblöcke. Jeweils 4 Byte als Datenpunkt-Nr und danach 4 Byte als Wert. Den Datenpunkt-Typ findet man im Modbus-Manager.
        Allerdings sind die 4 Bytes immer in 2er Gruppen vertauscht.
        Also kommt zB für die Aussentemperatur der Datenpunkt "509C". AB mit CD vertauscht ergibt es "9C50" das umgerechnet ergibt 40016 als Datenpunkt-Nummer.

        Die folgenden 4 Bytes sind der dazugehörige Wert. Auch diese sind wieder im Format "CDAB" vertauscht.
        Danach muss das Ergebnis noch entsprechend dem Datenformat umgerechnet werden.
        Es gibt 8, 16 und 32 Bit Formate. Dazu gibt es noch signed und unsigned Werte. Welcher Datenpunkt wie berechnet wird, ist auch im Modbusmanager zu finden.

        Ich versuche grade, die Umrechnung als Funktionen zu gestalten.
        Momentaner Stand für 5 Werte:


        Code:
        Entfernt, da Fehlerhaft
        Ich übe weiter.
        Angehängte Dateien
        Zuletzt geändert von elelom; 12.01.2019, 11:46.

        Kommentar


          #5
          Problem: das Script läuft problemlos auf der CLI, wenn ich es als cronjob hinzufüge, kommt eine Fehlermeldung:
          /var/udpempf/nibe.sh: 9: /var/udpempf/nibe.sh: Syntax error: "(" unexpected (expecting "fi").
          Warum??

          Kommentar


            #6
            Eventuell das Semikolon? Das gehört da nicht hin.
            Außerdem sieht ein if in Bash-Notation doch eher so aus:

            Code:
            #!/bin/bash
            function s16() {
              ein="$1" 
              ein=$(echo 'obase=10;ibase=16;'$ein | bc)
            
              if [ $ein > 32767 ]
              then
                kon=(-65536) 
                ein=$(echo "$kon+$ein" | bc -l)
              fi
            
              echo $ein
            }

            Kommentar


              #7
              Für so ein Modul mit Modbus TCP oder KNX Anbindung würd i sogar was zahlen ))

              Kommentar


                #8
                Zitat von DerSeppel Beitrag anzeigen
                Eventuell das Semikolon? Das gehört da nicht hin.
                Auch mit der geänderten Syntax keine Besserung.
                Aber die Lösung?

                In meinem Debian ist die Standart sh scheinbar nicht bash sondern dash.
                ich habe jetzt mal die crontab Zeile geändert auf "* * * * * bash /var/udpempf.nibe.sh" und scheinbar läuft es jetzt.

                @uzi10: selber bauen keine Option? Ist wirklich kein Hexenwerk.

                Jens

                Kommentar


                  #9
                  Wenn man die Firmware hat ist es doch wirklich nicht so schwer.
                  Im Prinzip nur die Teile bestellen und aufeinander stecken.

                  Arduino-mässig habe ich aktuell nichts rumliegen.
                  Habe an den Arduino MKR gedacht, mit ETH shield und RS485 shield. Dann noch ein Protyping shield auf dem man nen LDO unterbringt.
                  Dann hat man nen schön schmalen Stapel.

                  Kommentar


                    #10
                    Klar. Wenn ihr die Firmware bereitstellt, dann wär das toll.. statt den openhab könnte man diesen dann edomi auch auslesen...
                    für was eig den step down regler?

                    Kommentar


                      #11
                      Zitat von DerSeppel Beitrag anzeigen
                      Wenn man die Firmware hat ist es doch wirklich nicht so schwer.
                      Im Prinzip nur die Teile bestellen und aufeinander stecken.

                      Arduino-mässig habe ich aktuell nichts rumliegen.
                      Habe an den Arduino MKR gedacht, mit ETH shield und RS485 shield. Dann noch ein Protyping shield auf dem man nen LDO unterbringt.
                      Dann hat man nen schön schmalen Stapel.
                      Das mit den MKR hab ich mir gerade angeschaut! sieht gut aus und super klein Stapelbar!
                      Wenn du das mal gebaut und einprogrammiert hast, meld dich bitte! Wäre daran auch interessiert!
                      Sind trotz dieser Lösung eig auch nur 20 Werte zum Auslesen oder Steuern möglich?

                      Wie wärs mit den Prodino? Wäre auch unterstützt und sieht professionell aus?

                      https://kmpelectronics.eu/shop/prodi...zero-ethernet/

                      Kommt vom Preis her bald aufs selbe wie die MKR Komponenten
                      Zuletzt geändert von uzi10; 10.01.2019, 12:16.

                      Kommentar


                        #12
                        Zitat von uzi10 Beitrag anzeigen
                        Klar. Wenn ihr die Firmware bereitstellt, dann wär das toll.. statt den openhab könnte man diesen dann edomi auch auslesen...
                        für was eig den step down regler?
                        Die Firmware kommt nicht von mir sondern ist die Orginal-Firmware aus dem openhab-NibeGateway und im Git-Hub Projekt im oben genannten Link enthalten.

                        Sind trotz dieser Lösung eig auch nur 20 Werte zum Auslesen oder Steuern möglich?
                        Die 20 Werte sind eine Begrenzung von Nibe, da Nibe nur 20 Werte an das Modbus-Modul schickt.
                        Obwohl 20 ist ja auch nur die halbe Wahrheit. Einige Werte sind als 32bit Wert definiert und ein 32bit Wert nutzt 2 der 20 Übertragungsplätze im Protokoll.

                        Theoretisch ist aber die Abfrage von weiteren Daten manuell über das Modbus möglich. Aber das lass ich erstmal aussen vor.
                        Ich konzentriere mich vorerst auf das auslesen und loggen der relevanten Betriebsdaten.

                        Ich muss jetzt erstmal ein 2. Modul bauen. Momentan kommt bei mir in bestimmten Situationen ein Datenbit falsch.
                        Ich will jetzt erstmal ausschliessen, ob es nicht ein Hardwarefehler bei mir ist.

                        Kommentar


                          #13
                          Zitat von uzi10 Beitrag anzeigen
                          Wie wärs mit den Prodino? Wäre auch unterstützt und sieht professionell aus?
                          Der wäre auf den ersten Blick eine echte Alternative:
                          - Ethernet an Board
                          - RS485
                          - könnte direkt an der Spannungsversorgung aus der Nibe betrieben werden.

                          Außerdem noch diverse Relais die man direkt an die SmartGrid-Ready anschlüsse hängen könnte.

                          Edit: Der ProDino Ethernet V2.1 sieht auch gut aus. Der hat noch 1-Wire mit dabei. Da könnte man dann noch ein paar günstige Temperatursensoren an strategischen Punkten der Heizungsanlage anbringen. (mache ich momentan über einen Raspi).
                          Einzig das Gehäuse fehlt bei dem.
                          Zuletzt geändert von DerSeppel; 11.01.2019, 07:55.

                          Kommentar


                            #14
                            Zitat von DerSeppel Beitrag anzeigen
                            Der wäre auf den ersten Blick eine echte Alternative:
                            - Ethernet an Board
                            - RS485
                            - könnte direkt an der Spannungsversorgung aus der Nibe betrieben werden.

                            Außerdem noch diverse Relais die man direkt an die SmartGrid-Ready anschlüsse hängen könnte.

                            Edit: Der ProDino Ethernet V2.1 sieht auch gut aus. Der hat noch 1-Wire mit dabei. Da könnte man dann noch ein paar günstige Temperatursensoren an strategischen Punkten der Heizungsanlage anbringen. (mache ich momentan über einen Raspi).
                            Einzig das Gehäuse fehlt bei dem.

                            Das Board wäre der Überhammer! Kommt einfach in eine grosse Dose hinter der Anlage an die Wand! Weil ich komm eh vom Kollektor mit einer 1-Wire Messlinie(habe 10 Temperatursensoren am RGK montiert und miteingegraben! Die Frage ist halt ob das ein Leistungsstarker 1-Wire Treiber ist, wie der blaue Stick! Für 100m würd ich auch den parasitären Betrieb benötigen! Wenn das alles läuft, dann wär das Ding echt der Hammer,weil es alles integriert hat!

                            Kommentar


                              #15
                              Beim 1-Wire müsstest du dir aber noch ein Stück Software schreiben, das die Sensoren abfragt und die Daten dann wieder irgendwie zur Verfügung stellt.
                              Da meiste sollte es aber schon irgendwo zum zusammenkopieren geben.

                              Es gibt auch schon einen KNX-IP Stack hier im Forum. Wenn man zeit hätte () könnte man das mal verheiraten und die Daten direkt auf KNX bringen.

                              Kommentar

                              Lädt...
                              X