Wechselrichter Fox-Ess T6G3 einbinden

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
RolandT
Beiträge: 78
Registriert: 24.07.2020, 10:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 41 Mal

Wechselrichter Fox-Ess T6G3 einbinden

Beitrag von RolandT » 19.04.2024, 13:26

Ich bräuchte mal eine Idee...

Bei mir werkelt seit kurzen eine PV mit einem FoxEss T6G3 Wechselrichter. An die Aktualwerte komme ich mit Einsatz eines Shelly 3em pro, an die Daten des Zählers mit einem USB Lesekopf.
Aus Neugierde und zu Statistikzwecken würde ich gerne noch ein paar innere Werte des Wechselrichters auslesen. Dies muss nicht real time sein, dazu wie gesagt gibts den Shelly und die anderen Messstellen.
Weil die Daten nur Neugierdezwecken dienen wollte ich auf Modbusaufbau verzichten. Es gäbe zwar die Möglichkeit über die FoxExx Cloud an die Daten zu kommen, nur gibts da weder bei IObroker einen Adapter noch hier im Forum Scriptschnitzel.

Deshalb nun meine Frage:

gegeben: Raspberrymatik in aktueller Firmware
IOBroker mit aktuellem stable release

gesucht: Ansatz wie ich auf RMatik oder dem IoBroker ohne grossen Aufwand an die Daten komme, Ansatz reicht, dann probiere ich mich auch selber daran

vorhanden:
API Dokumentation: https://www.foxesscloud.com/public/i18n ... ument.html
für HA findet man auch ein Beispiel, aber dies auch in Python
In Python3 wie in dem beispiel hab ichs mit wildem Probieren hinbekommen, Portierungsversuch nach HMScript oder Javascript war eher Desaster

nicht gesucht:
die üblichen kostenintensiven Werbeposts und kostenpflichtigen Produktvorschläge. Ich meissel eher die Wände auf und installiere Gaslampen als das zu verwenden.

Extra farblich markiert

Thnx, Roland

MichaelN
Beiträge: 9705
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 701 Mal
Danksagung erhalten: 1632 Mal

Re: Wechselrichter Fox-Ess T6G3 einbinden

Beitrag von MichaelN » 19.04.2024, 14:08

Wenn es eine API gibt, die durch Aufruf einer URL ein JSON liefert, dann kann dir das Skript in meiner Signatur weiterhelfen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Black
Beiträge: 5494
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1079 Mal
Kontaktdaten:

Re: Wechselrichter Fox-Ess T6G3 einbinden

Beitrag von Black » 19.04.2024, 20:45

Hi Roland, die API gibt es und sie liefert auch ein JSON zurück.
Ich würde da an deiner Stelle bei den Systemgegebenheiten (RMatik und IOBroker) das Vorhaben auf dem IOBroker realisieren.
Grund: DU willst die Daten nur zur Info haben, keine direkten Schaltvorgänge aufgrund des Ergebnisses. ALso braucht die CCU sich darum nicht zu kümmern, da sie mit den Daten primär nix tut.

Wodran hats bei dir denn gehangen ?
Wenn ich mirs angucke, Get device real-time data , daten eines Inverters holen, so ergibt sich bei mir folgende Logik

deine URL ist in dem Fall: 'https://www.foxesscloud.com' + '/op/v0/device/real/query', die du ansprechen musst
dazu kommt, dass du dir einen header bauen musst:

The name of the parameter Parameter value Required or not Example Remark
Content-Type application/json Yes
token Yes Generate apikey from the API management function of the platform
signature Yes Signature rule: Encrypt the string url + "\r\n" + token + "\r\n" + timestamp with md5
timestamp Yes Current timestamp
lang Yes en Language ich würd hier aber de nehmen !

die requires brauchts:

Code: Alles auswählen

var md5=require ('js-md5')
var request= require ('request')
var domain= 'https://www.foxesscloud.com'
Dann brauchts was für den Header

Code: Alles auswählen

function GetAuth (token,path,lang) {
   let timestamp= Date.now()
   let signature= path+"\\r\\n"+token+"\\r\\n"+timestamp.toString()
   let a={"Content-Type":"application/json", token: apikey,lang: lang,"timestamp": timestamp.toString(),"signature":md5(signature),"User-Agent": userAgent}
   return a
}
GetAuth kannst du als function auch gebrauchen für weitere Api Aufrufe

und an die Device Daten sollte es dann so gehen: Wichtig, den body brauchts die Inverterseriennummer

Code: Alles auswählen

function device_realquery (SerNr) {
    let x=''
    const options= {url: domain+path_real_query,
            method: 'POST',
        headers: GetAuth (apikey,path_real_query,lang),
        body: '{"sn": "'+SerNr+'", "variables": []}'
        }
     //   log (options)
    request(options, function(error, response, body) {
    // real daten
      try {
        var jdev= JSON.parse (body)
        // Hier darfst du dich dann austoben, ab hier ist es ein JSON
      }  
      catch (error) {
        log ("war nix")
      }  
    })    
}
du hast 1440 API Aufrufe pro tag, da die cloud aber nur alle x minuten aktualisiert und nachts der WR eh schlafen geht kannst das auch so machen

Code: Alles auswählen

schedule('*/2 * * * *', () => {  
  if (isAstroDay()) {
    device_realquery('DeineWRSeriennummer')  
    log ("triggered")
  }   
});
apikey etc sollte klar sein, lang ist die sprache, path der cload Abfrage Pfad

Viel Spass beim Ausprobieren, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

RolandT
Beiträge: 78
Registriert: 24.07.2020, 10:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 41 Mal

Re: Wechselrichter Fox-Ess T6G3 einbinden

Beitrag von RolandT » 02.05.2024, 08:06

Vielen Dank @Black

hat so funktioniert.

Meine eigenen Versuche scheiterten beim Zusammensetzen des Headers. Eigentlich total einfach, wenn man dein Beispiel sieht. Aber man muss drauf kommen (oder halt wissen wies geht).

Läuft seit einer Woche zuverlässig.

Danke, Roland

Tip an Anwender, die es in IObroker nachprogggen wollen. js-md5 in dem entsprechenden javascript adapter als node modul angeben, sonst wundert man sich, warum das require nur Fehler wirft.

Antworten

Zurück zu „HomeMatic allgemein“