Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Script HTML

Réservé à l'utilisation et la programmation de scripts dans JEEDOM
Répondre
yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Script HTML

Message par yostone » 07 févr. 2019, 11:23

Bonjour, je possède une pompe à chaleur Hayward qui est pilotable via une page html.
J'aimerai pouvoir lire les valeurs dans Jeedom ou même la piloter mais je n'arrive pas à extraire quoi que ce soit.

Pour exemple j'aimerai récupérer la valeur Ambient de 17.5
RequetHayward.png
RequetHayward.png (311.3 Kio) Consulté 2281 fois
J'avoue que j'ai essayé plusieurs façon mais sans résultat.

Voici le code de la page HTML

Code : Tout sélectionner


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Hayward--Remote</title>
    <link rel="Stylesheet" type="text/css" href='/assets/css/main.css' />
    <!--[if lte IE 6]>
    <script src='/assets/javascript/DD_belatedPNG_0.0.8a.js' type="text/javascript"></script>
    <script type="text/javascript">
        DD_belatedPNG.fix('.mainIn background,.liebiao background,.yxms background,.sdwd background,.kg background,.xtsz background');
    </script>
    <![endif]-->
    <link rel="stylesheet" href='/assets/css/jquery.checkbox.css' />
    <script type="text/javascript" src='/assets/javascript/jquery-1.4.1.js'></script>
    <script type="text/javascript" src='/assets/javascript/jquery.checkbox.min.js'></script>
 </head>
<body>
<div class="inner-frame">
    &nbsp;
</div>
<div class="main">
    <div style="float:right"><!--<a href="/lang?c=zh">中文</a>/--><a href="/lang?c=en">English</a>/<a href="/lang?c=fr">Français</a>/<a href="/lang?c=es">Spanish</a>/<a href="/lang?c=de">German</a>/<a href="/lang?c=it">Italiano</a>/<a href="/lang?c=pt">Português</a>/<a href="/lang?c=nl">Dutch</a></div>
    <div class="topTitle">
        <img src="/assets/images/logo.png" alt=""/>
    </div>
    <div id="mainIn" class="mainIn">
            <div class="mid">
                <div class="content">
                    <div class="liebiao">
                        <input type="image" name="ib6" id="ib6" class="lb3" align="right" title="Quit"
                        onclick="window.location='/logout'"
                        src='/assets/images/main/29.png' style="border-width:0px;"/>
                        <input type="image" name="ib4" id="ib4" class="lb3" align="right" onclick="document.getElementById('mainif').src='/internal/index?'+Math.random()"  src='/assets/images/main/7.jpg' style="border-width:0px;" />
                        <input type="image" name="ib1" id="ib1" class="lb3" align="right" onclick="document.getElementById('mainif').src='/internal/more?'+Math.random()" src='/assets/images/main/6.jpg' style="border-width:0px;" />
                        <input type="image" name="ib3" id="ib3" class="lb3" align="right" onclick="document.getElementById('mainif').src='/internal/timer?'+Math.random()" src='/assets/images/main/5.jpg' style="border-width:0px;" />
                        
                        <input type="image" name="ib2" id="ib2" class="lb3" align="right" src='/assets/images/main/4.jpg' style="border-width:0px;" />
                        
                    </div>
                    <div class="p1">
                        <span id="jq" onclick="document.getElementById(&#39;mainif&#39;).src=&#39;/internal/name&#39;;">HeatPump</span>
                    </div>
                </div>
                <div class="mainL">
                    <div class="wdzz">
                        <img id="Imrsl" alt="" src="/assets/images/main/wd/10.png" style="border-width:0px;">
                        <span id="lbwd1" class="lbwd">0.0℃</span>
                    </div>
                    <div class="jqcz">
                        <div class="pc">
                            <div class="z1"><span>Mode</span></div>
                            <div class="kg">
                                <p>
                                    <span id="lbms" class="z2" onclick="document.getElementById('mainif').src='/internal/mode?'+Math.random()">Heating</span>
                                    <input type="image" name="ibyxms1" id="ibyxms1" class="tab" align="right"
                                           src='/assets/images/main/T-jiantou.png' style="border-width:0px;" onclick="document.getElementById('mainif').src='/internal/mode?'+Math.random()">
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Ambient</span></div>
                            <div class="kg1">
                                <p>
                                    <span id="lbhjwd">17.5℃</span>
                                </p>
                            </dhtmliv>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Target</span></div>
                            <div class="kg">
                                <p>
                                <span id="lbwd" class="z2" onclick="document.getElementById('mainif').src='/internal/target?'+Math.random()">8.0℃</span>
                                    <input type="image" name="ibTarget" id="ibTarget" class="tab" align="right" src='/assets/images/main/T-jiantou.png' onclick="document.getElementById('mainif').src='/internal/target?'+Math.random()" style="border-width:0px;" />
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Inlet Water</span></div>
                            <div class="kg1">
                                <p>
                                    <span id="lbwd3">0.0℃</span>
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Outlet Water</span></div>
                            <div class="kg1">
                                <p>
                                    <span id="lbwd2">1.0℃</span>
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Timer One</span></div>
                            <div class="kg">
                                <p>
                                    <span id="lbTurntime" class="z2" onclick="document.getElementById('mainif').src='/internal/timer?'+'t=1&r='+Math.random()">On</span>
                                    <input type="image" name="ibtiming1" onclick="document.getElementById('mainif').src='/internal/timer?'+'t=1&r='+Math.random()" id="ibtiming1" class="tab" align="right" src='/assets/images/main/T-jiantou.png' style="border-width:0px;" />
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span>Timer Two</span></div>
                            <div class="kg">
                                <p>
                                    <span id="lbTurntime1" class="z2" onclick="document.getElementById('mainif').src='/internal/timer?'+'t=2&r='+Math.random()">Off</span>
                                    <input type="image" name="ibtiming2" onclick="document.getElementById('mainif').src='/internal/timer?'+'t=2&r='+Math.random()" id="ibtiming2" class="tab" align="right" src='/assets/images/main/T-jiantou.png' style="border-width:0px;" />
                                </p>
                            </div>
                        </div>
                        <div class="pc">
                            <div class="z1"><span style="color:#000000;">Power</span></div>
                            <input id="isPowerSwitch" type="checkbox" name="isPowerSwitch" checked="checked" />

                        </div>
                        <div class="pc">
                            <div class="z1"><span style="color:#000000;">Authorization</span></div>
                            <input id="hasRemoteControl" type="checkbox" name="hasRemoteControl" checked="checked" />

                        </div>
                    </div>
                </div>
                <div class="mainR">
                    <iframe name="main" id="mainif" frameborder="0" width="100%" height="100%" src="/internal/index" allowTransparency="true" runat="server" ></iframe>
                </div>
            </div>
    </div>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $('input:checkbox:not([safari])').checkbox();
        $('input[safari]:checkbox').checkbox({ cls: 'jquery-safari-checkbox' });
        $('input:radio').checkbox();

        $('#isPowerSwitch').click(function () {
            $.post( "/power", { power: this.checked }, function( data ) {
                window.location.reload();
            }, "json");
            });

        $('#hasRemoteControl').click(function () {
            $.post( "/control", { control: this.checked }, function( data ) {
            window.location.reload();
            }, "json");
            });
        });

    displayForm = function (elementId) {
    var content = [];
    $('#' + elementId + ' input').each(function () {
    var el = $(this);
    if ((el.attr('type').toLowerCase() == 'radio')) {
    if (this.checked)
    content.push([
    '"', el.attr('name'), '": ',
    'value="', (this.value), '"',
    (this.disabled ? ', disabled' : '')
    ].join(''));
    }
    else
    content.push([
    '"', el.attr('name'), '": ',
    (this.checked ? 'checked' : 'not checked'),
    (this.disabled ? ', disabled' : '')
    ].join(''));
    });
    alert(content.join('\n'));
    }

    changeStyle = function (skin) {
    jQuery('.main :checkbox').checkbox((skin ? { cls: skin} : {}));
    }

</script>

</body>
</html>

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 07 févr. 2019, 11:47

Salut, tu peux tester ça ? (avec ton code source ça marche chez moi).

Code : Tout sélectionner

div.kg1:first p:first span
ambient.jpg
ambient.jpg (139.4 Kio) Consulté 2270 fois
ambient2.jpg
ambient2.jpg (13.86 Kio) Consulté 2270 fois
J'ai mis le menu déroulant du Type sur "Autre" par erreur, mais avec "Numérique", ça marche aussi, ça change l'affichage (que tu peux de toute façon personnaliser ensuite avec un widget). C'est pratique pour pouvoir cliquer dessus si tu conserves l'historique aussi.
ambiant 3.jpg
ambiant 3.jpg (21.34 Kio) Consulté 2262 fois
Je me suis basé sur le paragraphe 13 de cette page https://jeedom.github.io/plugin-script/ ... nchor-1-14

Sachant que le bout de code concerné était :

Code : Tout sélectionner

<div class="kg1">
<p>
	<span id="lbhjwd">17.5</span>
</p>
Merci à toute l'équipe pour le taf

Mon matériel

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 07 févr. 2019, 12:26

Et si tu veux par exemple la valeur pour "Outlet water", tu peux utiliser

Code : Tout sélectionner

div.kg1 span:eq(2)
outlet2.jpg
outlet2.jpg (25.39 Kio) Consulté 2260 fois
J'ai tâtonné pour arriver à ce résultat et comprendre le fonctionnement.
C'est hyper puissant ce truc :o
outlet.jpg
outlet.jpg (29.01 Kio) Consulté 2260 fois
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 07 févr. 2019, 12:42

Merci d'avoir testé, j'avais, enfin je pense déjà testé cette requete mais sans succès...

Je dois me loguer sur le site pour avoir accès aux infos, pourtant j'ai bien renseigné l'utilisateur et le MDP dans le script mais rien ne marche...

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 07 févr. 2019, 12:50

C'est quoi comme authentification ? Un formulaire dans la page ou une pop-up ?

Un contournement pourrait être d'accéder à la page avec "curl" (via un script gérant l'authentification, de sauvegarder cette page, et ensuite d'appliquer la solution ci-dessus sur le code source récupéré).

La difficulté va dépendre de la méthode d'authentification utilisée par la page.

Je vais voir pour te passer un bout de script à tester (pas tout de suite par contre).
Tu peux me faire passer le code source de ta page de connexion stp ?
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 07 févr. 2019, 14:05

romanais a écrit :
07 févr. 2019, 12:50
C'est quoi comme authentification ? Un formulaire dans la page ou une pop-up ?

Un contournement pourrait être d'accéder à la page avec "curl" (via un script gérant l'authentification, de sauvegarder cette page, et ensuite d'appliquer la solution ci-dessus sur le code source récupéré).

La difficulté va dépendre de la méthode d'authentification utilisée par la page.

Je vais voir pour te passer un bout de script à tester (pas tout de suite par contre).
Tu peux me faire passer le code source de ta page de connexion stp ?

Merci pour le cou de main, le lien pour le loguer http://smartemp.hayward.fr:9000/login
puis après j'arrive http://smartemp.hayward.fr:9000

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 07 févr. 2019, 14:48

Alors (pas facile d'avancer à l'aveugle) mais si tu veux tester ça.
Tu crées un nouveau script (pompe.php), contenant ce code (remplace juste les 2 premières valeurs par tes propres identifiants).

Code : Tout sélectionner

<?php
// ************* DEBUT DES VARIABLES
$username = 'admin';
$password = 'passwd';
$login_url = 'http://smartemp.hayward.fr:9000/login'; //url de la page d'accueil (identification)
$cookie = '/var/www/html/plugins/script/core/ressources/cookie_pompe.txt'; //chemin vers le cookie
$source= 'http://smartemp.hayward.fr:9000/'; //page à récupérer
$pompe_html = '/var/www/html/pompe.html'; //fichier à partir duquel on pourra lire la source
// ************* FIN DES VARIABLES

//initialisation curl
$ch = curl_init();

//défini l'url de connexion/identification
curl_setopt($ch, CURLOPT_URL, $login_url);

//active HTTP POST
curl_setopt($ch, CURLOPT_POST, 1);
//affecte les variables à envoyer
curl_setopt($ch, CURLOPT_POSTFIELDS, 'barCode='.$username.'&pwd='.$password);

// Définition de la méthode d'authentification du serveur
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

//gestion du cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);

//Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
//not to print out the results of its query.
//Instead, it will return the results as a string return value
//from curl_exec() instead of the usual true/false.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//exécute la requête - login
$store = curl_exec($ch);

//connexion effectuée, on accède à la page web
curl_setopt($ch, CURLOPT_URL, $source);

//execute la requête
$content = curl_exec($ch);

curl_close($ch); // on ferme la session curl

//enregistre le contenu de la page dans un fichier html
file_put_contents($pompe_html, $content);

//change les droits sur le fichier - écriture
chmod($pompe_html,0777);
?>
Lorsque c'est fait, tu exécutes ce script (avant c'était simple on appelait la page depuis un navigateur, mais je vois qu'à présent on a une erreur 403 si on appelle quelque chose directement comme http://IP_de_ta_jeedom/plugins/script/core/ressources/pompe.php).
Du coup, tu utiliseras le bouton "Tester" .
tester.jpg
tester.jpg (166.21 Kio) Consulté 2231 fois
Et ensuite tu regardes à quoi ressemble la page html générée. Si on a du bol du 1er coup tu verras la même page que lorsque tu te connectes manuellement.
Accède à http://IP_de_ta_jeedom/pompe.html pour voir la page générée (quand tout marchera, on déplacera ce fichier, là je l'ai mis à la racine pour que l'on y accède facilement).

Si à tout hasard tu peux créer un compte restreint, juste pour que je teste la procédure de connexion de mon côté, je prends :-)
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 07 févr. 2019, 15:24

Malheureusement je n'ai pas d'autres compte :( je bloque sur l’exécution du script : Erreur dans l'exécution du terminal, la valeur retournée est : 2. Détails : Array ( [0] => )

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 15 févr. 2019, 16:13

Je n'avais pas compris comment ajouter du php dans mon script, mais c'est bon j'ai ENFIN pigé mdr.
La page HTML est bien créée mais elle ne contient pas ce que l'on cherche.

Code : Tout sélectionner

<!DOCTYPE html>
<html>
	<head>
		<title>Action not found</title>
		<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlFJREFUeNqUU8tOFEEUPVVdNV3dPe8xYRBnjGhmBgKjKzCIiQvBoIaNbly5Z+PSv3Aj7DSiP2B0rwkLGVdGgxITSCRIJGSMEQWZR3eVt5sEFBgTb/dN1yvnnHtPNTPG4PqdHgCMXnPRSZrpSuH8vUJu4DE4rYHDGAZDX62BZttHqTiIayM3gGiXQsgYLEvATaqxU+dy1U13YXapXptpNHY8iwn8KyIAzm1KBdtRZWErpI5lEWTXp5Z/vHpZ3/wyKKwYGGOdAYwR0EZwoezTYApBEIObyELl/aE1/83cp40Pt5mxqCKrE4Ck+mVWKKcI5tA8BLEhRBKJLjez6a7MLq7XZtp+yyOawwCBtkiBVZDKzRk4NN7NQBMYPHiZDFhXY+p9ff7F961vVcnl4R5I2ykJ5XFN7Ab7Gc61VoipNBKF+PDyztu5lfrSLT/wIwCxq0CAGtXHZTzqR2jtwQiXONma6hHpj9sLT7YaPxfTXuZdBGA02Wi7FS48YiTfj+i2NhqtdhP5RC8mh2/Op7y0v6eAcWVLFT8D7kWX5S9mepp+C450MV6aWL1cGnvkxbwHtLW2B9AOkLeUd9KEDuh9fl/7CEj7YH5g+3r/lWfF9In7tPz6T4IIwBJOr1SJyIGQMZQbsh5P9uBq5VJtqHh2mo49pdw5WFoEwKWqWHacaWOjQXWGcifKo6vj5RGS6zykI587XeUIQDqJSmAp+lE4qt19W5P9o8+Lma5DcjsC8JiT607lMVkdqQ0Vyh3lHhmh52tfNy78ajXv0rgYzv8nfwswANuk+7sD/Q0aAAAAAElFTkSuQmCC">
	    <style>
		    html, body, pre {
		        margin: 0;
		        padding: 0;
		        font-family: Monaco, 'Lucida Console', monospace;
		        background: #ECECEC;
		    }
		    h1 {
		        margin: 0;
		        background: #AD632A;
		        padding: 20px 45px;
		        color: #fff;
		        text-shadow: 1px 1px 1px rgba(0,0,0,.3);
		        border-bottom: 1px solid #9F5805;
		        font-size: 28px;
		    }
		    p#detail {
		        margin: 0;
		        padding: 15px 45px;
		        background: #F6A960;
		        border-top: 4px solid #D29052;
		        color: #733512;
		        text-shadow: 1px 1px 1px rgba(255,255,255,.3);
		        font-size: 14px;
		        border-bottom: 1px solid #BA7F5B;
		    }
		</style>
	</head>
	<body>
		<h1>Action not found</h1>

		<p id="detail">
			For request 'POST /'
		</p>

	</body>
</html>

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 15 févr. 2019, 16:45

C'est que la méthode d'authentification n'est pas bonne.
J'utilise ce bout de script sur quelques sites, mais il doit y avoir une subtilité sur ta page de login.
Comme je te le disais, pas facile en aveugle :(
Merci à toute l'équipe pour le taf

Mon matériel

Avatar de l’utilisateur
Sattaz
Timide
Messages : 191
Inscription : 22 nov. 2015, 20:34

Re: Script HTML

Message par Sattaz » 17 févr. 2019, 17:42

Salut,

J'ai aussi essayé de passer la page d'identification et la subtilité est de 'cliquer' sur le le bouton login ...
Je sais le faire par du code VB.NET mais je n'y parviens pas en curl ...

Regarde mon post ici: viewtopic.php?f=137&t=37456
Petit extrait du code .NET:

Code : Tout sélectionner

            Dim inputs As HtmlElementCollection = brwsConnect.Document.GetElementsByTagName("input")
            For Each pElem As HtmlElement In inputs
                If (pElem.GetAttribute("name") = "barCode") Then
                    pElem.SetAttribute("value", Trim(TextBoxCodeBarre.Text))
                End If
                If (pElem.GetAttribute("name") = "pwd") Then
                    pElem.SetAttribute("value", Trim(TextBoxMotDePasse.Text))
                End If
                If (pElem.GetAttribute("name") = "ImageButton1") Then
                    pElem.InvokeMember("click")
                    Exit Sub
                End If
            Next
-> j'identifie l'objet 'ImageButton1" puis je simule un click ...

Sébastien
Sébastien

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 17 févr. 2019, 20:06

Intéressant ! Je ferai un ou deux tests demain alors
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 18 févr. 2019, 08:17

romanais a écrit :
17 févr. 2019, 20:06
Intéressant ! Je ferai un ou deux tests demain alors
:ugeek: :ugeek:

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 18 févr. 2019, 10:28

Salut, tu peux tester ça stp ? En changeant les login/pass au début du script.

Code : Tout sélectionner

<?php
// ************* DEBUT DES VARIABLES
$username = 'login';
$password = 'pass';
$login_url = 'http://smartemp.hayward.fr:9000/login'; //url de la page d'accueil (identification)
$cookie = 'PLAY_LANG=en'; //contenu du cookie
$source= 'http://smartemp.hayward.fr:9000/'; //page à récupérer
$pompe_html = '/var/www/html/pompe.html'; //page créée
$x = "50";
$y = "14";

// ************* FIN DES VARIABLES

//initialisation curl
$ch = curl_init();

//en-têtes http
$header[0] = "Host: http://smartemp.hayward.fr:9000";
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
$header[] = "Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7"; 
$header[] = "Accept-Charset: utf-8";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Pragma: no-cache";
$header[] = "Cache-control: max-age=0";
$header[] = "Origin: http://smartemp.hayward.fr:9000";
$header[] = "Upgrade-Insecure-Requests: 1";
$header[] = "Content-Type: application/x-www-form-urlencoded";
$header[] = "Accept-Encoding: gzip, deflate";
$header[] = "Referer: http://smartemp.hayward.fr:9000/login";
$header[] = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36";

//défini l'url de connexion/identification
curl_setopt($ch, CURLOPT_URL, $login_url);
//active HTTP POST
curl_setopt($ch, CURLOPT_POST, 1);
//affecte les variables à envoyer et le clic sur le bouton de connexion
curl_setopt($ch, CURLOPT_POSTFIELDS, 'barCode='.$username.'&pwd='.$password.'&ImageButton1.x='.$x.'&ImageButton1.y='.$y);

//défini les en-têtes http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

// Définition de la méthode d'authentification du serveur
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

//gestion du cookie
curl_setopt( $curl, CURLOPT_COOKIE, $cookie);

//Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
//not to print out the results of its query.
//Instead, it will return the results as a string return value
//from curl_exec() instead of the usual true/false.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//exécute la requête - login
$store = curl_exec($ch);

curl_close($ch); // on ferme la session curl

//enregistre le contenu de la page dans un fichier html
file_put_contents($pompe_html, $store);

//change les droits sur le fichier - écriture
chmod($pompe_html,0777);
?>
Et tu ouvres ensuite la page pompe.html à la racine de ta box Jeedom pour voir ce qu'elle contient.
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 18 févr. 2019, 10:50

J'ai une page blanche sans rien

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 18 févr. 2019, 11:07

Par contre, si je rentre un mauvais mots de passe je me retrouve avec un semblant de page du login.
Si le mots de passe est bon, je me retrouve avec une page blanche

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 18 févr. 2019, 11:22

C'est pour ça que j'ai posté ce bout de code, il y avait du mieux dans la validation car j'avais aussi du contenu différent qui s'affichait, comme si cette fois l'envoi du formulaire passait bien.
Moi j'avais ça par exemple (comme je ne connais pas l'id de l'appareil)
The device hasn’t be activated, please login the device with the mobile phone!
Quand tu te connectes à la main, tu me disais qu'ensuite la page affichée était http://smartemp.hayward.fr:9000
Mais si tu essaies de retourner sur la page http://smartemp.hayward.fr:9000/login, ça donne quoi dans ton navigateur ?
Il te redirige, ou il te repropose de te connecter ?
Dernière édition par romanais le 18 févr. 2019, 11:30, édité 1 fois.
Merci à toute l'équipe pour le taf

Mon matériel

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 18 févr. 2019, 11:26

J'ai changé un truc, si tu veux tester.

Code : Tout sélectionner

<?php
// ************* DEBUT DES VARIABLES
$username = 'login';
$password = 'pass';
$login_url = 'http://smartemp.hayward.fr:9000/login'; //url de la page d'accueil (identification)
$cookie = 'PLAY_LANG=en'; //contenu du cookie
$source= 'http://smartemp.hayward.fr:9000/'; //page à récupérer
$pompe_html = '/var/www/html/pompe.html'; //page créée
$x = "50";
$y = "14";

// ************* FIN DES VARIABLES

//initialisation curl
$ch = curl_init();

//en-têtes http
$header[0] = "Host: http://smartemp.hayward.fr:9000";
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
$header[] = "Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7"; 
$header[] = "Accept-Charset: utf-8";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Pragma: no-cache";
$header[] = "Cache-control: max-age=0";
$header[] = "Origin: http://smartemp.hayward.fr:9000";
$header[] = "Upgrade-Insecure-Requests: 1";
$header[] = "Content-Type: application/x-www-form-urlencoded";
$header[] = "Accept-Encoding: gzip, deflate";
$header[] = "Referer: http://smartemp.hayward.fr:9000/login";
$header[] = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36";

//défini l'url de connexion/identification
curl_setopt($ch, CURLOPT_URL, $login_url);
//active HTTP POST
curl_setopt($ch, CURLOPT_POST, 1);
//affecte les variables à envoyer et le clic sur le bouton de connexion
curl_setopt($ch, CURLOPT_POSTFIELDS, 'barCode='.$username.'&pwd='.$password.'&ImageButton1.x='.$x.'&ImageButton1.y='.$y);

//défini les en-têtes http
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

// Définition de la méthode d'authentification du serveur
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

//gestion du cookie
curl_setopt( $curl, CURLOPT_COOKIE, $cookie);

//Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
//not to print out the results of its query.
//Instead, it will return the results as a string return value
//from curl_exec() instead of the usual true/false.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//exécute la requête - login
$store = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, $source);
//execute la requête
$content = curl_exec($ch);

curl_close($ch); // on ferme la session curl

//enregistre le contenu de la page dans un fichier html
file_put_contents($pompe_html, $store);

//change les droits sur le fichier - écriture
chmod($pompe_html,0777);
?>
Merci à toute l'équipe pour le taf

Mon matériel

yostone
Timide
Messages : 106
Inscription : 04 févr. 2019, 07:15

Re: Script HTML

Message par yostone » 18 févr. 2019, 11:53

romanais a écrit :
18 févr. 2019, 11:22
C'est pour ça que j'ai posté ce bout de code, il y avait du mieux dans la validation car j'avais aussi du contenu différent qui s'affichait, comme si cette fois l'envoi du formulaire passait bien.
Moi j'avais ça par exemple (comme je ne connais pas l'id de l'appareil)
The device hasn’t be activated, please login the device with the mobile phone!
Quand tu te connectes à la main, tu me disais qu'ensuite la page affichée était http://smartemp.hayward.fr:9000
Mais si tu essaies de retourner sur la page http://smartemp.hayward.fr:9000/login, ça donne quoi dans ton navigateur ?
Il te redirige, ou il te repropose de te connecter ?
Il me repropose de me loguer et oui j 'ai la meme réponse que toi the device...

Rien de plus avec le nouveau code :(

romanais
Actif
Messages : 1999
Inscription : 21 août 2014, 21:36
Localisation : Drôme

Re: Script HTML

Message par romanais » 18 févr. 2019, 12:07

Bon ben mince, je vais caler ici je pense, à tâtons je ne trouverai pas plus d'infos sur les paramètres passés entre le navigateur et le serveur.
Merci à toute l'équipe pour le taf

Mon matériel

Répondre

Revenir vers « [Plugin officiel] Scripts »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité