Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

docs:domotique:calaos2mqtt [2022/03/16 13:40]
adlp créée
docs:domotique:calaos2mqtt [2022/03/16 18:03] (version actuelle)
Ligne 3: Ligne 3:
  - Scripts a faire en 30 minutes   - Scripts a faire en 30 minutes
-Ce projet est (aujourd'hui) decoupé en 2 morceaux :+Ce projet est (aujourd'hui) découpe en 2 morceaux :
  - un Script Mqtt vers Calaos   - un Script Mqtt vers Calaos
  - un Script Mqtt vers Calaos   - un Script Mqtt vers Calaos
Ligne 10: Ligne 10:
  - Mettre _toutes_ les configurations dans un fichier tiers (le port 4456 aussi)   - Mettre _toutes_ les configurations dans un fichier tiers (le port 4456 aussi)
  - Utiliser un publisher mqtt propre au langage, de meme pour **nc** et **expect**   - Utiliser un publisher mqtt propre au langage, de meme pour **nc** et **expect**
 +  - Mettre en œuvre un mot de passe sur le mqtt
Outils utilisées Outils utilisées
  - nc et expect : pour communiquer avec le port 4456 de Calaos   - nc et expect : pour communiquer avec le port 4456 de Calaos
  - perl   - perl
 +
 +====== Mqtt2Calaos ======
<file perl> <file perl>
Ligne 45: Ligne 48:
print "Mqtt 2 Calaos listener dead\n"; print "Mqtt 2 Calaos listener dead\n";
 +</file>
 +
 +====== Calaos2Mqtt ======
 +
 +<file perl>
 +#!/usr/bin/perl
 +
 +my $mqtts="MQTT";
 +my $calaos="CALAOSSRV";
 +my $login="MOIMOI";
 +my $pwd="SECRET";
 +my $prefmqtt="ha/calaos/";
 +
 +my ($action,$obj,$status);
 +my ($clef,$val);
 +my $cmdcalaos='expect -c \'spawn -noecho nc '.$calaos.' 4456;send "login '.$login.' '.$pwd.'\n";expect -re {login '.$login.' ok\r\n};send "listen\n";interact\'';
 +my $i=0;
 +open CALAOS, $cmdcalaos." |" or die "Can't open < $cmdcalaos $!";
 +
 +sleep(5);
 +
 +print "Calaos 2 Mqtt Running\n";
 +while(<CALAOS>) {
 +        chop();
 +        if(/input_(1|2) /) {
 +             #print "No more $_\n";
 +             $i=0;
 +             }
 +        elsif(/^(input|output)/) {
 +            ($action,$obj,$status)=split(/ /,$_,3);
 +            $status=~s/%([A-Fa-f\d]{2})/chr hex $1/eg;
 +            if($status =~ /:/) {
 +                ($clef,$val)=split(/:/,$status,2);
 +                }
 +            else {
 +                $clef="status";
 +                $val=$status;
 +                }
 +            my $value=chop($val);
 +            my $cmdmqtt="/usr/bin/mosquitto_pub -h $mqtts -r -t $prefmqtt$action/$obj/$clef -m '$val'";
 +            open MQTT, $cmdmqtt.' |';
 +            while(<MQTT>) {}
 +            close(MQTT);
 +            }
 +        else {
 +            #print "Unknown $_\n";
 +            $i=0;
 +            }
 +        }
 +
</file> </file>
docs/domotique/calaos2mqtt.1647434451.txt.gz · Dernière modification: 2022/03/16 13:40 (édition externe)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki