IPB

Bienvenue invité ( Connexion | Inscription )

2 Pages V   1 2 >  
Reply to this topicStart new topic
> Port COM via USB sur MacOS X, ca marche comment ?
Options
SuperCed
posté 1 Oct 2015, 13:12
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Hello,

je souhaite monitorer ma conso électrique depuis les bornes téléinfo L1 et L2 de mon compteur électrique.

Pour cela, j'ai commandé ce truc là :
http://gce-electronics.com/en/cartes-usb/6...leinfo-usb.html

Ca semble démoduler le signal du compteur vers un signal USB.
J'avais pensé faire la partie élec moi même (comme on trouve l'info sur le net), mais la solution présentée ici est tellement peu chère, que je me suis lancé avec ce produit.

A priori, ça fait passer un signal de type port COM à travers l'USB.

Pour cela, il faut bien sur brancher la prise USB à son Mac.
Ensuite, d'après le site, il faut passer par un driver : http://www.ftdichip.com/Drivers/VCP.htm

Je vais utiliser un vieil iMac tournesol sur Tiger pour récupérer et compiler le signal. A priori, le driver existe bien.

Le problème, c'est que je ne sais pas du tout comment marche ensuite un port série (ou COM). Donc ça va me faire quoi avec ce driver ? Un fichier en accès direct avec des trames remises à jour toutes les X milli secondes ?
A priori, il semble y avoir un rapport avec des tty ou un truc comme ça, mais je n'ai jamais touché à ce type de fichiers...

Quelqu'un peut me dire comment je vais pouvoir récupérer les trames brutes ?

Merci



--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 1 Oct 2015, 16:24
Message #2


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Bonjour,

OK donc apparemment, une fois que tu as installé les drivers, le Module Teleinfo une fois branché est vu par le Mac comme un port série, de la même manière qu'un adaptateur USB/série (ce qu'est en fait le connecteur USB du Module).
Pour récupérer les données il faut un émulateur Terminal VT100: le meilleur, le seul, l'unique, étant l'indispensable ZTerm en version 1.2.
Une fois lancé, ZTerm détecte automatiquement le port série, il suffit donc de spécifier les paramètres de connexion dans le menu "Settings > Connexion", en l'occurrence:
1200 Bauds, 7 bits, parité impaire, 1 stop.

Quitter, relancer (les réglages sont enregistrés automatiquement) et choisir "Start Capture" dans le menu "File" ... ou voir le manuel de GCE.

Peace.

Ce message a été modifié par PowerPeaCe - 1 Oct 2015, 17:05.
Go to the top of the page
 
+Quote Post
SuperCed
posté 1 Oct 2015, 16:41
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Et ça fait quoi ensuite avec ZTerm, ça te mets les valeurs dans un flux ? Ca fait quoi avec le flux ?

Ya aucun tool directement dans le terminal ?

Car j'aimerais automatiser les données, pouvoir les parser et les mettre dans une base de données.

Ca va faire bizarre de passer par un soft, je ne sais pas comment récupérer le flux ensuite pour le parser...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 1 Oct 2015, 16:42
Message #4


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Zterm est un Emulateur VT100, donc ça permet de se connecter aux périphériques série.
Après j'en sais rien, une fois connecté peut être qu'il affichera un menu de configuration ou qu'il enverra simplement des données (à l'écran) que tu pourras capturer en même temps dans un fichier txt (Je penche pour la deuxième solution).

Via le Terminal il y a la commande "Screen" (qui est aussi un soft..) peut-être plus proche de ce que tu recherches:
Commencer par taper "ls /dev/tty*" dans le terminal, pour identifier le nom BSD de ton port série, puis "man screen"..

Edit:
Problème: je ne crois pas que les drivers FTDI fonctionnent sur Mac PPC.

Ce message a été modifié par PowerPeaCe - 1 Oct 2015, 17:41.
Go to the top of the page
 
+Quote Post
SuperCed
posté 1 Oct 2015, 21:35
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Pourtant, d'après leur site, ça existe : http://www.ftdichip.com/Drivers/VCP.htm

Il il a une version spécifique PPC.

screen, j'ai déjà utilisé, mais pas pour des cas comme ça...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
trouspinette
posté 1 Oct 2015, 23:41
Message #6


Macbidouilleur d'Or !
*****

Groupe : Rédacteurs
Messages : 5 064
Inscrit : 19 Feb 2002
Lieu : BZH
Membre no 2 083



Tu trouveras sur cette URL des infos sur les émulateurs terminaux pour Max OS X.

Citation (PowerPeaCe @ 1 Oct 2015, 17:42) *
Problème: je ne crois pas que les drivers FTDI fonctionnent sur Mac PPC.

De type VCP, visiblement c'est possible.


--------------------
Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !

Luttons contre le style SMS !!!

iPhone 14Pro Max 256 Go iOS 17• MacBook Pro 16 2019 Core i9 - macOS 12.7.2 - 32 GB RAM - 2 TB • @Orange
Linux • OPNSense / pfSense • Une pointe de Windows aussi • Enfocus Switch Expert • callas pdfToolBox
Go to the top of the page
 
+Quote Post
Jaypee
posté 2 Oct 2015, 06:08
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Pas sûr que cette interface simplifie le problème.
Une solution Raspberry, même si matériellement peut être plus onéreuse me semble plus simple à maintenir et plus viable.

L'interface matérielle est des plus simples, un opto-coupleur, et le Rasberry se branche directement derrière sur les broches GPIO 14 et 15 + masse
http://www.magdiblog.fr/gpio/teleinfo-edf-...eur-electrique/

Comprendre la solution la plus simple permet de concocter ta propre solution.

J-P

Ce message a été modifié par Jaypee - 2 Oct 2015, 06:09.
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 2 Oct 2015, 06:48
Message #8


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Citation (Jaypee @ 2 Oct 2015, 07:08) *

Parfait..

Sur Leopard si je lance la commande, aucun message d'erreur...

stty -f /dev/tty.usbserial 1200 sane evenp parenb cs7 -crtscts


ça devrait fonctionner sur Tiger
Go to the top of the page
 
+Quote Post
SuperCed
posté 2 Oct 2015, 12:39
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Pas mal si je peux faire un cat sur un /dev/quelquechose après.

Ensuite, parser le flux avec un regex devrait être facile...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
Jaypee
posté 3 Oct 2015, 10:43
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Le périphérique étant de type "caractère", il peut se lire avec les commandes traditionnelles de lecture de fichier, en C classique ce serait les fopen/fread/fwrite/fclose

J-P
Go to the top of the page
 
+Quote Post
SuperCed
posté 4 Oct 2015, 17:46
Message #11


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Je viens de tester sur un Macbook en MacOS 10.10.5. Je n'ai pas mis de driver car il parait que c'est intégré.

J'ai bien un /dev/tty qui correspond : /dev/tty.usbserial-A702OQAL : il est apparu quand j'ai branché le cable usb, et il disparait quand je l'enlève...

J'arrive bien aussi à faire un stty -f /dev/tty.usbserial-A702OQAL 1200 sane evenp parenb cs7 -crtscts

Par contre, le cat /dev/tty.usbserial-A702OQAL ne renvoie absolument rien...

Je suis bloqué là. Que faire ?

J'ai essay ZTerm, mais je ne vois rien apparaitre non plus.


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
SuperCed
posté 4 Oct 2015, 20:38
Message #12


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Ok, je viens de trouver un truc : il y a un autre fichier dans le même dossier /dev/ :

J'ai fait ça :
stty -f /dev/cu.usbserial-A702OQAL 1200 sane evenp parenb cs7 -crtscts

Et cat /dev/cu.usbserial-A702OQAL

Et là, j'ai des trucs qui s'affichent...
Citation
NST2 002 K
IINST3 002 L
IMAX1 003 3
IMAX2 036 :
IMAX3 025 9
PMAX 09180 8
PAPP 01210 %
HHPHC C .
MOTDETAT 000000 B
P???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????


Manque de bol, au bout d'un moment, j'ai juste des ??? . Je sais pas trop pourquoi... Mais ça avance!


Avec screen, j'ai un truc comme ça :

Citation
ADϠ03300365
PAƠH..<
SUSà309
HHà00006669"
HHP000333
PàHP..
NSԱ00ɍ
NSԲ00K
NS300̍
MAر0033
MAز036:
MA3059
PMAؠ090
PAPP00$
HHPHàà.


Peut être un problème d'encodage... Là, ça semble plus constant u niveau affichage...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
Jaypee
posté 4 Oct 2015, 22:18
Message #13


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Le blocage vient sûrement d'une tentative de synchronisation entre l'émetteur et le récepteur:
Il y a la paire CTS / RTS, ou la paire DTR / DSR pour synchroniser en "hardware"

Mais le plus souvent la synchro est "software" par insertion de caractères spéciaux ctrl-Q/ctrl-S (appelés XON et XOFF)

Il faut donc trouver la bonne syntaxe de stty pour spécifier le protocole soft xon/xoff sur OS X.
-ctrtscts est de cette famille là, il en faut peut-être ixon ixoff en plus.

J-P

Ce message a été modifié par Jaypee - 4 Oct 2015, 22:19.
Go to the top of the page
 
+Quote Post
SuperCed
posté 12 Oct 2015, 19:59
Message #14


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Ca doit être un truc comme ça en effet.

Je vais ré-essayer. Sinon, j'ai testé avec 8bits, et c'est tout pourri.

Je vais essayer de chercher du coté de ctrtscts.

A priori, ça doit être software car il y a un convertisseur USB et celui-ci doit déjà faire un boulot.


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
SuperCed
posté 12 Oct 2015, 21:00
Message #15


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



J'ai trouvé autre chose.

J'ouvre 2 sessions bash.

Sur la première, je fais un
Code
cat /dev/cu.usbserial-A702OQAL


Sur la seconde, je configure avec :
Code
stty  -f /dev/cu.usbserial-A702OQAL 1200 speed 1200 sane evenp parenb cs7


Et là, pouf ça fonctionne...

Par contre, le control-C marche plus...



--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
SuperCed
posté 12 Oct 2015, 21:36
Message #16


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



J'arrive même à mettre tout ça dans un fichier classique :
Code
cat cu.usbserial-A702OQAL > ~/Desktop/flux_teleinfo.txt


Par contre, comment je peux couper le flux pour effacer périodiquement le fichier afin que ça remplisse pas tout le disque ?
On dirait que je ne pas couper ce flux, ça m'embête un peu...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 13 Oct 2015, 08:23
Message #17


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Citation (SuperCed @ 12 Oct 2015, 22:36) *
Par contre, comment je peux couper le flux pour effacer périodiquement le fichier afin que ça remplisse pas tout le disque ?
On dirait que je ne pas couper ce flux, ça m'embête un peu...

Un genre de "killall cat" dans le crontab devrait fonctionner, même s'il y a sûrement une meilleure solution.
Go to the top of the page
 
+Quote Post
SuperCed
posté 13 Oct 2015, 09:04
Message #18


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Je vais essayer les fopen fclose en PHP. Voir ce que ça me dit...


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 13 Oct 2015, 09:16
Message #19


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Citation (SuperCed @ 13 Oct 2015, 10:04) *
Je vais essayer les fopen fclose en PHP. Voir ce que ça me dit...

ok, via php
"fopen", ->effacer le contenu,"fclose"..
par contre le script ne s'executera pas automatiquement (périodiquement)? au contraire d'un shellscript dans le crontab.

Ce message a été modifié par PowerPeaCe - 13 Oct 2015, 09:19.
Go to the top of the page
 
+Quote Post
Jaypee
posté 14 Oct 2015, 06:02
Message #20


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



PHP est un langage de script comme un autre, on peut sur une ligne de commande l'appeler pour interpréter un script
Code
echo "<? php ?><? phpinfo(); ?>" > x.php
php x.php
phpinfo()
PHP Version => 5.5.27

System => Darwin macminijp.home 15.0.0 Darwin Kernel Version 15.0.0: Wed Aug 26 16:57:32 PDT 2015; root:xnu-3247.1.106~1/RELEASE_X86_64 x86_64
Build Date => Aug 22 2015 18:16:09
...


A partir de là, rien n'interdit de l'invoquer par cron

J-P
Go to the top of the page
 
+Quote Post
SuperCed
posté 14 Oct 2015, 08:20
Message #21


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



C'est bon, ça marche nickel avec le fopen fgets et fclose.

Je vous filerai le code quand j'aurai fini.

Par contre, je suis toujours obligé d'appeler la commande stty depuis un crontab pour que ça débloque la sortie. Sinon, ça bloque au bout de quelques lignes sur le fgets.

Mais dès que ssty est appelé, ça marche nickel.

j'ai essayé de faire un exec("stty ...") dans le script php, mais ça marche pas, ça me fait des caractères foireux aussi.

J'ai presque réussi. Il me manque plus qu'à trouver un moyen d'envoyer ça dans un MySQL de temps en temps. J'ai plusieurs pistes pour faire ça, ça ne devrait pas poser de problème...

Merci pour l'aide!


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
Jaypee
posté 15 Oct 2015, 06:06
Message #22


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



A propos de stty, "stty sane" peut suffire après la config de base

MySQL n'est pas toujours la solution la plus simple.

Sur Mac SQLlite3 est installé en standard, sur PC c'est 1 DLL + 1 EXE
CODE
[jaypee:~]$ sqlite3
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .help
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.binary on|off Turn binary output on or off. Default OFF
.clone NEWDB Clone data into NEWDB from the existing database
.databases List names and files of attached databases
.dbinfo ?DB? Show status information about the database
.dump ?TABLE? ... Dump the database in an SQL text format
If TABLE specified, only dump tables matching
LIKE pattern TABLE.
.echo on|off Turn command echo on or off
.eqp on|off Enable or disable automatic EXPLAIN QUERY PLAN
.exit Exit this program
.explain ?on|off? Turn output mode suitable for EXPLAIN on or off.
With no args, it turns EXPLAIN on.
.fullschema Show schema and the content of sqlite_stat tables
.headers on|off Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.indexes ?TABLE? Show names of all indexes
If TABLE specified, only show indexes for tables
matching LIKE pattern TABLE.
.limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT
.log FILE|off Turn logging on or off. FILE can be stderr/stdout
.mode MODE ?TABLE? Set output mode where MODE is one of:
ascii Columns/rows delimited by 0x1F and 0x1E
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML <table> code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by .separator strings
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Use STRING in place of NULL values
.once FILENAME Output for the next SQL command only to FILENAME
.open ?FILENAME? Close existing database and reopen FILENAME
.output ?FILENAME? Send output to FILENAME or stdout
.print STRING... Print literal STRING
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.restore ?DB? FILE Restore content of DB (default "main") from FILE
.save FILE Write in-memory database into FILE
.scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off
.schema ?TABLE? Show the CREATE statements
If TABLE specified, only show tables matching
LIKE pattern TABLE.
.separator COL ?ROW? Change the column separator and optionally the row
separator for both the output mode and .import
.shell CMD ARGS... Run CMD ARGS... in a system shell
.show Show the current values for various settings
.stats on|off Turn stats on or off
.system CMD ARGS... Run CMD ARGS... in a system shell
.tables ?TABLE? List names of tables
If TABLE specified, only list tables matching
LIKE pattern TABLE.
.timeout MS Try opening locked tables for MS milliseconds
.timer on|off Turn SQL timer on or off
.trace FILE|off Output each SQL statement as it is run
.vfsname ?AUX? Print the name of the VFS stack
.width NUM1 NUM2 ... Set column widths for "column" mode
Negative values right-justify
sqlite>

J-P

Ce message a été modifié par Jaypee - 15 Oct 2015, 06:11.
Go to the top of the page
 
+Quote Post
SuperCed
posté 15 Oct 2015, 07:37
Message #23


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



MySQL, j'en ai déjà un d'installé sur un autre Mac et je maîtrise bien, donc ça me va parfaitement.

Code
<?php

echo "\nlog_teleinfo";


$fp = fopen("/dev/cu.usbserial-A702OQAL","r");

if ($fp===FALSE) {
    echo "\nUnable to open file";
    exit();
}

//stream_set_blocking($fp,0);

$start_time = mktime();
$i = 0;
while ($i<100000) {
    $line = fgets($fp);
    //if ($line%10==0) {
    //    sleep(15);
    //}
    if ($line == FALSE) {
        echo "\nUnable to read line...waiting";
        exit();
        //sleep(60);
    } else {
        //echo "line".$i.$line;

        //$i++;


      if (substr($line,0,4)=='HCHC') {
        $hchc = substr($line,5,9);
        //echo "\nHC: ".$hchc;
      }
      if (substr($line,0,4)=='HCHP') {
        $hchp = substr($line,5,9);
        //echo "\nHP: ".$hchp;
      }
      if (substr($line,0,6)=='IINST1') {
        $iinst1 = substr($line,7,3);
        //echo "\nInst1: ".$iinst1;
      }
      if (substr($line,0,6)=='IINST2') {
        $iinst2 = substr($line,7,3);
        //echo "\nInst2: ".$iinst2;
      }
if (substr($line,0,6)=='IINST3') {                                                
        $iinst3 = substr($line,7,3);
        //echo "\nInst3: ".$iinst3;
      }
      if (substr($line,0,4)=='PAPP') {
        $papp = substr($line,5,5);
        //echo "\nP: ".$papp;
      }
    }
    $current_time = mktime();

    if ($current_time - $start_time > 60*5) {
        $connexion = mysql_connect ("192.168.1.150", "xxx", "xxx");
        if (!$connexion) {
          echo mysql_error();
        } else {
          $sql = "INSERT INTO cedhome.teleinfo_log
            (log_id, log_date, hc, hp, inst1, inst2, inst3, p)
            VALUES (null, NOW(), ".(int)$hchc.", ".(int)$hchp.",".(int)$iinst1.",".(int)$iinst2.",".(int)$iinst3.",".(int)$papp.")";
          echo "\n".$sql;
          $res = mysql_query($sql);
          if (!$res) {
            echo mysql_error();
          }
          mysql_close();
          $i++;
        }
        $start_time = $current_time;
        echo "\nDEBUG ".$hchc.' '.$hchp.' '.$iinst1.' '.$iinst2.' '.$iinst3.' '.$papp;
    }
}
echo "\n########";

exec("touch ./log_teleinfo_finish.txt");
$ret = fclose($fp);
if ($ret===FALSE) {
    echo "\nUnable to close file";
    exit();
}
echo "\n*********************";
?>


Très facile au final...
Et ça marche nickel.

Dans le crontab :
* * * * * /bin/stty -f /dev/cu.usbserial-A702OQAL 1200 speed 1200 sane evenp parenb cs7

Cet ordi est un vieux PPC sous Tiger. Donc pas grave que le crontab se lance toutes les minutes...
Bon, ok, faudra que je mette dans un bash avec un test dessus, ce serait plus efficace s'il fallait vraiment bien faire.

La BDD contient aussi les relais de température extérieure et intérieure.
Je les récupère grâce à un Telldus stick USB 433MHz et des sondes de température Oregon scientifique.
Un jour, il faudra que j'explique sur MacBidouille un peu tout ce qu'on peut faire en domotique depuis un Mac, c'est vraiment pas mal avec le Telldus.

L'idée cette fois-ci est de mettre en relation la température extérieure/intérieure avec la consommation électrique sur ma phase 3 (chauffage).
C'est bien cool que ce soit si simple au final !


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
Jaypee
posté 16 Oct 2015, 05:59
Message #24


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Il y a d'autre primitives d'entrée/sortie en PHP, qui permettent de faire le stty directement en PHP.
http://php.net/manual/fr/function.dio-tcsetattr.php

Autre chose, le protocole de communication série à 1200 baud est également utilisé par les GPS (google NMEA), en cherchant donc du côté des programmes GPS en PHP, il y a peut-être quelque chose à gratter pour ce problème.
Voici un petit début... http://www.phpclasses.org/browse/file/17926.html utilisé par https://github.com/dtmuturi/NMEA/blob/master/serial.php, mais le NMEA c'est davantage les messages GPS que tu peux ignorer, mais le style général peut être imité.

Bonne continuation,
J-P

Ce message a été modifié par Jaypee - 16 Oct 2015, 06:15.
Go to the top of the page
 
+Quote Post
SuperCed
posté 16 Oct 2015, 07:38
Message #25


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



Au final, ça marche nickel comme ça.

Il faudra juste que je lance un programme au démarrage du Mac. Ca ne devrait pas être trop dur... Faudra que je cherche comment faire ça avec Tiger.


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 16 Oct 2015, 08:13
Message #26


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Citation (SuperCed @ 16 Oct 2015, 08:38) *
Il faudra juste que je lance un programme au démarrage du Mac. Ca ne devrait pas être trop dur... Faudra que je cherche comment faire ça avec Tiger.

Un StartupItem ou un LauchDaemon sur le modèle de ceux éventuellement présents dans /Library ...
ou un LaunchAgent..

(le StartupItem, mon préféré, fonctionnera aussi sur 10.1, 10.2 et 10.3) (et 10.5)

Ce message a été modifié par PowerPeaCe - 16 Oct 2015, 10:45.
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 16 Oct 2015, 10:30
Message #27


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



Citation (SuperCed @ 15 Oct 2015, 08:37) *
Dans le crontab :* * * * * /bin/stty -f /dev/cu.usbserial-A702OQAL 1200 speed 1200 sane evenp parenb cs7

Bizarre..
d'après le manuel, il y aurait redondance entre "evenp" et "parenb cs7"
je cite:
evenp or parity: enable parenb and cs7.
donc "evenp" = "parenb cs7" ?? (par opposition: -evenp, or -parity = disable parenb, and set cs8)

quant au "sane":
sane
resets all modes to some reasonable values
-> Je ne suis pas sûr qu'il soit nécessaire.

sinon:
ixon (-ixon)
enable (disable) START/STOP output control. Output is stopped by sending an STOP and started by sending an START.
ça pourrait peut-être éviter d'utiliser le crontab?

et il manque le stop bit spécifié sur le site du constructeur..
cstopb (-cstopb)
use two (one) stop bits per character.

Citation (PowerPeaCe @ 1 Oct 2015, 17:24) *
"Settings > Connexion", en l'occurrence:1200 Bauds, 7 bits, parité impaire, 1 stop.



source du manuel:
http://uw714doc.sco.com/en/man/html.1bsd/stty.1bsd.html

Ce message a été modifié par PowerPeaCe - 16 Oct 2015, 10:41.
Go to the top of the page
 
+Quote Post
SuperCed
posté 16 Oct 2015, 11:02
Message #28


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 831
Inscrit : 19 Jul 2001
Lieu : Живим у Греноблу
Membre no 519



J'avais essayé avec ça : ixon
mais ça n'avait pas fonctionné.

cstopb : j'ai pas essayé par contre.

En effet, le sane n'a pas trop d'effet.

Je me souviens que les 2 importants étaient : parenb et cs7.

Faudra que je reprenne un peu de temps pour voir tout ça.


--------------------
Хајде Јано коло да играмо
iMac 27 mi 2010
Macbook air mi 2011
Mac Mini M1
Go to the top of the page
 
+Quote Post
PowerPeaCe
posté 16 Oct 2015, 11:10
Message #29


Adepte de Macbidouille
*

Groupe : Membres
Messages : 41
Inscrit : 4 Aug 2015
Membre no 196 057



ok donc "1200 Bauds, 7 bits, parité impaire, 1 stop" ça donnerait ça:

/bin/stty -f /dev/cu.usbserial-A702OQAL 1200 -cstopb parodd cs7

oui en fait il faut de l'impair:
"parodd (-parodd) = select odd (even) parity, or mark (space) parity if parext is enabled"
-> parodd = parité impaire sélectionnée alors qu'avec parenb elle est détectée automatiquement, je ne sais pas ce qui est mieux?

ou alors avec un bon vieux oddp..
oddp= enable parenb, cs7, and parodd.

/bin/stty -f /dev/cu.usbserial-A702OQAL 1200 -cstopb oddp


sinon effectivement "ixon" c'est le flow control...XON/XOFF.. donc ce n'est pas nécessaire_ autant pour moi.

PS (17h48): j'oubliais le -crtscts ou bien??
/bin/stty -f /dev/cu.usbserial-A702OQAL 1200 -cstopb oddp -crtscts


Ce message a été modifié par PowerPeaCe - 16 Oct 2015, 16:48.
Go to the top of the page
 
+Quote Post
Jaypee
posté 16 Oct 2015, 15:41
Message #30


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Jette un oeil sur le lien http://www.phpclasses.org/browse/file/17926.html

Dans le dernier tiers du code, il y a des combinaisons de réglage du flow control pour Linux.

J-P
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 24th April 2024 - 05:39