Ankündigung

Einklappen
Keine Ankündigung bisher.

Guntamatic LBS - Programmierproblem

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

    #16
    Aaaaalso

    in $part stehen die Zeilen die von der Heizung kommen 115 zeilen

    in E5-En gebe ich die Zeilen in $part vor die ich auslesen will, und dann an die Eingänge A1-An ausgebe.

    das mit A2 habe ich nach meinem Post auch gesehen, und schon geändert.

    das mit Z war eigentlich nur zum testen obs geht. Ich hab jetzt deine Variante eingebaut. Kurioserweise sind jetzt auch die restlichen Zeichen im Ausgang.

    Der Fehler im Error-Log is aber nach wie vor da aber nur noch Zeile 37, ich weiß aber nicht auf was sich die Zeile bezieht. normal doch in der funktion, aber die is ja gar net so lang

    aktueller Code:

    PHP-Code:
    ###[DEF]###
    [name        = GUNTAMATIC MODBUS 0.1]

    [e#1        =aktiv #init=1    ]
    [e#2        =IP Heizung ]
    [e#3        =KEY v. Guntamatic ]
    [e#4        =LogLevel #init=1 ]
    [e#5        =A1 ]
    [e#6        =A2 ]
    [e#7        =A3 ]
    [e#8        =A4]
    [e#9        =A5 ]
    [e#10        =A6]
    [e#11        =A7 ]
    [e#12        =A8 ]
    [e#13        =A9 ]
    [e#14        =A10 ]
    [e#15        =A11 ]
    [e#16        =A12 ]
    [e#17        =A13 ]
    [e#18        =A14 ]
    [e#19        =A15 ]
    [e#20        =A16 ]
    [e#21        =A17 ]
    [e#22        =A18 ]
    [e#23        =A19 ]
    [e#24        =A20 ]


    [a#1        =E4         ]
    [a#2        =E5        ]
    [a#3        =E6        ]
    [a#4        =E7        ]
    [a#5        =E8    ]
    [a#6        =E9        ]
    [a#7        =E10        ]
    [a#8        =E11        ]
    [a#9        =E12        ]
    [a#10        =E13        ]
    [a#11        =E14    ]
    [a#12        =E15        ]
    [a#13        =E16        ]
    [a#14        =E17        ]
    [a#15        =E18    ]
    [a#16        =E19        ]
    [a#17        =E20        ]
    [a#18        =E21        ]
    [a#19        =E22        ]
    [a#20        =E23        ]
    [v#1 = 0]
    ###[/DEF]###


    ###[HELP]###

    GUNTAMATIC MODBUS INTERFACE

    Dieser Baustein liest das MODBUS Interface der Guntamatic Heizung aus, und gibt die gewählten Wert an A1-A20 aus.
    falls mehr Werte benötigt werden, einfach einen 2. LBS nutzen. 

    Es werden von den Heizungen unterschiedliche Werte zur Verfügung gestellt, es empfiehlt sich die Abfrage IP/ext/daqdesc.cgi?key=XXX 
    durchzuführen um zu sehen welche werte zur Verfügung gestellt werden. IP ist dabei die IP der Heizung XXX der Key der von Guntamatic 
    zur Verfügung gestellt wird (muss dort beantragt werden) bis SW-Version 3.00 wird der Key mMn nicht benötigt.

    E1: Flag Baustein Aktiv 1/0 Ja/nein 
    E2: IP Heizungssteuerung
    E3: Guntamatic KEY
    E4: LogLevel
    E5-E24: Ausgangszuweisungen 

    V 0.1 - Initale Version

    ###[/HELP]###

    ###[LBS]###
    <?
    function LB_LBSID($id) {
      if ($E=getLogicEingangDataAll($id)) {
       if (getLogicElementVar($id,1)!=1) {
        setLogicElementVar($id,1,1);                      //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern

        if (!$E[1]['value']) {                                                    //IP Prüfen
                    LB_LBSID_debug($id,"Abbruch, keine IP definiert",3);
                    logic_setOutput($id,1,"Fehlende IP");
                } else {
        if (!$E[2]['value']) {                                                            //KEY Prüfen
                    LB_LBSID_debug($id,"Abbruch, kein KEY definiert",3);
                    logic_setOutput($id,1,"Fehlende KEY");
                } else {
                LB_LBSID_debug($id,"Starte EXEC-Teil",7);
                callLogicFunctionExec(LBSID,$id);                 //EXEC-Script starten (garantiert nur einmalig)
                writeToCustomLog("19201040",3,"Start EXEC");
        }
       }
      }
     }
    }
    function LB_LBSID_debug($id,$s,$l=6) {
        $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
        $E=logic_getInputs($id);
        $DEBUG=$E[9]['value'];
        $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
    }

    ?>
    ###[/LBS]###

    ###[EXEC]###
    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(0);                                       //Wichtig! Script soll endlos laufen
    writeToCustomLog("19201040",3,"EXEC gestartet");
    sql_connect();
    if ($E=logic_getInputs($id)) {
        $DEBUG=$E[4]['value'];
        $DEBUG && debug($id,"Baustein startet"); 

    writeToCustomLog("19201040",3,"SQL Connect durchgeführt");
    writeToCustomLog("19201040",3,"Sys info");
    while (getSysInfo(1)>=1) {
                    writeToCustomLog("19201040",3,"Sys info");
                    $url = "http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value'];
                    writeToCustomLog("19201040",3,"http://" . $E[2]['value'] ."/daqdata.cgi?key=" . $E[3]['value']); 
                    $ch = curl_init(); 

                    curl_setopt ($ch, CURLOPT_URL, $url); 
                    curl_setopt ($ch, CURLOPT_HEADER, 0); 

                    ob_start(); 

                    curl_exec ($ch); 
                    curl_close ($ch); 
                    $text = ob_get_contents();
                    ob_end_clean(); 

                       $text = str_replace("\r\n", "\n", $text); // windows -> linux
                    $text = str_replace("\r", "\n", $text); // mac -> linux

                    # array bilden
                    $part = explode("\n", $text);

                    for ($i = 5; $i < count($E); $i++) {
                    if (array_key_exists($E[$i]['value'],$part))
                    logic_setOutput($id,$i-4,$part[$E[$i]['value']]);  
                    writeToCustomLog("19201040",3,"logic_setOutput".$id ."-".($i-3)."-".$part[$E[$i]['value']]);                
    }
    usleep(1000*500);                                      //z.B. 10ms warten - wichtig, um die CPU-Last zu begrenzen!
    }
    }

    finish();

    function debug($id,$s,$l=6) {
        $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
        global $DEBUG;
        $l<$DEBUG && writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);
    }

    function finish() {
        global $id;
        debug($id,"Baustein beendet");
        sql_disconnect();
        exit();
    }    
    ?>
    ###[/EXEC]###
    Zuletzt geändert von HeMichael; 01.04.2018, 17:47.

    Kommentar


      #17
      Hast du die Indizes an den Eingängen korrekt gesetzt Das explode liefert ein array, welches mit index 0 startet

      Kommentar


        #18
        ich versteh grad net was du meinst, ich greif ja auf das den ersten wert mit [0] (i=4-4) zu

        was soll ich wo an den Eingängen setzen?

        Edit:

        Ok, habs kapiert, wenn nix im eingang drin steht rechnet er den index auf -4 und der existiert net.
        dann muss ich noch ne schleife einbauen die prüft ob da was >=0 drin is

        Danke für den Zaunpfahl

        schöne RestOstern
        Zuletzt geändert von HeMichael; 01.04.2018, 18:57.

        Kommentar


          #19
          Hey Leute,

          ich habe den Baustein bei mir jetzt mal rein gemacht und den Key von Guntamatic angefordert bzw. bekommen.
          Nur leider weiß ich nicht ob ich den jetzt richtig beschaltet hab. Wie müsste ich die Zuordnung denn machen?
          Denn irgendwie funktioniert der Baustein bei mir nämlich nicht richtig.

          Könntet ihr mir da helfen?


          LG
          Chris

          Kommentar


            #20
            mach doch mal nen Screen wie du den baustein verschaltet hast

            https://www.dropbox.com/s/dy0znfyrlq...c-LBS.jpg?dl=0

            so ungefähr sollte das aussehen

            Kommentar


              #21
              Oh man ey sorry für die dumme Fragerei aber jetzt ist es mir klar wie es funktioniert. Habe zwar den Ausgang zugeordnet aber vorne am Eingang nicht gesagt was er denn bitte abfragen soll. Funktioniert jetzt...

              Manchmal steht man sich einfach selbst im Weg.

              Kommentar


                #22
                alles gut freu mich dass ich helfen konnte

                Kommentar

                Lädt...
                X