Seite 1 von 2
SolarMax S-Serie an Homematic
Verfasst: So 16. Jan 2022, 12:33
von emil70
Hallo in die Runde
Besten Dank für diese tolle Projekt. Nutze es jetzt seid ein paar Tagen
Anbindung an Homematic geht ohne Probleme. Laut Anleitung können folgende Daten an Homematic geschickt werden
Code: Alles auswählen
// Solarspannung
// Solarstrom
// acAusgangsspannung
// acAusgangsstrom
// acWirkleistung
// SolarleistungTag
In Grafana werden zusätzlich noch
Code: Alles auswählen
Gesamte Energie diesen Monat
Gesamtleistung dieses Jahr
Temperartur
angezeigt.
Könnte man diese nicht auch mit als Datenpunkt einbinden und Homemtic zur Verfügung stellen??
Re: SolarMax S-Serie an Homematic
Verfasst: So 16. Jan 2022, 12:41
von Ulrich
Technisch wäre das kein Problem. Wenn du das benötigst und es nicht selber erweitern kannst, melde dich bitte hier:
viewtopic.php?f=22&t=1470
Re: SolarMax S-Serie an Homematic
Verfasst: So 16. Jan 2022, 13:13
von emil70
Welche Datei müsste den dazu angepasst werden?
Edit:
In der
findet man ja schon mal das, was ausgelesen wird
Re: SolarMax S-Serie an Homematic
Verfasst: So 16. Jan 2022, 15:48
von Ulrich
Die homatic.php muss angepasst werden. Dort sind auch viele Hinweise zu finden.
Re: SolarMax S-Serie an Homematic
Verfasst: So 16. Jan 2022, 16:45
von emil70
Wo soll die liegen ?
Finde nur die
Oder ist diese gemeint?
Re: SolarMax S-Serie an Homematic
Verfasst: Mo 17. Jan 2022, 09:48
von Ulrich
Ja, diese ist gemeint! Bitte bei Änderungen die Datei sichern, da sie bei einem Update überschrieben werden kann.
Re: SolarMax S-Serie an Homematic
Verfasst: Mo 17. Jan 2022, 17:43
von emil70
Ok. Dan gehe ich mal davon aus das der Bereich gemeint ist
Code: Alles auswählen
elseif ($Regler == "5" or $Regler == "10" or $Regler == "11" or $Regler == "12") {
switch ($Bezeichnung) {
case "Geraetestatus":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Geraetestatus"].")";
break;
case "Solarspannung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Solarspannung"].")";
break;
case "Solarstrom":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Solarstrom"].")";
break;
case "Solarleistung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Solarleistung"].")";
break;
case "acAusgangsspannung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Ausgangsspannung"].")";
break;
case "acAusgangsstrom":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Ausgangsstrom"].")";
break;
case "acWirkleistung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Leistung"].")";
break;
case "Einspeisung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Einspeisung"].")";
break;
case "Verbrauch":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Verbrauch"].")";
break;
case "Bezug":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Bezug"].")";
break;
case "LadestatusProzent":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Akkustand_SOC"].")";
break;
case "Wind":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Wind"].")";
break;
case "Wolkendichte":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Wolkendichte"].")";
break;
case "AussenTemperatur":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AussenTemperatur"].")";
break;
case "SolarleistungTag":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtHeute"].")";
break;
default:
$funktionen->log_schreiben( "Es gibt Probleme mit den HomeMatic Variablen! Bitte prüfen ob diese Variable auch zu Ihrem Regler gehört: ".$Parameter, " ", 5 );
break;
}
$DataString .= "&";
}
Wenn ich da z.B das einfüge
Code: Alles auswählen
case "SolarleistungMonat":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtMonat"].")";
break;
case "SolarleistungJahr":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtJahr"].")";
break;
case "SolarleistungGesamt":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtGesamt"].")";
break;
Kann ich dann die Datenpunkte
Code: Alles auswählen
SolarleistungMona,SolarleistungJahr,SolarleistungGesamt
so nutzen
Oder bin ich so auf dem Holzweg?
Re: SolarMax S-Serie an Homematic
Verfasst: Di 18. Jan 2022, 09:12
von Ulrich
Das sollte so funktionieren. Mehr als eine Fehlermeldung kann ja nicht passieren. Probiere es aus.
Re: SolarMax S-Serie an Homematic
Verfasst: Sa 22. Jan 2022, 10:03
von emil70
So, bin weiter .homematic.php sieht nun so aus
Code: Alles auswählen
case "SolarleistungGestern":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtGestern"].")";
break;
case "Solarspannung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Solarspannung"].")";
break;
case "SolarleistungMonat":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtMonat"].")";
break;
case "SolarleistungJahr":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtJahr"].")";
break;
case "acAusgangsspannung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Ausgangsspannung"].")";
break;
case "acAusgangsstrom":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Ausgangsstrom"].")";
break;
case "acWirkleistung":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["AC_Leistung"].")";
break;
case "SolarleistungGesamt":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamt"].")";
break;
case "Temperatur":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Temperatur"].")";
break;
case "SolarleistungGestern":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["SolarleistungGestern"].")";
break;
case "LadestatusProzent":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Akkustand_SOC"].")";
break;
case "Wind":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Wind"].")";
break;
case "Solarstrom":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Solarstrom"].")";
break;
case "Betriebsstunden":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["Betriebsstunden"].")";
break;
case "SolarleistungTag":
$DataString .= "Antwort".$i."=dom.GetObject('".$Parameter."').State(".$aktuelleDaten["WattstundenGesamtHeute"].")";
break;
Eintrag in der user.config.php so
Code: Alles auswählen
$HomeMaticVar = "Solarspannung,Solarstrom,acAusgangsstrom,acAusgangsspannung,acWirkleistung,SolarleistungTag,SolarleistungMonat,SolarleistungJahr,SolarleistungGesamt,Temperatur,Betriebsstunden,SolarleistungGestern";
Wird Alles übertragen und angezeigt in Homematic.
Ausser SolarleistungGesamt . Fehlermeldung im Log ist keiner drin
In der solarmax_s_serie.php wird ja
Code: Alles auswählen
$aktuelleDaten["WattstundenGesamt"] = hexdec($funktionen->com_lesen($COM1,$WR_Adresse, "KTO"))*1000;
abgefragt. Sollte somit ja funktionieren
Hast du eine Idee??
Edit: Im Dashboard stehen auch keine Werte. Siehe Anhang
Re: SolarMax S-Serie an Homematic
Verfasst: So 23. Jan 2022, 09:47
von Ulrich
Dein Problem wird sein, dass eine URL nicht länger als xxxx Zeichen sein darf. Je länger du die Variablennamen wählst, umso schneller hast du die xxxxx Zeichen erreicht. Deshalb steht in der Dokumentation, dass man nur 10 Variablen übertragen kann. Wenn deine Variablen nur 2-3 Zeichen lang sind, werden es mehr als 10 sein können. Suche mal in diese Richtung.