Test jour chômé avec domogeek

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
amelyfred
Messages : 103
Inscription : 29 mai 2016, 18:06

Test jour chômé avec domogeek

Message par amelyfred »

Bonjour à tous,
J'essaye de faire un script pour savoir si le jour en cours est un we ou un jour de la zone de vacances scolaire (zone B)
Voici le bout de code.

Code : Tout sélectionner

#!/bin/bash

vacances=$(curl -s "http://domogeek.entropialux.com/schoolholiday/B/now")
we=$(curl -s "http://domogeek.entropialux.com/weekend/now")

if [ $vacances = "False" ]
then
echo "Faux"
else
echo "Vrai"
fi
Lorsque j'exécute le script, j'ai cette ligne :

Code : Tout sélectionner

./jour_chome.sh: ligne 9 : [: trop d'arguments
Si je remplace B par C je n'ai pas cette ligne.

Savez vous pourquoi?

Merci d'avance
Fred
amelyfred
Messages : 103
Inscription : 29 mai 2016, 18:06

Re: Test jour chômé avec domogeek

Message par amelyfred »

Bonjour
Bon je me galère un peu car je n'arrive pas à trouver comment savoir si un jour est chômé ou non.
J'ai commencé mon script et j'ai un peu modifié. Je fais cette requête :

Code : Tout sélectionner

$(curl -s "http://domogeek.entropialux.com/holidayall/B/now")
Et en retour j'ai donc cela pour aujourd'hui

Code : Tout sélectionner

{"holiday": "False", "weekend": "False", "schoolholiday": "False"}
Mais pour le 1er mai , j'aurais donc ce résultat :

Code : Tout sélectionner

{"holiday": "Fete du travail", "weekend": "False", "schoolholiday": "False"}
Comment déterminer si le jour est chomé?
Mon idée est de dire si dans la réponse, j'ai 3 False alors le jour n'est pas chômé. Mais comment faire cela?

Merci pour vos conseils.

Fred
david.2d
Messages : 21
Inscription : 25 avr. 2017, 14:15

Re: Test jour chômé avec domogeek

Message par david.2d »

Code : Tout sélectionner

commandArray = {}
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux

local url='http://domogeek.entropialux.com/holidayall/B/now'

local config=assert(io.popen('curl '..url))
local vac = config:read('*all')
config:close()
local jsonResult = json:decode(vac)

    if (jsonResult.holiday=="False" and jsonResult.weekend =="False" and jsonResult.schoolholiday =="False") then
       print("Faux")
    else
        print("Vacance !!!!")
    end

return commandArray
Dernière modification par david.2d le 11 mai 2017, 10:06, modifié 1 fois.
amelyfred
Messages : 103
Inscription : 29 mai 2016, 18:06

Re: Test jour chômé avec domogeek

Message par amelyfred »

Merci
amelyfred
Messages : 103
Inscription : 29 mai 2016, 18:06

Re: Test jour chômé avec domogeek

Message par amelyfred »

Salut à tous,
Du coup je voulais le faire en shell et donc voilà un bout de code qui fonctionne.
Il est certainement perfectible car je début en shell.

Code : Tout sélectionner

#!/bin/bash
#Script permettant de savoir si le jour est chomé ou non:
#Test avec api domogeek si jour est we ou vacances scolaire zone B
#Si le jour est chomé alors l'interrupteur virtuel passe à On sinon à Off
DOMOTICZ_SERVER="192.168.0.22:8080"
idx="116"
vacances=$(curl -s "http://domogeek.entropialux.com/holidayall/B/now/json")

#Test jour chomé ou non
if [ "$( echo "$vacances" | jq '.["holiday"]')" = '"False"' ]  && [ "$( echo  "$vacances" | jq '.["weekend"]')" = '"False"' ] && [ "$( echo  "$vacances" | jq '.["schoolholiday"]')" = '"False"' ]

then
        current_Status="Off"
else
        current_Status="On"
fi

#Mise à niveau de l'inter virtuel
curl --silent -s -i -H  "Accept: application/json"  "http://$DOMOTICZ_SERVER/json.htm?type=command&param=switchlight&idx=$idx&switchcmd=$current_Status"
Répondre