Aller au contenu

Messages recommandés

Posté(e)

Bon, les scripts, c'est dans la poche, j'essayerai de faire un tuto séparé, rien de très compliqué en fait.

 

et ça c'est Wunderground, pour le moment c'est assez.

 

2016-12-09_13-43-57.png

  • Upvote 1
Posté(e)

Nickel !! j'utilise deja ton VD ;-) sur fibaro

Bon arrete j'ai vouloir tester vraiment Jeedom..mais j'ai rien pour le mettre dessus et j'aurai pas un bon maillage, il suffit ;-) de me tenter

 

Nickel, tu as utilisé le framework SC ou non ?

Posté(e)

Non, pas encore, là j'ai compris les bêtes scripts PHP.

Tu sais sur mon Jeedom, je n'ai que 3 devices zwave hein... le Z-wave ce n'est qu'une toute petite partie (qui est en plus désespérément stable pour le moment sur la HC2 ;-) ) facilement transférable.

Je.ne fais que m'amuser avec tout ce qui est en IP et la logique.

Sent from my Note4

  • Upvote 1
Posté(e) (modifié)

@sebcbien,

 

et avec tes 3 devices, jeedom est solide ?

 

oui c'est sur tu es bête en php..et en dev, il n'y a qu'a regarder ta signature lol ...mais bien sur, et la marmotte ;-)

Modifié par pepite
  • Upvote 1
Posté(e)

Seb tu as fait ce vd script  que pour le fun ou tu vas t'en servir ? 

 

Car juste avec Clic clic clic tu peux avoir la même chose avec le plugin météo? 

Posté(e)

Oui oui j'utilise le plugin météo, mais pour moi rien ne vaut la précision des prévisions de Wunderground (dans ma région en tout cas)

Et il y avait un plugin Wunderground, mais il n'est plus suivi par son auteur.

Ceci dit, pour Wunderground c'est un scripteke de rien du tout (cikc click click tap tap tip tap CTRL+C CTRL+V tip tap tip toc click click clik). :)

 

Pour le HUB de notifications par contre, j'ai tourné en rond pour faire ce que je voulais et j'en ai profité pour tester un vrai script (de base mais en php).

  • Upvote 1
Posté(e)

comment créer un widget en deux coups de cuiller à pot:

Copier sur le forum un code écrit par des Maîtres, Dieux, légendes et autres ;-)

Créer un nouveau script, cliquer sur nouveau, coller le code, sauver, ajouter les paramètres (adresse IP, clef api et mode de fonctionnement)

Ter-mi-né

Au passage, je vous invite à analyser ce code assez didactique... rien de trop compliqué:

les if(isset ... servent à récupérer les paramètres passés au script (adresse IP, clef api et mode de fonctionnement)

un peu de vérifications de variables (match)

ensuite c'est if then else as usual

2016-12-09_23-06-58.png

Voici le code complet pour analyse:

<?php
	/** VERIFICATION DES VARIABLES OPTIONNELLES **/
	$zwave_port = "8083";
	//Si le port est indiqué on le set, sinon c'est celui par defaut
	if(isset($argv[4])){
		$zwave_port = $argv[4];
	}
	
	//Folder json temporaire
	$zwave_health_json = '/tmp/zwave_health.json';
	if(isset($argv[5])){
		$zwave_health_json = $argv[5];
	}
	
	/** VERIFICATION DES VARIABLES OBLIGATOIRES **/
	
	//Verification de la présence des arguments obligatoires
	if(!isset($argv[1]) || !isset($argv[2]) || !isset($argv[3])){
		echo "Tout les arguments ne sont pas présents.";
		
	}
	//Verification si l'ip est correcte
	else if(!preg_match("#([0-9]{1,3}\.){3}[0-9]{1,3}#", $argv[1])){
		echo "L'adresse IP semble être incorrecte.";
		echo "<br />";
		echo "Merci de vérifier.";
	}
	//Verification si la clé API jeedom est correcte
	else if(!preg_match("#[0-9A-Za-z]#", $argv[2])){
		echo "La clé API semble être incorrecte.";
		echo "<br />";
		echo "Merci de vérifier.";
	}
	//Verification sur le code affichage
	else if(!preg_match("#[0-3]{1}#", $argv[3])){
		echo "Le code affichage semble être incorrect.";
		echo "<br />";
		echo "Merci de vérifier.";
	}
	else{
		//IP jeedom (parametre)
		$ip = $argv[1]; 		
		//API Key pour acces page sante ZWave
		$api_key = $argv[2];
		//Affichage sur le dashboard: 0 - Modules Deads / 1 - Modules Timeout + Dead / 2 - Tout les modules
		$show_option = $argv[3];
		
		//USER CONFIRME - NE MODIFIER CES VALEURS QUE SI BESOIN
		//Adresse de la page santé
		$api_health = "/ZWaveAPI/Run/network.GetHealth%28%29";
		
		/** TRAITEMENT **/
		
		//Construction de l'URL de la page santé zwave
		$url = "token:".$api_key."@".$ip.":".$zwave_port.$api_health;
		
		//initialisation curl
		$curl = curl_init();
		//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($curl, CURLOPT_RETURNTRANSFER, 1);
		//connexion effectuée, on accède à la page de santé zwave
		curl_setopt($curl, CURLOPT_URL, $url);
		//execute la requête
		$content = curl_exec($curl);
		//enregistre le contenu de la page santé dans un fichier json
		file_put_contents($zwave_health_json, $content);
		//change les droits sur le fichier - écriture
		chmod($zwave_health_json, 0777);
		//convertis certains caractères pour ne pas avoir de souci d'affichage dans les tuiles
		//correspondance trouvée ici http://www.eteks.com/tips/tip3.html
		$bad_letters = array('\u00e0','\u00e2','\u00e4','\u00e7','\u00e8','\u00e9','\u00ea','\u00eb','\u00ee','\u00ef','\u00f4','\u00f6','\u00f9','\u00fb','\u00fc'); //lettres à remplacer
		$good_letters   = array('à','â','ä','ç','è','é','ê','ë','î','ï','ô','ö','ù','û','ü'); //lettres de remplacement
		$text   = file_get_contents($zwave_health_json); //récupération du contenu du fichier
		$output  = str_replace($bad_letters, $good_letters, $text); // remplacement des caractères
		//réécris le fichier avec les caractères remplacés
		file_put_contents($zwave_health_json, $output);
		//récupère le contenu du json
		$json = file_get_contents($zwave_health_json);
		//analyse du contenu
		$modules = json_decode($json, true);
		
		$dead_modules = array();
		$timeout_modules = array();
		$ok_modules = array();
		//Idee: parcours des modules avec Tri timeout / Dead et ensuite l'affichage
		foreach ($modules['devices'] as $module){
			//On verifie que le module a des données
			if(isset($module['data']) && $module['data'] != null && $module['data'] != ""){
				//Verification que le module n'est pas sur pile/batterie
				if($module['data']['isListening']['value']){
					if(isset($module['last_notification'])){
						if($module['last_notification'] != null){
							if (utf8_decode($module['last_notification']['description']) == "Dead"){
								$dead_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
							}
							else if(utf8_decode($module['last_notification']['description']) == "Timeout"){
								$timeout_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
							}
							else{
								$ok_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
							}
						}
						
					}
					
				}
				//Traitement des modules piles
				else{
					$checked = false;
					//Modules Piles Timeout				
					if(isset($module['battery_level']['value'])){
						if($module['battery_level']['value'] == null){
							$timeout_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
							$checked = true;
						}
					}
					if($checked == false && isset($module['isFailed']['value'])){
						$dead_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
						$checked = true;
					}
					if($checked == false){
						$ok_modules[] = utf8_decode($module['data']['description']['location'])." - ".utf8_decode($module['data']['description']['name']);
					}
				}
			}
		}			
		/** HISTORISATION Dead Modules and Timeout **/
		echo "<br />";
		echo sizeof($dead_modules) + sizeof($timeout_modules);
		
		
		/** AFFICHAGE **/
		echo " modules HS: ";
		echo "<br />";
		/** Affichage des modules deads**/
		if($show_option >= 0){
			echo "<div style='color:red; text-decoration : underline;'>";
			echo "Modules Dead: ";
			echo "</div>";
			foreach($dead_modules as $dead_module){
				echo $dead_module;
				echo "<br />";
			}
		}
		echo "<br />";
		
		/** Affichage des modules timeouts **/
		if($show_option >= 1){
			echo "<br />";
			echo "<div style='color:darkorange; text-decoration : underline;'>";
			echo "Modules Timeout: ";
			echo "</div>";
			foreach($timeout_modules as $timeout_module){
				echo $timeout_module;
				echo "<br />";
			}
		}
		echo "<br />";
		
		/** Affichage des module restants **/
		if($show_option >= 2){
			echo "<br />";
			echo "<div style='color:limegreen; text-decoration : underline;'>";
			echo "Modules OK: ";
			echo "</div>";
			foreach($ok_modules as $ok_module){
				echo $ok_module;
				echo "<br />";
			}
		}
		
	}
?>

 

  • Upvote 2
Posté(e)

Salut salut, 

 

J'ai craque vite fait sur une debian que j'avais sur vmware macOS. 

 

Testé wget / chmod /./install.sh 

et ben c'est pas click click click :-)

Manquait une lib : libopts25 que jai du rajouter à partir du paquet

Et à l'etape suivante, iil ne veut pas installer mysql, un peu gênant non ? :-) y compris à partir des .debs lol bizarre

 

Bon, la j'arrête, les gaines m'appellent ;-) 

Posté(e) (modifié)

@pepite : faut préserver un peu! Tu es le seul à pouvoir m'expliquer comment faire cela à partir d'une pomme je crois lol 

 

et puis c'est bien connu... là où il y a de la gaine, il n'y a pas de plaisir lol

Modifié par Hysis
Posté(e)

@mprinfo, oui merci j'étais bien root :-). A priori il manque des dependances, j ai installe une lib :-). De mm pour mysql, il y en manqud bizarre.. suis sur une jessie a jour.@hysis, facile sur pomme, commence par mettre vmware fusion ca marche pastrop mal. :-)

Posté(e)

C'est bizarre vos debian... Moi j'ais suivi le tuto, install.sh et tout tournait... Vous êtes sur de ne pas être sur une vieille debian ou installer via un mauvais tuto ? Désolé, difficile d'aider, je suis en ballade

Sent from my Note4

Posté(e)

J'en suis sur, mais si elle n'est pas à jour, ou que tu as installé un autre mysql ou ou ou.... et le script d'installation ne vas pas trouver ses petits...

 

Sinon hier soir j'ai remarqué que mes plugins netatmo ne se mettaient pas à jour depuis le 7 décembre.

Si je lançais une commande (comme par exemple mettre le thermostat en mode AWAY, ça fonctionnait, si je demandais un refresh manuel, idem.

 

J'avais un message d'erreur dans le log cron pour un autre plugin, mais qui se mettait à jour également toute les 15 minutes...

plugin que j'avais installé récemment.

En désactivant le plugin, plus de message d'erreur et la mise à jour des stats à recommencé à fonctionner.

Bon à savoir donc, certains plugins peuvent partager une même planification, en cas de problème donc, vérifier les logs :-)

Le plugin fautif: jeemon... censé monitorer les logs et prévenir s'il y a des erreurs :2:

https://www.jeedom.com/forum/viewtopic.php?f=28&t=22405&p=410208&hilit=jeemon#p410208

 

  • Upvote 1
Posté(e)

En tout cas pour débugger ce problème, les VM c'est top.

 

1) créer un snapshot.

2) restaurer le backup du 7 (quand ça marchait) et voir que ca marche toujours (exit donc problème cloud netatmo ou autre)

3) restaurer le backup de cette nuit (et voir que ca ne fonctionne de nouveau plus)

4) effacer et réinstaller complètement le plugin, perdre toute la config et voir ça ne fonctionne toujours pas (ce n'est pas le plugin donc)

5) regarder un peu mieux dans les logs (RTFM donc -_- ), faire copy paste du message sur le forum, tester si désactiver le plugin jeemon solutionne le pb -> problème solutionné.

6) revenir en arrière sur le snapshot de la vm et désactiver le plugin jeemon.

7) poster sur le forum mon expérience :)

 

Plus propre et facile avec la virtualisation...

Sans virtualisation c'est possible via backup/restore mais plus violent/intrusif

  • Upvote 1
Posté(e)

Bon, ben j'ai réinstalle une VM Debian Jessie toute fraiche sans rien modifier ;-) sur une pomme sur lequel se trouve VMWARE

Puis install Jeedom en 3 lignes de commande

All is good, c'est click click click ;-)

 

Me suis enregistré sur le market, j'ai bien l'interface Jeedom mias je ne peux rien faire pour le moment, pas de clé, ni pack..

 

Question : Jeedom a prévu qqch pour modifier le password root de mysql en graphique ou faut le faire en ligne de commande ?

  • Upvote 1
×
×
  • Créer...