Ankündigung

Einklappen
Keine Ankündigung bisher.

Nibe S1255 per myuplink oder Modbus auslesen

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

    Nibe S1255 per myuplink oder Modbus auslesen

    Hi,

    hat schon wer eine Nibe S1255 mit myuplink und z.B. dem LBS 19000721​ oder 19000210​ auslesen können?
    Alternativ über Modbus und einer der LBS 19001586​ bzw 19001030

    Bei beiden Kommunikationsarten scheitere ich kläglich.

    Die LBS für Uplink scheinen auf die "alte" Seite zu gehen NibeUplink. Dort konnte ich meine Heizung jedoch nicht anmelden sondern nur im neuen Portal "myuplink"
    Und bei den Modbus Varianten stehe ich ziemlich auf dem Schlauch.
    Gruß David

    #2
    Hi,
    ich habe meine S1255 mittels Node-Red und Modbus TCP ausgelesen. Am besten klappt das mit einem OPC Router, beispielsweise mit Kepware. https://www.kepware-opcserver.de/

    Solange lesen als auch schreiben funktioniert. Ich zieh mir die Daten in eine SQL DB.

    Kommentar


      #3
      Muss ja ganz normal über modbus tcp auslesbar sein oder

      Kommentar


        #4
        uzi10 das habe ich gehofft aber Modbus ist für mich ein Buch mit 7 Siegeln.
        Die Register findet man im Internet bzw kann man sich per USB von der Heizung auf einen Stick schreiben lassen.

        Dann hört es mit meinem "knowhow" aber auch schon völlig auf.
        Gruß David

        Kommentar


          #5
          Hast die adressen um 1 versetzt. Modbus ist oft mit offset von 1 adresse versetzt.
          modbus ist ne schwere Kost. Da ist nix genormt. Wobei tcp leichter ist als rtu.
          kann auch noch verdreht sein mit lsb und msb

          Kommentar


            #6
            Also habe es jetzt mal mit den beiden Modbus LBS probiert, aber leider ohne Erfolg.

            Die Heizung lässt sich vom Edomiserver aus anpingen

            LBS...1586 gibt im Log nur folgendes aus
            Zeitstempel / ms / PID / LogLevel / Meldung
            2023-12-04 12:30:44 / 398948 / 2314076 / debug / LBS19001586 [v0.6]: Modus Read GENERIC EXEC Daemon start initiated (2180)
            2023-12-04 12:30:44 / 399686 / 2314076 / debug / LBS19001586 [v0.6]: Modus Read GENERIC LBS ended (2180)

            Die Configuration sieht wie folgt aus
            Bildschirmfoto 2023-12-04 um 12.37.54.png

            An E8 hab ich "30001;"Außentemperatur";int16;30037,"Mittlere Außentemperatur";int16" eingetragen
            Wobei Außentemperatur Register 1 hat und mittlere. Außentemp Register 37. Durch das Offset +1 sollte das ja passen. Beides sind Inputregister

            saegefisch passt das grundsätzlich so mit meinen Eingaben, oder hab ich den LBS falsch verstanden?



            Beim LBS....1030 steht im LOG nur das der LBS gestartet worden ist.
            Aber an A10 erhalte ich ein Error 2 (Timeout)

            die Konfiguration sieht wie folgt aus.

            Hier hab ich zum Register "1" addiert
            Bildschirmfoto 2023-12-04 um 13.15.17.png

            gulp2k passt bei der Konfiguration irgendwas nicht?
            Gruß David

            Kommentar


              #7
              Zum Thema Modbus, kannst du es ja auch einfach mit NibePi probieren.
              Ist ein Image für den Raspi mit NodeRed basierter Applikation und MQTT Broker.
              Dann hast du alle Werte über MQTT verfügbar und kannst per publish auch Einstellungen der WP schreiben.

              Läuft bei mir seit zwei Jahren ohne Probleme.

              Kommentar


                #8
                Ja NibePi hatte ich auch kurz angelesen. Wollte aber, wenn Nibe schon Modbus zur Verfügung stellt, nicht noch ein weiteres „Protokoll“ dazwischen klemmen. Aber vielleicht gebe ich dem Ganzen doch nochmal eine Chance.


                DerSeppel hast du bewusst auf nibepi gesetzt oder „nur“ weil deine WP ggf keinen direkten Modbus implementiert hat?
                Zuletzt geändert von shortyle; 06.12.2023, 10:58.
                Gruß David

                Kommentar


                  #9
                  Nibepi hab ich auch. Geht nur bei der F type und nicht bei der neuen s type. Ausserdem hat die ja modbus was unsere so nicht hat

                  Kommentar


                    #10
                    Aber die s1255 bekomm ich mit den LBS nicht zum laufen.
                    Mit Clients auf dem Mac bekomme ich ein paar Register (5) angezeigt mehr aber auch nicht.

                    die S1255 soll bei NibePi aber auch mit gehen. Bzw haben die da auch einen json für die Register mit implementiert
                    Gruß David

                    Kommentar


                      #11
                      Zitat von shortyle Beitrag anzeigen

                      DerSeppel hast du bewusst auf nibepi gesetzt oder „nur“ weil deine WP ggf keinen direkten Modbus implementiert hat?


                      Die F1155 kann Modbus RTU mit dem entsprechenden Zubehörteil (Nibe Modbus 40). Kostet aber >700€.
                      Da war der NibePi billiger. Der simuliert ein Modbus 40. Dazu noch der Komfort, das ganze per MQTT zu machen.​
                      Zuletzt geändert von DerSeppel; 20.12.2023, 09:03.

                      Kommentar


                        #12
                        Zitat von shortyle Beitrag anzeigen
                        die S1255 soll bei NibePi aber auch mit gehen. Bzw haben die da auch einen json für die Register mit implementiert




                        kannst du die Register dann nicht auslesen?

                        du kannst auch hier in meinen anderen Forum nachfragen, da gibts ein paar Nibe S Spezln. Ich bin nur für die F
                        Wär aber interessant, weil ich hab 3 Kunden mit einer S und die würden wir auch gern iwie auslesen

                        https://www.energiesparhaus.at/forum...ritte/55936_30

                        Kommentar


                          #13
                          Ich habe ja noch kein nibepi gebastelt. Wollte es gern ohne extra Hardware realisieren wenn die Nibe schon Modbus mitbringt.

                          Ein paar Register bekomme ich mit einem Client auf dem Mac angezeigt.
                          Aber mit den LBS direkt in Edomi bekomme ich es nicht hin.

                          Ziel ist eigentlich nur, die Daten langfristig in eine influxDB zu bekommen und Livewerte in Edomi für die Visu.

                          Den Thread im anderen Forum hab ich auch schon gesehen, allerdings ist Edomi dort ja kein Thema oder hab ich da einen Post übersehen?
                          Gruß David

                          Kommentar


                            #14
                            Hallo, ich habe das für einen Freund geschrieben, funktioniert mit seiner WP sehr gut: Könnt ihr mal gerne ausprobieren und mir Feedback geben:

                            Code:
                            ###[DEF]###
                            [name =MY UPLINK NUBI ]
                            
                            [e#1 trigger= Abfragen]
                            [e#2 = user(mail) ]
                            [e#3 = password ]
                            
                            
                            [a#1 =Aussentemperatur [°C] ]
                            [a#2 =Vorlauf ]
                            [a#3 =Rücklauf ]
                            [a#4 =Brauchwasserbereitung ]
                            [a#5 =Eintritt Wärmequellenmedium ]
                            [a#6 =Austritt Wärmequellenmedium ]
                            [a#7 =Mittlere Temperatur ]
                            [a#8 =Gradminuten ]
                            [a#9 =Berechneter Vorlauf Klimatisierungssystem ]
                            [a#10 =Alarmliste ]
                            [a#11 =debug ]
                            
                            [v#100 = 0.1 ]
                            [v#101 = 19001988 ]
                            [v#102 = Abfrage KNC Wärmempumpe ]
                            [v#103 = 0 ]
                            
                            ###[/DEF]###
                            
                            
                            ###[HELP]###
                            Keine Hilfe verfügbar
                            ###[/HELP]###
                            
                            
                            ###[LBS]###
                            <?
                            function LB_LBSID($id) {
                            if ($E=logic_getInputs($id)) {
                            if ($E[1]['refresh'] && $E[1]['value']) {
                            callLogicFunctionExec(LBSID, $id);
                            }
                            
                            }
                            }
                            ?>
                            ###[/LBS]###
                            
                            
                            ###[EXEC]###
                            <?
                            require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                            set_time_limit(10);
                            sql_connect();
                            
                            //-------------------------------------------------------------------------------------
                            
                            $E = getLogicEingangDataAll($id);
                            $user = $E[2]['value'];
                            $password = $E[3]['value'];
                            
                            // Url zuweisen
                            $url_token='https://api.myuplink.com/oauth/token';
                            $url_params='https://api.myuplink.com/v2/devices/'. $deviceid . '/points';
                            $url_notification='https://api.myuplink.com/v2/systems/'. $systemid .'/notifications/active?page=1&itemsPerPage=20';
                            
                            $payload_login =('{"grant_type":"password","email":"'.$user.'","p assword":"'.$password.'"}');
                            $payload_token =('grant_type=password&username='.$user.'&password ='.$password.'&client_id=My-Uplink-Web');
                            
                            
                            //Token auslesen
                            $ch = curl_init($url_token);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                            curl_setopt($ch, CURLOPT_POSTFIELDS, $payload_token);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array('application/x-www-form-urlencoded, Accept-Language: de-DE'));
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            $result = curl_exec($ch);
                            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                            curl_close($ch);
                            
                            
                            //Login und Token auslesen
                            $obj = json_decode($result);
                            $access_token = $obj->access_token;
                            $refresh_token = $obj->refresh_token;
                            $token_type = $obj->token_type;
                            
                            //System-ID auslesen
                            $ch = curl_init($url_system);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array('text/plain', 'Authorization: Bearer '. $access_token));
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            $result = curl_exec($ch);
                            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                            curl_close($ch);
                            $array_system=json_decode($result,true);
                            
                            //SystemID Auslesen
                            foreach ($array_system['systems'] as $v) {
                            $systemid=$v['systemId'];
                            }
                            
                            //Device-ID auslesen
                            foreach ($array_system['systems']['0']['devices'] as $v) {
                            $deviceid=$v['id'];
                            }
                            
                            //URLs definieren für Abfragen der Points und Notifications
                            $url_params='https://api.myuplink.com/v2/devices/'. $deviceid . '/points';
                            $url_notification='https://api.myuplink.com/v2/systems/'. $systemid .'/notifications/active?page=1&itemsPerPage=20';
                            
                            //Points auslesen
                            $ch = curl_init($url_params);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array('application/json', 'Accept-Language: de-DE', 'text/plain', '*/*', 'Authorization: Bearer '. $access_token));
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            $result = curl_exec($ch);
                            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                            curl_close($ch);
                            $arr_datapoints = json_decode($result);
                            
                            //Array durchgehen und alle Parameter wegschreiben
                            $i=0;
                            foreach ($arr_datapoints as $v){
                            //$array[$i]['parameterName'] = $v->parameterName;
                            $array[$i]['value'] = $v->value;
                            $i++;
                            }
                            
                            $keys = array_keys($array);
                            for($i = 0; $i < count($array); $i++) {
                            foreach($array[$keys[$i]] as $key => $value) {
                            logic_setOutput($id,$i+1, $value);
                            }
                            }
                            
                            //Aktive Alarme auslesen
                            $ch = curl_init($url_notification);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: de-DE', 'text/plain', '*/*', 'Authorization: Bearer '. $access_token));
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            $result = curl_exec($ch);
                            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                            curl_close($ch);
                            $arr_notifications = json_decode($result);
                            logic_setOutput($id, 10, $arr_notifications);
                            
                            
                            
                            ?>
                            ###[/EXEC]###

                            Kommentar


                              #15
                              Sieht gut aus, probiere ich dann mal aus.
                              Frage zum Code. Wo wird darin festgelegt welche Wete abgefragt werden? Würde das dann noch im Verdichterfrequenz uä erweitern wollen.
                              Gruß David

                              Kommentar

                              Lädt...
                              X