Ankündigung

Einklappen
Keine Ankündigung bisher.

Komma-Werte in Punkt-Werte ändern im LBS

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

    Komma-Werte in Punkt-Werte ändern im LBS

    Hallo miteinander,

    habe ein kleines Problem mit einem LBS, der eine Homepage per Regex abfrägt und zwar dass die Werte immer als "Komma-Werte" vorliegen und nicht als "Punkt-Werte". Dies macht mir in der Visu z.B. bei der Werteausgabe Probleme bzw. auch in den Diagrammen...

    Hier kurz der Ausschnitt aus dem Code:
    Code:
    $regexp="/ISTTEMPERATUR FLÄCHE.*?([0-9\-,?\???.]+)/s";
    preg_match($regexp,$ausgabe2,$data2);
    logic_setOutput($id,14,$data2[1]);
    Jetzt würde ich gerne den Schnipsel so verändern, dass er mir gleich das richtige Format ausgibt, also aus 20,63 die Zahl 20.63 macht...

    Habe dazu schon die Funktion floatval() gefunden, aber ich weiß jetzt nicht, wie ich die vernünftig einbaue

    Danke schon mal für eure Hilfe!
    Grüße Tobi


    #2
    Ich wuerde es so machen:
    PHP-Code:
    logic_setOutput($id,14,str_replace(",",".",$data2[1])); 

    Kommentar


      #3
      wintermute Thanks, das funktioniert!
      Grüße Tobi

      Kommentar


        #4
        Danke!

        Kommentar


          #5
          Hallo
          Ich steh gerade etwas auf`n Schlauch.
          Habe auch Kommawerte die ich durch einen Punkt ersetzen möchte um sie in Edomi weiterzuverarbeiten.
          Braucht es dafür einen LBS oder kann ich den oberen Code irgendwo anders einfügen um die Werte entsprechend aufzubereiten?

          Liebe Grüße
          Jürgen

          Kommentar


            #6
            http://service.knx-user-forum.de/?co...ad&id=19001576

            E1 dein Wert
            E2
            PHP-Code:
            ,|. 

            Kommentar


              #7
              Danke dir
              Werde ich am Abend so umsetzen.

              Liebe Grüße

              Kommentar


                #8
                Guten Morgen

                Ich habs gestern Abend noch so umgesetzt und dann das Projekt aktiviert.
                Aktuell kommen Fehlermeldungen en masse.

                Code:
                2022-10-27 08:50:37 880326 ? 863 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19001576.php | Fehlercode: 8 | Zeile: 10 | Undefined offset: 1 ERROR
                Hab vermutlich schon wieder was falsch gemacht.
                Muss ich den PHP-Code irgendwo im Quelltext eingeben und von E3 entfernen? Bin leider vollkommen unwissend.

                Aktuell siehts so aus:

                str_replace.jpg

                Quellcode hab ich unverändert lassen:

                Code:
                ###[DEF]###
                [name        = str_replace    ]
                
                [e#1        = Subject    ]
                [e#2        = Search/Replace pairs #init=ON|1||OFF|0 ]
                [e#3        = Separator    #init=|]
                
                [a#1        = Result    ]
                
                ###[/DEF]###
                
                
                ###[HELP]###
                E1: String where substrings should be replaced
                E2: Combination of search and replace string pairs. Format: search1|replace1||search2|replace2
                E3: Separator to be used in E2 can be set here. Default |
                    Single separator divides search from replace string, double separator divides multiple search/replace string pairs
                    
                ###[/HELP]###
                
                
                ###[LBS]###
                <?
                function LB_LBSID($id) {
                    if ($E=logic_getInputs($id)) {
                        if ($E[1]['refresh']==1) {
                            $subject = $E[1]['value'];
                            $separator1 = $E[3]['value'].$E[3]['value'];
                            $separator2 = $E[3]['value'];
                            $pairs = explode($separator1, $E[2]['value']);
                            foreach ($pairs as $pair) {
                                list($search,$replace) = explode($separator2,$pair);
                                $subject = str_replace($search,$replace,$subject);
                            }
                            logic_setOutput($id,1,$subject);
                        }
                    }
                }
                ?>
                ###[/LBS]###
                
                
                ###[EXEC]###
                <?
                ?>
                ###[/EXEC]###
                ​
                Liebe Grüße

                Kommentar


                  #9
                  Wenn ich schreibe E2 meine ich E2 und nicht E3

                  Also E2
                  PHP-Code:
                  ,|. 
                  E3 belassen mit
                  PHP-Code:

                  Kommentar


                    #10
                    Du bist ja schneller wie die Feuerwehr

                    Hab ich irgendwie falsch gelesen, naja war schon spät gestern

                    Funktioniert jetzt wie gewünscht, danke

                    Kommentar

                    Lädt...
                    X