ASKOMA AG | Industriestrasse 1 | CH-4922 Bützberg | Switzerland | Hotline +41 62 958 70 99 | support@askoma.com
© 2020 Askoma AG
Screw-in heaters and flange heaters for heating industrial and heating water with photovoltaic
Einschraubheizkörper und Flanschheizkörper zur Erwärmung von Brauch- und Heizungswasser mit Photovoltaik
NOTE: A successful Python 3 installation is required. The packages listed below are additionally required. Depending on the operating system, permissions must be maintained, e.g. with sudo under Linux or macOS.
HINWEIS: Vorausgesetzt wird eine erfolgte Python 3 Installation. Die unten angeführten Pakete werden zusätzlich benötigt. Je nach Betriebssystem müssen Berechtigungen eingehalten werden, z.B. mit sudo unter Linux oder macOS.
Installation in a shell:
pip3 install requests
pip3 install pymodbus
NOTE: If there is only one ASKOHEAT+ in the local network, the ASKOHEAT+ can be reached via the hostname “askoheat-eth”. Otherwise, the IP address must be obtained through the router (e.g. 192.168.178.238). This is then to be used instead of “askoheat-eth” in the examples.
HINWEIS: Ist nur ein ASKOHEAT+ im lokalen Netzwerk vorhanden, kann der ASKOHEAT+ über den Hostnamen „askoheat-eth“ erreicht werden. Anderenfalls muss die IP-Adresse über den Router ermittelt werden (z.B. 192.168.178.238). Diese ist dann in den Beispielen statt „askoheat-eth“ einzusetzen.
In solution 1 several settings can be made. This is especially useful for configuration ( -> getcon.json). All values are always returned to the corresponding block.
Bei Lösung 1 können mehrere Settings vorgenommen werden. Das ist insbesondere bei der Konfiguration sinnvoll ( -> getcon.json). Es werden immer alle Werte zum zugehörigen Block zurückgegeben.
Python command for initialisation:
import requests
import json
Get command:
response = requests.get('http://askoheat-eth/getema.json')
ema = response.json()
Check command:
print(ema)
Result:
{'MODBUS_EMA_ID': '7190004.0001', 'MODBUS_EMA_STATUS': '0', 'MODBUS_EMA_HEATER_LOAD': '0', 'MODBUS_EMA_SET_HEATER_STEP': '0', 'MODBUS_EMA_LOAD_SETPOINT_VALUE': '0', 'MODBUS_EMA_LOAD_FEEDIN_VALUE': '0', 'MODBUS_EMA_EMERGENCY_MODE': '0', 'MODBUS_EMA_HEAT_PUMP_REQUEST': '0', 'MODBUS_EMA_ANALOG_INPUT_FLOAT': '0.00', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR0': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR1': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR2': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR3': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR4': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR5': '9999.90'}
Modify command:
ema['MODBUS_EMA_SET_HEATER_STEP']='4'
response = requests.put('http://askoheat-eth/', json=ema)
2nd check command:
ema = response.json()
print(ema)
Result:
{'MODBUS_EMA_ID': '7190004.0001', 'MODBUS_EMA_STATUS': '12', 'MODBUS_EMA_HEATER_LOAD': '2000', 'MODBUS_EMA_SET_HEATER_STEP': '4', 'MODBUS_EMA_LOAD_SETPOINT_VALUE': '0', 'MODBUS_EMA_LOAD_FEEDIN_VALUE': '0', 'MODBUS_EMA_EMERGENCY_MODE': '0', 'MODBUS_EMA_HEAT_PUMP_REQUEST': '0', 'MODBUS_EMA_ANALOG_INPUT_FLOAT': '0.00', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR0': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR1': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR2': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR3': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR4': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR5': '9999.90'}
NOTE: Changed values are MOSBUS_EMA_STATUS, MODBUS_EMA_HEATER_LOAD, MODBUS_EMA_SET_HEATER_STEP)
This is a lean way to set control values or for configuration.
Dies ist ein schlanker Weg zum setzen von Regelwerten oder zur Konfiguration.
Initialisation:
import requests
Set command:
response = requests.put('http://askoheat-eth/', json={'MODBUS_EMA_SET_HEATER_STEP': '4'})
Check:
print(response.json())
Result:
{'MODBUS_EMA_ID': '7190004.0001', 'MODBUS_EMA_STATUS': '12', 'MODBUS_EMA_HEATER_LOAD': '2000', 'MODBUS_EMA_SET_HEATER_STEP': '4', 'MODBUS_EMA_LOAD_SETPOINT_VALUE': '0', 'MODBUS_EMA_LOAD_FEEDIN_VALUE': '0', 'MODBUS_EMA_EMERGENCY_MODE': '0', 'MODBUS_EMA_HEAT_PUMP_REQUEST': '0', 'MODBUS_EMA_ANALOG_INPUT_FLOAT': '0.00', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR0': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR1': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR2': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR3': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR4': '9999.90', 'MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR5': '9999.90'}
This allows you to send the web browser commands provided by the equipment. If further settings are required, this must be done via MODBUS or HTTP-JSON.
Hiermit lassen sich die vom Gerät bereitgestellten Webbrowser-Befehle absetzen. Sollten weitere Einstellungen notwendig sein, muss dies über MODBUS oder HTTP-JSON erfolgen.
Initialisation:
import requests
Set command:
response = requests.get('http://askoheat-eth/heater',params={'step':'4'})
Check:
response.url
Result:
'http://192.168.178.238/heater?step=1'
This example shows a simple way to set a Modbus register via Modbus TCP.
Dieses Beispiel zeigt einen simplen Weg zum setzen eines Modbus-Registeres über Modbus TCP.
Initialisation:
import pymodbus
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
Connection to the ASKOHEAT+ via Modbus TCP using port 502:
mbc = ModbusClient('askoheat-eth', 502)
Write register: (MODBUS_EMA_SET_HEATER_STEP is Modbus register 318)
data = mbc.write_registers(318, 4)
Get register:
data = mbc.read_holding_registers(318, 1)
Check:
print(data.registers)
Result:
WriteRegisterResponse 318 => 4