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 musst im EXEC Teil erstmal die Eingänge einlesen

    PHP-Code:
    $E logic_getInputs($id); 
    Vorher kannst du $E nicht verwenden.

    Ich kann mir kaum vorstellen, dass der LBS überhaupt ohne Einträge im Error Log startet.
    Die solltest du dir mal anschauen und auch hier posten.

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    DATA ist aus meiner Sicht ein JSON-Object im Array ... siehe deine POST-Daten ... baue einfach einen String

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Ähm vielleicht musst Du CURL auch ausführen?   $result = curl_exec($ch);  zumindest mit   curl_exec($ch);  mit der ersten Variante hast Du in $result die Rückgabe der Seite stehen.

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    irgendwo hakt es noch... bzw. ich versteh es noch nicht.

    hier mein Test-LBS
    PHP-Code:
    ###[DEF]###
    [name        =    Test]
    [titel        =     Test]

    [e#1        trigger    = EIN/AUS]
    [e#2        important =    IP]




    ###[/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");
    sql_connect();

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

    $onoff = $E[1]['value'];
    $ip = $E[2]['value'];

    $url = "http://".$ip."/?s=4,0,2";
    $data = array(["name"="val103","value"=$onoff]);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_close($ch);

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

    sql_disconnect();
    ?>

    ###[/EXEC]###
    Aber er funktioniert noch nicht...

    PS: Einloggen muss ich mich nicht, da die Seite ungeschützt ist.

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Schau dir mal den 19000036 an, da mache ich sowas.

    $data = '{"psk":"'.$pass.'"}';
    $url .= "$WIFI_id";
    $headers = array(
    'Accept: application/json',
    'Content-Type: application/json',
    'X-RESTD-SESSION:close',
    'Authorization: Basic '.$auth_token
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($ch);
    $ch_error = curl_error($ch);
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($ch_error) {
    LB_LBSID_logging($id, "error $ch_error" ,8);
    } else {
    if($result && $http_status == 200){
    $json = (json_decode($result,true));
    LB_LBSID_logging($id, "json" ,8,$json);
    logic_setOutput($id,1,$json['psk']);
    logic_setOutput($id,2,$E[2]['value']);

    Einen Kommentar schreiben:


  • JonDonSponky
    antwortet
    Zitat von vento66 Beitrag anzeigen
    Du kannst versuchen mittels CURL und GET /oder POST die Daten aus dem Dropdown (id, name, value) an den Server zu senden. Vorher natürlich mit CURL authentifizieren (einloggen).
    Habe mit dem DeveloperMode den Befehl gefunden der scheinbar den Wert setzt.

    Ich habe nun mehrere Möglichkeiten wie dich den Befehl kopieren kann. Hier die, die mir als sinnvoll bzw. zielführend erscheinen:
    • Adresse
      Code:
      http://192.168.10.25/save.php
    • POST-Daten
      Code:
      data=[{"name":"val103","value":"1"}]
    • als cURL-Adresse
      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"
    Nun natürlich die nächste Laienfrage, wie ich aus diesen Daten einen Befehl basteln kann, der mir den Wert verändert...

    Übrigens EugenDo, der DevelperMode ist echt ein starkes Werkzeug, danke für die Info!

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    Zitat von Roland81 Beitrag anzeigen
    Cool das kannte ich noch nicht

    Freut mich, wenn das schon die Lösung deines Problems ist

    Einen Kommentar schreiben:


  • Roland81
    antwortet
    EugenDo: Cool das kannte ich noch nicht

    Einen Kommentar schreiben:


  • EugenDo
    antwortet
    guck doch mal im Chrome (mein Favorit) oder so im Developer Mode (F12) unter Network, was versendet wird, wenn Du die Aktion auslöst ...

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Du kannst versuchen mittels CURL und GET /oder POST die Daten aus dem Dropdown (id, name, value) an den Server zu senden. Vorher natürlich mit CURL authentifizieren (einloggen).

    Einen Kommentar schreiben:


  • JonDonSponky
    hat ein Thema erstellt Wert in einer Homepage setzen.

    Wert in einer Homepage setzen

    Hallo miteinander!

    Ich weiß nicht, wie ich es richtig formulieren soll, deshalb kurz mein erklärtes Ziel: Meine Wärmepumpe bietet eine abrufbare Oberfläche an, in der ich per Webbrowser diverse Einstellungen vornehmen kann. Nun möchte ich genau einen Wert auf dieser Seite per EDOMI verändern, da die Logik in der Heizung zu stupide ist und zwar das Umschalten auf den Sommerbetrieb (die KNX-Schnittstelle bietet hier leider keine Lösung bzw. Option an)

    In der Oberfläche sieht es so aus:
    Anmerkung 2019-05-10 183729.jpg
    bzw. wenn ich es verändern will so:
    Anmerkung 2019-05-10 183717.jpg
    Der Quelltext der Seite dazu sieht folgendermaßen aus:
    Anmerkung 2019-05-10 184009.jpg (gelb markiert der Wert, der verändert werden soll AUS --> EIN)

    Nun die Frage, wie ich das am besten anstelle bzw. wie ich das in einen LBS integrieren kann.

    Herzlichen Dank für Rückmeldungen bzw. Vorschläge!
Lädt...
X