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()

8 Replies to “Indexul de la contor, pentru ca Python”

  1. 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.

  2. 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ă lase să îmi fac chiar de cap.
    Iar dacă aș găsi că așa, primul lucru pe care l-aș face ar fi să sun un prieten de la ei să repare, care prieten mă aștept ca POATE citește și are o idee 🙂

  3. 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?

  4. Stiu de asta, e de vreo cativa ani in uz, au inlocuit parte din cele vechi, dar nu cred ca au avansat prea mult cu inlocuirea.

  5. 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 :).

  6. 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

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.