bonjour,
je suis sur Raspberry pi 4 SSS en V4
et je n’arrive pas à récupérer les info sur un script. Peut-être une erreur de syntaxe je pense pas et je ne vois l’erreur.
<?php
// analyse des arguments
if (isset($argv)) {
foreach ($argv as $arg) {
$argList = explode('=', $arg);
if (isset($argList[0]) && isset($argList[1])) {
$_GET[$argList[0]] = $argList[1];
}
}
}
//Récuperation des variables
if(!isset($_GET['token'])){
echo "Erreur : Merci de renseigner votre token.";
}
else{
$token = $_GET['token'];
}
if(!isset($_GET['action'])){
echo "Erreur : Merci de renseigner l'action.";
}
else{
$action = $_GET['action'];
}
if(!isset($_GET['day'])){
echo "Erreur : Merci de renseigner la date.";
}
else{
$day = date("yy-m-d");
}
if(!isset($_GET['type'])){
echo "Erreur : Merci de renseigner le type.";
}
else{
$type = $_GET['type'];
}
if( $action == "getStockStatus"){
$json = file_get_contents("https://xxxxxxxxxx/api.php?token=$token&type=$type&action=$action&day=$day");
$data = json_decode($json,true);
//initialisation des variables à partir des données récupérées
$remains = $data->remains;
$percent = $data->percent;
//Affichage dse données
echo '<p>Consommation</p>';
echo '<p>Silo</p>';
echo 'Restants : '.$remains.'Kgs</br>';
echo 'Pourcentages : '.$percent.'%</br>';
}
else{
echo "Erreur dans les paramètres.";
}
?>
Résultat de la commande : PHP Notice: Trying to get property 'remains' of non-object in /var/www/html/plugins/script/data/Stocks_oko.php on line 47 PHP Notice: Trying to get property 'percent' of non-object in /var/www/html/plugins/script/data/Stocks_oko.php on line 48
Consommation
Silo
Restants : Kgs
Pourcentages : %
olive
Mars 5, 2021, 1:57
2
a tu tester ta requette dans un navigateur ?
https://xxxxxxxxxx/api.php?token=$token&type=$type&action=$action&day=$day
$data = json_decode((trim($json),true));
ligne 47 et 48
$remains = $data->remains;
avec $x indice du tableau 0 pour le 1er
$remains = $data[$x]['remains'];
ou si il n'y en a qu'un
$remains = $data['remains'];
....
il y en à peut-être d’autre …
{"remains":70,"percent":52}
Consommation
Silo
Restants : Kgs
Pourcentages : %`
```
en mettant ceci
```
$data = json_decode((trim($json),true));
olive
Mars 5, 2021, 3:05
4
Tu a oublier le dernier point
remplacer tes lignes 47 et 48
$remains = $data->remains;
par
$remains = $data['remains'];
et idem pour percent
$data est un array pas une classe …
et est-ce que je dois laisser cette ligne ainsi
$data = json_decode((trim($json,true)));
olive
Mars 5, 2021, 3:12
6
trim te débarasse si il y en à des espaces des lignes suivantes et retours chariot
à toi de voir si ton json en contiens ou pas
https://www.php.net/manual/fr/function.trim.php
EDITE :
j’ai mal placé une ) ce serait plutôt
$data = json_decode((trim($json),true));
EDITE2 :
Un conseil oublie plugin-script pour du php
il est beaucoup plus simple d’utiliser un bloc code de scenario
plus facile a de-bug aussi.
des tag en entrée te permette d’instancier tes variables et paramètres
des tag en sortie te permette de manipuler avec des event dans des virtuels
1 « J'aime »
il y a une technique ou une méthode pour transposé ce script sur un bloc code php
olive
Mars 5, 2021, 5:31
9
c’est du php les 2 voilà un exemple à toi d’adapter
$login='envoy';$passwd='011770';$ip = '192.168.0.248';
$tags = $scenario->getTags();
$request_http = new com_http('http://'.$ip.'/api/v1/production/inverters',"$login","$passwd");
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$json=json_decode(trim($request_http->exec()), true);
$tableau = "<table><tr><td>Paneau</td><td>N° de Série</td><td>Moment</td><td>Type</td><td>Puissance</td><td>Maxi</td></tr>";
$x=0;
$total=0;
foreach ($json as &$value) {
$y = $x + 1;
$tableau .= '<tr>';
$tableau .= '<td>'.$y.'</td>';
$tableau .= '<td>'.$json[$x]['serialNumber'].'</td>';
$tableau .= '<td>'.date('H:i:s d-m-Y',$json[$x]['lastReportDate']).'</td>';
$tableau .= '<td>'.$json[$x]['devType'].'</td>';
$tableau .= '<td>'.$json[$x]['lastReportWatts'].' W</td>';
$total += (int)$json[$x]['lastReportWatts'];
$tableau .= '<td>'.$json[$x]['maxReportWatts'].' W</td>';
$tableau .= "</tr>";
$x+=1;
}
$tableau .= "</table>";
$tableau = str_replace("<td>","<td style ='border: 1px solid red;height: 30px;padding-right: 2px;padding-left: 2px;'>",$tableau);
$scenario->setLog($total);
$scenario->setLog($tableau);
//unset($value);
$tableau = 'Total '.$total.' Watts'.$tableau;
$tags['#tableau#'] = $tableau;
$scenario->setTags($tags);
la sortie est un tag
la 1ere ligne pourait être des tag en entrée aussi
@olive
Oui j’avais vu cette exemple, j’essaie de comprendre et d’adapter
Etant nocive je tatonnne…
olive
Mars 5, 2021, 5:43
11
commence par adapter le début
fait un bloc code avec ça dedans remplace ta ligne http
$request_http = new com_http('http://tonurl');
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$json=json_decode(trim($request_http->exec()), true);
$scenario->setLog($json);
et regarde le log de ton scenario une fois executer manuellement !
voici le log de sortie du bloc
------------------------------------
[2021-03-05 18:49:33][SCENARIO] -- Start : Scenario lance manuellement.
[2021-03-05 18:49:33][SCENARIO] - Exécution du sous-élément de type [action] : code
[2021-03-05 18:49:33][SCENARIO] Exécution d'un bloc code
[2021-03-05 18:49:33][SCENARIO] - ----------------------------------------
[2021-03-05 18:49:33][SCENARIO] - - Framework sc v0.993e
[2021-03-05 18:49:33][SCENARIO] - - Vos scenarios en PHP
[2021-03-05 18:49:33][SCENARIO] - - by dJuL
[2021-03-05 18:49:33][SCENARIO] - ----------------------------------------
[2021-03-05 18:49:33][SCENARIO] - INFO: DOCUMENTATION DISPONIBLE EN LOCAL EN CLIQUANT ICI
[2021-03-05 18:49:33][SCENARIO] - - -
[2021-03-05 18:49:33][SCENARIO] - /* - Execution du Bloc code n°1 - DEBUG NATIF ACTIF (php >= v7) */
[2021-03-05 18:49:33][SCENARIO] - - -
[2021-03-05 18:49:33][SCENARIO] Array
[2021-03-05 18:49:33][SCENARIO] - - -
[2021-03-05 18:49:33][SCENARIO] - /* - Fin du Bloc code n°1 - */
[2021-03-05 18:49:33][SCENARIO] - - -
[2021-03-05 18:49:33][SCENARIO] Durée d'exécution (depuis le 1er bloc code) : 29.41 millisecondes
[2021-03-05 18:49:33][SCENARIO] Fin correcte du scénario
Donc il n’y a rien comme données ?
olive
Mars 5, 2021, 6:01
14
on peut voir ce que tu a mis dans le bloc code ça correspond pas du tout a ce que j’ai indiqué ?
$request_http = new com_http('https://192.168.1.25/api.php?token=f37f393238a9&type=rendu&action=getStockStatus&day=2021-03-05');
$request_http->setCURLOPT_HTTPAUTH(CURLAUTH_DIGEST);
$json=json_decode(trim($request_http->exec()), true);
$scenario->setLog($json);
olive
Mars 5, 2021, 6:04
16
quand tu tape
https://192.168.1.25/api.php?token=f37f393238a9&type=rendu&action=getStockStatus&day=2021-03-05
ça répond quoi ?
{"remains":70,"percent":52}
C’est ça que je trouve bizarre !!
C’est peut-être à cause du Framework de Djul ??
olive
Mars 5, 2021, 6:10
19
ok
maintenant ajoute
$scenario->setLog("remains = ".$json['remains']);
$scenario->setLog("percent = ".$json['percent']);
------------------------------------
[2021-03-05 19:12:40][SCENARIO] -- Start : Scenario lance manuellement.
[2021-03-05 19:12:40][SCENARIO] - Exécution du sous-élément de type [action] : code
[2021-03-05 19:12:40][SCENARIO] Exécution d'un bloc code
[2021-03-05 19:12:41][SCENARIO] Array
[2021-03-05 19:12:41][SCENARIO] remains = 70
[2021-03-05 19:12:41][SCENARIO] percent = 52
[2021-03-05 19:12:41][SCENARIO] Fin correcte du scénario
Super il sort quelque chose
Maintenant faut que je déclare les variables ? et les sorties ?