Recupérer variable jeedom pour script python --> remplacé par 2 scénarii

Bonjour,

Je viens de passer de jeedom v3 en v4. J’avais dans l’ancienne version des scripts python qui étaient ok.
L’interface de la V4 ayant changé, je ne peux plus rentrer l’endroit de mon équipement où trouver la variable.

Cela fait plusieurs jours maintenant que j’écume le forum et internet pour trouver le moyen de rapatrier ma variable pour l’exploiter dans mon script, sans succes. Beaucoup de liens morts vers des pages en error 404. Beaucoup de choses pour php ou html, mais maigre pour python.Donc je viens vers vous pour trouver une bonne âme qui veuille bien m’aider.

Voila un exemple de script python que j’utilise. c’est pour ma prod solaire:
manque plus qu’a recuperer la valeur pour argv[1]

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os.path
import datetime
import time

t = datetime.datetime.now()  
heure = t.strftime("%H")
minut = t.strftime("%M")  
 
# si c'est 23h10 on sauvegarde l'index
# sinon on lit la valeur de l'index sauvée le soir qu'on
# vient déduire de l'index en cours pour avoir la prod du jour


if heure == '23': 
		if (minut == '10'):
  			# sauvegarde ancien index
			foc = open("/home/pi/Datas/Jeedom/Index-Est.csv",'w')
			foc.write(str(sys.argv[1])+",#")
			foc.close()
else:
  		# lecture fichier ancien index
  		foc = open("/home/pi/Datas/Jeedom/Index-Est.csv",'r')
		foc.seek(0)
		linesList = foc.readlines()
		for line in linesList:
   			s = linesList.index(line)
		AncIndex = line.split(",")
		foc.close()
    	# done l'index ancien en valeur[0]

  		# calcul de la prod
		prod = (int(sys.argv[1])-int(AncIndex[0])) 		
  		print prod

Merci à vous

Salut, déjà il faudrait peut être simplifier les choses.

1 je partirais d’un scenario avec un déclencheur programmé (chaque jours a 23h00)
2 dans le scenario utilise un bloc code avec un shell_exec
avec une ligne du genre

$variable_retour = shell_exec('chemin/nomduscript.py '.$parametre)

il faut bien sur que ton script soit avec des droits d’exécution.

Ton paramètre doit être dans une commande il te suffit de le récupérer
en début de bloc du scenario avec un truc comme çà
(j’ai mis 72 arbitrairement mais c’est le N° de l’ID de ta commande que tu doit mettre

$cmd = cmd::byId(72);
$parametre  = $cmd->execCmd();

Il ne te restera plus qu’a traiter

$variable_retour

(je ne sais ce que tu veut en faire …)

ps: tu t’embête avec tes « ancien et nouveaux index »
utilise une variable dans ton scenario stock ton index dedans
à 23H00 fait la différence dans jeedom puis lance ton script juste pour ajouter ta nouvelle valeur à ton fichier !

Merci olive pour être venu à mon aide. Je ne me sers pas des scénarios. Il va falloir que je lise la doc relative à cela pour essayé de comprendre comment ça marche. Ça me parait compliqué.

En fin de compte ce que je veux faire, c’est le soir récupérer l’index de mon compteur de prod solaire, pour pouvoir le lendemain faire la différence avec l’index en cours pour connaître la prod totale de la journée courante. C’est tout.

Je vais éplucher tout ça. Je te tiens au courant de ma progression…ou pas.

Merci encore.

La question est a tu besoin de ton fichier dans le quel tu sauvegarde chaques valeurs du jour ou pas ?
Si non ça peut encore être beaucoup plus simple.

je me sers du fichier juste pour mémorisé l’index du jour pour calculer la prod du lendemain.

je suis entrain de lire la doc
Merci :slight_smile:

Ok donc un simple scénario avec sauvegarde de la valeur suffit et la tu n’a plus besoin de script.

jeedom dispose de variables que tu peut lire ou écrire

il te suffit de mettre ton index dans une variable et chaque jours a 23h00 faire la difference …

au fil de la journée pour voir ce que tu a produit dans un virtuel par exemple …

EDIT :

En fait il faut mieux faire 2 trés petit scenario

plus ou moins le nom des commandes ca devrait donner un truc comme ça …

Le premier stock ton index tout les soir a 23H00

Le deuxième lui va rafraîchir un virtuel a chaque changement de l’index

La doc est sèche ! pas d’exemple pour aider à comprendre. L’interface n’est pas simple non plus.

Alors dans l’onglet « général » : j’ai créé un scénario, je l’ai nommé, activé, parenté. Dans mode scénario j’ai mis programmé.

Dans l’onglet « scénario » j’ai créer un bloc « A »
l’heure j’ai mis : 2310 pour 23h10

j’ai fait ajouter code :

par contre je ne sais pas quoi mettre dedans.
Ma donnée a récupérer est là → #[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]#

j’ai lu dans la doc qu’il y avait :
$scenario->getData($key); : Récupère une donnée (variable).
$scenario->setData($key, $value); : Sauvegarde une donnée (variable).

Et la je suis comme une poule devant un couteau, je ne sais pas quoi faire et où ?

Merci encore du temps que tu me consacre :slight_smile:

regarde le message précédent j’ai éditer … avec exemples

ok merci, on s’est croisé

Ton evenement déclancheur est sur le 2ieme scénario

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]#

et c’est aussi ta valeur dans le premier ( que tu met dans la variable memoire-index)

et il sert au calcul aussi dans la valeur du 2iéme

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# - variable(memoire-index)

voila il va peut être te manquer un virtuel pour afficher ta production du jour si tu ne l’a pas déjà fait
(c’est celui que j’ai appeler #[voltaïque][affichage][prod-jour]# dans le deuxième scénario)
:coffee:

Juste pour le fun et donner envie ce continuer :upside_down_face:

Capture d’écran du 2020-07-17 23-02-46

ah oui c’est magnifique ! bravo !

j’ai 3 installations solaires 1 de vente a edf et 2 autres en auto-consomation.

j’ai réussi a créer les 2 scénarios comme tu sur tes photos. Je cherche où rentrer les dernières infos que tu m’as donné.

Est que le premier scénario (celui de 23h00) pourra être réutilisable pour relever un autre index à la même heure ?

oui bien sur il te suffira d’ajouter une 2 ieme action et d’utiliser un autre nom de variable et un autre index.

même combat dans le 2 ième
avec 2 déclancheurs

ok, je suis pas sur d’avoir compris le 1er combat. J’ai créé la variable « mon index sud » avec jeedom/outils/variables. le reste je comprends pas ce que je dois en faire.

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# --> 2 eme scenario, je fais comment ?
#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# - variable(memoire-index) -->idem

Tu n’a pas besoin de créer les variables
lorsque le scénario va se déclenché ou si tu fait exécuter a la mains la variable va se créer toute seule …

je suis pas sur que mettre des espaces dans les variables soit une bonne chose met
mon_index_sud

Je te remercie de ton aide et de ta patience. Il est tard, je verrai demain pour terminer les scénarios. je te souhaite une très bonne nuit :slight_smile:

ça marche bonne nuit !

bonjour,

Je fais le point. Donc après avoir créé les 2 scénarios comme conseillés dans les 2 images plus haut. j’ai essayé sans succès après moult essais en variantes de caser les instructions suivantes:

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# et

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# - variable(memoire-index)

j’ai essayé de les mettre dans un bloc « A », un bloc « action ». lorsque j’éxécute les scénarios, l’index apparait bien dans les log avec ensuite « commande invalide ». Je ne vois pas comment récupérer la variable pour ensuite m’en servir dans le cacul de production ni l’affichage dans un virtuel.

Bref, c’est la galère !

j’ai cherché sur youtube, sur le forum, mais pas grand chose d’exploitable pour moi. Je sollicite à nouveau votre aide car cette histoire commence à me prendre beaucoup de temps.

merci à vous

Oublie le A c’est compliqué et tu n’en a pas besoin

il faut tester les morceaux 1 à 1

Quel est la valeur de memoire-index dans outils variable

que donne dans le testeur d’expression

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]#

puis

variable(memoire-index)

puis

variable(memoire-index) - variable(memoire-index)

Est tu bien sur de de l’écriture de ton tag :
#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]#

l’a tu pris avec l’utilitaire de recherche de commande ?

bonjour Olive et merci encore pour ton aide :slight_smile:

#[maison][autoconso-sud -Capteur Teleinfo - 4][Energie 3]# testé dans le testeur d’expression me renvoie
2704555 qui est bien mon index.

variable(memoire-index) testé dans le testeur d’expression renvoie «  » ou rien

j’ai bien la réference avec du tag avec la recherche de commande

bon met dans la variable 2704500 pour voir
et test le 2ième scénario