Beste,
Al weer een jaar geleden had ik een python script geschreven wat iedere 1800 seconden inlogde bij api.mijnsimpel.nl en zo voor iedere gebruiker welke aan mijn account gekoppeld zat de verbruiksgegevens op haalde. Ik kon op de ze manier voor alle gebruikers mooie grafiekjes maken met hoe het verbruik was en zo konden ze zien of ze moesten gaan minderen. Dit heeft tot een week of 2 probleemloos gewerkt en nu lijkt api.mijnsimpel.nl niet meer te bestaan.
Ik begrijp dat dit een ‘unsupported’ dingetje was maar ik (en zeker mijn kinderen) missen de grafiek enorm.
Is er een andere manier om de mijn.simpel.nl gegevens te scrapen?
import requests
import http.cookiejar
import json
import paho.mqtt.client as mqtt
import time
# MIJN SIMPEL SETTINGS
mijnsimpel_loginurl = "https://api.simpel.nl/login"
mijnsimpel_username = "xxxxxxxxx"
mijnsimpel_password = "xxxxxxxxx"
mijnsimpel_userlist = s
{"username": "xxxxxxxx", "sid" : "xxxxxxxxxx"},
{"username": "xxxxxxxx", "sid": "xxxxxxxxxxx"}]
mijnsimpel_sleepbetweenrequests = 1800
# MQTT SETTINGS
mqtt_servername = "xxxxxxxxx"
mqtt_serverport = xxxxxx
mqtt_username = "xxxxxx"
mqtt_password = "xxxxxxxxx"
mqtt_clientname = "mijnsimpel-mqtt"
mqtt_topic = "mijnsimpel"
def get_mijnsimpel_usage(user, sid):
global usagedata
global response
global mijnsimpel_statuscode
s = requests.Session()
mijnsimpel_logindata = {"username": mijnsimpel_username, "password": mijnsimpel_password, "remember": None}
url = mijnsimpel_loginurl
r = s.post(url, json=mijnsimpel_logindata)
response = requests.get('https://mijn.simpel.nl/api/usage/usage-summary?sid=' + sid, cookies=s.cookies)
mijnsimpel_statuscode = response.status_code
if mijnsimpel_statuscode == 200:
json_usagedata = json.loads(response.text)
usagedata = '{"voiceAmountLeft":' + '{}'.format(json_usagedatae'voiceAmountLeft']) + ', "dataAmountLeft":' + '{}'.format(json_usagedatae'dataAmountLeft']) + ', "smsAmountLeft":' + '{}'.format(json_usagedatae'smsAmountLeft']) + '}'
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Request for data succesfull for sid: " + sid + " {}".format(response) + "... ")
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Requested data: {}".format(usagedata))
else:
usagedata = None
print (time.strftime('%Y-%m-%d %H:%M:%S ') + "Request for data failed for sid: " + sid + " {}".format(response) + "! ")
return usagedata, mijnsimpel_statuscode, json_usagedata
return response
def mqtt_mijnsimpel_usage(user, data):
client = mqtt.Client(mqtt_clientname)
client.username_pw_set(mqtt_username, mqtt_password)
client.connect(mqtt_servername, mqtt_serverport)
client.publish(mqtt_topic + "/" + (user), str(data), qos=1, retain=0)
while True:
for user in mijnsimpel_userlist:
mijnsimpel_user = user.get('username')
mijnsimpel_sid = user.get('sid')
get_mijnsimpel_usage(mijnsimpel_username, mijnsimpel_sid)
if usagedata != None:
mqtt_mijnsimpel_usage(mijnsimpel_user, usagedata)
#some sleep between each user because mijnsimpel can't deliver the data fast enough!
time.sleep(2.0)
print(time.strftime('%Y-%m-%d %H:%M:%S ') + "Wait {} seconds for next request...".format(mijnsimpel_sleepbetweenrequests))
time.sleep(mijnsimpel_sleepbetweenrequests)