Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert in einer Homepage setzen

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

  • jonofe
    antwortet
    Du könntest es mal so versuchen, falls es natives PHP sein soll:

    PHP-Code:

    $data 
    'data=[{"name":"val103","value":"221"}]';
    $ch curl_init();
    curl_setopt($chCURLOPT_URL'http://192.168.10.25/save.php');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POSTFIELDS$data);
    $result curl_exec($ch);
    $ch_error curl_error($ch);
    $http_status curl_getinfo($chCURLINFO_HTTP_CODE);
    curl_close($ch); 

    Einen Kommentar schreiben:


  • EugenDo
    antwortet

    probier mal

    Code:
      curl_setopt($ch, [B]CURLOPT_POSTFIELDS[/B], $data);
    und für $data ... https://knx-user-forum.de/forum/proj...87#post1361587
    Zuletzt geändert von EugenDo; 11.05.2019, 19:49.

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Auch im LBS könntest du es als exec() Befehl ausführen.
    Okay, versuch ich mal... kann ich dann auch mit der Variable $onoff im exec()-Befehl arbeiten?

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Danke dir EugenDo

    Dann die Frage an die Edomi-Kollegen:

    Die entscheidende Einstellung ist die 221 in diesem String:
    Code:
    --data "data="%"5B"%"7B"%"22name"%"22"%"3A"%"22val103"%"22"%"2C"%"22value"%"22"%"3A"%"[U]221[/U]"%"22"%"7D"%"5D"
    wenn ich die auf 220 ändere --> AUS; auf 221 --> EIN

    Nun mein Versuch das in den Baustein zu integrieren:

    PHP-Code:
    if ($E=logic_getInputs($id)) {
     
    $ip $E[2]['value'];
     
    $onoff $E[1]['value'];
     
    logic_setVar($id,203,$E[3]['value']);
     
    $url "http://".$ip."/save.php";
     
    $data "data="%"5B"%"7B"%"22name"%"22"%"3A"%"22val103"%"22"%"2C"%"22value"%"22"%"3A"%"22".$onoff.""%"22"%"7D"%"5D";
     
     
    $ch curl_init();
     
    curl_setopt($chCURLOPT_URL$url);
     
    curl_setopt($chCURLOPT_POST$data);
     
    curl_exec($ch);
     
    curl_close($ch);

    geht aber leider nicht so... wo ist der Fehler?

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von JonDonSponky Beitrag anzeigen
    Das wäre die andere Lösung... ich wollte nur meinen LBS19001342 um diese Funktion erweitern, um ihn "vollständiger" zu machen.
    Auch im LBS könntest du es als exec() Befehl ausführen.

    PHP-Code:
    exec('curl "http://192.168.10.25/save.php" --data "data="%"5B"%"7B"%"22name"%"22"%"3A"%"22val103"%"22"%"2C"%"22value"%"22"%"3A"%"221"%"22"%"7D"%"5D"'); 
    Oder aber mit php-curl nachbauen...

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    ja, dieser Befehl hat nur den POST als Inhalt! Den musst Du nur noch richtig in den Baustein von EDOMI einbauen ... ich habe noch kein EDOMI, deswegen bin ich jetzt raus ....

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Zitat von EugenDo Beitrag anzeigen
    führe das mal aus
    Jab, auch dieser Befehl funktioniert!

    Zitat von jonofe Beitrag anzeigen
    Dann kannst du den Befehl auch als Shell Befehl ausführen, dann brauchst du keinen LBS.
    Das wäre die andere Lösung... ich wollte nur meinen LBS19001342 um diese Funktion erweitern, um ihn "vollständiger" zu machen.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von JonDonSponky Beitrag anzeigen
    Jab, als SHELL-Befehl wird der Wert gesetzt!
    Dann kannst du den Befehl auch als Shell Befehl ausführen, dann brauchst du keinen LBS.

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    führe das mal aus

    Code:
      
     curl "http://192.168.10.25/save.php" --data "data="%"5B"%"7B"%"22name"%"22"%"3A"%"22val103"%"22"%"2C"%"22value"%"22"%"3A"%"221"%"22"%"7D"%"5D"

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Ich denke dein Login wird über das Session-Cookie gespeichert oder musst du dich wirklich nie anmelden, wenn du diese Einstellung ändern willst.
    Nein, ich muss mich nie anmelden, wenn ich die Einstellungen speichern will.

    Zitat von jonofe Beitrag anzeigen
    Du hast doch diesen Befehl mitgeschnitten, oder woher kommt der?
    Den Befehl hab ich folgendermaßen als cURL kopiert:
    Anmerkung 2019-05-11 180031.jpg

    Oder soll ich den anders herleiten?

    Zitat von jonofe Beitrag anzeigen
    Genau, diesen Befehl ausführen und schauen was sich tut.
    Jab, als SHELL-Befehl wird der Wert gesetzt!

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Ich denke dein Login wird über das Session-Cookie gespeichert oder musst du dich wirklich nie anmelden, wenn du diese Einstellung ändern willst.

    Zitat von JonDonSponky Beitrag anzeigen
    Aber wenn ich es richtig sehe, soll ich mit dem Befehl
    Genau, diesen Befehl ausführen und schauen was sich tut. Du hast doch diesen Befehl mitgeschnitten, oder woher kommt der?

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Wenn ich lese was du oben gepostest hast, sollte doch die URL auf save.php enden. Warum machst du den CURL Call auf ?s=4,0,2
    Das war doch weiter oben nur ein Header. Außerdem wird doch oben beim CURL noch ein Session Cookie gesendet.
    Kannst du denn in einer Shell mit o.g. CURL Aufruf den Status ändern?
    Puh... ganz ein neuer Ansatz! Ich versteh leider bloß die Hälfte von dem, was du geschrieben hast. Aber wenn ich es richtig sehe, soll ich mit dem Befehl

    Code:
    curl "http://192.168.10.25/save.php" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0" -H "Accept: text/plain, */*; q=0.01" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" --compressed -H "Referer: http://192.168.10.25/?s=4,0,2" -H "Content-Type: application/x-www-form-urlencoded" -H "X-Requested-With: XMLHttpRequest" -H "DNT: 1" -H "Connection: keep-alive" -H "Cookie: PHPSESSID=a9aeb0d3cfdf79c6bc11e7a8fa3a4767" --data "data="%"5B"%"7B"%"22name"%"22"%"3A"%"22val103"%"22"%"2C"%"22value"%"22"%"3A"%"221"%"22"%"7D"%"5D"
    eine SHELL befüllen und ausführen, oder?

    Den Call auf ?s=4,0,2 mach ich deswegen, weil dort dieser Ein/Aus-Button "liegt" und ja, du hast vermutlich recht, es wird eigentlich die save.php verändert... und das mit dem "Session Cookie" sagt mir jetzt nichts bzw. weiß ich damit nichts anzufangen.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Wenn ich lese was du oben gepostest hast, sollte doch die URL auf save.php enden. Warum machst du den CURL Call auf ?s=4,0,2
    Das war doch weiter oben nur ein Header. Außerdem wird doch oben beim CURL noch ein Session Cookie gesendet.
    Kannst du denn in einer Shell mit o.g. CURL Aufruf den Status ändern?

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    Zitat von JonDonSponky Beitrag anzeigen
    $data = '{"name":"val103","value":"'.$onoff.'"}';
    ich würde das so versuchen

    Code:
    $data = 'data=[{"name":"val103","value":"'.$onoff.'"}]';

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    vento66, EugenDo, jonofe

    Danke für den Input, hab den Baustein angepasst und jetzt lässt er sich ohne Fehler in EDOMI hochladen.

    Leider "schaltet" der LBS noch nicht in der Seite, sprich wenn ich eine "1" schicke bleibt weiterhin der Sommerbetrieb auf "AUS". Ich glaube ich habe noch irgendeinen Fehler im String...
    PHP-Code:
    ###[DEF]###
    [name        =    Test]
    [titel        =     Test]

    [e#1        trigger    = EIN/AUS]
    [e#2        important =    IP]
    [e#3        OPTION    = LogLevel #init=4]

    [v#200    = xx ]
    [v#201    = 1900xxxx ]
    [v#202    = xx ]
    [v#203 = 0 ]


    ###[/DEF]###

    ###[HELP]###

    ###[/HELP]###
     
     ###[LBS]###
    <?
     function LB_LBSID($id) {
        
         if ($E=getLogicEingangDataAll($id)) {
            
             if (getLogicElementStatus($id)==0) {
                
                 if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
                     logic_setOutput($id,1,0);
                     logic_setState($id,1);
                     logic_callExec(LBSID,$id);
                 }
             }
         }
     }
    ?>
    ###[/LBS]###

    ###[EXEC]###

    <?
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    set_time_limit(15);

    sql_connect();

    // -------------------------------------------------------------------------------------------------------

    function _log($msg, $priority=8)                                // CustomLog
    {
         global $id;
         $E=logic_getInputs($id);
         $logLevel = logic_getVar($id,203);
         if (is_int($priority) && $priority<=$logLevel && $priority>0){
            $logLevelNames = array(
             'none',
             'emerg',
             'alert',
             'crit',
             'err',
             'warning',
             'notice',
             'info',
             'debug'
            );
            $version = logic_getVar($id,200);
            $lbsNo = logic_getVar($id,201);
            $logName = logic_getVar($id,202);
            strpos($_SERVER['SCRIPT_NAME'],$lbsNo) ? $scriptname='EXE'.$lbsNo : $scriptname = 'LBS'.$lbsNo;
            writeToCustomLog("LBS".$lbsNo. " - ".$logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t".$msg);
        }
    }

    //-------------------------------------------------------------------------------------
    if ($E=logic_getInputs($id)) {
     $ip = $E[2]['value'];
     $onoff = $E[1]['value'];
     logic_setVar($id,203,$E[3]['value']);
     $url = "http://".$ip."/?s=4,0,2";
     $data = '{"name":"val103","value":"'.$onoff.'"}';
     
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
     curl_exec($ch);
     curl_close($ch);
     }

    //-------------------------------------------------------------------------------------
    logic_setState($id,0);
    sql_disconnect();
    ?>

    ###[/EXEC]###

    Einen Kommentar schreiben:

Lädt...
X