{"id":2184,"date":"2022-11-02T17:12:02","date_gmt":"2022-11-02T16:12:02","guid":{"rendered":"http:\/\/mgf-lab.mgf-kulmbach.de\/?p=2184"},"modified":"2022-11-02T17:12:05","modified_gmt":"2022-11-02T16:12:05","slug":"hoymiles-inverter-daten-aufbereiten","status":"publish","type":"post","link":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/2022\/11\/02\/hoymiles-inverter-daten-aufbereiten\/","title":{"rendered":"Hoymiles Inverter Daten aufbereiten"},"content":{"rendered":"\n<p>Ein Nachteil der im Artikel &#8222;<a rel=\"noreferrer noopener\" aria-label=\"Hoymiles Inverter auslesen (opens in a new tab)\" href=\"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/2022\/10\/12\/hoymiles-inverter-auslesen\/\" target=\"_blank\">Hoymiles Inverter auslesen<\/a>&#8220; verwendeten Software AHoy ist, dass die Daten nicht dauerhaft gespeichert werden, sobald sich der Inverter zum Strom sparen schlafen legt. Hier wurde eine datenbankbasierte L\u00f6sung gefunden und umgesetzt<\/p>\n\n\n\n<p>Stark geholfen bei der eigenen Implementierung hat <a rel=\"noreferrer noopener\" aria-label=\"dieser Artikel (opens in a new tab)\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/16850-pv-power-ahoy\/\" target=\"_blank\">dieser Artikel<\/a>. Ein MQTT-Server war bereits f\u00fcr andere Projekte auf einem RaspberryPi eingerichtet, so dass nur noch Telegraf und Influxdb installiert und konfiguriert werden mussten. Influxdb erh\u00e4lt man in der aktuellen Version 2 <a rel=\"noreferrer noopener\" aria-label=\"hier (opens in a new tab)\" href=\"https:\/\/www.influxdata.com\/get-influxdb\/\" target=\"_blank\">hier<\/a>, die Installationsanleitung f\u00fcr die unterschiedlichen Betriebssysteme sind <a rel=\"noreferrer noopener\" aria-label=\"hier (opens in a new tab)\" href=\"https:\/\/docs.influxdata.com\/influxdb\/v2.0\/install\/?t=Linux\" target=\"_blank\">hier<\/a> nachzulesen. Geholfen hat au\u00dferdem das <a rel=\"noreferrer noopener\" aria-label=\"Video von RaspberrPiCloud (opens in a new tab)\" href=\"https:\/\/www.youtube.com\/watch?v=nXVrZEWrg_8\" target=\"_blank\">Video von RaspberryPiCloud<\/a>, auch wenn wir die Datenbank nicht per CLI sondern per GUI aufgesetzt haben. <\/p>\n\n\n\n<p>Informationen zum Datensammelagenten Telegraf gibt es praktischerweise auch gleich auf der <a rel=\"noreferrer noopener\" aria-label=\"Seite von Infuxdb (opens in a new tab)\" href=\"https:\/\/www.influxdata.com\/time-series-platform\/telegraf\/\" target=\"_blank\">Seite von Influxdb<\/a>. Die Konfigurationsdatei von Telegraf wurde dann mit Hilfe der bereits oben genannten <a rel=\"noreferrer noopener\" aria-label=\"Seite bei Grafana (opens in a new tab)\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/16850-pv-power-ahoy\/\" target=\"_blank\">Seite bei Grafana<\/a> erledigt. Einzig etwas rechercheintensiv war das Einbinden von OpenWeatherMap, da sich die API mit dem neuen Onecall Zugang ge\u00e4ndert hatte. Alle gemachten Einstellungen lauten nun:<\/p>\n\n\n\n<h1>\/etc\/telegraf\/telegraf.conf<\/h1>\n\n\n<p># Configuration for telegraf agent<br \/>\n[agent]<br \/>\n  ## Default data collection interval for all inputs<br \/>\n  interval = &#8222;10s&#8220;<br \/>\n  ## Rounds collection interval to &#8218;interval&#8216;<br \/>\n  ## ie, if interval=&#8220;10s&#8220; then always collect on :00, :10, :20, etc.<br \/>\n  round_interval = true<\/p>\n<p>  ## Default flushing interval for all outputs. Maximum flush_interval will be<br \/>\n  ## flush_interval + flush_jitter<br \/>\n  flush_interval = &#8222;30s&#8220;<\/p>\n<p>###################################################<br \/>\n#                            OUTPUT PLUGINS                                   #<br \/>\n###################################################<\/p>\n<p> [[outputs.influxdb_v2]]<br \/>\n  ## The URLs of the InfluxDB cluster nodes.<br \/>\n  ##<br \/>\n  ## Multiple URLs can be specified for a single cluster, only ONE of the<br \/>\n  ## urls will be written to each interval.<br \/>\n  ##   ex: urls = [&#8222;https:\/\/us-west-2-1.aws.cloud2.influxdata.com&#8220;]<br \/>\n  urls = [&#8222;http:\/\/YOURIP:8086&#8220;]<\/p>\n<p>  ## API token for authentication.<br \/>\n  token = &#8222;influxdbTOKEN&#8220;<\/p>\n<p>  ## Organization is the name of the organization you wish to write to; must exist.<br \/>\n  organization = &#8222;influxdbORGANISATION&#8220;<\/p>\n<p>  ## Destination bucket to write into.<br \/>\n  bucket = &#8222;influxdbBUCKET&#8220;<\/p>\n<p>###################################################<br \/>\n#                            INPUT PLUGINS                                    #<br \/>\n###################################################<\/p>\n<p># # Read current weather and forecasts data from openweathermap.org<br \/>\n# Openweathermap<br \/>\n[[inputs.http]]<br \/>\n    urls = [<br \/>\n     &#8222;https:\/\/api.openweathermap.org\/data\/2.5\/onecall?lat=50.11579&amp;lon=11.3656020&amp;units=metric&amp;lang=de&amp;exclude=minutely,hourly,daily,alerts&amp;appid=abcdefghijklmnopqrstuvwxyz&#8220;<br \/>\n    ]<br \/>\n    name_override = &#8222;weather&#8220;<br \/>\n    method = &#8222;GET&#8220;<br \/>\n    interval = &#8222;10m&#8220;<br \/>\n    timeout = &#8222;15s&#8220;<br \/>\n    data_format = &#8222;json&#8220;<br \/>\n    json_time_format = &#8222;unix&#8220;<br \/>\n    json_time_key = &#8222;current_dt&#8220;<\/p>\n<p>###################################################<br \/>\n#                            SERVICE INPUT PLUGINS                            #<br \/>\n###################################################<\/p>\n<p># # Read metrics from MQTT topic(s)<br \/>\n [[inputs.mqtt_consumer]]<br \/>\n#   ## Broker URLs for the MQTT server or cluster.  To connect to multiple<br \/>\n#   ## clusters or standalone servers, use a separate plugin instance.<br \/>\n#   ##   example: servers = [&#8222;tcp:\/\/localhost:1883&#8220;]<br \/>\n#   ##            servers = [&#8222;ssl:\/\/localhost:1883&#8220;]<br \/>\n#   ##            servers = [&#8222;ws:\/\/localhost:1883&#8220;]<br \/>\n   servers = [&#8222;tcp:\/\/YOURMQTTSERVER:1883&#8220;]<br \/>\n#<br \/>\n#   ## Topics that will be subscribed to.<br \/>\n   topics = [<br \/>\n      &#8222;inverter\/#&#8220;,<br \/>\n   ]<\/p>\n\n\n\n<p>Startet man nun Telegraf beginnt die Datensammelei und das \u00dcberspielen in die Datenbank. Da uns die Visualisierungsm\u00f6glichkeiten von influxdb ausreichten, verzichteten wir auf die Benutzung von Grafana. Ein Dashboard zur Visualisierung der Daten kann dann zum Beispiel so aussehen:<\/p>\n\n\n\n<p><img decoding=\"async\" loading=\"lazy\" width=\"1437\" height=\"818\" class=\"wp-image-2188\" style=\"width: 680px;\" src=\"https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb.jpg\" alt=\"\" srcset=\"https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb.jpg 1437w, https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb-300x171.jpg 300w, https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb-768x437.jpg 768w, https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb-1024x583.jpg 1024w, https:\/\/mgf-lab.mgf-kulmbach.de\/wp-content\/uploads\/2022\/11\/influxdb-500x285.jpg 500w\" sizes=\"(max-width: 1437px) 100vw, 1437px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Nachteil der im Artikel &#8222;Hoymiles Inverter auslesen&#8220; verwendeten Software AHoy ist, dass die Daten nicht dauerhaft gespeichert werden, sobald sich der Inverter zum Strom sparen schlafen legt. Hier wurde eine datenbankbasierte L\u00f6sung gefunden und umgesetzt Stark geholfen bei der eigenen Implementierung hat dieser Artikel. Ein MQTT-Server war bereits f\u00fcr andere Projekte auf einem RaspberryPi eingerichtet, so dass nur noch Telegraf und Influxdb installiert und konfiguriert werden mussten. Influxdb erh\u00e4lt man in der aktuellen Version 2 hier, die Installationsanleitung f\u00fcr&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/2022\/11\/02\/hoymiles-inverter-daten-aufbereiten\/\">Weiterlesen<span class=\"screen-reader-text\"> Weiterlesen<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2188,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[18],"tags":[],"_links":{"self":[{"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/posts\/2184"}],"collection":[{"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/comments?post=2184"}],"version-history":[{"count":3,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/posts\/2184\/revisions"}],"predecessor-version":[{"id":2189,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/posts\/2184\/revisions\/2189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/media\/2188"}],"wp:attachment":[{"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/media?parent=2184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/categories?post=2184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mgf-lab.mgf-kulmbach.de\/index.php\/wp-json\/wp\/v2\/tags?post=2184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}