Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 49 sur 49 PremièrePremière ... 39414243444546474849
Affichage des résultats 1 441 à 1 457 sur 1457
  1. #1441
    Le tru c'est qu'avec un inter, tu peux généralement faire on/off/toggle sur un appui.

    Là je ne pige pas trop comment marche ton interrupteur, je ne vois pas à quoi servirait l'event "bouton relaché"

    Ce que je fais moi c'est que lorsque j'appuie sur l'inter, je teste l'état de la lampe: si on alors j'éteins, si off, j'allume.

    Dans ton cas, tu peux complètement ignorer l'évent 0 et te concentrer sur le 1.

    (j'ai l'impression d'être un mec bourré qui participe à une discussion de comptoir en étant complètement à coté du sujet)
    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

  2. #1442
    Ah mais ça j'y arrive. Y a même encore un peu plus simple puisque le "call_service" peut envoyer un toggle.
    C'est juste que j'essaye de creuser un peu plus loin et j'essaye d'allumer progressivement la lumière. La j'y arrive facilement en disant qu'a chaque appuie sur le bouton, je lui dis d'augmenter de 20% l'intensité ("brightness_step_pct")
    L'étape ou je suis et je bloque, c'est lui dire "tant que je reste appuyé, augmenter l'intensité de 20% toutes les secondes"
    Il faut donc que mon event 0 casse la boucle.

    Et pour Scie, j'arrive pas encore à voir comment utiliser un "change". A l'appui sur le bouton, je vais avoir un message qui boucle pour augmenter l'intensité toute les seconde.
    Au relachement je vais avoir un 2e message qui va rentrer dans la boucle. Sauf que le premier tourne toujours.

    J'en profite pour reposer une question, vous utilisez quoi pour le pilotage de chauffage par fil pilote ?

  3. #1443
    Citation Envoyé par Nortifer Voir le message
    Ah mais ça j'y arrive. Y a même encore un peu plus simple puisque le "call_service" peut envoyer un toggle.
    C'est juste que j'essaye de creuser un peu plus loin et j'essaye d'allumer progressivement la lumière. La j'y arrive facilement en disant qu'a chaque appuie sur le bouton, je lui dis d'augmenter de 20% l'intensité ("brightness_step_pct")
    L'étape ou je suis et je bloque, c'est lui dire "tant que je reste appuyé, augmenter l'intensité de 20% toutes les secondes"
    Il faut donc que mon event 0 casse la boucle.

    Et pour Scie, j'arrive pas encore à voir comment utiliser un "change". A l'appui sur le bouton, je vais avoir un message qui boucle pour augmenter l'intensité toute les seconde.
    Au relachement je vais avoir un 2e message qui va rentrer dans la boucle. Sauf que le premier tourne toujours.
    Je pars de l'hypothèse que tu as un moyen de différencier, à la réception, un event "appui" d'un event "relache".

    Ton event "appui" part dans la boucle.
    Je suppose que tu as utilisé un noeud "delay" pour la tempo de 1 seconde.

    Quand tu reçois ton event "relache", tu peux alors

    1/ forger un nouveau message "reset" à envoyer au noeud "delay" directement, ce qui va lui faire cesser d'attendre et jeter les messages en attente en son sein, et donc de faire terminer ta boucle.



    2/ setter une variable de flow, par exemple "flow.stop_loop = 1", et dans ta boucle, après le delay, ajouter un noeud "switch" qui va tester si "flow.stop_loop = 1" et sortir de la boucle dans ce cas.
    Il te faudra alors, lors de l'event "appui", avant d'entrée dans la boucle, remettre "flow.stop_loop" à 0.

    Citation Envoyé par Nortifer Voir le message
    J'en profite pour reposer une question, vous utilisez quoi pour le pilotage de chauffage par fil pilote ?
    Rien j'ai pas connecté mon chauffage.
    Citation Envoyé par Arteis Voir le message
    scie pieds sous terre

  4. #1444
    Tu fais comment la gestio nde la variable ?

    J'ai une loop de flash de lumière pur dire à ma fille qu'on mange Pour le moment j'ai un script qui envoie Stop au loop mais la variable ça m'a l'air plus propre.
    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

  5. #1445
    Citation Envoyé par Nortifer Voir le message
    Ah mais ça j'y arrive. Y a même encore un peu plus simple puisque le "call_service" peut envoyer un toggle.
    C'est juste que j'essaye de creuser un peu plus loin et j'essaye d'allumer progressivement la lumière. La j'y arrive facilement en disant qu'a chaque appuie sur le bouton, je lui dis d'augmenter de 20% l'intensité ("brightness_step_pct")
    L'étape ou je suis et je bloque, c'est lui dire "tant que je reste appuyé, augmenter l'intensité de 20% toutes les secondes"
    Il faut donc que mon event 0 casse la boucle.

    Et pour Scie, j'arrive pas encore à voir comment utiliser un "change". A l'appui sur le bouton, je vais avoir un message qui boucle pour augmenter l'intensité toute les seconde.
    Au relachement je vais avoir un 2e message qui va rentrer dans la boucle. Sauf que le premier tourne toujours.
    C'est bon. J'ai la solution : Y'a un node pour ça...



    Looptimer envoie le même message toutes les x secondes jusqu'à ce qu'on lui dise d'arrêter.

    1. Events: all : Tu choppes les events de ta telco (c'est le node gris qui est en fait un lien depuis un events: all, mais on ne va pas chipoter, tu vois le truc )
    2. Switch : Tu route en fonction du code "appuyé" ou "relâché" - Ça change selon la telco
    3. Si c'est "appuyé" tu balance direct au Looptimer qui va le laisser passer.
    3.1. Current state : Tu choppes la luminosité actuelle de ton ampoule
    3.2. Change : Tu l'incrémentes avec un petit JSON pour forger ton message avec la nouvelle valeur de Brightness
    3.3. Call service : Tu balances les paramètres à ton ampoule.
    3.4. Toutes les x secondes, le Looptimer va renvoyer le même message donc goto 3.1.
    4. Switch (l'autre branche) : Si c'est "relâché"
    4.1. Change : Tu forges ton message avec un gros "STOP" comme payload et tu l'envoie au Looptimer
    5. Le Looptimer arrête d'envoyer ses messages, ton ampoule reste à son niveau de luminosité
    6. Profit...

    Simple, élégant, efficace... Tout moi.

    (NB : L'incrémentation pourrait se faire avec un node finite state machine, mais je n'arrive pas à le faire marcher celui-là)

    ---DISCLAIMER---

    Je ne balance pas le code parce que je suis une grosse feignasse et que je n'ai pas implémenté le truc sur une ampoule (cette partie là, on l'a tous en stock). Je me suis contenté de tester si je recevais bien la succession de messages et qu'elle s'arrêtait bien sur la commande.
    Dernière modification par Daedaal ; Hier à 14h38.
    Si ça ne marche toujours pas... Prend un plus gros marteau !
    Citation Envoyé par Daedaal
    Je crois que je cite.

  6. #1446
    Explication pédagogique :

    Un flow gère les messages les uns après les autres depuis son point d'entrée (ici un event, mais ça peut aussi être un state: changed ou autre).
    De fait, le facteur est une feignasse qui te donne une enveloppe à la fois.

    Tu n'as qu'une boîte aux lettres. Et comme t'es plutôt mono-tâche, tant que tu n'as pas traité la première tu ne prend pas la seconde.

    Évidement, tu peut stocker la lettre dans un coin (donc dans une variable, comme l'ont suggéré Scie et Franky4xa) en attendant d'autres infos. Mais dans tes mains, tu n'as qu'un seul courrier à la fois. Quand tu prend un autre message, tu as posé le précédent.

    Donc pour faire une boucle interruptible, ton premier message la lance. Elle fait sa vie dans son coin². Elle est "quelque part" extérieure au flow une fois déclenchée.

    Ton second message ne coexiste pas dans le flow avec le premier, il va simplement dire a la boucle d'arrêter de tourner.

    - - - Updated - - -

    Citation Envoyé par theclaw Voir le message
    Tu fais comment la gestio nde la variable ?

    J'ai une loop de flash de lumière pur dire à ma fille qu'on mange Pour le moment j'ai un script qui envoie Stop au loop mais la variable ça m'a l'air plus propre.
    Envoie le code, je suis curieux.
    Pour faire flasher une lampe il me semble que tu peux passer par un param j0r "blink".

    Autrement, tu passes avec le même genre de truc que j'ai mis au dessus mais au lieu d'envoyer le "STOP", tu peux dire que ça arrête au bout de 5 minutes (ou quand tu détectes que ta fille bouge dans sa chambre, ou dans le couloir, ou les deux ou...)
    Si ça ne marche toujours pas... Prend un plus gros marteau !
    Citation Envoyé par Daedaal
    Je crois que je cite.

  7. #1447
    C'est ce que je fais pour le flash light de la chambre de ma fille Mais je passe pas par un bouton, j'ai un script que je balance depuis le tel
    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

  8. #1448
    Oh mais ca m'a l'air effectivement très prometteur ça. Merci Daedaal et Scie.
    J'ai découvert au passage la doc des noeuds et qu'on pouvait envoyer des choses comme "reset" à un noeud delay.

    Par contre pourquoi lire et réécrire la valeur de brightness ?
    Dans les propriétés possible j'ai "brightness_step" et "brightness_step_pct" de proposé qui font la même chose non ?

  9. #1449
    pct c'est en %, step c'est en incrément de la brightness (de 1 à 255)
    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

  10. #1450
    Oui, je voulais dire qui font la même chose que lire la valeur actuelle et l'incrémenter à la main

  11. #1451
    Citation Envoyé par Nortifer Voir le message
    Oui, je voulais dire qui font la même chose que lire la valeur actuelle et l'incrémenter à la main
    Possible. Je n'ai jamais testé.

    Tu nous dira !
    Si ça ne marche toujours pas... Prend un plus gros marteau !
    Citation Envoyé par Daedaal
    Je crois que je cite.

  12. #1452
    Dites...euh...j'ai moyen de remplacer cette affreuse multiplication de trucs identiques par un code élégant et raffiné ?

    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

  13. #1453
    Une possibilité (y'en a d'autres) :

    1. Inutile de tester si Circadian_Lighting est on ou off. Tu lui envoie l'état dans lequel tu veux qu'il soit, RAF de celui dans lequel il était avant.
    2. Tu fais un premier switch qui sort les deux events de ton node switch actuel pour lesquels tu ne vires pas Circadian_Lighting et tu les laisse vivre leur vie.
    3. Tu routes le reste pour couper Circadian_Lighting (y'a une option "otherwise" dans le node switch)
    4. Comme en passant dans un "call: service", tu vas perdre le payload de ton message d'origine (donc le code du bouton), tu fous un node "change" j0r SET msg.payload.mypayload = msg.payload
    5. Tu coupes Circadian Lighting avec ton "call service"
    6. Tu refous un switch (mais cette fois sur msg.payload.mypayload.event.event) pour séparer les 5 events qui restent et les traiter

    De toute façon dans nos usages, c'est pas 3 nodes de plus ou de moins qui vont changer significativement les perfs. Si ton truc marche, pourquoi en changer ?
    Si ça ne marche toujours pas... Prend un plus gros marteau !
    Citation Envoyé par Daedaal
    Je crois que je cite.

  14. #1454
    Cela fonctionne-t-il toujours? Parce que ça ne marche pas pour moi

  15. #1455
    Instant pédagogique avant d'aller bouffer (après, les stagiaires dorment en digérant c'est le bourdel pour avoir 2s d'attention) :

    Les variables et le payload.

    Payload

    C'est le contenu du message. Dans un post précédent je disais qu'on ne sait pas ce qu'il contient a priori. C'est cool parce qu'on peut le changer à la volée.
    Ce qui est moins cool c'est que certains nodes balancent leur propre payload en virant celui d'origine.

    Mais comme il n'y a pas de structure prédéfinie (dans le flow), on peut en faire ce qu'on veut. Rajouter une entrée par exemple. Tu veux garder un eventID, ben tu fous un node change et tu crées une entrée.

    Variables
    Y'a un truc sympa avec NodeRed, c'est qu'il n'a pas besoin qu'on lui dise à l'avance ce que va contenir une variable.
    On peut les définir à différents niveaux : msg/flow/global

    Au niveau msg, la variable sera foutue à la poubelle dès que le message d'origine aura été utilisé. Donc que t'auras ouvert le courrier du facteur.
    Au niveau flow, la variable persistera mais ne sera utilisable que dans le flow en question. Le courrier te concerne TOI et toi seulement.
    Au niveau global, la variable est utilisable par tous les flows (on va simplifier en disant que ce sont les différents onglets de NodeRed). La lettre RAR s'applique à tout l'immeuble mais c'est juste que c'est toi qui l'a eue dans ta BàL.

    - - - Updated - - -

    Citation Envoyé par merlonmi Voir le message
    Cela fonctionne-t-il toujours? Parce que ça ne marche pas pour moi
    Post ton flow (je me sens une âme de rappeur d'un coup ).

    [msg.mode.bienveillant]
    Bienvenue.
    Sincèrement. On est très sel et vinaigre ici mais on finit par s'y habituer.
    Mais sans contexte, c'est difficile à dire.


    [msg.mode.CPC]
    Des flows j'en ai trouvé plein.
    Mais est-ce les meilleurs
    Vous êtes des experts alors répondez marquer ça.

    Balance ton problème, on y trouvera une réponse
    Si ça ne marche toujours pas... Prend un plus gros marteau !
    Citation Envoyé par Daedaal
    Je crois que je cite.

  16. #1456
    Bon le looptime a fait le taff.
    Par contre je crois qu'avec une récurrence inférieur à la seconde ça galère un peu et il s'emmêle les pinceaux

    Maintenant que je commence a bien pigé les bases, je vais pouvoir m'attaquer direct à un gros morceau.
    Piloter mes chauffages avec mes modules enOcean pas reconnu. La bonne nouvelle c'est que j'ai pu sniffer les requêtes. La mauvaise c'est qu'il faut que je trouve comment les envoyer par mon dongle.
    J'ai vu passer du MQTTT en fouinant par ci par la.
    Dernière modification par Nortifer ; Hier à 21h13.

  17. #1457
    Citation Envoyé par Daedaal Voir le message
    Une possibilité (y'en a d'autres) :

    1. Inutile de tester si Circadian_Lighting est on ou off. Tu lui envoie l'état dans lequel tu veux qu'il soit, RAF de celui dans lequel il était avant.
    2. Tu fais un premier switch qui sort les deux events de ton node switch actuel pour lesquels tu ne vires pas Circadian_Lighting et tu les laisse vivre leur vie.
    3. Tu routes le reste pour couper Circadian_Lighting (y'a une option "otherwise" dans le node switch)
    4. Comme en passant dans un "call: service", tu vas perdre le payload de ton message d'origine (donc le code du bouton), tu fous un node "change" j0r SET msg.payload.mypayload = msg.payload
    5. Tu coupes Circadian Lighting avec ton "call service"
    6. Tu refous un switch (mais cette fois sur msg.payload.mypayload.event.event) pour séparer les 5 events qui restent et les traiter

    De toute façon dans nos usages, c'est pas 3 nodes de plus ou de moins qui vont changer significativement les perfs. Si ton truc marche, pourquoi en changer ?
    1- Putain oui, of course



    2 à 5: ok heu je regarde ça plus tard
    Envoyé depuis mon Motorola StarTac et Netscape Mail 5.23

Page 49 sur 49 PremièrePremière ... 39414243444546474849

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •