Affichage des articles dont le libellé est Scripts. Afficher tous les articles
Affichage des articles dont le libellé est Scripts. Afficher tous les articles



Bonjour,

Alors aujourd'hui, nous allons voir comment récupérer les événements de son agenda google pour les intégrer dans Jeedom.

Les pré-requis.


  • Créer un dossier par exemple 'googlecalendar' dans /var/www/html/plugins/script/core/ressources (l'emplacement des scripts du plugins scripts) 
  • Suivre la documentation google pour autoriser le script sur votre calendar et placer les fichiers (si vous n'êtes pas déjà dedans) dans le dossier 'googlecalendar'.
    • La doc pour le google api/php est ici.


Bon je sais vous avez un peu galéré pour le paramétrage mais vous avez réussi et maintenant ça marche !


Quand vous lancez votre script :
php /var/www/html/plugins/script/core/ressources/googlecalendar/getgoogleevent.php

Vous avez maintenant la liste de vos évènements futurs qui s'affiche.

Upcoming events:
            Vacances (2018-02-17T07:00:00+01:00)
            Astreinte (2018-02-24)
            Tennis de 13 heure jusqu'à 14 heures  (2018-02-24T13:00:00+01:00)
            Cours d anglais à 18 heures.  (2018-02-26T18:00:00+01:00)

Récupération dans Jeedom.

Maintenant il ne reste plus qu'a récupérer l'information dans Jeedom.
J'ai voulu récupérer les rendez-vous du jour dans une variable pour ainsi l'envoyer comme texte lors de message.

J'ai procédé comme suit :

J'ai créé un script dans Jeedom exécutant le script php récupérable - ICI.

Comme vous pouvez le voir, ce script est assez simple. Il récupère les événements du jour et renvoi ces derniers dans un echo. A vous d'adapter les chemins en fonction de votre installation.

Dans Jeedom quand l'on teste votre nouveau script, cela donne maintenant :


Je n'ai aucun événement aujourd'hui :) Donc ça marche.

J'ai eu pendant un moment des problèmes de caches avec la commande. Du coup dans les paramètres avancés de la commande (la petite roue crantée). J'ai paramétré comme l'image ci-dessous et je n'ai plus ces problèmes de cache.


Vous voila maintenant avec une commande vous permettant de récupérer vos événements.
A vous d'en faire ce que vous voulez.
Moi je fais causer la maison quand on monte sur la balance avec les événements du jours.
Je vous fait un autre article pour ça.

Tchuss.

Bab






Grâce à mes enceintes 'Multi-Room' qui sont placées un peu partout dans la maison, je peux me permettre maintenant de la faire parler.

Pour faire cela, j'utilise encore Jeedom et des scripts fait maison. Avec mon setup, je peux faire parler soit les enceintes du bas, soit les enceintes du haut, soit toutes les enceintes, soit une enceinte spécifique.

Donc pour faire parler votre raspberry, il vous faut :
  • Installer 2 packages sur l'enceinte.
  • Créer 2 scripts sur l'enceinte.
  • Modifier le groupe pour l'audio sur l'enceinte.
  • Créer 1 script sur le Jeedom.
  • Créer un scénario.

Aller on commence :)

Sur l'enceinte.

Installation des packages : 

Une fois connecté en root sur votre raspberry.
  • apt-get install libttspico-utils
  • apt-get install mpg321
Et c'est tout pour l'installation !!

Mise en place des scripts

Comme j'ai installé Max2play sur mes enceintes, je vais utiliser le vhost de ce dernier pour que ma maison blablate.
  • Donc on crée un dossier 'parle' dans le dossier de Max2play.
    • mkdir /var/www/max2play/public/parle
  • Et l'on place les deux scripts (script.sh et script.php) disponibles en bas de page.
  • N'oubliez pas de renommer les scripts en speak.sh et speak.php.
    • Ou sinon nommer les comme vous voulez mais modifier les autres scripts ;)

Modification du groupe audio.

  • Il faut ajouter dans le fichier /etc/group l'utilisateur apache au groupe audio (chez moi www-data).
    • Ma ligne ressemble à : audio:x:29:pi,mpd,www-data

Sur Jeedom

Le script


  • Nous allons dans le plugin script de Jeedom créer un nouveau équipement.
    • Puis le paramétrer comme dans l'image ci-dessous (action / message / script)



  • Il vous faut créer autant d’équipements que vous avez d'enceintes, plus le nombre de regroupements que vous désirez (par exemple enbas, enhaut ...)
  • Enfin, créer un nouveau script que je nomme ici : allhpspeak.sh
    • Le contenu du script est disponible en bas de page.
Il vous faudra

  • Adapter le script Jeedom avec vos noms ou ip d'enceinte au niveau des curls (trait bleu sur l'image).
  • Adapter le nom et le nombre de vos enceintes et regroupements (trait rouge)
  • Adapter les regroupements (trait vert)
Comme vous pouvez le voir j'ai définis 7 enceintes + une option all + une option bas + une option haut.
  1. hpatelier
  2. hpcuisine
  3. hpbureaub
  4. hpchambreb
  5. hpchambren
  6. hpsdb
  7. hpbureauh.
On adapte après les regroupements en fonction :) Vous allez y arriver je suis sûr !!

Le script php est disponible > ICI
Le script .sh est disponible > ICI
Le script pour Jeedom est disponible > ICI.

Le scénario.

Maintenant que nous avons un équipement dans jeedom avec des options, nous allons pouvoir faire parler la maison avec différents scénariis.

Exemple avec mon chat (Pixel) qui monte sur la balance !


Autre exemple, j'arrive près de la maison (je suis reconnu avec mon dongle)
Si Madame est présente (Elise) et donc le petit aussi. Ca envoi le message 'Papa est arrivé'


Pour le chauffage, si la température intérieur est inférieur à celle demandé, ça cause et ça lance un autre scénario


L'autre scénario :) Il vérifie l'état des ouvertures et nous dit si une d'elles est ouverte ou non.

C'est fort utile quand Madame dit qu'il fait froid dans la maison et qu'elle a oublié qu'une fenêtre était restée ouverte !! :)

D'autres scénariis utilisant les détecteurs de fumée, d'eau, le calendrier google, quelle poubelle il faut sortir etc etc etc... sont déjà en place. Si ça vous intéresse, je peux essayer de faire la liste et expliquer ces derniers mais je suis sûr que vous pouvez aussi y arriver.

WAF Appouved.
ps : WAF = Woman Acceptance Factor


Maintenant la limite est votre imagination.


A vous et si vous avez aimer, n'hésitez pas à partager, commenter etc... !

Bab

Arrêt d'urgence ou en fin de print des imprimantes via Jeedom.




Imprimant beaucoup la nuit et le jour en mon absence, j'ai voulu que mon installation soit un minimum sécurisé. 

J'évite donc les appels de Madame me criant qu'il y a le feu à la maison !! :) et je me sens un peu plus en sécurité.
Ayant mis en place un Jeedom (domotique) pour différents modules de la maison, j'ai voulu rajouter mes imprimantes dedans.

Je vous présente mon installation !





Si vous n'avez pas mis en place de retour d'état de l'imprimante, l'article Retour d'état des imprimantes dans Jeedom vous aidera.

Le matériel que j'utilise :

Donc avec tout ces trucs on va pouvoir faire je pense un scénario simple.
Une image vaut mieux que 50 mots non ? :)


L’arrêt d'urgence.

Dans un nouveau scénario, on ajoute nos déclencheurs.


Puis dans le scénario lui même, on effectue les actions en fonction des triggers.


Dans ce scénario simple, je check donc d'où peut provenir l'alarme (trigger) et en fonction j'effectue une ou plusieurs actions.
  • J'active un virtuel Alarme Incendie à ON (que je peux désactiver dans les 10s ou pas)
    • Si le virtuel est toujours à 1, on effectue les actions.
      • Je mets dans une variable msg_générique mon Message 'AU FEU AU FEU.."
      • Puis j'envoie le message sur mes enceintes de la maison.
Voici donc un exemple simple d'utilisation des remontées d'alarmes.
Je pourrai ainsi ajouter dans mes actions l’arrêt des imprimantes, l'envoi de sms etc...
Je laisse votre imagination terminer votre scénario.

Arrêt de l'imprimante à la fin d'un print.

J'ai profité d'avoir les remontées des informations de l'imprimantes pour créer un scénario d’arrêt automatique.
Ce scénario en général est activé quand j'effectue une impression qui va se terminer la nuit ou si je ne peut être présent pour éteindre l'imprimante en fin de print. Sinon il reste désactivé.

Encore des images.... Je les expliques ;)

Ici on peut trouver les paramètres des noms et de récurrence de tests. 
Ce scénario quand il est activé effectue ses tests toutes les 20 minutes.


Le scénario !


Ce dernier peut vous sembler étrange car si l'on regarde de près il y a du Wifi.


PARCEQUEEEEEE...

Comme mes imprimantes sont connectées sur les prises Broadlink Wifi et que le Wifi est sur Off quand personne n'est à la maison ou la nuit, il m'a fallu gérer ce cas.


Sinon vous pouvez voir que ce dernier scénario est simple.
Si le statut de l'imprimante est de 0, on coupe la prise :) si le statut est de 2 (problème de connexion) on envoi un message.

J'ai l'intention de créer un autre scénario ou du moins un déclencheur qui utilisera les capteurs de température présent dans les boitiers et ceux aux dessus des imprimantes. Si la température dépasse les X° en X secondes / minutes alors ACTION !

Des questions ? Des améliorations à apporter ? 


Remontée du niveau de l'eau



Histoire de pas découvrir 2cm d'eau dans sa maison ou sa cave, il est possible avec l'OpenData de s'informer si l'on possède un système le permettant.

C'est d'actualité ! Comme pour le boulot nous avons mis en place des alertes concernant le niveau de l'eau. J'enregistre le comment faire pour partager :)

Ce que nous aurons besoin de connaitre pour ce script est l'ID de la station.
Pour récupérer cet ID, il suffit de se rendre sur le site de vigicrues.gouv.fr.

Sur la page d'accueil, vous pouvez sélectionner votre territoire.

Puis votre station.

Il vous suffit alors de regarder dans l'url pour connaitre l'ID de sa station.
J'ai pris ici la station de Melun code F445000101


Notez ce code, il servira pour la remontée d'info.

Le script

Le script en bas de page est biensur perfectible et je suis sûr que les experts trouveront à redire.
Mais chez moi ça fonctionne :)

Le script prend en argument 4 valeurs $1 $2 $3 et $4

  1. L'argument $1 prend soit -H soit -D 
    1. -D pour avoir la date de l'update.
    2. -H pour le niveau de l'eau.
  2. L'argument $2 prend soit 1 quand dans le $1 on met -D soit l'ID de la station pour l'option -H
  3. L'argument $3 prend le niveau Critique 
  4. L'argument $3 prend le niveau Warning


En gros on lance les commandes pour la station d'AlfortVille.

  • ./lescript.sh -D 1
    • Il nous remonte la date de dernière mise à jour.
  • ./lescript.sh -H F490000104 3650 2670
    • Ca nous remonte (au moment de l'écriture) un Warning - La flotte est Haute !! 2971mm
A vous du coup de faire ce que vous voulez de vos valeurs. Les incorporer dans Jeedom via un virtuel, au boulot les mettres dans Centreon, BB etc...

Le Script linux :)

Gestion crue

Octoprint et Jeedom.



Le but de ce mini tuto est de vous permettre d'avoir dans Jeedom un retour d'état de votre imprimante 3D gérée via Octoprint.

Mise à jour : Il existe maintenant un plugin Jeedom Octoprint pour gérer vos imprimantes.
Ne vous embêtez plus avec mon script ;) (même si je le garde sous le coude au cas ou)

Pré-requis :

  1. Jeedom.
    •  Avoir installé dans Jeedom les plugins de programmation scripts et virtuel. 
  2. Octoprint.
  3. Savoir se connecter en ssh sur votre 'Jeedom'



Configuration :

  • Connectez vous en ssh sur votre Jeedom.
  • Récupérez le script Octoprint via un wget https://github.com/vishnubob/octocmd/archive/master.zip
  • Décompressez le .zip et copier le script Perl octocmd dans le dossier de Jeddom /usr/share/nginx/www/jeedom/plugins/script/core/ressources
  • Faites un chmod +x sur le fichier copié
  • Faites un chown www-data sur le fichier pour permettre à apache de le lancer (si c'est apache qui fait tourner votre jeedom bien sûr)
  • Modifiez le shell de votre utilisateur www-data (par defaut le shell n'existe pas)
    • Il faut donc éditer le fichier /etc/passwd pour changer le shell /sbin/nologin en /bin/bash)


La documentation disponible ici vous invite à lancer octocmd la 1ère fois avec l'option init pour renseigner les informations de votre Octoprint.

  • Renseignez donc l'url de votre page Octoprint puis son code API. Vous devriez avoir comme message : This configuration works, keep it?
  • Récupérez le fichier de configuration .octocmd.conf qui se trouve maintenant dans le home de l'utilisateur que vous venez d'utiliser pour le placer ou vous le désirez.
  • Modifiez la ligne 408 du script octocmd en remplaçant le chemin par le votre (exemple, je l'ai placé dans le /home j'ai donc mis la ligne: args.config = os.path.join("/home/.octocmd.conf"
  • Connectez vous sur votre Octoprint et vérifiez que ce dernier est bien connecté à votre imprimante (StateOperational)
  • Maintenant en ssh sur votre Jeedom, vous devriez pouvoir lancer la commande ./octocmd status
  • Chez moi, le retour imprimante fraîchement allumé donne:
state: Operational
    flags: operational=True, paused=False, printing=False, sdReady=False, error=False, ready=True, closedOrError=False
temperature:
    bed: actual=25.9, target=0.0, offset=0
    tool0: actual=25.5, target=0.0, offset=0
sd: ready=False

Vérifiez bien que la commande status retourne les informations désirées. Si cela ne fonctionne pas, cherchez à la faire fonctionner.
  • Maintenant dans Jeedom. On peut créer un nouveau script que l'on nomme et que l'on actualise toutes les minutes.
  • Cliquez sur éditer puis copier le script disponible ici
    • Modifiez les deux 1ère variables du script en adaptant avec votre système.
      • La 1ère variable doit contenir le chemin du script perl octocmd.
      • La seconde variable doit contenir l'IP ou le nom de votre serveur Octoprint.
    1. Ce script nécessite les arguments status,bedtemp et extemp.
      1. L option status informe si l imprimante imprime ou non.
      2. L option bedtemp fourni la température du bed.
      3. L option extemp fourni la température de l'extrudeur.
  • Dans les commandes, on ajoute 3 nouvelles commandes pointant sur notre script en ajoutant les options status bedtemp et extemp.


La dernière étape consiste en la création d'un Virtuel nous affichant les informations désirées.


Voici ce que cela donne chez moi pour le retour de ces 3 informations.



A vous de jouer maintenant avec les autres commandes possibles d'octocmd pour vous créez vos retours et vos commandes.


Pour ma part, j'ai fait un scénario permettant d'éteindre automatiquement l'imprimante à la fin d'un print.


Bon courage et bon print.
Bab