Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Mastervolt Intelliweb API naar domotica-systeem

Pagina: 1
Acties:

  • deWit
  • Registratie: november 2004
  • Laatst online: 22:11

deWit

Niet goed, geld toch kwijt!

Topicstarter
Na aanleiding van deze post:
deWit schreef op dinsdag 23 augustus 2016 @ 13:41:
Ik heb een Mastervolt Web 1500 omvormer welke z'n data publiceerd op een portal van Mastervolt: IntelliWeb. Vanuit daar is met een MQTT feed de data op te halen, om de 10s word er gepubliceerd volgens hun API documentatie: (zie hier)
En de nodige vragen die ik kreeg over hoe ik het uiteindelijk werkend heb gekregen heb ik maar even het een en ander opgeschreven.




Op dit moment haal ik de data van Intelliweb binnen dmv een MQTT topic wat door Intelliweb beschikbaar wordt gesteld. Echter, de feed is een beetje wiebelig en ligt er af en toe uit, maar het is nog altijd beter dan niets en so far voor mij de enige methode om ook AC/DC voltages binnen te halen (Productie meet ik los met een Kwh meter met S0 uitgang).

Ik gebruik nu een los draaiend python scriptje wat de data, in mijn geval, door zet naar IP Symcon, maar dat kan eigenlijk elk domotica systeem zijn als de code daarvoor een beetje aangepast wordt. Er zijn wat afhankelijkheden, zoals paho maar niets onoverkomelijks als je toch al iets als een rPi hebt draaien voor bijv. domoticz, IP Symcon, etc. Zie de code hieronder:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/env python

import paho.mqtt.client as mqtt
import json
import requests
from requests.auth import HTTPBasicAuth
import time
import logging
import logging.handlers
import argparse
import sys

# Deafults
LOG_FILENAME = "/tmp/mastervoltmqtt.log"
LOG_LEVEL = logging.INFO  # Could be e.g. "DEBUG" or "WARNING"

# Configure logging to log to a file, making a new file at midnight and keeping the last 3 day's data
# Give the logger a unique name (good practice)
logger = logging.getLogger(__name__)
# Set the log level to LOG_LEVEL
logger.setLevel(LOG_LEVEL)
# Make a handler that writes to a file, making a new file at midnight and keeping 3 backups
handler = logging.handlers.TimedRotatingFileHandler(LOG_FILENAME, when="midnight", backupCount=3)
# Format each log message like this
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
# Attach the formatter to the handler
handler.setFormatter(formatter)
# Attach the handler to the logger
logger.addHandler(handler)

# Make a class we can use to capture stdout and sterr in the log
class MyLogger(object):
        def __init__(self, logger, level):
                """Needs a logger and a logger level."""
                self.logger = logger
                self.level = level

        def write(self, message):
                # Only log if there is a message (not just a new line)
                if message.rstrip() != "":
                        self.logger.log(self.level, message.rstrip())

# Replace stdout with logging to file at INFO level
sys.stdout = MyLogger(logger, logging.INFO)
# Replace stderr with logging to file at ERROR level
sys.stderr = MyLogger(logger, logging.ERROR)



# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe("/IntelliWeb/v1/account/+/devices/+/monitoringData")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    # print(msg.topic+" "+str(msg.payload))

    parsed_json = json.loads(msg.payload)
    # print json.dumps(parsed_json, sort_keys=True, indent=4, separators=(',', ': '))
    
    AC = parsed_json['AC'][0]
    DC = parsed_json['DC'][0]
    

    # Specific for IP Symcon, but can be adjusted for any domotica software package. 
    IPSrpc("SetValue", [17473, AC['P']])
    IPSrpc("SetValue", [18782, AC['V']])
    IPSrpc("SetValue", [41738, DC['V']])
    IPSrpc("SetValue", [40413, parsed_json['T']])
    IPSrpc("SetValue", [59939, parsed_json['E']])
    print("Values send to IP Symcon")


# JSON-RPC to IP Symcon
def IPSrpc(methodIps, paramIps):
    url = "http://IP_SYMCON_IP:PORT/api/"
    auth=HTTPBasicAuth('IP_SYMCON_USERNAME', IP_SYMCON_PASSWORD')
    headers = {'content-type': 'application/json'}

    payload = {
        "method": methodIps,
        "params": paramIps,
        "jsonrpc": "2.0",
        "id": "0",
    }
    response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers)
    print(response)



# Open MQTT Client and start getting data

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.tls_set("/etc/ssl/certs/ca-certificates.crt")

client.username_pw_set("INTELLIWEB_USERNAME", "INTELLIWEB_API_KEY")
client.user_data_set("IINTELLIWEB_USERNAME")

client.connect("intelliweb.mastervolt.com", 8883, 60)

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()

  • Pos2007
  • Registratie: januari 2007
  • Niet online
Bedankt voor de info. Ik ga het proberen in Domoticz met een RPI.

edit: Omvormer een Mastervolt Web3000

[Voor 23% gewijzigd door Pos2007 op 15-10-2018 14:39]


Acties:
  • 0Henk 'm!

  • Pos2007
  • Registratie: januari 2007
  • Niet online
@deWit ik ben hier nog even mee bezig geweest. Als ik het goed begrijp is er een mtqq server nodig en 2 clients?

Intelliweb is dan een client? Ik heb mosquitto draaien als mtqq server (broker?)

Mijn domoticz pi zou dan ook een client kunnen zijn die via de broker informatie op vraagt bij intelliweb en dit weer in domoticz zet?

Moet ik dan alleen het onderste gedeelte in domoticz taal zetten met idx en ipadres?

# JSON-RPC to IP Symcon
def IPSrpc(methodIps, paramIps):
url = "http://IP_SYMCON_IP:PORT/api/"
auth=HTTPBasicAuth('IP_SYMCON_USERNAME', IP_SYMCON_PASSWORD')
headers = {'content-type': 'application/json'}

payload = {
"method": methodIps,
"params": paramIps,
"jsonrpc": "2.0",
"id": "0",
}
response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers)
print(response)

Acties:
  • 0Henk 'm!

  • Pos2007
  • Registratie: januari 2007
  • Niet online
@deWit werkt dit nog nu intelliweb ermee is gestopt?

Acties:
  • +1Henk 'm!

  • ixit
  • Registratie: april 2005
  • Laatst online: 20:01
Ik vrees voor je van niet ;(

Ook hier wordt gebruik gemaakt van:
client.username_pw_set("INTELLIWEB_USERNAME", "INTELLIWEB_API_KEY")
client.user_data_set("IINTELLIWEB_USERNAME")

client.connect("intelliweb.mastervolt.com", 8883, 60)
Dus de data werd gewoon van de mastervolt website afgehaald.

Ik heb met mijn Soladin web 1500 hetzelfde probleem en ik heb ook nog geen oplossing gevonden.
Mastervolt weigert het protocol voor de communicatie vrij te geven, dus dat maakt het wel echt lastig.

Ik blijf het belachelijk vinden dat je een omvormer verkoopt met als grootse pluspunt in de documentatie en reclame het bijbehorende webportal, en dat je dan nog ruim binnen de garantie van die dingen het portal stopt en dan ook niet wil meewerken aan het regelen van een alternatieve oplossing 8)7

Bijzonder discutabel handelen als bedrijf!

  • ThinkPad
  • Registratie: juni 2005
  • Laatst online: 23:12

ThinkPad

Moderator Duurzame Energie & Domotica
Valt het verkeer tussen omvormer en Mastervolt niet te sniffen/decoderen met Wireshark? En dan vanuit daar een oplossing bedenken om het lokaal af te vangen?

Of heeft de omvormer misschien nog andere aansluitingen waar je informatie uit kunt trekken? Ik heb een Goodwe, de standaard wifi-module heb ik afgekoppeld en lees hem zelf uit via software op een ESP8266 die aan de RS485 aansluiting hangt.

[Voor 48% gewijzigd door ThinkPad op 20-03-2020 11:47]

Gas besparen door CV-tuning | Elektriciteit besparen
Geen vragen via privébericht die ook via het forum kunnen a.u.b.

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True