Indexul de la contor, pentru ca Python

Cred ca am mai scris despre asta. Nevasta plateste curentul la Enel, pentru ca… facturi. Si le pune si indexul de contor in site. Pentru ca altfel citesc ei o data la 3 luni, sau ceva, si pe langa plata aiuristica nici nu am un control a ceea ce consum. E important sa-mi dau seama cand am defectiuni sau las chestii aiurea pornite. Am observat ca e o problema la rezervorul e apa de la WCul unei bai cand am citit apometrul si am vazut 11m3 de apa rece intr-o luna. Doar la baia aia. Bine, ca a mai durat 1 luna pana am intreprins ceva, asta e alta treaba.

Eu citesc indexul de la contorul de pe holul blocului, evident in alta zi decat cand il vor aia de la ENEL, ca nu poti trimite tu asa oricand, si trebuie sa i-l transmit sotiei la data stabilita.

Nu merge cu  ” noteaza-ti… sau intri tu in aplicatia pe care cu mandrie am dezvoltat-o si verifici indexul , sau rulezi un query”.

Merge cu “da-mi indexul , sau trimite-mi mail.”   Dar nu oricand. Ca eu citesc indexul  cand citesc si apometrele, pentru ca optimizare. Adica pe 1-3 ale lunii.  Mail trebuie trimis pe 7-8 . Iti dai seama ca uit pana atunci si cum ma cheama.

Aveam un script in perl care trimitea mail si care s-a dus  cand am sters linuxul. Si nu-l aveam nicaieri salvat, ca asa-s eu, imi place munca , asa ca am facut altul in pitong, ca tot trebuie sa ma leg de asta pentru niste machine learning.

Nu e mare lucru, am pus cap la cap niste exemple de pe net, tot ce fac e sa rulez un query , iau ce-mi trebuie si ma conectez la casuta de gmail , pentru ca sunt incapabil sa configurez un amarat de server de mail (muie suse),  trimit si aia e. Bagat in crontab.

Daca va trebuie, ideea e moca mai jos.

Ce ar fi mai  bun, ar fi sa inlatur “middle woman” din treaba asta. Nu, nu. Nu sa platesc eu facturile.

Sa trimit asta cumva automat la Enel.  A auzit careva de vreun api ?

Daca nu, trebuie sa fac un script care sa le piloteze  siteul remote. Stiu sa fac si asta , insa doar  din Windows cu AutoIT, si chiar nu as vrea sa ajung acolo, si mi-e si cam scarba de genul ala de control, ca daca schimba UI-ul se  beleste si scriptul meu.

Bine, ar mai fi o chestie, sa citeasca cei de la Enel singuri, iar eu sa fac retrofit din factura de pe mail pentru contabilizare, dar mai dureaza. Stiu ca aveau un proiect in lucru.


 

#!/usr/bin/python

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
import MySQLdb
import datetime


db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="userulălmare", # your username
passwd="epulavreisiparola", # your password
db="ERM0") # name of the data base

# you must create a Cursor object. It will let
# you execute all the queries you need
cur = db.cursor()

# Use all the SQL you like
query = "SELECT `index` FROM `ZRM_cons_entries` WHERE `ccid` = '205' AND `matnr` = '6001' "
query += "AND `Zmark` = 'X' ORDER BY `timestamp` DESC LIMIT 0 , 1"
cur.execute(query)
enelindex = '0'
# print all the first cell of all the rows
for row in cur.fetchall():
print row[0]
enelindex = row[0]
db.close()
# get ze month
mydate = datetime.datetime.now()
luna = mydate.strftime("%B")

msg = MIMEMultipart()
msg['From'] = 'mailulmeu@gmail.com'
msg['To'] = 'nevasta@yahoo.com'
msg['Subject'] = 'Index enel-'+ str(luna)+'-:' + str(enelindex)

message = 'Indexul enel este:' + str(enelindex)
msg.attach(MIMEText(message))

mailserver = smtplib.SMTP('smtp.gmail.com',587)
# identify ourselves to smtp gmail client
# secure our email with tls encryption
mailserver.starttls()
# re-identify ourselves as an encrypted connection
mailserver.ehlo()
mailserver.login('mailulmeu@gmail.com', 'nu-țidauparola')

mailserver.sendmail('mailulmeu@gmail.com','mailulnevestei@yahoo.com',msg.as_string())

mailserver.quit()

0 0 votes
Article Rating
Subscribe
Notify of
guest
8 Comments
Inline Feedbacks
View all comments
Robert
Robert
7 years ago

Cred ca poți sa faci ceva cu phantom js în linux. Și acum au și o aplicație de mobile, poți sa vezi ce endpointuri apelează și sa le folosești în scriptul tău apoi.

catalinx
catalinx
7 years ago

Nu știu cam nimic de Phantom js dar problema principala e că mă feresc sa pilotez UI-uri. Am scris odată un bot de travian care juca în locul meu și o dată pe lună, când făceau aia update, trebuia să fac și eu. Măcar ăla se juca 12 ore pe zi în locul meu și merita să îl dreg pe fiecare lună, dar de ăsta am nevoie rar Nici nu aș ști când ratează. M-aș prinde târziu. Iar ăia cu endpointurile aplicației de mobil, ar fi amuzant să nu aibă și ei un oauth sau ceva care să nu mă… Read more »

catalinx
catalinx
7 years ago

Wait, ai zis aplicație? Lol ce idiot sunt. Pot să trimit de la contor:)

XC47
XC47
7 years ago
Licaon_Kter
7 years ago

Daca nu ai containere Docker pentru script, pentru baza de date, pentru altceva, n-ai facut nimic. 🙂

Ah, si Docker ruleaza pe un Raspberry Pi, da?

catalinx
catalinx
Reply to  Licaon_Kter
7 years ago

Mda. Mișto Docker, ăla. Chiar am să mă uit cum se configurează. Am uitat, totuși, să zic că nu mă plătește nimeni pentru asta, iar eu sunt ca universul, mă ghidez după principiul minimului efort.
Și cam ca backtrackingul.
Abia după ce o chestie a generat mai mult efort decât aș fi putut altfel mă apuc de optimizat.
Niciodată apriori :).

Marian
Marian
7 years ago

In Bucuresti au inceput sa le inlocuiasca. Mie mi le-au schimbat pe cele de la bloc(uri). Isi citesc singuri indexul luna de luna