Hoymiles mit Ahoy DTU und Grafana

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

nick-tech
Beiträge: 15
Registriert: Sa 14. Jan 2023, 21:41
Hat sich bedankt: 1 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von nick-tech »

Ich hab mal im Ahoy Projekt nachgefragt ob das beabsichtigt ist, dass in /api/live keine "Live Daten" mehr enthalten sind. Macht ja irgendwie nicht so viel Sinn.
Auf 0.5.66 möchte ich ungern zurück, dann geht mein Display nicht mehr..

lumen
Beiträge: 20
Registriert: Di 7. Mär 2023, 18:25
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von lumen »

Ich werde mit dem Update auf 0.6.x noch warten, bis es ruhiger wird.
https://github.com/lumapu/ahoy/blob/dev ... CHANGES.md

Fooose
Beiträge: 4
Registriert: Mi 5. Apr 2023, 11:22
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von Fooose »

Hallo zusammnen,

ich habe jetzt mal ein PythonScript erstellt, leider fehlen mir die Kenntnisse um es so zum laufen zu bringen wie ich es gern möchte.
Intension war es, die einzelnen channels auch in separate genau so benannte influxDB zu schreiben, momentan wir alles in die InfluxDB "ch4"
geschrieben.

Wie schon erwähnt, ich bin kein "Coder", wenn jemand eine Idee hat wäre es toll, das Script kann gern genutzt und verbessert werden.

*EDIT 10.04.23 /10:10 Uhr

Ich habe eine lange Nacht hinter und viel Kaffee in mir und noch mehr gelernt, vor allem, dass man nicht so kompliziert denken sollte.
Das folgende Script funktioniert so wie es soll.

Es werden alles Topics von der "AHoyDTU" in eine InfluxDB übertragen.
Folgende Topics: ch0, ch1, ch2, ch3, ch4, total

Und dennoch sind das leider nicht alle Werte( Leistungsanpassung) die AhoyDTU zur Verfügung stellt.
Ich bin jedoch zufrieden.

Code: Alles auswählen

#!/usr/bin/env python3

"""
A MQTT to InfluxDB Bridge for HM-1500 Inverter
This script receives MQTT data from HM-1500 Inverter and saves those to InfluxDB.
Scriptet by Fooose
"""

import re
import json
import time
from typing import NamedTuple

import paho.mqtt.client as mqtt
from influxdb import InfluxDBClient

INFLUXDB_ADDRESS = ''
INFLUXDB_USER = ''
INFLUXDB_PASSWORD = ''

MQTT_ADDRESS = ''
MQTT_USER = ''
MQTT_PASSWORD = ''
MQTT_TOPIC_REGEX = 'HM-1500/(total|HM-1500)/([^/]+)/([^/]+)'


class SensorData(NamedTuple):
    location: str
    measurement: str
    value: float


def on_connect(client, userdata, flags, rc):
    """ The callback for when the client receives a CONNACK response from the server."""
    print('Connected with result code ' + str(rc))
    # Subscribe to all the HM-1500 topics
    client.subscribe('HM-1500/#')


def on_message(client, userdata, msg):
    """The callback for when a PUBLISH message is received from the server."""
    print(msg.topic + ' ' + str(msg.payload))
    sensor_data = _parse_mqtt_message(msg.topic, msg.payload.decode('utf-8'))
    if sensor_data is not None:
        _send_sensor_data_to_influxdb(sensor_data)


def _parse_mqtt_message(topic, payload):
    match = re.match(MQTT_TOPIC_REGEX, topic)
    if match:
        location = match.group(2)
        measurement = match.group(3)
        if measurement == 'status':
            return None
        return SensorData(location, measurement, float(payload))
    else:
        return None


def _send_sensor_data_to_influxdb(sensor_data):
    # Create a new InfluxDB client for each location
    influxdb_client = InfluxDBClient(
        host=INFLUXDB_ADDRESS,
        port=8086,
        username=INFLUXDB_USER,
        password=INFLUXDB_PASSWORD,
        database=sensor_data.location
    )

    json_body = [
        {
            'measurement': sensor_data.measurement,
            'tags': {
                'location': sensor_data.location
            },
            'fields': {
                'value': sensor_data.value
            }
        }
    ]
    influxdb_client.write_points(json_body)


def _init_influxdb_database():
    pass  # We don't need to do anything here


if __name__ == '__main__':
    _init_influxdb_database()
    mqtt_client = mqtt.Client(client_id='HM-1500-MQTT-InfluxDB-Bridge')
    mqtt_client.username_pw_set(MQTT_USER, MQTT_PASSWORD)
    mqtt_client.on_connect = on_connect
    mqtt_client.on_message = on_message
    mqtt_client.connect(MQTT_ADDRESS, 1883, 60)
    mqtt_client.loop_forever()





Bild Bild

Bild

dstockm
Beiträge: 15
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 2 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von dstockm »

Hi,
ich weiß nicht ob ich das Problem richtig verstanden habe, aber MQTT-->Influx geht m.E. auf direktem Weg:
viewtopic.php?p=23612#p23612
In openDTU musste ich das Basis-Topic anpassen, damit es von der Solaranzeige interpretiert werden kann.

Mein Problem mit den "Untertopics" müsste in der aktuellen Veriosn schon behoben sein - mein letzter Post ist also obsolet.

P.S.: Die MQTT-Daten landen aber erstmal alle als Strings in der Datenbank. Darum habe ich mich noch nicht gekümmert. Vermutlich gibt's hier schon irgendwo eine Lösung.

Benutzeravatar
Ulrich
Administrator
Beiträge: 5982
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 814 Mal
Kontaktdaten:

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von Ulrich »

Um Daten in die Influx Datenbank der Solaranzeige zu speichern ist die API gedacht.
download/API.pdf

Das Abspeichern von MQTT Werten ist nur als Notlösung für einzelne Werte gedacht. Es war niemals vorgesehen, damit alle Werte eines anderen Gerätes abzuspeichern. Wenn so etwas gewünscht wird, müsste man ein Script schreiben, in dem MQTT Werte mithilfe der API abgespeichert werden. Das fehlt aber bis jetzt.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

dstockm
Beiträge: 15
Registriert: So 29. Jan 2023, 17:54
Hat sich bedankt: 2 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von dstockm »

Meine Lösung mit MQTT für openDTU ist ja erfreulicher Weise duch Aufnahme der openDTU als bekannter WR überflüssig :D

Bislang kann ich die openDTU.php noch nicht richtig nutzen, weil bei meiner openDTU (Stand 01/2023) offenbar die API noch nicht existiert. Derzeit schreibt er mir jedenfalls nur die Gesamtsumme weg und nicht die einzelnen Strings (.../api/live zeigt auch nichts an).
Nun muss ich die openDTU erst umflashen um auf die aktuelle Version zu kommen. OTA-Update geht aufgrund einer Umstellung der Partitionen in dem Fall leider nicht.

Ich hatte den TE so verstanden, dass auch in diesem Falle um eine Umgehungslösung bei Ahoy geht, weil deren API noch nicht sauber läuft. Beste Lösung wäre m.E. einfach abzuwarten bis Ahoy das im Griff hat...

Ich bin heilfroh dass ich demnächst alle relevanten Werte direkt über den supporteten WR in die DB bekomme. Per MQTT macht es keinen Spass alle Werte einzeln anzulegen. Von den fehlenden Vorteilen die solaranzeige bei direkter Unterstützung out of the box liefert ganz zu schweigen (Tages-Summen, fertige Dashboards, ...)
Der Ursprungs-Thread stammt doch auch noch aus einer Zeit wo es noch keine direkte openDTU/Ahoy-Unterstützung gab...

james0011
Beiträge: 2
Registriert: Mi 9. Jun 2021, 21:59
Danksagung erhalten: 2 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von james0011 »

Antwort eines Ahoy DTU Entwicklers:

>there was a change due to problems with JSON
>now you will find the values in http://<ip>/api/inverter/id/0
>change the id number as needed: 0 = first inverter, 1 = second inverter, ...

ich konnte es bei meiner Installation auch testen, da ich zwei HM-400 mit je einem PV-Modul installiert habe.
es sind wieder Werte da !

bitte um Anpassung des Codes, damit nach 0.6.0 Solaranzeige weiterverwendet werden kann.

Danke Dieter
0.png
1.png

funny1980
Beiträge: 1
Registriert: Mi 19. Apr 2023, 12:23

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von funny1980 »

Hallo,

git es schon etwas neues? Bekomme leider von meine Ahoy DTU keine Daten auf das Dashboard. Die Logdatei sagt mir das sie nicht auf Influx schreiben kann :(. Bin mit diesem System nicht so vertraut. Könnte mir einer weiter helfen?

Raspberry Pi 4 Model B
esp8266 Ahoy DTU Ver. 0.6.9
Wechselrichter HM-600
2x Panel SP410

Danke!

Benutzeravatar
Ulrich
Administrator
Beiträge: 5982
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 814 Mal
Kontaktdaten:

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von Ulrich »

Die neue Firmware von der Ahoy-DTU wird jetzt auch unterstützt. Bitte ein Update auf die Solaranzeige machen. Das neue Dashboard ist hier:
viewtopic.php?p=443#p443
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

lumen
Beiträge: 20
Registriert: Di 7. Mär 2023, 18:25
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Hoymiles mit Ahoy DTU und Grafana

Beitrag von lumen »

Ulrich hat geschrieben:
Do 30. Mär 2023, 08:55
lumen hat geschrieben:
Mi 29. Mär 2023, 22:35
Aber wo wir schon einmal dabei sind ..


Hallo TOM,

das ist noch ein ungelöstes Problem. Grafana in der aktuellen Version benötigt so lange zum Hochfahren, sodass es noch nicht fertig ist, wenn der Firefox startet. In diesem Fall hat man 2 Möglichkeiten. Entweder nach 5-10 Sekunden mit der Maus auf den Button drücken, oder von der ferne "systemctl restart lightdm" in PUTTY eingeben.

Falls jemand eine Idee hat, wie man den Start von Firefox um 5-10 Sekunden verzögern kann, bitte melden.

Hallo Ulrich.

weißt du, ob zu diesem Problem schon einer eine Lösung gefunden hat.

Mir fehlt leider das know how in den Programmablauf konstruktiv einzusteigen.

Wäre es vielleicht denkbar, dass man das "systemctl restart lightdm" grundsätzlich lökal einmal ausführen lässt? Dann startet Grafana schlimmstenfalls zweimal hintereinander.

Mein Hintergrund: Ich starte den RPi jeden Morgen automatisch neu und sehe dann erst später, dass er sich aufgehängt hat.

Danke fürs Mitdenken!


Tom

Antworten

Zurück zu „Allgemeines“