Récupération de données html plugin script

Bon c’est ce que je supposait qui allait se passer

je vais donc modifier un peut le code
pour pouvoir changer de groupe.

(du devrait décoher solution avant d’avoir toutes les réponses)

merci de me laisser un peut de temps je repasse dés que c’est pret

Bon voilà un peut plus de lignes j’ai fait en sorte que le premier paramètre soit
ton n° de relais tu peut donc mettre des chiffres de 1 à 8 avant l’url

#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
if (argv[1] == '1') or (argv[1] == '5'):
    v=4
if (argv[1] == '2') or (argv[1] == '6'):
    v=6
if (argv[1] == '3') or (argv[1] == '7'):
    v=8
if (argv[1] == '4') or (argv[1] == '8'):
    v=10
if BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[0][7:8] != argv[1] :
    BeautifulSoup(requests.get(argv[2]).content, "html.parser")
print(0 if 'OFF'==BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[1] else 1)

Pas mal :slight_smile:

relais activés de 1 à 4:
image

relais activés de 5 à 8:
image

On y est presque aussi, les 2 groupes sont juste inversés

Bonjour @vico

Sur cette page: 101-70-141 - [[:Template:SainSmart Wiki]], il y a la doc et une vidéo de votre matériel ou similaire.

Dans la vidéo, on voit bien que l’accès à la 1ère page se fait par IP/port//42 et à la 2ème page par IP/port/43
J’adore les commentaires sonores du perforateur. :rofl:

tu entend quoi par inversé ?
si tu veut le résultat inverse tu met :

print(0 if 'ON'==BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[1] else 1)

ON au lieu de OFF dans la dernière ligne

C’est bon comme ça ?

Il est bizarre ton test ternaire:
Google me dit:

condition_if_true if condition else condition_if_false

Je n’y connais rien en python. Mais je crois que tu as fait l’inverse. S’il y a ON, il faut afficher 1.

oui donc si dans la der ligne on inverse on et off …
on va voir ce que dit @vico aprés cette manip …

Bonjour à tous,
Je viens de suivre vos débats particulièrement intéressants pour moi qui commence à découvrir ce qu’est une URL et comment l’utiliser dans le plugin SCRIPT.

Pouvez vous me dire comment affecter le résultat d’une URL d’information à une variable, en me donnant si possible un exemple simple?

Je ne connais pas certains des langages que vous utilisez.

Merci par avance pour votre réponse.

Bonjour @Philoulegrand30

Dans le script en PHP, il faut inclure au début le fichier des définitions des classes Jeedom.

require_once '/var/www/html/core/php/core.inc.php';

L’instruction pour affecter une valeur à une variable est:

scenario::setData('nomDeLaVariable', valeur);

La récupération dans un virtuel se fait avec:

variable(nomDeLaVariable)

image

Ça serait mieux si vous ouvriez un sujet différent plutôt que de squatter celui de vico.

Merci pour cette réponse précise. Je me déporte immédiatement en créant un sujet dès que je rencontre une difficulté. Mais je continue à suivre le vôtre qui me permettra de progresser, j’en suis certain. :innocent:

si tu utilise le plugin-script
le script retourne la valeur dans la commande info correspondante
il te suffit dans un scénario par exemple de l’utiliser directement
#[objet][equipement][commande]#

Maintenant tu peut depuis un scénario appeler un script sans passer par le plugin-script
avec un bloc action.
exemple :

$output0 = shell_exec('python3 /var/www/html/sh/soupe 0 https://www.meteoblue.com/fr/meteo/semaine/yerres_france_2967245');
$tags['#msg#'] = $output0."
$scenario->setTags($tags);

et la dans la suite du scénario tu peu manipuler le tag #msg#
et même affecter une variable avec la valeur de ce tag si tu veut la mémorisée

Autant pour moi,
je disais ‹ ‹ inversé › › car quand j’active les relais de 1 à 4, c’est les relais de 5 à 8 qui sont indiqués activés sur jeedom et inversement.
Ou par exemple si j’active le relais 3, ça sera le relais 7 qui sera marqué activé.

test ca pour voir

#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
if (argv[1] == '1') or (argv[1] == '5'):
    v=4
if (argv[1] == '2') or (argv[1] == '6'):
    v=6
if (argv[1] == '3') or (argv[1] == '7'):
    v=8
if (argv[1] == '4') or (argv[1] == '8'):
    v=10
BeautifulSoup(requests.get(argv[2]).content, "html.parser")
if BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[0][7:8] != argv[1] :
    BeautifulSoup(requests.get(argv[2]).content, "html.parser")
print(0 if 'OFF'==BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[1] else 1)

Bonjour,

Oui le son n’était vraiment pas nécessaire :D,
Je ne savais même pas qu’une vidéo existait de cette carte tellement elle est low cost, mais en tout cas ça y ressemble très fortement !
Oui en effet, mais il n’a pas fait f5 sur une page en /42 ou /43 :smiley:

Pas de changement

Configuration:

Test avec relais relais 4, le 8 est indiqué actif

bizard car si je n’ai pas le bon n° de relay je redemande bien la page …
je réfléchi …

essai avec quand tu met les relay:
1 a 4 de mettre /42 a la fin de tes commandes
5 a 8 de mettre /43 a la fin de tes commandes

avec ce code :

#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
if (argv[1] == '1') or (argv[1] == '5'):
    v=4
if (argv[1] == '2') or (argv[1] == '6'):
    v=6
if (argv[1] == '3') or (argv[1] == '7'):
    v=8
if (argv[1] == '4') or (argv[1] == '8'):
    v=10

print(0 if 'OFF'==BeautifulSoup(requests.get(argv[2]).content, "html.parser").find_all('p')[v].text.split()[1] else 1)


Aîl :sa:

Relais 1 à 4 activés :
image

Relais 5 à 8 activés:
image

config:

Mais j’ai une solution PHP qui fonctionne maintenant sinon :slight_smile:
Je voudrais pas non plus te faire perdre encore longtemps ton temps si jamais :smiley:

Tu n’aurait pas un 2 ieme script (le php par exemple) qui fonctionne en même temps et qui ferait changer l’adresse une fois sur 2 ?

non pour les essaies, le 2eme n’est pas activé