SolarMax S-Serie an Homematic

Alles was speziell mit der Anbindung der HomeMatic Zentrale und anderen Smart Home Zentralen zu tun hat. (FHEM, ioBroker usw.) Fragen Ideen und Erfolgsmeldungen.

Moderator: Ulrich

emil70
Beiträge: 7
Registriert: Di 11. Jan 2022, 19:38
Hat sich bedankt: 1 Mal

SolarMax S-Serie an Homematic

Beitrag 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??

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

Re: SolarMax S-Serie an Homematic

Beitrag 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
--------------------------------------
Ulrich [Admin]

emil70
Beiträge: 7
Registriert: Di 11. Jan 2022, 19:38
Hat sich bedankt: 1 Mal

Re: SolarMax S-Serie an Homematic

Beitrag von emil70 »

Welche Datei müsste den dazu angepasst werden?

Edit:

In der

Code: Alles auswählen

solarmax_s_serie.php
findet man ja schon mal das, was ausgelesen wird

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

Re: SolarMax S-Serie an Homematic

Beitrag von Ulrich »

Die homatic.php muss angepasst werden. Dort sind auch viele Hinweise zu finden.
--------------------------------------
Ulrich [Admin]

emil70
Beiträge: 7
Registriert: Di 11. Jan 2022, 19:38
Hat sich bedankt: 1 Mal

Re: SolarMax S-Serie an Homematic

Beitrag von emil70 »

Wo soll die liegen ?

Finde nur die

Code: Alles auswählen

homematic.php
Oder ist diese gemeint?

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

Re: SolarMax S-Serie an Homematic

Beitrag von Ulrich »

Ja, diese ist gemeint! Bitte bei Änderungen die Datei sichern, da sie bei einem Update überschrieben werden kann.
--------------------------------------
Ulrich [Admin]

emil70
Beiträge: 7
Registriert: Di 11. Jan 2022, 19:38
Hat sich bedankt: 1 Mal

Re: SolarMax S-Serie an Homematic

Beitrag 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?

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

Re: SolarMax S-Serie an Homematic

Beitrag von Ulrich »

Das sollte so funktionieren. Mehr als eine Fehlermeldung kann ja nicht passieren. Probiere es aus.
--------------------------------------
Ulrich [Admin]

emil70
Beiträge: 7
Registriert: Di 11. Jan 2022, 19:38
Hat sich bedankt: 1 Mal

Re: SolarMax S-Serie an Homematic

Beitrag 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
Dateianhänge
Unbenannt.PNG

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

Re: SolarMax S-Serie an Homematic

Beitrag 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.
--------------------------------------
Ulrich [Admin]

Antworten