10 liens privés
#include <SoftwareSerial.h>
SoftwareSerial Serial_Teleinfo(8,12); // Créé une liason série sur les pin 11 et 12
// Pin 11 sur l'optocoupleur
long Index_HC=0;
long Index_HP=0;
byte I_A=0;
int P_W=0;
int sommePU=0;
byte compteur=0;
char PERIODE=' ';
unsigned long temps_d_acquisition = 0;
void setup() {
Serial.begin(9600); // Port série pour liasion Arduino <-> PC
Serial_Teleinfo.begin(1200); // Port série pour liasion Arduino <-> Teleinfo
}
void loop() {
temps_d_acquisition=millis();
Recupere_la_Teleinfo();
//Serial.print("Temps d'aquisition : ");Serial.print(millis()-temps_d_acquisition);Serial.println(" Millisecondes");
//Serial.print(" => Index HC : ");Serial.print(Index_HC);Serial.println(" Wh");
//Serial.print(" => Index HP : ");Serial.print(Index_HP);Serial.println(" Wh");
//Serial.print(" => PERIODE : H") ;Serial.println(PERIODE);
//Serial.print(" => Intensite instantanee : ");Serial.print(I_A);Serial.println(" A");
//Serial.print(" => Puissance apparente : ");Serial.print(P_W); Serial.println(" W");
sommePU=sommePU+I_A;
compteur = compteur+1;
//Serial.print(sommePU);
//Serial.print(compteur);
if (compteur==30)
{
Serial.print(sommePU/30);
compteur =0;
sommePU=0;
}
}
void Recupere_la_Teleinfo(){
char charIn_Trame_Teleinfo = 0; // stock chaque charactère recu de la trame teleinfo
String Ligne; // stock la ligne complette (entre LF(0x0A) et CR(0x0D))
String Etiquette; // stock l'intitulé
String Valeur; // stock la valeur apres l'intitulé
char Checksum;
/*
Trame recu par la teleinfo (Expliquations ! non recu par la teleinfo)
ADCO 040422040644 5 (N° d'identification du compteur : ADCO (12 caractères))
OPTARIF HC.. < (Option tarifaire (type d'abonnement) : OPTARIF (4 car.))
ISOUSC 45 ? (Intensité souscrite : ISOUSC ( 2 car. unité = ampères))
HCHC 077089461 0 (Index heures creuses si option = heures creuses : HCHC ( 9 car. unité = Wh))
HCHP 096066754 > (Index heures pleines si option = heures creuses : HCHP ( 9 car. unité = Wh))
PTEC HP.. (Période tarifaire en cours : PTEC ( 4 car.))
IINST 002 Y (Intensité instantanée : IINST ( 3 car. unité = ampères))
IMAX 044 G (Intensité maximale : IMAX ( 3 car. unité = ampères))
PAPP 00460 + (Puissance apparente : PAPP ( 5 car. unité = Volt.ampères))
HHPHC E 0 (Groupe horaire si option = heures creuses ou tempo : HHPHC (1 car.))
MOTDETAT 000000 B (Mot d'état (autocontrôle) : MOTDETAT (6 car.))
*/
//RAZ des valeurs
Index_HC=Index_HP=I_A=P_W=0;
PERIODE= ' ';
while ( Index_HC==0 || Index_HP==0 || I_A==0 || P_W==0 || PERIODE==' ' ){ // recommence tant que l'on a pas recu tous les élément voulus
//Attend un début de ligne (0x0A)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x0A){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere de début de ligne 0x0A
if ((millis()-temps_d_acquisition)>1000 ) {Serial.println("Teleinfo Inaccesible");loop();} // Affiche un erreur si la teleinfo est inaccesible et retourne à Loop
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
}
}
//Vide Ligne
Ligne="";
//Vide Etiquette
Etiquette="";
//Concatene les carateres recus jusqu'a l'espace suivant (0x20)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x20){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere Espace
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x20){Etiquette += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf les espaces
Ligne += charIn_Trame_Teleinfo;
}
}
//Vide Valeur
Valeur="";
//Concatene les carateres recus jusqu'a l'espace suivant (0x20)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x20){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere Espace
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x20){Valeur += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf les espaces
Ligne += charIn_Trame_Teleinfo;
}
}
//Concatene les carateres recus jusqu'a la fin de ligne (0x0D)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x0D){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere de fin de ligne
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x0D){Ligne += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf le Charactere de fin de ligne (0x0D)
if (charIn_Trame_Teleinfo != 0x0D){Checksum = charIn_Trame_Teleinfo;}
}
}
//Controle du Checksum (Le dernier caractere de la ligne et un caractere de controle)
char Controle=0;
String trame= Etiquette + " " + Valeur;
for (byte i=0;i<(trame.length()-2);i++){
Controle = trame[i] +Controle;
}
Controle = (Controle & 0x3F) + 0x20;
if (Controle = Checksum) { // Si le checksum correspond bien au code controlé
//Associe la valeur lue à son etiquette
if (Etiquette.substring (0,4)=="HCHC") {Index_HC = Valeur.toInt();}
if (Etiquette.substring (0,4)=="HCHP") {Index_HP = Valeur.toInt();}
if (Etiquette.substring (0,4)=="PTEC") {PERIODE = Valeur[1]; }
if (Etiquette.substring (0,4)=="IINS") {I_A = Valeur.toInt();}
if (Etiquette.substring (0,4)=="PAPP") {P_W = Valeur.toInt();}
}
}
}
#include <SoftwareSerial.h>
SoftwareSerial Serial_Teleinfo(11,12); // Créé une liason série sur les pin 11 et 12
// Pin 11 sur l'optocoupleur
long Index_HC=0;
long Index_HP=0;
byte I_A=0;
int P_W=0;
char PERIODE=' ';
unsigned long temps_d_acquisition = 0;
void setup() {
Serial.begin(9600); // Port série pour liasion Arduino <-> PC
Serial_Teleinfo.begin(1200); // Port série pour liasion Arduino <-> Teleinfo
}
void loop() {
temps_d_acquisition=millis();
Recupere_la_Teleinfo();
Serial.print("Temps d'aquisition : ");Serial.print(millis()-temps_d_acquisition);Serial.println(" Millisecondes");
Serial.print(" => Index HC : ");Serial.print(Index_HC);Serial.println(" Wh");
Serial.print(" => Index HP : ");Serial.print(Index_HP);Serial.println(" Wh");
Serial.print(" => PERIODE : H") ;Serial.println(PERIODE);
Serial.print(" => Intensite instantanee : ");Serial.print(I_A);Serial.println(" A");
Serial.print(" => Puissance apparente : ");Serial.print(P_W); Serial.println(" W");
}
void Recupere_la_Teleinfo(){
char charIn_Trame_Teleinfo = 0; // stock chaque charactère recu de la trame teleinfo
String Ligne; // stock la ligne complette (entre LF(0x0A) et CR(0x0D))
String Etiquette; // stock l'intitulé
String Valeur; // stock la valeur apres l'intitulé
char Checksum;
/*
Trame recu par la teleinfo (Expliquations ! non recu par la teleinfo)
ADCO 040422040644 5 (N° d'identification du compteur : ADCO (12 caractères))
OPTARIF HC.. < (Option tarifaire (type d'abonnement) : OPTARIF (4 car.))
ISOUSC 45 ? (Intensité souscrite : ISOUSC ( 2 car. unité = ampères))
HCHC 077089461 0 (Index heures creuses si option = heures creuses : HCHC ( 9 car. unité = Wh))
HCHP 096066754 > (Index heures pleines si option = heures creuses : HCHP ( 9 car. unité = Wh))
PTEC HP.. (Période tarifaire en cours : PTEC ( 4 car.))
IINST 002 Y (Intensité instantanée : IINST ( 3 car. unité = ampères))
IMAX 044 G (Intensité maximale : IMAX ( 3 car. unité = ampères))
PAPP 00460 + (Puissance apparente : PAPP ( 5 car. unité = Volt.ampères))
HHPHC E 0 (Groupe horaire si option = heures creuses ou tempo : HHPHC (1 car.))
MOTDETAT 000000 B (Mot d'état (autocontrôle) : MOTDETAT (6 car.))
*/
//RAZ des valeurs
Index_HC=Index_HP=I_A=P_W=0;
PERIODE= ' ';
while ( Index_HC==0 || Index_HP==0 || I_A==0 || P_W==0 || PERIODE==' ' ){ // recommence tant que l'on a pas recu tous les élément voulus
//Attend un début de ligne (0x0A)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x0A){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere de début de ligne 0x0A
if ((millis()-temps_d_acquisition)>1000 ) {Serial.println("Teleinfo Inaccesible");loop();} // Affiche un erreur si la teleinfo est inaccesible et retourne à Loop
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
}
}
//Vide Ligne
Ligne="";
//Vide Etiquette
Etiquette="";
//Concatene les carateres recus jusqu'a l'espace suivant (0x20)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x20){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere Espace
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x20){Etiquette += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf les espaces
Ligne += charIn_Trame_Teleinfo;
}
}
//Vide Valeur
Valeur="";
//Concatene les carateres recus jusqu'a l'espace suivant (0x20)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x20){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere Espace
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x20){Valeur += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf les espaces
Ligne += charIn_Trame_Teleinfo;
}
}
//Concatene les carateres recus jusqu'a la fin de ligne (0x0D)
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ;
while (charIn_Trame_Teleinfo != 0x0D){ // reste dans cette boucle tant qu'on ne recoit pas le Charactere de fin de ligne
if (Serial_Teleinfo.available()){ // Tant qu'il y a des caractères disponibles
charIn_Trame_Teleinfo = Serial_Teleinfo.read() & 0x7F ; // Stock 1 caractere recu
if (charIn_Trame_Teleinfo != 0x0D){Ligne += charIn_Trame_Teleinfo;} // concatene les caractères reçus sauf le Charactere de fin de ligne (0x0D)
if (charIn_Trame_Teleinfo != 0x0D){Checksum = charIn_Trame_Teleinfo;}
}
}
//Controle du Checksum (Le dernier caractere de la ligne et un caractere de controle)
char Controle=0;
String trame= Etiquette + " " + Valeur;
for (byte i=0;i<(trame.length()-2);i++){
Controle = trame[i] +Controle;
}
Controle = (Controle & 0x3F) + 0x20;
if (Controle = Checksum) { // Si le checksum correspond bien au code controlé
//Associe la valeur lue à son etiquette
if (Etiquette.substring (0,4)=="HCHC") {Index_HC = Valeur.toInt();}
if (Etiquette.substring (0,4)=="HCHP") {Index_HP = Valeur.toInt();}
if (Etiquette.substring (0,4)=="PTEC") {PERIODE = Valeur[1]; }
if (Etiquette.substring (0,4)=="IINS") {I_A = Valeur.toInt();}
if (Etiquette.substring (0,4)=="PAPP") {P_W = Valeur.toInt();}
}
}
}
siste pour apprendre git
idée cadeau SCAE
idée pour cadeau SCAE
#permet de générer un code html pour publication de snyppet pyton
import tkinter
main_window = tkinter.Tk() # on lance la fenetre tkinter
label_titre = tkinter.Label(main_window, text='Titre du code')
label_titre.grid()
titre = tkinter.Text(main_window,height=2, width = 120)
titre.grid()
label_code= tkinter.Label(main_window, text='Code')
label_code.grid()
code = tkinter.Text(main_window,height=12, width = 120)
code.grid()
def generer():
balise_html.delete('1.0', tkinter.END)
balise_html.insert(tkinter.END,'<a href="#' + titre.get( '1.0', tkinter.END).replace(' ','').replace('\n','') + '">' + titre.get( '1.0', tkinter.END).replace('\n','')+'</a><br>')
code_html.delete('1.0', tkinter.END)
code_html.insert(tkinter.END,'<p><div id="' + titre.get( '1.0', tkinter.END).replace(' ','').replace('\n','') + '"></div>'+'\n')
code_html.insert(tkinter.END,'<b>' + titre.get( '1.0', tkinter.END).replace('\n','') + '<br></b>'+'\n')
code_html.insert(tkinter.END,code.get( '1.0', tkinter.END).replace(' ',' ').replace('\n','<br>'+'\n')+'</p>')
button_generer = tkinter.Button(main_window,text=u"Générer code", command=generer, bg='LightSkyBlue1')
button_generer.grid ()
label_balise = tkinter.Label(main_window, text='Ancre html a placer en début de fichier')
label_balise.grid()
balise_html = tkinter.Text(main_window,height=2, width = 120)
balise_html.grid()
label_html = tkinter.Label(main_window, text='Code html a placer dans le corps du fichier')
label_html.grid()
code_html = tkinter.Text(main_window,height=12, width = 120)
code_html.grid()
main_window.mainloop()
input()
displayEventTime: false // pour ne pas afficher l'heure
firstDay: 1 // mettre le premier jour a lundi
#Interet : Bitcoin, Litecoin,Ethereum,Monero,Zcash,Dash
import urllib.request, json, datetime,matplotlib.pyplot as plt
cur_to_plt = "Litecoin"
dat_invest = '2017-05-01'
currency_name= {"Bitcoin" : "XBT", "Ethereum" : "ETH", "Bitcoin Cash": "BCH" , "Monero" : "XMR", "Dash" : "DASH" , "Litecoin" : "LTC" , "Ripple" : "XRP" , \
"Ethereum Classic" : "ETC" , "Augur REP tokens" : "REP", "Zcash" : "ZEC" }
currency_min_size = {"Augur" : 0.3 ,"Bitcoin" : 0.002, "Bitcoin Cash" : 0.002 ,"Dash" : 0.03 , "Dogecoin" : 3000 , "Ethereum" : 0.02, "Ethereum Classic" : 0.3, "Gnosis" : 0.03, \
"Litecoin" : 0.1, "Monero" : 0.1, "Ripple" : 30, "Zcash" : 0.03, "Tether" : 5}
with urllib.request.urlopen("https://api.kraken.com/0/public/OHLC?pair=" + currency_name[cur_to_plt]+"EUR&interval=1440") as url:
datas = json.loads(url.read().decode())
with open('OHLC.json', 'r') as f:
datas = json.load(f)
for i in datas['result'].keys() :
if 'EUR' in i : clef = i
for i in datas['result'][clef] :
if datetime.datetime.fromtimestamp(i[0]).strftime('%Y-%m-%d') == dat_invest :
gain = (float(datas['result'][clef][-1][1])*(50 / float(i[1])))-50
data_toplot = [float(i[1]) for i in datas['result'][clef] if (datetime.datetime.fromtimestamp(i[0])- datetime.datetime(int(dat_invest.split('-')[0]), int(dat_invest.split('-')[1]), int(dat_invest.split('-')[2]))).days > 1]
header = [datetime.datetime.fromtimestamp(i[0])for i in datas['result'][clef] if (datetime.datetime.fromtimestamp(i[0])- datetime.datetime(int(dat_invest.split('-')[0]), int(dat_invest.split('-')[1]), int(dat_invest.split('-')[2]))).days > 1]
plt.plot_date(header,data_toplot,linestyle='solid',markersize=2)
try:
plt.title(cur_to_plt + '\n € min order : ' +str("%.2f" % (currency_min_size[cur_to_plt]*data_toplot[-1])) + ' \n gain depuis ' + dat_invest +': ' + str("%.2f" % gain))
except :
pass
plt.show()
!/usr/bin/env python3
import urllib.request, json, datetime, matplotlib
with urllib.request.urlopen("https://api.kraken.com/0/public/Spread?pair=XBTEUR&since=1509397648") as url:
datas = json.loads(url.read().decode())
with open('Spread.json', 'r') as f:
datas = json.load(f)
for i in datas['result'].keys() : print(i)
for i in datas['result']['XXBTZEUR'] :
print (str((datetime.datetime.fromtimestamp(i[0]))) + ' ' + str(i[1])+ ' ' + str(i[2]))
print(len(datas['result']['XXBTZEUR']))
print (datas['result']['last'])