Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1526 connectés 

 

 

Quel matériel utilisez-vous pour héberger votre application domotique qui fournit l'IHM




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  663  664  665  ..  1389  1390  1391  1392  1393  1394
Auteur Sujet :

[Topic unique] La domotique, maison connectée et intelligente

n°291785
dafunky
Posté le 13-02-2020 à 14:30:01  profilanswer
 

Reprise du message précédent :

ganfoud a écrit :

bon, une fois ça mis en place je verrai pour que traefik gère les choses hors Docker :D


 
Traefik a été conçu pour docker. Si tu le mets sur un qui héberge x conteneurs, Traefik va automatiquement les détecter et permettre un routage vers ces conteneurs via un sous domaine de ton choix, ou généré par défaut. Si tu veux que ce même traefik prenne également en charge des services applicatifs tierces, que ce soit des VM, machines physiques, ou autres conteneurs situés sur une autre machine, il suffit de les déclarer dans un fichier assez simple à rédiger où tu vas préciser l'ip, le port, et le sous domaine que tu veux y associer. C'est à la carte.


---------------
xPLduino, la domotique DIY deluxe - - - - Sigma 85mm F1.4
mood
Publicité
Posté le 13-02-2020 à 14:30:01  profilanswer
 

n°291791
dafunky
Posté le 13-02-2020 à 14:48:23  profilanswer
 

stban1983 a écrit :

Est ce que l'un d'entre vous a testé l'interrupteur Yeelight bluetooth (Smart dimming switch) ?
Il est de bonne qualité ? Le press du bouton est agréable?
Je demande car j'avais été déçu des xiaomi aqara wall switch, il faut s'y prendre à plusieurs fois pour faire un bon click je trouve.


 
Le Yeelight bluetooth Smart dimming switch est visuellement esthétique, et fonctionnel. La pression du bouton n'est pas très agréable, il faut appuyer bien au centre de la molette sinon ça ne clique pas bien.  
 
Le aqara wall switch double est visuellement esthétique, et pleinement fonctionnel.  La pression des boutons est correcte, quand on sait qu'il faut appuyer franchement il n'y pas de fausse manip, en tout cas il possède un très bon WAF. Je lui reproche un "Clac" trop sonore.
 
Le opple est visuellement plus discutable, avec sa forme anguleuse, et une surface de boutons matte qui risque de devenir salissante à moyen ou long terme. La pression du bouton est très agréable, totalement silencieuse, par contre la course est très courte et la séparation entre ON et OFF est moins marquée, donc il y a des chances que le WAF soit moins bon.  
 
Quand j'aurai un moment je pense remplacer mon aqara switch 2 boutons par mon oople switch 4 boutons dans ma chambre. On aura donc les fonctions :  
 
- Bouton 1 aqara = toggle plafonnier devient bouton 1 + 2 (on/off) sur le opple
- Bouton 2 aqara = toggle lumière d'ambiance devient bouton 3 + 4 (on/off) sur le opple
- Bouton 1+2 aqara = toggle volets devient double clic 3 + double clic 4 (ouvert/fermé) sur le opple
 
Et en relisant ça je me dis que ça va devenir saoulant de changer le fonctionnement actuel toggle en on/off, car je transforme 3 ordre en 6 ordres, ce qui correspond à une perte de confort.
 
Du coup je ne vais rien changer :D


---------------
xPLduino, la domotique DIY deluxe - - - - Sigma 85mm F1.4
n°291792
stban1983
Posté le 13-02-2020 à 14:57:00  profilanswer
 

ok merci, c'est dommage qu'il ne soit pas au top coté "pression du bouton"
j'hésite du coup...

n°291793
dafunky
Posté le 13-02-2020 à 15:02:51  profilanswer
 

Je l'utilise au quotidien, à l'occasion je le remplacerai par un aqara ou opple


---------------
xPLduino, la domotique DIY deluxe - - - - Sigma 85mm F1.4
n°291796
ganfoud
Talk to me Goose
Posté le 13-02-2020 à 15:14:03  profilanswer
 

dafunky a écrit :


 
Traefik a été conçu pour docker. Si tu le mets sur un qui héberge x conteneurs, Traefik va automatiquement les détecter et permettre un routage vers ces conteneurs via un sous domaine de ton choix, ou généré par défaut. Si tu veux que ce même traefik prenne également en charge des services applicatifs tierces, que ce soit des VM, machines physiques, ou autres conteneurs situés sur une autre machine, il suffit de les déclarer dans un fichier assez simple à rédiger où tu vas préciser l'ip, le port, et le sous domaine que tu veux y associer. C'est à la carte.


ça a le mérite d'être clair!
 
bon ben merci à tous, y'a plus qu'à!

n°291823
Tchecker67
Posté le 13-02-2020 à 17:13:18  profilanswer
 

Bonjour à tous,
En cours de construction d'une maison individuelle (CCMI), je m'interroge sur le raccordement électrique des volets roulants motorisés (VRM) Somfy en vue d'une domotisation future.
 
Les volets sont filaires, bon point ! (a priori)
 
Je compte y ajouter plus tard des micro-modules FIBARO à piloter depuis une box (type Eedomus).
 
Quelles sont les indications à transmettre à l'électricien qui va poser les VRM pour que l'installation future des FIBARO soit la plus simple possible ? (c'est à dire éviter de retirer des câbles)
 
Je pense que le FIBARO sera placé derrière l'interrupteur. Dans ce cas :
- Quel type d'interrupteur ?
- Où doit arriver l'alimentation ?
- Où doit arriver le neutre ?
 
D'après vous, est-ce que je peux demander à l'électricien de me brancher les FIBARO, alors que je n'ai pas encore de box pour les paramétrer et les utiliser ? L'interrupteur mural sera t-il exploitable sans problème ?
 
Merci d'avance pour vos précieux retours :)

n°291827
SNoof
Ou pas...
Posté le 13-02-2020 à 18:57:08  profilanswer
 

ganfoud, du coup tu as eu les réponses ici, mais si besoin d'aide sur la conf traefik hésite pas à me mp.
 

Tchecker67 a écrit :

Bonjour à tous,
En cours de construction d'une maison individuelle (CCMI), je m'interroge sur le raccordement électrique des volets roulants motorisés (VRM) Somfy en vue d'une domotisation future.
 
Les volets sont filaires, bon point ! (a priori)
 
Je compte y ajouter plus tard des micro-modules FIBARO à piloter depuis une box (type Eedomus).
 
Quelles sont les indications à transmettre à l'électricien qui va poser les VRM pour que l'installation future des FIBARO soit la plus simple possible ? (c'est à dire éviter de retirer des câbles)
 
Je pense que le FIBARO sera placé derrière l'interrupteur. Dans ce cas :
- Quel type d'interrupteur ?
- Où doit arriver l'alimentation ?
- Où doit arriver le neutre ?
 
D'après vous, est-ce que je peux demander à l'électricien de me brancher les FIBARO, alors que je n'ai pas encore de box pour les paramétrer et les utiliser ? L'interrupteur mural sera t-il exploitable sans problème ?
 
Merci d'avance pour vos précieux retours :)


 
Dépends de la marque des moteurs de tes VR !

Message cité 2 fois
Message édité par SNoof le 13-02-2020 à 18:58:08
n°291838
Kibis
Posté le 13-02-2020 à 20:42:08  profilanswer
 

Petite question dans la continuité du sujet Traefik.  
 
J’ai Hass.io installé sous docker (donc pas dans mon docker-compose) et mosquitto dans mon docker-compose.  
 
Je souhaite sécuriser tout ce qui va avoir une communication avec l’exterieur (Hass.io et mosquitto donc). Comment se passe justement cette sécurisation ?  
Est ce que le fait de passer par traefik assure cette sécurité ou il faut que j’active le ssl des différents addons sous hass.io avec le lien du certificat que traefik a généré ?
Idem via le docker mosquitto, si traefik gère le certificat, disons pour owntracks, ou il faut aussi que je dise dans le fichier conf de mosquitto que la communication se fait en sécurisé ?
 
J’essaie d’apprendre dans ce domaine, mais c’est quand même quelque chose d’assez compliqué quand on regarde un peu à l’intérieur je trouve..

n°291843
getget
Il y en a qui ont essayé ...
Posté le 13-02-2020 à 20:59:44  profilanswer
 

Bonjour j'ai mit à jour les liens hfr-rehost dans mes tutos en enlevant les resizes. Désolé donc si les images sont grandes mais j'ai fait au plus simple.

 

Merci a chacun de faire pareil au minimum pour que le topic garde ses images ;)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°291846
the_big_po​ulet
Flying chicken
Posté le 13-02-2020 à 21:07:24  profilanswer
 

mais encore ? :o

mood
Publicité
Posté le 13-02-2020 à 21:07:24  profilanswer
 

n°291852
ganfoud
Talk to me Goose
Posté le 13-02-2020 à 22:00:51  profilanswer
 

SNoof a écrit :

ganfoud, du coup tu as eu les réponses ici, mais si besoin d'aide sur la conf traefik hésite pas à me mp.
 


 
merci bien! ne doute pas que ça risque d'arriver :D

n°291860
getget
Il y en a qui ont essayé ...
Posté le 13-02-2020 à 22:57:31  profilanswer
 


HFR-rehost est mort. Il faut au minimum enlever les resizes, au mieux réuploader ailleurs.


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°291866
Tchecker67
Posté le 13-02-2020 à 23:17:17  profilanswer
 

SNoof a écrit :

ganfoud, du coup tu as eu les réponses ici, mais si besoin d'aide sur la conf traefik hésite pas à me mp.
 


 

SNoof a écrit :


 
Dépends de la marque des moteurs de tes VR !


 
C'est des moteurs Somfy (sur volet Somfy). Merci d'avance pour ton retour. Surtout concernant les indications pour l'électricien, ne m'y connaissant pas du tout je ne sais pas ce que je dois lui communiquer comme info pour que l'installation future des Fibaro soit la plus simple.

n°291869
Digaboy
Posté le 13-02-2020 à 23:40:40  profilanswer
 

demande du filaire (à priori c'est bon) des plots profonds (50 voir 60mm ou mieux des boitiers chaussettes) et idéalement des boutons monostable (ça c'est chiant tant que c'est pas domotisé par contre)

n°291871
Tchecker67
Posté le 14-02-2020 à 06:49:58  profilanswer
 

Digaboy a écrit :

demande du filaire (à priori c'est bon) des plots profonds (50 voir 60mm ou mieux des boitiers chaussettes) et idéalement des boutons monostable (ça c'est chiant tant que c'est pas domotisé par contre)


 
C'est chiant dans quel sens ? Va falloir rester appuyé sur le bouton pour monter / descendre ?
 
Est ce qu'il n'y a pas une histoire de neutre à ramener à l'interrupteur aussi ? (Le Fibaro a besoin du neutre) ou alors je pourrai le chercher au niveau du moteur et le faire descendre par la gaine moteur / interrupteur le jour où ?

n°291872
ganfoud
Talk to me Goose
Posté le 14-02-2020 à 07:44:58  profilanswer
 

Si il te faut le neutre, mais normalement les volets sont alimentés avec le neutre donc ça devrait pas être un problème

n°291874
outlaw_
Posté le 14-02-2020 à 08:20:23  profilanswer
 

J'ai des erreurs à répétition lorsque j'essaie d'installer domoticz, je n'ai jamais réussi à booter openhab, finalement seul HA finit son install.
Par contre au moindre reboot c'est une galère, je n'arrive à reprendre la main qu'une fois sur 3 environ.
Soit mon RPI3 1ère gen est trop mou soit ma carte sd commence à rendre l'âme.
Vous avez quoi comme config? Un rpi4 2Go serait suffisant?

n°291875
ganfoud
Talk to me Goose
Posté le 14-02-2020 à 08:22:26  profilanswer
 

moi ça tournait sur un RPi2 donc je pense pas que ce soit un problème de puissance!
t'as essayé avec une autre alim et/ou SD?

n°291878
outlaw_
Posté le 14-02-2020 à 08:36:39  profilanswer
 

ganfoud a écrit :

moi ça tournait sur un RPi2 donc je pense pas que ce soit un problème de puissance!
t'as essayé avec une autre alim et/ou SD?


Une autre carte sd, en 8Go cette fois pour domoticz sur raspbian, mais là j'ai eu une partition qui s'est mise en lecture seule (celle avec /var/ je ne sais plus quoi): Raspian était lancé mais lorsque j'ai fait un apt upgrade en ssh ça a commencé à merder aussi.
C'est là que je me suis demandé si mes erreurs i/o n'étaient pas générées par mon rpi.  
 
Je vais prendre une µsd 32go A2 sur a.ma.zon pour pouvoir tester ce week end.
Resterait l'alim, une 5v pourtant.

n°291879
ganfoud
Talk to me Goose
Posté le 14-02-2020 à 08:41:13  profilanswer
 

ça peut être le cable aussi, pas forcément le transfo en lui même

n°291881
outlaw_
Posté le 14-02-2020 à 08:59:08  profilanswer
 

ganfoud a écrit :

ça peut être le cable aussi, pas forcément le transfo en lui même


 [:cheesecake]  
 
Mon matos de "test"
RPI3 B
alim 5v
carte 32Go
carte 8Go
Etcher me retourne une erreur sur la 8Go donc déjà je peux l'écarter.  
A la limite j'ai un autre rpi3 et une alim puissante de téléphone pour vérifier.

n°291886
Masure
Posté le 14-02-2020 à 09:11:07  profilanswer
 

Pourquoi tu t'acharnes avec les sd alors qu'il est communément admis que c'est pas fiable ?


---------------
Il est injuste que les briquets puissent décapsuler les bouteilles de bière alors que les décapsuleurs ne pourront jamais allumer de cigarettes.
n°291891
outlaw_
Posté le 14-02-2020 à 09:33:24  profilanswer
 

Masure a écrit :

Pourquoi tu t'acharnes avec les sd alors qu'il est communément admis que c'est pas fiable ?


Parce que la bse de l'install se fait à partir d'une sd.

n°291939
the_big_po​ulet
Flying chicken
Posté le 14-02-2020 à 21:14:22  profilanswer
 

A tout les coups ce sont tes sd. Avec une bonne sd tu pourras faire un poc mais a long terme faut autre chose.

n°291952
DannyElfma​n
Kinrick o Scotland
Posté le 15-02-2020 à 08:58:08  profilanswer
 

outlaw_ a écrit :


J'ai donc bien fait de commander de quoi fabriquer un module zigbee2mqtt :D


Vous zissi :)


---------------
Blood is rushing into your muscles and that's what we call The Pump. Your muscles get a really tight feeling, like your skin is going to explode any minute ...
n°291996
HoM3r17
Ouh Pinaise !
Posté le 16-02-2020 à 07:56:53  profilanswer
 

:hello:  
 
Existe t'il des utilisateurs de Valetudo (Roborock S50) et de Jeedom ici ?
 
Je me suis amusé a passer mon roborock sous Valetudo (oui j'aurais pu rester sur le fw stock, mais j'aime bien bidouiller  :o ), j'ai activé le MQTT, mais je n'ai jamais utilisé ce protocole ... grace a la documentation de Valetudo pour Home Assistant j'ai réussi a faire remonter le robot dans Jeedom via le plugin JMQTT, mais je n'ai pour l'instant que les commandes info qui apparaissent (Voir capture)
 
https://imagizer.imageshack.com/img921/3232/qbgnMT.png
 
Je ne connait pas encore les notions de "topic" MQTT mais il semblerait que cela corresponde a un "groupe", ainsi le robot est reconnu dans le topic jeedom/valetudo, et j'ai 3 "sous-topics" qui sont remontés tout seul : "Attribute", "State" et "Map Data" qui contiennent toutes les infos, mais savez vous comment s'y prendre pour communiquer dans l'autre sens ?  
 
Oui je suis un MQTT noob mais je ne demande qu'a apprendre  :o
 
_
 
EDIT bon je me réponds tout seul, tout est dans la documentation Home Assistant, ca fonctionne parfairement sous Jeedom : https://www.home-assistant.io/integ [...] c-commands
 
Plus qu'a me créer un beau widget avec tout ça :)


Message édité par HoM3r17 le 16-02-2020 à 08:02:34

---------------
Merci la gueuse, tu es un laideron mais tu es bien bonne !
n°292005
Ill Nino
Love
Posté le 16-02-2020 à 09:38:13  profilanswer
 

actarusprinced'euphor a écrit :

Pour ceux que ça intéresse, j'ai récupéré et modifié un script pour le contrôle des clim MITSUBISHI via MelCloud (module WIFI)
Source : https://www.domoticz.com/forum/view [...] =34&t=7496
 

Code :
  1. #!/usr/bin/perl
  2. #Dependency: libwww-perl, libjson-perl
  3. # Original script : gysmo38
  4. # Modifications : bagnico
  5. ###################################################
  6. # Release notes
  7. ###################################################
  8. # Version 0.4:
  9. # - add vane option horizontal
  10. # - Change report to domoticz for informations (MODE | T°C | TIME_NEXT_UPDATE)
  11. # - Change split time (remove .xxx)
  12. # Version 0.3:
  13. # - setDomDeviceMode OK
  14. # - Script works with no Areas
  15. # - add 1 hours for uptime (for french)
  16. # Version 0.2:
  17. # - add 2 hours for uptime time (for french)
  18. # - add mode option
  19. # - add fan option
  20. # - add vane option (only vertical)
  21. # - add settemp option
  22. # Version 0.1: First release (with very dirty code...)
  23. # - switch on / off unit
  24. # - report room temperature
  25. # - report unit temperature set
  26. # - report next unit update
  27. use HTTP::Request::Common qw(POST GET);
  28. use HTTP::Headers;
  29. use LWP::UserAgent;
  30. use JSON;   
  31. use Data::Dumper;
  32. #####################################################
  33. # Configuration
  34. #####################################################
  35. my $Email = "mail\@mail.com";  # Email used to login to MELcloud
  36. my $Password = "password";       # Password used lo login to MELcloud
  37. my $debug = 1;                  # 0 = no debug, 1 = debug
  38. my $domIP = "192.168.0.251";         # Domoticz IP
  39. my $domPORT = "8080";      # Domoticz PORT
  40. my @devicesInfos;               # List of all devices. Add block for new devices
  41. #Device 1
  42. $devicesInfos{"SALON"}{"idx_status"} = "657";   # IDX of status device (type switch)
  43. $devicesInfos{"SALON"}{"idx_temp"} = "658";      # IDX of temperature device (type temp)
  44. $devicesInfos{"SALON"}{"idx_info"} = "666"; # IDX of mode (type text)
  45. #Device n
  46. # $devicesInfos{"CHAMBRE"}{"idx_status"} = "657";   # IDX of status device (type switch)
  47. # $devicesInfos{"CHAMBRE"}{"idx_temp"} = "658";      # IDX of temperature device (type temp)
  48. # $devicesInfos{"CHAMBRE"}{"idx_info"} = "666"; # IDX of mode (type text)
  49. ##########################################################
  50. #   Functions
  51. ##########################################################
  52. sub debug {
  53.       my ($msg) = @_;
  54.       if ($debug) {
  55.          print $msg."\n";
  56.       }
  57. }
  58. sub time_offset {
  59.       my ($time,$offset) = @_;
  60.       @split_time = split(/:/,$time);
  61.   # debug("Time: ".$split_time[0]);
  62.       if ($split_time[0] <= 22) {
  63.             $split_time[0] = $split_time[0] + 1;
  64.       }
  65.       elsif ($split_time[0] == 23) {
  66.             $split_time[0] = 00;
  67.       }
  68.   $result = join(":",$split_time[0],$split_time[1],$split_time[2]);
  69.   @timeok = split(/\./,$result);
  70.       return $timeok[0];
  71. }
  72. sub getDOMDeviceStatus {
  73.       my ($idx) = @_;
  74.       my $url = "http://$domIP:$domPORT/json.htm?type=devices&rid=".$idx;
  75.       my $ua = LWP::UserAgent->new();
  76.       # Set our own user-agent string!
  77.       $ua->agent("Domoticz Gysmo" );
  78.       require HTTP::Request;
  79.       $req = HTTP::Request->new(GET => $url);
  80.       # Fire the cannon now !
  81.       my $res = $ua->request($req);                                                                 
  82.       # Get the error back from the server if any
  83.       my $err = $res->status_line;
  84.       # Get server body text, $_ used in regexp on next line
  85.       $_ = $res->decoded_content;
  86.       if (/Illegal Operation/ig || $err != 200) {
  87.          return "Server returned error: $err\n";
  88.       }
  89.       else {
  90.          $result = $1 if /(?:Status\"\ :)+(.*?),/s;
  91.          debug("receive from domoticz: ".$result);
  92.          return $result;
  93.       } 
  94. }
  95. sub login {
  96.    #Parameters
  97.    my ($Email,$Password) = @_;
  98.    #Variables
  99.    my $AppVersion = "1.9.3.0";
  100.    my $Language = "7";
  101.    my $CaptchaChallenge = "";
  102.    my $CaptchaResponse = "";
  103.    my $Persist = "true";
  104.    my $url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/Login/ClientLogin";
  105.  
  106.    # set up the stuff
  107.    my $ua = LWP::UserAgent->new();
  108.    # Set our own user-agent string!
  109.    $ua->agent("Domoticz Gysmo" );
  110.    # file.cgi should just return the data sent for this test
  111.    # These seem to be like <input type=text name=A value=$A > off a form...
  112.    my $req = POST $url, [
  113.    AppVersion => "$AppVersion",
  114.    CaptchaChallenge => "$CaptchaChallenge",
  115.    CaptchaResponse => "$CaptchaResponse",
  116.    Email => "$Email",
  117.    Language => "$Language",
  118.    Password => "$Password",
  119.    Persist => "$Persist"
  120.    ];
  121.    # Fire the cannon now !
  122.    my $res = $ua->request($req);                                                                 
  123.    # Get the error back from the server if any
  124.    my $err = $res->status_line;
  125.    # Get server body text, $_ used in regexp on next line
  126.    $_ = $res->decoded_content;
  127.    if (/Illegal Operation/ig || $err != 200) {
  128.       return "Server returned error: $err\n";
  129.    }
  130.    elsif(/\"ErrorId\":1/ig) {
  131.       return "Bad password\n";
  132.    } 
  133.    elsif(/\"ErrorId\":null/ig) {
  134.       $result  = $1 if /(?:ContextKey\":\" )+(.*?)\"/s;
  135.       debug ("context ID: ".$result);
  136.       return $result;
  137.    }
  138.    else {
  139.       return "Unknow error";
  140.    }
  141. }
  142. sub getMELBuildingID {
  143.    #Parameters
  144.    my ($ContextKey,$devicename) = @_;
  145.    #Variables
  146.    my $url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
  147.    # set up the stuff
  148.    my $ua = LWP::UserAgent->new();
  149.    # Set our own user-agent string!
  150.    $ua->agent("Domoticz Gysmo" );
  151.    require HTTP::Request;
  152.    $req = HTTP::Request->new(GET => $url);
  153.    $req->header("X-MitsContextKey" => $ContextKey);
  154.    # Fire the cannon now !
  155.    my $res = $ua->request($req);                                                                 
  156.    # Get the error back from the server if any
  157.    my $err = $res->status_line;
  158.    # Get server body text, $_ used in regexp on next line
  159.    $_ = $res->decoded_content;
  160.    my $decoded = JSON->new->utf8(0)->decode($_);
  161.    my $result = "0";
  162.    foreach my $building (@$decoded) {
  163.             @devices = @{$building->{'Structure'}{'Devices'}};
  164.             foreach my $device (@devices) {
  165.                if ( $device->{'DeviceName'} =~ $devicename) {
  166.                  
  167.                   $result =  $device->{'BuildingID'};
  168.                }
  169.             }
  170.   # debug("BuildingID: ".Dumper($result));
  171.    }
  172.    if (/Illegal Operation/ig || $err != 200) {
  173.       return "Server returned error: $err\n";
  174.    }
  175.    else {
  176.    # debug("Building ID: ".Dumper($decoded));
  177.       return "$result";
  178.    }
  179. }
  180. sub getMELDeviceID {
  181.    #Parameters
  182.    my ($ContextKey,$devicename) = @_;
  183.    #Variables
  184.    my $url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
  185.    # set up the stuff
  186.    my $ua = LWP::UserAgent->new();
  187.    # Set our own user-agent string!
  188.    $ua->agent("Domoticz Gysmo" );
  189.  
  190.    require HTTP::Request;
  191.    $req = HTTP::Request->new(GET => $url);
  192.    $req->header("X-MitsContextKey" => $ContextKey);
  193.    # Fire the cannon now !
  194.    my $res = $ua->request($req);                                                                 
  195.    # Get the error back from the server if any
  196.    my $err = $res->status_line;
  197.    # Get server body text, $_ used in regexp on next line
  198.    $_ = $res->decoded_content;
  199.    my $decoded = JSON->new->utf8(0)->decode($_);
  200.    my $result = "0";
  201.    foreach my $building (@$decoded) {
  202.             @devices = @{$building->{'Structure'}{'Devices'}};
  203.             foreach my $device (@devices) {
  204.                if ( $device->{'DeviceName'} =~ $devicename) {
  205.                  
  206.                   $result =  $device->{'DeviceID'};
  207.                }
  208.             }
  209.   # debug("DeviceID: ".Dumper($result));
  210.    }
  211.    if (/Illegal Operation/ig || $err != 200) {
  212.       return "Server returned error: $err\n";
  213.    }
  214.    else {
  215.       # debug("Device ID: ".Dumper($decoded));
  216.       return "$result";
  217.    }
  218. }
  219. sub listDevices {
  220.    #Parameters
  221.    my ($ContextKey) = @_;
  222.    #Variables
  223.    my $url = "https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices";
  224.    # set up the stuff
  225.    my $ua = LWP::UserAgent->new();
  226.    # Set our own user-agent string!
  227.    $ua->agent("Domoticz Gysmo" );
  228.  
  229.    require HTTP::Request;
  230.    $req = HTTP::Request->new(GET => $url);
  231.    $req->header("X-MitsContextKey" => $ContextKey);
  232.    # Fire the cannon now !
  233.    my $res = $ua->request($req);                                                                 
  234.    # Get the error back from the server if any
  235.    my $err = $res->status_line;
  236.    # Get server body text, $_ used in regexp on next line
  237.    $_ = $res->decoded_content;
  238.    if (/Illegal Operation/ig || $err != 200) {
  239.       return "Server returned error: $err\n";
  240.    }
  241.    else {
  242.       $result = $_;
  243.       debug("list devices: ".$result);
  244.       return "$result";
  245.    }
  246. }
  247. sub getAirConInfos {
  248.    #Parameters
  249.    my ($contextKey,$deviceID,$buildingID) = @_;
  250.    debug("getairconinfos : ".$contextKey,$deviceID,$buildingID);
  251.    #Variables
  252.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=' . $deviceID . '&buildingID=' . $buildingID;
  253.    # debug("device status : ". $url);
  254.    #return $url;
  255.    # set up the stuff
  256.    my $ua = LWP::UserAgent->new();
  257.    # Set our own user-agent string!
  258.    $ua->agent("Domoticz Gysmo" );
  259.  
  260.    require HTTP::Request;
  261.  
  262.    $req = HTTP::Request->new(GET => $url);
  263.    $req->header("X-MitsContextKey" => $contextKey);
  264.    # Fire the cannon now !
  265.    my $res = $ua->request($req);                                                                 
  266.    # Get the error back from the server if any
  267.    my $err = $res->status_line;
  268.    # Get server body text, $_ used in regexp on next line
  269.    $json = $res->decoded_content;
  270.    my $decoded = JSON->new->utf8(0)->decode($json);
  271.     if (/Illegal Operation/ig || $err != 200) {
  272.       return "Server returned error: $err\n";
  273.    }
  274.    else {
  275.       # debug("device status : ". $decoded);
  276.       return $decoded;
  277.    }
  278. }
  279. sub setDomDeviceStatus {
  280.    #Parameters
  281.    my ($idDomDevice,$deviceInfos) = @_;
  282.    #Variables
  283.    $domStatus = getDOMDeviceStatus($idDomDevice);
  284.    if ($deviceInfos->{'Power'} =~ /true/ && $domStatus =~ /"Off"/) {
  285.       $switchcmd = "On";
  286.    my $url = "http://$domIP:$domPORT/json.htm?type=command&param=switchlight&idx=".$idDomDevice."&switchcmd=".$switchcmd;
  287.    debug("send to domoticz: ".$url);
  288.    my $ua = LWP::UserAgent->new();
  289.    # Set our own user-agent string!
  290.    $ua->agent("Domoticz Gysmo" );
  291.  
  292.    require HTTP::Request;
  293.  
  294.    $req = HTTP::Request->new(GET => $url);
  295.       # Fire the cannon now !
  296.    my $res = $ua->request($req);                                                                 
  297.    # Get the error back from the server if any
  298.    my $err = $res->status_line;
  299.    # Get server body text, $_ used in regexp on next line
  300.    $_ = $res->decoded_content;
  301.    if (/Illegal Operation/ig || $err != 200) {
  302.       return "Server returned error: $err\n";
  303.    }
  304.    else {
  305.       $result = $1 if /(?:status\"\ :)+(.*?),/s;
  306.       debug("receive from domoticz: ".$result);
  307.       return $result;
  308.    }
  309.    }
  310.    elsif ($deviceInfos->{'Power'} =~ /false/ && $domStatus =~ /"On"/) {
  311.       $switchcmd = "Off";
  312.       my $url = "http://$domIP:$domPORT/json.htm?type=command&param=switchlight&idx=".$idDomDevice."&switchcmd=".$switchcmd;
  313.       debug("send to domoticz: ".$url);
  314.       my $ua = LWP::UserAgent->new();
  315.       # Set our own user-agent string!
  316.       $ua->agent("Domoticz Gysmo" );
  317.  
  318.    require HTTP::Request;
  319.  
  320.    $req = HTTP::Request->new(GET => $url);
  321.       # Fire the cannon now !
  322.    my $res = $ua->request($req);                                                                 
  323.    # Get the error back from the server if any
  324.    my $err = $res->status_line;
  325.    # Get server body text, $_ used in regexp on next line
  326.    $_ = $res->decoded_content;
  327.    if (/Illegal Operation/ig || $err != 200) {
  328.       return "Server returned error: $err\n";
  329.    }
  330.    else {
  331.       $result = $1 if /(?:status\"\ :)+(.*?),/s;
  332.       debug("receive from domoticz: ".$result);
  333.       return $result;
  334.    }
  335.    }
  336.    else {
  337.          debug("send to domoticz: nothing to send" );
  338.    }
  339.  
  340. }
  341. sub setDomDeviceTempRoom {
  342.    #Parameters
  343.    my ($idDomDevice,$deviceInfos) = @_;
  344.    my $url = "http://$domIP:$domPORT/json.htm?type=command&param=udevice&idx=".$idDomDevice."&nvalue=0&svalue=".$deviceInfos->{'RoomTemperature'};
  345.    debug("send to domoticz: ".$url);
  346.    my $ua = LWP::UserAgent->new();
  347.    # Set our own user-agent string!
  348.    $ua->agent("Domoticz Gysmo" );
  349.    require HTTP::Request;
  350.    $req = HTTP::Request->new(GET => $url);
  351.    # Fire the cannon now !
  352.    my $res = $ua->request($req);                                                                 
  353.    # Get the error back from the server if any
  354.    my $err = $res->status_line;
  355.    # Get server body text, $_ used in regexp on next line
  356.    $_ = $res->decoded_content;
  357.    if (/Illegal Operation/ig || $err != 200) {
  358.       return "Server returned error: $err\n";
  359.    }
  360.    else {
  361.       $result = $1 if /(?:status\"\ :)+(.*?),/s;
  362.       debug("receive from domoticz: ".$result);
  363.       return $result;
  364.    }
  365. }
  366. sub setDomDeviceInfo {
  367.    #Parameters
  368.    my ($idDomDevice,$deviceInfos) = @_;
  369.    my $mode = $deviceInfos->{'OperationMode'};
  370.    @timenextupdate = split(/T/,$deviceInfos->{'NextCommunication'});
  371.    if ( $mode == 1) {
  372.       $modeclim = 'MODE CHAUD';
  373. }
  374.    elsif ( $mode == 2) {
  375.       $modeclim = 'MODE SECHAGE';
  376. }
  377.    elsif ( $mode == 3) {
  378.       $modeclim = 'MODE FROID';
  379. }
  380.    elsif ( $mode == 7) {
  381.       $modeclim = 'MODE VENTILATION';
  382. }
  383.    elsif ( $mode == 8) {
  384.       $modeclim = 'MODE AUTO';
  385. }
  386.    my $url = "http://$domIP:$domPORT/json.htm?type=command&param=udevice&idx=".$idDomDevice."&nvalue=0&svalue=".$modeclim."%20|%20 ".$deviceInfos->{'SetTemperature'}."%20°C%20|%20".time_offset($timenextupdate[1],2);
  387.    debug("send to domoticz: ".$url);
  388.    my $ua = LWP::UserAgent->new();
  389.    # Set our own user-agent string!
  390.    $ua->agent("Domoticz Gysmo" );
  391.    require HTTP::Request;
  392.    $req = HTTP::Request->new(GET => $url);
  393.    # Fire the cannon now !
  394.    my $res = $ua->request($req);                                                                 
  395.    # Get the error back from the server if any
  396.    my $err = $res->status_line;
  397.    # Get server body text, $_ used in regexp on next line
  398.    $_ = $res->decoded_content;
  399.    if (/Illegal Operation/ig || $err != 200) {
  400.       return "Server returned error: $err\n";
  401.    }
  402.    else {
  403.       $result = $1 if /(?:status\"\ :)+(.*?),/s;
  404.       debug("receive from domoticz: ".$result);
  405.       return $result;
  406.    }
  407. }
  408. sub setMELDevicePower {
  409.    #Parameters
  410.    my ($contextKey,$status,$deviceInfos,$idx) = @_;
  411.    if($status =~ /on/ ) {
  412.       $deviceInfos->{'Power'} = "true";
  413.    }
  414.    elsif($status =~ /off/ ) {
  415.       $deviceInfos->{'Power'} = "false";
  416.    }
  417.    $deviceInfos->{'EffectiveFlags'} = "1";
  418.    $deviceInfos->{'HasPendingCommand'} = "true";
  419.    $json_device = JSON->new->utf8->encode($deviceInfos);
  420.    #Variables
  421.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  422.    #return $url;
  423.    # set up the stuff
  424.    my $ua = LWP::UserAgent->new();
  425.    # Set our own user-agent string!
  426.    $ua->agent("Domoticz Gysmo" );
  427.  
  428.    require HTTP::Request;
  429.    $req = HTTP::Request->new(POST => $url);
  430.    $req->header("X-MitsContextKey" => $contextKey);
  431.    $req->header('content-type' => 'application/json');
  432.    $req->content($json_device);
  433.    # Fire the cannon now !
  434.    my $res = $ua->request($req);                                                                 
  435.    # Get the error back from the server if any
  436.    my $err = $res->status_line;
  437.    # Get server body text, $_ used in regexp on next line
  438.    $_ = $res->decoded_content;
  439.    debug($_);
  440.    if (/Illegal Operation/ig || $err != 200) {
  441.       print "Server returned error: $err\n";
  442.    }
  443.    else {
  444.       debug("Update setMELDevicePower : OK" );
  445.    }
  446. }
  447. sub setMELDeviceFan {
  448.    #Parameters
  449.    my ($contextKey,$temp,$deviceInfos,$idx) = @_;
  450.    $deviceInfos->{'SetFanSpeed'} = $temp;
  451.    $deviceInfos->{'EffectiveFlags'} = "8";
  452.    $deviceInfos->{'HasPendingCommand'} = "true";
  453.    $json_device = JSON->new->utf8->encode($deviceInfos);
  454.    #Variables
  455.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  456.    # set up the stuff
  457.    my $ua = LWP::UserAgent->new();
  458.    # Set our own user-agent string!
  459.    $ua->agent("Domoticz Gysmo" );
  460.    require HTTP::Request;
  461.    $req = HTTP::Request->new(POST => $url);
  462.    $req->header("X-MitsContextKey" => $contextKey);
  463.    $req->header('content-type' => 'application/json');
  464.    $req->content($json_device);
  465.    # Fire the cannon now !
  466.    my $res = $ua->request($req);                                                                 
  467.    # Get the error back from the server if any
  468.    my $err = $res->status_line;
  469.    # Get server body text, $_ used in regexp on next line
  470.    $_ = $res->decoded_content;
  471.    if (/Illegal Operation/ig || $err != 200) {
  472.       print "Server returned error: $err\n";
  473.    }
  474.    else {
  475.       debug("Update setMELDeviceFan : OK" );
  476.    }
  477. }
  478. sub setMELDeviceMode {
  479.    #Parameters
  480.    my ($contextKey,$mode,$deviceInfos,$idx) = @_;
  481.    # Mode value : 1 warm, 2 dry, 3 cool, 7 vent, 8 auto
  482.    if ($mode =~ warm) {
  483.       $deviceInfos->{'OperationMode'} = 1;
  484.    }
  485.    elsif ($mode =~ dry) {
  486.       $deviceInfos->{'OperationMode'} = 2;
  487.    }
  488.    elsif ($mode =~ cool) {
  489.       $deviceInfos->{'OperationMode'} = 3;
  490.    }
  491.    elsif ($mode =~ vent) {
  492.       $deviceInfos->{'OperationMode'} = 7;
  493.    }
  494.    elsif ($mode =~ auto) {
  495.       $deviceInfos->{'OperationMode'} = 8;
  496.    } 
  497.    $deviceInfos->{'EffectiveFlags'} = "6";
  498.    $deviceInfos->{'HasPendingCommand'} = "true";
  499.    $json_device = JSON->new->utf8->encode($deviceInfos);
  500.    #Variables
  501.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  502.    # set up the stuff
  503.    my $ua = LWP::UserAgent->new();
  504.    # Set our own user-agent string!
  505.    $ua->agent("Domoticz Gysmo" );
  506.    require HTTP::Request;
  507.    $req = HTTP::Request->new(POST => $url);
  508.    $req->header("X-MitsContextKey" => $contextKey);
  509.    $req->header('content-type' => 'application/json');
  510.    $req->content($json_device);
  511.    # Fire the cannon now !
  512.    my $res = $ua->request($req);                                                                 
  513.    # Get the error back from the server if any
  514.    my $err = $res->status_line;
  515.    # Get server body text, $_ used in regexp on next line
  516.    $_ = $res->decoded_content;
  517.    if (/Illegal Operation/ig || $err != 200) {
  518.       print "Server returned error: $err\n";
  519.    }
  520.    else {
  521.       debug("Update setMELDeviceMode : OK" );
  522.    }
  523. }
  524. sub setMELDeviceVaneVertical {
  525.    #Parameters
  526.    my ($contextKey,$vane,$deviceInfos,$idx) = @_;
  527.    $deviceInfos->{'VaneVertical'} = $vane;
  528.    $deviceInfos->{'EffectiveFlags'} = "16";
  529.    $deviceInfos->{'HasPendingCommand'} = "true";
  530.    $json_device = JSON->new->utf8->encode($deviceInfos);
  531.    #Variables
  532.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  533.    # set up the stuff
  534.    my $ua = LWP::UserAgent->new();
  535.    # Set our own user-agent string!
  536.    $ua->agent("Domoticz Gysmo" );
  537.    require HTTP::Request;
  538.    $req = HTTP::Request->new(POST => $url);
  539.    $req->header("X-MitsContextKey" => $contextKey);
  540.    $req->header('content-type' => 'application/json');
  541.    $req->content($json_device);
  542.    # Fire the cannon now !
  543.    my $res = $ua->request($req);                                                                 
  544.    # Get the error back from the server if any
  545.    my $err = $res->status_line;
  546.    # Get server body text, $_ used in regexp on next line
  547.    $_ = $res->decoded_content;
  548.    if (/Illegal Operation/ig || $err != 200) {
  549.       print "Server returned error: $err\n";
  550.    }
  551.    else {
  552.       debug("Update setMELDeviceVaneVertical : OK" );
  553.    }
  554. }
  555. sub setMELDeviceVaneHorizontal {
  556.    #Parameters
  557.    my ($contextKey,$vane,$deviceInfos,$idx) = @_;
  558.    $deviceInfos->{'VaneHorizontal'} = $vane;
  559.    $deviceInfos->{'EffectiveFlags'} = "16";
  560.    $deviceInfos->{'HasPendingCommand'} = "true";
  561.    $json_device = JSON->new->utf8->encode($deviceInfos);
  562.    #Variables
  563.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  564.    # set up the stuff
  565.    my $ua = LWP::UserAgent->new();
  566.    # Set our own user-agent string!
  567.    $ua->agent("Domoticz Gysmo" );
  568.    require HTTP::Request;
  569.    $req = HTTP::Request->new(POST => $url);
  570.    $req->header("X-MitsContextKey" => $contextKey);
  571.    $req->header('content-type' => 'application/json');
  572.    $req->content($json_device);
  573.    # Fire the cannon now !
  574.    my $res = $ua->request($req);                                                                 
  575.    # Get the error back from the server if any
  576.    my $err = $res->status_line;
  577.    # Get server body text, $_ used in regexp on next line
  578.    $_ = $res->decoded_content;
  579.    if (/Illegal Operation/ig || $err != 200) {
  580.       print "Server returned error: $err\n";
  581.    }
  582.    else {
  583.       debug("Update setMELDeviceVaneHorizontal : OK" );
  584.    }
  585. }
  586. sub setMELDeviceTemp {
  587.    #Parameters
  588.    my ($contextKey,$temp,$deviceInfos,$idx) = @_;
  589.    $deviceInfos->{'SetTemperature'} = $temp;
  590.    $deviceInfos->{'EffectiveFlags'} = "4";
  591.    $deviceInfos->{'HasPendingCommand'} = "true";
  592.    $json_device = JSON->new->utf8->encode($deviceInfos);
  593.    #Variables
  594.    my $url = 'https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/SetAta';
  595.    # set up the stuff
  596.    my $ua = LWP::UserAgent->new();
  597.    # Set our own user-agent string!
  598.    $ua->agent("Domoticz Gysmo" );
  599.    require HTTP::Request;
  600.    $req = HTTP::Request->new(POST => $url);
  601.    $req->header("X-MitsContextKey" => $contextKey);
  602.    $req->header('content-type' => 'application/json');
  603.    $req->content($json_device);
  604.    # Fire the cannon now !
  605.    my $res = $ua->request($req);                                                                 
  606.    # Get the error back from the server if any
  607.    my $err = $res->status_line;
  608.    # Get server body text, $_ used in regexp on next line
  609.    $_ = $res->decoded_content;
  610.    if (/Illegal Operation/ig || $err != 200) {
  611.       print "Server returned error: $err\n";
  612.    }
  613.    else {
  614.       debug("Update setMELDeviceTemp : OK" );
  615.    }
  616. }
  617. sub init_mel {
  618.    #Parameters
  619.    my ($search_name) = @_;
  620.    $contextID = login($Email,$Password);
  621.    foreach my $name (keys %devicesInfos)  {
  622.       if ( $name =~ $search_name ) {
  623.          $buildingID = getMELBuildingID($contextID,$name);
  624.          $deviceID = getMELDeviceID($contextID,$name);
  625.       }
  626.    }
  627. }
  628. #####################################################
  629. # Main program
  630. #####################################################
  631. #####################################################
  632. # Arguments
  633. #####################################################
  634. if ($ARGV[0] =~ /report/) {
  635.    $contextID = login($Email,$Password);
  636.    foreach my $name (keys %devicesInfos)  {
  637.       $buildingID = getMELBuildingID($contextID,$name);
  638.       $deviceID = getMELDeviceID($contextID,$name);
  639.       debug("############################" );
  640.       debug("# Reporting device: " . $name ." #" );
  641.       debug("############################" );
  642.       $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  643.       setDomDeviceTempRoom($devicesInfos{$name}{"idx_temp"},$infosAirCon);
  644.       setDomDeviceStatus($devicesInfos{$name}{"idx_status"},$infosAirCon);
  645.       setDomDeviceInfo($devicesInfos{$name}{"idx_info"},$infosAirCon);
  646.    }
  647. }
  648. elsif ($ARGV[0] =~ /test/) {
  649.    init_mel($ARGV[1]);
  650.    debug("Send command to building:" . $buildingID);
  651.    debug("Send command to device:" . $deviceID);
  652.  
  653. }
  654. elsif ($ARGV[0] =~ /temp/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  655.    init_mel($ARGV[2]);
  656.    @temp = split(/:/,$ARGV[1]);
  657.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  658.    setMELDeviceTemp($contextID,$temp[0],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  659. }
  660. elsif ($ARGV[0] =~ /fan/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  661.    init_mel($ARGV[2]);
  662.    debug("Send commande to device:" . $buildingID);
  663.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  664.    setMELDeviceFan($contextID,$ARGV[1],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  665. }
  666. elsif ($ARGV[0] =~ /power/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  667.    init_mel($ARGV[2]);
  668.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  669.    setMELDevicePower($contextID,$ARGV[1],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  670. }
  671. elsif ($ARGV[0] =~ /mode/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  672.    init_mel($ARGV[2]);
  673.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  674.    setMELDeviceMode($contextID,$ARGV[1],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  675. }
  676. elsif ($ARGV[0] =~ /vanevertical/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  677.    init_mel($ARGV[2]);
  678.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  679.    setMELDeviceVaneVertical($contextID,$ARGV[1],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  680. }
  681. elsif ($ARGV[0] =~ /vanehorizontal/ && exists $devicesInfos{$ARGV[2]}{'idx_status'}) {
  682.    init_mel($ARGV[2]);
  683.    $infosAirCon = getAirConInfos($contextID,$deviceID,$buildingID);
  684.    setMELDeviceVaneHorizontal($contextID,$ARGV[1],$infosAirCon,$devicesInfos{$ARGV[2]}{'idx_update'});
  685. }
  686. elsif ($ARGV[0] =~ /help/) {
  687.    print "-------------------------- MELCLOUD PERL FOR DOMOTICZ v0.4 --------------------------\n";
  688.    print "report: send status of devices to domoticz. Use it for crontab\n";
  689.    print "power on/off DEVICENAME: power on or off a device.\n";
  690.    print "mode modename DEVICENAME: choose mode warm,dry,cool,vent or auto\n";
  691.    print "temp T° DEVICENAME: set temperature device. \n";
  692.    print "fan FAN_SPEED DEVICENAME: set fan speed of the device. \n";
  693.    print "vanevertical VANE_POS DEVICENAME: set van position to 1 - 5, 0 to auto and 7 to move . \n";
  694.    print "vanehorizontal VANE_POS DEVICENAME: set van position to 1 - 5, 0 to auto and 12 to move . \n";
  695.    print "more to come...\n";
  696. }
  697. else {
  698.    print "Nothing to do. Type help for help ;)\n";
  699. }


 
http://reho.st/preview/self/70ada6 [...] ae5cce.png
http://reho.st/preview/self/2d300f [...] 683cbb.png
 
Il suffit ensuite de créer des scripts bash pour les différents programmes :

Code :
  1. #!/bin/bash
  2. perl /home/pi/domoticz/scripts/perso/melcloud.pl temp 22 SALON
  3. perl /home/pi/domoticz/scripts/perso/melcloud.pl fan 0 SALON
  4. perl /home/pi/domoticz/scripts/perso/melcloud.pl vanevertical 0 SALON
  5. perl /home/pi/domoticz/scripts/perso/melcloud.pl vanehorizontal 0 SALON



Salut,
 
je viens de faire poser une clim Mitsubishi avec Melcould qui est bien nase comme app il faut le dire. :/
 
J'ai deja un serveur Domoticz. Ca m'interesse du coup. Tu peux faire quoi avec ce script? Tu peux controler intégralement ta clim? :??:

n°292006
Masure
Posté le 16-02-2020 à 09:47:35  profilanswer
 

Dommage de passer par Melcloud. Il existe depuis un petit moment une interface qui permet de tout gérer en local.  
 
T'as un plugin Domoticz dispo qui permet de tout contrôler : https://forum.hardware.fr/hfr/elect [...] tm#t261141


---------------
Il est injuste que les briquets puissent décapsuler les bouteilles de bière alors que les décapsuleurs ne pourront jamais allumer de cigarettes.
n°292008
Ill Nino
Love
Posté le 16-02-2020 à 10:00:26  profilanswer
 

Masure a écrit :

Dommage de passer par Melcloud. Il existe depuis un petit moment une interface qui permet de tout gérer en local.  
 
T'as un plugin Domoticz dispo qui permet de tout contrôler : https://forum.hardware.fr/hfr/elect [...] tm#t261141


Oh ok. :) Par contre j'ai rien de tout ca:
Prérequis :
- un ESP8266 flashé avec l'implémentation MQTT de Swicago (j'ai utilisé un huzzah pour éviter les conversion 3.3-5V)
- branchement de l'ESP au connecteur CN105 de la clim
- un broker MQTT  
 
:/ Ou est-ce que je peux utiliser le module Wifi que j'ai prit avec?

n°292010
outlaw_
Posté le 16-02-2020 à 10:32:14  profilanswer
 


:hello:
Je vieillis, je me préserve  :D

 

Petit retour sur ma config:
Finalement j'ai un rpi4, une sd A2, une alim ugreen 3 ou 5v et un dongle Conbee.
Bah tout fonctionne nickel maintenant. C'est réactif, assez user-friendly, je suis content de ma nuit :o

n°292015
Masure
Posté le 16-02-2020 à 10:58:43  profilanswer
 

Ill Nino a écrit :


Oh ok. :) Par contre j'ai rien de tout ca:
Prérequis :
- un ESP8266 flashé avec l'implémentation MQTT de Swicago (j'ai utilisé un huzzah pour éviter les conversion 3.3-5V)
- branchement de l'ESP au connecteur CN105 de la clim
- un broker MQTT  
 
:/ Ou est-ce que je peux utiliser le module Wifi que j'ai prit avec?


 
Le module wifi officiel est cantonné à Melcloud.  
 
Là c'est un module Wifi alternatif basé sur un micro controleur et le code de Swicago. Ca se branche sur le même port série (CN105) que le module wifi officiel. Le protocole a été rétro engineeré.


---------------
Il est injuste que les briquets puissent décapsuler les bouteilles de bière alors que les décapsuleurs ne pourront jamais allumer de cigarettes.
n°292023
actaruspri​nced'eupho​r
Metamorphose !
Posté le 16-02-2020 à 11:28:26  profilanswer
 

Ouai et c'est de la bombe bébé [:a chile:3]

n°292031
Ill Nino
Love
Posté le 16-02-2020 à 13:55:29  profilanswer
 

Masure a écrit :

 

Le module wifi officiel est cantonné à Melcloud.

 

Là c'est un module Wifi alternatif basé sur un micro controleur et le code de Swicago. Ca se branche sur le même port série (CN105) que le module wifi officiel. Le protocole a été rétro engineeré.


Ah putain pourquoi  j'ai acheté cette merde. :/

 

EDIT: Le ESP8266 je peux le brancher sur le Aduino du RFLink que j'ai deja? :??:


Message édité par Ill Nino le 16-02-2020 à 13:56:39
n°292035
Masure
Posté le 16-02-2020 à 14:33:52  profilanswer
 

Non c'est un micro contrôleur wifi autonome


---------------
Il est injuste que les briquets puissent décapsuler les bouteilles de bière alors que les décapsuleurs ne pourront jamais allumer de cigarettes.
n°292036
Ill Nino
Love
Posté le 16-02-2020 à 14:39:49  profilanswer
 

Masure a écrit :

Non c'est un micro contrôleur wifi autonome


T'as un lien ? Je suis pas sûr de ce qu'il faut... :??:


---------------
Faut qu'on court comme des lions, des tigres et des ours!
n°292037
Masure
Posté le 16-02-2020 à 14:56:45  profilanswer
 

https://github.com/SwiCago/HeatPump [...] /README.md

 

dans la section installation tu as aussi un lien externe qui détaille l'installation


---------------
Il est injuste que les briquets puissent décapsuler les bouteilles de bière alors que les décapsuleurs ne pourront jamais allumer de cigarettes.
n°292042
Shaad
Posté le 16-02-2020 à 16:32:33  profilanswer
 

#HomeAssistant #Zigbee
 
Quelle solution Zigbee générique utilisable avec Home Assistant vous semble aujourd'hui la plus mature/stable et avec un avenir le plus sûr possible  :??:  

  • ZHA - ZigBee Home Automation : intégration native de Home Assistant
  • deCONZ : à utiliser avec un contrôleur Conbee II
  • Zigbee2mqtt : à utiliser avec un contrôleur CC2531


Thanks  :jap:  


---------------
Plus d'hébergeur du Simu_Immo qui n'était de toute façon plus à jour des derniers taux. Désolé. :/
n°292057
VisualC++
J'va y penser ...
Posté le 16-02-2020 à 18:25:07  profilanswer
 

Un post (long) sur le sujet.
 
Perso je n'ai que testé zigbee2mqtt (que j'utilise) et zigate, vraiment pas le recule nécessaire pour conseillé quoi que ce soit.

n°292061
Ill Nino
Love
Posté le 16-02-2020 à 20:31:21  profilanswer
 

Masure a écrit :

https://github.com/SwiCago/HeatPump [...] /README.md

 

dans la section installation tu as aussi un lien externe qui détaille l'installation


Non du matos je voulais dire. J'ai vu la puce sûr Amazon. Mais c'est pour Arduino. C'est pas ça du coup je pense.


---------------
Faut qu'on court comme des lions, des tigres et des ours!
n°292068
Shaad
Posté le 16-02-2020 à 21:35:57  profilanswer
 

VisualC++ a écrit :

Un post (long) sur le sujet.
 
Perso je n'ai que testé zigbee2mqtt (que j'utilise) et zigate, vraiment pas le recule nécessaire pour conseillé quoi que ce soit.


 
 :jap:  
 
J'avais déjà lu ce thread avant de poster ici ainsi que d'autres, mais je n'arrive pas vraiment à conclure.  :D  
 
Bon je vais tenter l'aventure Zigbe2MQTT dans un premier temps pour me faire une idée.


---------------
Plus d'hébergeur du Simu_Immo qui n'était de toute façon plus à jour des derniers taux. Désolé. :/
n°292071
outlaw_
Posté le 16-02-2020 à 22:48:00  profilanswer
 

Shaad a écrit :

 

:jap:

 

J'avais déjà lu ce thread avant de poster ici ainsi que d'autres, mais je n'arrive pas vraiment à conclure. :D

 

Bon je vais tenter l'aventure Zigbe2MQTT dans un premier temps pour me faire une idée.


J'ai opté pour conbee+deconz mais je n'ai aucun recul. Je peux seulement dire que l'ergonomie pour l'appairage est bien faite dans deconz.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  663  664  665  ..  1389  1390  1391  1392  1393  1394

Aller à :
Ajouter une réponse
 

Sujets relatifs
[arduino] Topic Unique blabla @ Arduino* Réparations de vos appareils électroniques & electromenager *
Plus de sujets relatifs à : [Topic unique] La domotique, maison connectée et intelligente


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR