{"id":42150341,"url":"https://github.com/diebietse/invertergui","last_synced_at":"2026-01-26T18:20:55.535Z","repository":{"id":26995689,"uuid":"30459625","full_name":"diebietse/invertergui","owner":"diebietse","description":"A simple Go based monitoring tool for Victron Multiplus devices","archived":false,"fork":false,"pushed_at":"2024-04-19T13:21:41.000Z","size":5192,"stargazers_count":39,"open_issues_count":2,"forks_count":9,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-19T00:35:55.410Z","etag":null,"topics":["go","mk2","multiplus","victron"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diebietse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-02-07T15:20:35.000Z","updated_at":"2024-06-18T21:21:09.000Z","dependencies_parsed_at":"2022-08-08T08:15:36.737Z","dependency_job_id":"5ad48530-9ef2-493a-9d38-6a7d277bd9ee","html_url":"https://github.com/diebietse/invertergui","commit_stats":null,"previous_names":["hpdvanwyk/invertergui"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/diebietse/invertergui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diebietse%2Finvertergui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diebietse%2Finvertergui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diebietse%2Finvertergui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diebietse%2Finvertergui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diebietse","download_url":"https://codeload.github.com/diebietse/invertergui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diebietse%2Finvertergui/sbom","scorecard":{"id":341245,"data":{"date":"2025-08-11","repo":{"name":"github.com/diebietse/invertergui","commit":"9471f0b5aced0ddda5f4191ec1f6603552c766bf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/docker-build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker-build.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/diebietse/invertergui/docker-build.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T05:57:18.964Z","repository_id":26995689,"created_at":"2025-08-18T05:57:18.965Z","updated_at":"2025-08-18T05:57:18.965Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28784099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","mk2","multiplus","victron"],"created_at":"2026-01-26T18:20:55.175Z","updated_at":"2026-01-26T18:20:55.524Z","avatar_url":"https://github.com/diebietse.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Inverter GUI\n\n[![release][release-badge]][release-link]\n[![publish-docker-image][publish-docker-badge]][publish-docker-link]\n![license][license-link]\n[![codecov][codecov-badge]][codecov-link]\n\nThe invertergui allows the monitoring of a [Victron Multiplus](https://www.victronenergy.com/inverters-chargers/multiplus-12v-24v-48v-800va-3kva) via the [MK3/MK2 USB](https://www.victronenergy.com/accessories/interface-mk3-usb) or the MK2 RS232.\n\nThe [`ghcr.io/diebietse/invertergui`](https://github.com/orgs/diebietse/packages/container/package/invertergui) docker image is a build of this repository.\n\n## Demo\n\n![demo](https://rawcdn.githack.com/diebietse/invertergui/c856c451cd5c926b588914583bc4ab1498b7da99/invertergui_demo.gif \"Invertergui Demo\")\n\n## Quick Start\n\n```console\ndocker run --name invertergui --device /dev/ttyUSB0:/dev/ttyUSB0 -p 8080:8080 ghcr.io/diebietse/invertergui\n```\n\n## Requirements\n\nThis project makes use of [Go Modules](https://github.com/golang/go/wiki/Modules). The minimum version for Go is 1.16\n\n## Getting started\n\n```bash\nUsage:\n  invertergui [OPTIONS]\n\nApplication Options:\n      --address=        The IP/DNS and port of the machine that the application is running on. (default: :8080) [$ADDRESS]\n      --data.source=    Set the source of data for the inverter gui. \"serial\", \"tcp\" or \"mock\" (default: serial) [$DATA_SOURCE]\n      --data.host=      Host to connect when source is set to tcp. (default: localhost:8139) [$DATA_HOST]\n      --data.device=    TTY device to use when source is set to serial. (default: /dev/ttyUSB0) [$DATA_DEVICE]\n      --cli.enabled     Enable CLI output. [$CLI_ENABLED]\n      --mqtt.enabled    Enable MQTT publishing. [$MQTT_ENABLED]\n      --mqtt.broker=    Set the host port and scheme of the MQTT broker. (default: tcp://localhost:1883) [$MQTT_BROKER]\n      --mqtt.client_id= Set the client ID for the MQTT connection. (default: interter-gui) [$MQTT_CLIENT_ID]\n      --mqtt.topic=     Set the MQTT topic updates published to. (default: invertergui/updates) [$MQTT_TOPIC]\n      --mqtt.username=  Set the MQTT username [$MQTT_USERNAME]\n      --mqtt.password=  Set the MQTT password [$MQTT_PASSWORD]\n      --loglevel=       The log level to generate logs at. (\"panic\", \"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\") (default: info) [$LOGLEVEL]\n\nHelp Options:\n  -h, --help            Show this help message\n```\n\n## Port 8080\n\nThe default HTTP server port is hosted on port 8080. This exposes the HTTP server that hosts the:\n\n- Web GUI\n- Munin Plugin\n- Prometheus Monitor\n\n### Web GUI\n\nThe GUI location is at the root (http://localhost:8080/) of the HTTP server.\n\nExample output:\n\n```\nDate: Mon, 17 Dec 2018 18:14:51 +0000\nLEDs:\nMains\nFloat\nOutput Current: 1.580 A\nOutput Voltage: 227.830 V\nOutput Frequency: 50.026 Hz\nOutput Power: 359.971 VA\nInput Current: 1.750 A\nInput Voltage: 227.830 V\nInput Frequency: 50.103 Hz\nInput Power: 398.703 VA\nInput - Output Power: 38.731 VA\n\nBattery Current: -0.050 A\nBattery Voltage: 13.170 V\nBattery Power: -0.659 W\nBattery Charge: 100.000 %\n```\n\n### Munin\n\nThe Munin plugin location is at /munin (http://localhost:8080/munin).\n\nExample output:\n\n```\nmultigraph in_batvolt\nvolt.value 13.154\nmultigraph in_batcharge\ncharge.value 100.000\nmultigraph in_batcurrent\ncurrent.value -0.092\nmultigraph in_batpower\npower.value -1.209\nmultigraph in_mainscurrent\ncurrentin.value 1.860\ncurrentout.value 1.676\nmultigraph in_mainsvoltage\nvoltagein.value 225.786\nvoltageout.value 225.786\nmultigraph in_mainspower\npowerin.value 419.945\npowerout.value 378.372\nmultigraph in_mainsfreq\nfreqin.value 50.361\nfreqout.value 50.026\n```\n\n### Prometheus\n\nThe Prometheus endpoint is at the default /metrics path (http://localhost:8080/metrics).\n\nSample Prometheus yaml entry:\n\n```yml\n- job_name: \"victron\"\n  static_configs:\n    - targets: [\"localhost:8080\"]\n```\n\nThe metrics that are tracked:\n\n```\n# HELP battery_charge_percentage Remaining battery charge.\n# TYPE battery_charge_percentage gauge\nbattery_charge_percentage 100\n# HELP battery_current_a Battery current.\n# TYPE battery_current_a gauge\nbattery_current_a -0.06\n# HELP battery_power_w Battery power.\n# TYPE battery_power_w gauge\nbattery_power_w -0.7896\n# HELP battery_voltage_v Voltage of the battery.\n# TYPE battery_voltage_v gauge\nbattery_voltage_v 13.16\n# HELP go_gc_duration_seconds A summary of the GC invocation durations.\n# TYPE go_gc_duration_seconds summary\ngo_gc_duration_seconds{quantile=\"0\"} 5.3183e-05\ngo_gc_duration_seconds{quantile=\"0.25\"} 0.000116\ngo_gc_duration_seconds{quantile=\"0.5\"} 0.000156305\ngo_gc_duration_seconds{quantile=\"0.75\"} 0.000313721\ngo_gc_duration_seconds{quantile=\"1\"} 0.044886879\ngo_gc_duration_seconds_sum 0.394171418\ngo_gc_duration_seconds_count 58\n# HELP go_goroutines Number of goroutines that currently exist.\n# TYPE go_goroutines gauge\ngo_goroutines 8\n# HELP go_info Information about the Go environment.\n# TYPE go_info gauge\ngo_info{version=\"go1.11.3\"} 1\n# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.\n# TYPE go_memstats_alloc_bytes gauge\ngo_memstats_alloc_bytes 3.21496e+06\n# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.\n# TYPE go_memstats_alloc_bytes_total counter\ngo_memstats_alloc_bytes_total 1.7361072e+08\n# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.\n# TYPE go_memstats_buck_hash_sys_bytes gauge\ngo_memstats_buck_hash_sys_bytes 1.451092e+06\n# HELP go_memstats_frees_total Total number of frees.\n# TYPE go_memstats_frees_total counter\ngo_memstats_frees_total 263807\n# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.\n# TYPE go_memstats_gc_cpu_fraction gauge\ngo_memstats_gc_cpu_fraction 0.00018297252897512647\n# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.\n# TYPE go_memstats_gc_sys_bytes gauge\ngo_memstats_gc_sys_bytes 2.37568e+06\n# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.\n# TYPE go_memstats_heap_alloc_bytes gauge\ngo_memstats_heap_alloc_bytes 3.21496e+06\n# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.\n# TYPE go_memstats_heap_idle_bytes gauge\ngo_memstats_heap_idle_bytes 6.2537728e+07\n# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.\n# TYPE go_memstats_heap_inuse_bytes gauge\ngo_memstats_heap_inuse_bytes 3.981312e+06\n# HELP go_memstats_heap_objects Number of allocated objects.\n# TYPE go_memstats_heap_objects gauge\ngo_memstats_heap_objects 5588\n# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.\n# TYPE go_memstats_heap_released_bytes gauge\ngo_memstats_heap_released_bytes 0\n# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.\n# TYPE go_memstats_heap_sys_bytes gauge\ngo_memstats_heap_sys_bytes 6.651904e+07\n# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.\n# TYPE go_memstats_last_gc_time_seconds gauge\ngo_memstats_last_gc_time_seconds 1.5450709952576678e+09\n# HELP go_memstats_lookups_total Total number of pointer lookups.\n# TYPE go_memstats_lookups_total counter\ngo_memstats_lookups_total 0\n# HELP go_memstats_mallocs_total Total number of mallocs.\n# TYPE go_memstats_mallocs_total counter\ngo_memstats_mallocs_total 269395\n# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.\n# TYPE go_memstats_mcache_inuse_bytes gauge\ngo_memstats_mcache_inuse_bytes 3456\n# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.\n# TYPE go_memstats_mcache_sys_bytes gauge\ngo_memstats_mcache_sys_bytes 16384\n# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.\n# TYPE go_memstats_mspan_inuse_bytes gauge\ngo_memstats_mspan_inuse_bytes 27208\n# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.\n# TYPE go_memstats_mspan_sys_bytes gauge\ngo_memstats_mspan_sys_bytes 32768\n# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.\n# TYPE go_memstats_next_gc_bytes gauge\ngo_memstats_next_gc_bytes 4.194304e+06\n# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.\n# TYPE go_memstats_other_sys_bytes gauge\ngo_memstats_other_sys_bytes 775332\n# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.\n# TYPE go_memstats_stack_inuse_bytes gauge\ngo_memstats_stack_inuse_bytes 589824\n# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.\n# TYPE go_memstats_stack_sys_bytes gauge\ngo_memstats_stack_sys_bytes 589824\n# HELP go_memstats_sys_bytes Number of bytes obtained from system.\n# TYPE go_memstats_sys_bytes gauge\ngo_memstats_sys_bytes 7.176012e+07\n# HELP go_threads Number of OS threads created.\n# TYPE go_threads gauge\ngo_threads 10\n# HELP mains_current_in_a Mains current flowing into inverter\n# TYPE mains_current_in_a gauge\nmains_current_in_a 2.17\n# HELP mains_current_out_a Mains current flowing out of inverter\n# TYPE mains_current_out_a gauge\nmains_current_out_a 2\n# HELP mains_freq_in_hz Mains frequency at inverter input\n# TYPE mains_freq_in_hz gauge\nmains_freq_in_hz 50.36082474226804\n# HELP mains_freq_out_hz Mains frequency at inverter output\n# TYPE mains_freq_out_hz gauge\nmains_freq_out_hz 50.153452685421996\n# HELP mains_power_in_va Mains power in\n# TYPE mains_power_in_va gauge\nmains_power_in_va 491.6352\n# HELP mains_power_out_va Mains power out\n# TYPE mains_power_out_va gauge\nmains_power_out_va 453.12\n# HELP mains_voltage_in_v Mains voltage at input of inverter\n# TYPE mains_voltage_in_v gauge\nmains_voltage_in_v 226.56\n# HELP mains_voltage_out_v Mains voltage at output of inverter\n# TYPE mains_voltage_out_v gauge\nmains_voltage_out_v 226.56\n# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.\n# TYPE process_cpu_seconds_total counter\nprocess_cpu_seconds_total 39.73\n# HELP process_max_fds Maximum number of open file descriptors.\n# TYPE process_max_fds gauge\nprocess_max_fds 1.048576e+06\n# HELP process_open_fds Number of open file descriptors.\n# TYPE process_open_fds gauge\nprocess_open_fds 8\n# HELP process_resident_memory_bytes Resident memory size in bytes.\n# TYPE process_resident_memory_bytes gauge\nprocess_resident_memory_bytes 1.2742656e+07\n# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.\n# TYPE process_start_time_seconds gauge\nprocess_start_time_seconds 1.54506833485e+09\n# HELP process_virtual_memory_bytes Virtual memory size in bytes.\n# TYPE process_virtual_memory_bytes gauge\nprocess_virtual_memory_bytes 1.15101696e+08\n```\n\n### MQTT\n\nThe MQTT client will publish updates to the given broker at the set topic.\n\n#### MQTT Configuration Options\n\n```bash\n--mqtt.enabled    Enable MQTT publishing. [$MQTT_ENABLED]\n--mqtt.broker=    Set the host port and scheme of the MQTT broker. (default: tcp://localhost:1883) [$MQTT_BROKER]\n--mqtt.client_id= Set the client ID for the MQTT connection. (default: interter-gui) [$MQTT_CLIENT_ID]\n--mqtt.topic=     Set the MQTT topic updates published to. (default: invertergui/updates) [$MQTT_TOPIC]\n--mqtt.username=  Set the MQTT username [$MQTT_USERNAME]\n--mqtt.password=  Set the MQTT password [$MQTT_PASSWORD]\n```\n\nThe MQTT client can be enabled by setting the environment variable `MQTT_ENABLED=true` or flag `--mqtt.enabled`.\nAll MQTT configuration can be done via flags or as environment variables.\nThe URI for the broker can be configured format should be `scheme://host:port`, where \"scheme\" is one of \"tcp\", \"ssl\", or \"ws\".\n\n## TTY Device\n\nThe intertergui application makes use of a serial tty device to monitor the Multiplus.\n\nExample\n\n```\n-dev=/dev/ttyUSB0\n```\n\n## Nginx Proxy\n\nThe following configuration works for Nginx to allow the `invertergui` to be proxied.\n\nWhen using a stand HTTP or HTTPS port to expose the gui:\n\n```Ini\n\tlocation /invertergui {\n\t\treturn 302 /invertergui/;\n\t}\n\n\tlocation /invertergui/ {\n\t\tproxy_pass http://localhost:8080/;\n\t\tproxy_set_header Host $host;\n\t}\n\n\tlocation /invertergui/ws {\n\t\tproxy_pass http://localhost:8080/ws;\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\n\t\tproxy_set_header Connection \"upgrade\";\n\t\tproxy_read_timeout 86400;\n\t\tproxy_set_header Host $host;\n\n\t\tproxy_set_header Referer $http_referer;\n\t\tproxy_set_header X-Forwarded-For $remote_addr;\n\t\tproxy_set_header X-Forwarded-Proto $scheme;\n\t\tproxy_set_header X-Forwarded-Port $server_port;\n\t}\n```\n\nWhen using a non-stand HTTP or HTTPS port to expose the gui change the HTTP Host description:\n\n```Ini\n\t\tproxy_set_header Host $host:$server_port;\n```\n\nThe last four lines are optional, but is useful when debugging and logging connections:\n\n```Ini\n\t\tproxy_set_header Referer $http_referer;\n\t\tproxy_set_header X-Forwarded-For $remote_addr;\n\t\tproxy_set_header X-Forwarded-Proto $scheme;\n\t\tproxy_set_header X-Forwarded-Port $server_port;\n```\n\n## Grafana\n\nThis repos includes a [Grafana](https://grafana.com/) dashboard in the [grafana folder](./grafana/prometheus-dashboard.json) that you can import. This is useful if you are using prometheus to log your data and want to display it in a nice way.\n\n![grafana](https://rawcdn.githack.com/diebietse/invertergui/e20f8fb9161758cd12de95d675aee0ed2e044d8e/grafana/dashboard.png \"Grafana Dashboard\")\n\n[publish-docker-badge]: https://github.com/diebietse/invertergui/actions/workflows/docker-build.yml/badge.svg\n[publish-docker-link]: https://github.com/diebietse/invertergui/actions/workflows/docker-build.yml\n[license-link]: https://img.shields.io/github/license/diebietse/invertergui.svg\n[release-badge]: https://img.shields.io/github/v/release/diebietse/invertergui\n[release-link]: https://github.com/diebietse/invertergui/releases\n[codecov-badge]: https://codecov.io/gh/diebietse/invertergui/branch/master/graph/badge.svg?token=xTLfEzoqYF\n[codecov-link]: https://codecov.io/gh/diebietse/invertergui","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiebietse%2Finvertergui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiebietse%2Finvertergui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiebietse%2Finvertergui/lists"}