Jâouvre un topic français pour TileDash, si vous avez des questions jây rĂ©pondrais avec plaisirs.
TileDash est un tableau de bord pour Homey. Le sujet principal est ici: TileDash - an Homey Dashboard
Le github est lĂ , et jâai Ă©galement crĂ©Ă© TileDash tool pour une configuration plus facile.
3 Likes
Bonjour,
Super boulot !
Je recherchais justement quelque chose basé sur du langage Web pour une bonne personnalisation et un suivi assez simple.
Jâai postĂ© sur le fil en anglais Ă propos de ce qui semble un bug avec lâadresse des Homey Pro 2023âŠ
Jâaimerais faire quelques types supplĂ©mentaires :
- climatisation (target temp, mode, temp inside, temp outside, fan rate, fan direction, mode eco et mode power)
- Ampli home cinema (volume, source, on/off)
- Aspirateur Robot (On/Off, zone, piece, coordonnées)
- Station météo / prévisions météo (capteur multiples)
La base, ce serait un menu dĂ©roulant avec plusieurs possibilitĂ©s⊠Je vais regarder ça. (Je connais lâArduino, un peu le HTML, et CSS, mais pas trop le JS⊠Une bonne occasion de sây mettre.)
Mais si jamais vous avez une proposition, je suis preneur !
PS : jâai adaptĂ© simplement le type DOORBIRD_POPUP pour les camĂ©ras Reolink (mais image statique pour le momentâŠ) Lâadresse Ă utiliser :
url = item.doorbirdIP + â/cgi-bin/api.cgi?cmd=Snap&channel=4&rs=1213abc&user=â + item.user + â&password=â + item.password;
Bonne continuation
1 Like
Bonjour,
Merci.
Pour la connexion, jâutilise la mĂ©thode Homeydash, jâai une Homey Pro 2019, a tester avec une 2023 pour voir si dĂ©jĂ la mĂ©thode de connexion fonctionne ou si câest dans le code de TileDash.
Pour les cartes supplĂ©mentaire, pas de soucis je pourrai regarde ce que je peux faire car je nâai aucun de ces 4 appareils. Je te solliciterai certainement en MP pour avoir certaines infos.
Jâai des camĂ©ra rĂ©olink mais je nâai pas encore commencĂ© le type CAMERA, donc ta piste est intĂ©ressante.
Au lieu de â?cmd=Snapâ, peut ĂȘtre tester â?cmd=Streamâ ou â?cmd=Previewâ. (Ce nâest quâune hypothĂšse)
Bonjour,
La mĂ©thode HomeyDash 2019 semble en effet diffĂ©rente de la version 2023âŠ
Cependant, jâai lâimpression que ça fonctionne quand mĂȘme. En dĂ©pits de lâerreur, les retours dâĂ©tats semblent fonctionner⊠Je loupe peut ĂȘtre un truc.
En attendant, je me suis penchĂ© sur la clim Daikin, et jâai un truc adaptĂ© de tes codes qui fonctionne :
Petit clip démo
Il me reste Ă faire les fonctions :
- vitesse du ventilateur
- mode auto
- mode Ă©co
- orientation des ailettes
- mode powerfull
A+
PS : Pour a camĂ©ra, ni Stream ni Preview nâexiste dans lâAPI CGI Reolink, jâai tout de mĂȘme essayĂ©, et ca renvoie bien une erreurâŠ
1 Like
Câest pas mal du tout ce que tâas fais! Les cartes sont vraiment sympa!
Voila la derniĂšre mouture, je pars pour le WE de PĂąques , jây retravaillerai la semaine prochaine. Bonne soirĂ©e et bon weekend.
1 Like
Jâai un peu avancĂ©, je tends vers quelque chose qui commence Ă ressembler au dashboard que je voulais ⊠Malheureusement, pour le moment, jâai autant de pages HTML que dâicones en bas. Idealement un rafraichissement dynamique uniquement du body avec des dashbord diffĂ©rent serait plus sympa, mais je nây suis pas encoreâŠ
DĂ©mo Point dâavancement
Jâai ajoutĂ© une couleur perso par icone (optionnelle), jâaimerais pouvoir avoir le choix entre icone ou image⊠Je vais y rĂ©flĂ©chirâŠ
Je bloque sur plusieurs petits trucs pour le moment ⊠(Des soucis avec le CORS policy lorsque je fais des requĂȘtes dans mes scripts, par exemple pour le jour tempoâŠ)
Jâaimerais aussi rapatrier les donnĂ©es des insights pour les placer dans des graphs⊠Si tâas des pistes pour ceci ca mâintĂ©resse.
A+
Quâentends tu pars lĂ ? Chaque icone est liĂ© vers un autre TileDash en quelque sorte?
Il serai possible de créer un <div>
pour chaque page et des les afficher suivant lâicone cliquĂ©e et les autres masquĂ©es. Ainsi lâensemble est chargĂ© 1 seul fois et on clique sur les icones pour naviguer.
Je pense que le problĂšme viendrai de requĂȘte http vers https? Tu pourrais peut ĂȘtre crĂ©er un tag ou un device virtuel dont tu dĂ©termine sa valeur par un flow. Tu pourra ensuite rĂ©cupĂ©rer sa valeur dans TileDash.
Jâai dĂ©jĂ commencĂ© Ă travailler sur ce point. Il est possible de rĂ©cupĂ©rer les valeurs comme ceci:
/*
heure = lastHour
6h = last6Hours
24h = last24Hours
7j = last7Days
14j = last14Days
31j = last31Days
*/
const deviceId = 'ID_du_device'; //Renseigne l'ID du device dont tu souhaites récupérer ses différentes valeurs
const capabilityID = 'measure_temperature'; // capabilityID à récupérer
const resolution = 'last7Days'// Ici la plage souhaité. last7Days donnera les valeurs sur les 7 derniers jours
const target = 'homey:device:'+ deviceId;
const device = await Homey.devices.getDevice({ id: deviceId });
const deviceInsight = device.insights;
const insightCapability = deviceInsight.find(insight => insight.id === capabilityID);
const json = {
uri: target,
id: capabilityID,
type: 'number',
title: 'Température',
titleTrue: null,
titleFalse: null,
units: '°C',
decimals: 2,
resolution: resolution
};
//log(deviceInsight);
log("\n====================")
//log(insightCapability);
const insightLog = await Homey.insights.getLogEntries(insightCapability);
const jsonInsight = await Homey.insights.getLogEntries(json);
//log(insightLog);
//log((insightLog.values).length)
log(jsonInsight);
Jâai prĂ©vu une petite mise Ă jour dâici quelque temps pour:
- lâajout de flow dans le header
- rechargement lorsque TileDash reviens en avant plan (principalement utile sur smartphone)
Bonjour ,
Oui effectivement, chaque icone en bas est un bouton vers une page HTML, chargeant un TileDash diffĂ©rent. Jâai essayĂ© avec un rechargement uniquement du body avec du JS + XML mais je suis trop dĂ©butant pour y arriver comme ca visiblement. De plus, ma page avec les camĂ©ras nâest pas un TileDash, car ce sont en fait des snap et actuellement jâai un rafraichissement de chaque snap de camĂ©ra toute les secondes. Je nây suis arrivĂ© quâen HTML pur.
Je crois (dâaprĂšs ce que jâai compris en me renseignant) quâil faudrait que je fasse la requĂȘte via un serveur proxy pour que cela fonctionne (ma page est actuellement hĂ©bergĂ©e sur un NAS. il me faudrait donc installer un serveur proxy dessus)
(Source : Tutoriel vidéo HTTP : Comprendre CORS | Grafikart , en bas de page : proxy obligé visiblement)
Par contre, jâai bien rĂ©cupĂ©rĂ© dans un script Homey les infos TEMPO loguĂ©es dans des tags.(dâaprĂšs un post auquel tu avais rĂ©pondu et aidĂ© dâailleurs, merci ) Bizarrement je ne trouve nulle part ces tags, pour voir si le script fonctionne. Je viens de EEdomus, et le passage Ă Homey est assez violent, je ne retrouve pas mes petits
Comme je dĂ©couvre un peu tout dâun coup, jâavoue que je mâĂ©parpille un peu aussi. Pour rĂ©capituler, voila ce que jâai modifiĂ© dans tes sources :
- CrĂ©ation dâune tuile âClimatisation.jsâ basĂ©e sur Thermostat, avec les fonctionnalitĂ©s vues ci-dessus
- Modification de âsensor.jsâ pour y ajouter la couleur de chaque icone sĂ©parĂ©ment (donc ajout dâun paramĂštre color et secondColor dans lâobjet items du dashboard
- Modification du CSS pour personnalisation
- CrĂ©ation dâun âIPCamPopup.jsâ basĂ© sur âpopup.jsâ pour y inclure un snap de camĂ©ra. Ca fonctionne, et jâessayerai dây ajouter un rafraichissement du snap. Je me disais dâailleurs que je pourrais peut ĂȘtre utiliser âimage.jsâ comme base pour afficher un roll sur mes camĂ©ras en page dâaccueil
- Evidemment adaptation du âtiledash.app.jsâ en consĂ©quence.
Concernant les insight, merci pour le code, je vais regarder comment ca foncitonne.
Au fait, tu nâaurais pas les js âathom-api.min.jsâ et âmoment.min.jsâ en version non compressĂ©e ? Ca me permettrait dâessayer de rĂ©soudre lâerreur de connexion
Merci encore en tout cas !
Si je peux donner un coup de main pour faire de la basse besogne, nâhĂ©site pas.
1 Like
Re !
Jâai entrepris de faire des modifications pour tout charger dâun coup !
- Jâai changĂ© le dashbord.js en dashboard_div.js dans lequel lâobjet dashboard est devenu dashboardS, un genre de tableau de dashboard ayant chacun un div_id
const dashboards = [
{
div_id: "Accueil",
dashboard: [
{
title: "Météo",
width: 4,
height: 5,
items: [
{
position: [0,0],
type: "SENSOR",
width: 2,
// etc ....
},
},
{
title: "Thermostats",
// ... etc ...
},
// ... autres tuiles ...
]
},
{
div_id: "Ouvrants",
dashboard: [
{
title: "Tests",
// ... etc ...
},
// ... autres tuiles ...
]
},
// ... autres tableaux de bord ...
];
- jâai changĂ© le tiledash.app.js pour faire un forEach sur les dashboards
////========== Create each group in each page (group in dashboards.js) ==========
dashboards.forEach(db => {
var div = document.createElement("div");
div.id = db.div_id;
document.body.appendChild(div);
db.dashboard.forEach(function (group, index) {
//... le reste de ton code ...
});//END create group
}); //END Create each page for group
- il me reste Ă modifier tous les .js dans le dossier de typeâŠ
Câest bien ce que tu voulais dire par crĂ©er des <div>
?
Parce que jâai essayĂ© autrement, mais je me retrouvais toujours avec plusieurs dashboard.js et plusieurs tiledash.app.jsâŠ
Bon aprĂšs je dĂ©couvre un peu le javascript et le HTML au fur Ă mesure âŠ
Salut Yoann,
Oui lâidĂ©e câest ça, de crĂ©er des pages dans le dashboard.js.
CâĂ©tait un des points dâamĂ©lioration que jâavais en tĂȘte.
Avec le retour des beaux jours je suis plutÎt dans le jardin que sur le PC désolé.
Mais ta mise en forme du dashboard.js me parait cohĂ©rente, tu redĂ©finis bien un tableau pour chaque âsous dashboardâ que tu viens bien chercher avec une boucle forEach
dans le tiledash.app.js.
Jâai oubliĂ© de te rĂ©pondre la dessus, jâai rĂ©cupĂ©rĂ© tous les fichiers ici, ces 2 la nâont pas Ă©tĂ© modifiĂ©s pour TileDash.