-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expand on MQTT Plugin documentation. #665
Conversation
How is the English translation created? Is it done manually or by some tooling? If done manually, I'm happy to translate the extra content. Also, it might make sense to extract the pipeline-specific configuration that applies to other plugins (like the |
Another question: For the writing case - what variables are available in which context? The current example is not helpful as it only mentions |
c475400
to
65ca757
Compare
65ca757
to
9e476f5
Compare
Ich werde damit nicht glücklich. Wir sollten:
|
topic: mbmd/sdm1-1/Power | ||
timeout: 30s # don't accept values older than timeout | ||
scale: 0.001 # floating point factor applied to result, e.g. for Wh to kWh conversion | ||
meters: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
M.E. gehört das hier nicht hin
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich finde schon. Siehe meine Begruendung in meinem Kommentar unten. tl;dr - Es ist ein Beispiel, dazu gehoert auch eine Hilfestellung wo man die section verwenden kann, insbesondere wenn es auf jede Einrueckung ankommt. Je mehr Kontext, umso besser.
power: | ||
source: mqtt | ||
topic: mbmd/sdm1-1/Power # MQTT topic auf dem der Wert empfangen wird | ||
timeout: 30s # wie alt empfangene Wert maximal |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das gehört nicht in ein Beispiel sondern in eine grundsätzliche Erläuterung.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gerne, genauso wie beim HTTP plugin nehme ich an.
topic: mbmd/sdm1-1/Power # MQTT topic auf dem der Wert empfangen wird | ||
timeout: 30s # wie alt empfangene Wert maximal | ||
# sein darf um berücksichtigt zu werden | ||
scale: 0.001 # Konvertierungsfaktor um MQTT Wert auf W umzurechnen |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Watt hat nix mit MQTT zu tun.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In der urspr. Dokumentation steht
scale: 0.001 # floating point factor applied to result, e.g. for Wh to kWh conversion
Nach was muss ich den konvertieren ? Meinem Eindruck erwarte evcc für die UI, das alles Werte in W bzw. Wh erwartet wird. Der Kommentr is ja aber auch falsch, das es Wh in mWh umrechnen wuerde.
``` | ||
|
||
Die folgenden Parameter können für das MQTT plugin verwendet werden: | ||
|
||
* `source:` muss auf `mqtt` gesetzt sein. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
source gibt für jedes Plugin, das muss in eine allgemeine Section zu Plugins
Es ist klar, dass vieles was ich an dem MQTT plugin beschrieben habe, allegemein gueltig ist (ebenso wie auch das HTTP plugin plugin-generische Sachen beschreibt). Das Ziel war zunaechst MQTT ausfuehrlich zu beschreiben, um nicht zu viel zu aendern oder umzustellen. Ich kann aber auch gerne daran arbeiten, das Dokument umzustrukturieren und einen allgemeinen Abschnitt einzufuegen, der plugin-generische Sachen bechreibt. Auch wuerde ich da erklaeren wie das Zusammenspiel von Das ist alles deutlich mehr Arbeit als der PR hier, daher wuerde ich das vorher gerne abklaeren, um nicht umsonst herumzubasteln. Bei den Beispielen bin ich allerdings etwas anderer Meinung: IMO sollte immer auch genug Kontext mitgeliefert werden um auch zu verstehen wo diese besagte Konfiguration eingesetzt wird. Insbesondere bei einem fragilen Format wie YAML ist ein Beispiel wie:
schwierig zu verstehen. Wo kann ich das verwenden ? Top-level ? Auf welcher YAML Ebene ? Meiner Meinung nach sollte jedes YAML Beispiel von der obersten Ebene beginnen. Generell gibt es zuwenig Beispiele die self-contained sind. (Achja, |
Ja, dem würde ich voll zustimmen. Dann hat der Nutzer ne Chance das einfach wiederzufinden, ohne sich den Kontext selbst erschließen oder ausprobieren zu müssen. |
Es würde genügen das einmal einführend zu erläutern. Genau so wie die Bedeutung von source. Lieber top-down als alle Details je Plugin wiederholt. |
Es ist halt die Frage ob jede ein Referenz Maual top-down liest oder man direkt zu einzelnen Punkten springt (so wie ich). Ich finde, etwas Redundanz schadet in diesem Fall wirklich nicht, man ueberfliegt die Beispiele ja auch, wenn man sich nicht damit direkt beschaeftigt. Ausserdem hat es auch einen Memorisierungseffekt (d.h. man lernt das YAML-Schema generelle besser und muss nicht immer hin und her springen). Für alte Hasen wie euch sicher vielleicht etwas nervig, aber für Newcomer ist das schon wertvoll. |
Ich sehe das anders. Unserer Doku fehlt an der Stelle noch eine bessere Struktur. Das heilt man idealerweise nicht durch Aufblasen einzelner Blöcke. |
@andig mach gerne einen Vorschlag für eine bessere Struktur. Ich seh das in der Tat so wie @rhuss. Leute (inklusive mir!) scrollen durch die Doku und suchen nach Code-Blöcken, die für ihren Einsatzzweck geeignet aussehen. Nur die wenigsten werden den gesamten Fließtext auf der Seite vollständig lesen und sich mental eine Struktur unseres Konfigurationsmodells machen. Vor allem nicht, wenn sie neu loslegen wollen. Genau deswegen haben wir ja bei den Geräten auch den größeren Code-Block-Stil gewählt:
Ich finde es konsequent, das hier auch zu machen. |
Ohne das as-is angeschaut zu haben:
|
Ok, wenn nichts dagegen spricht, wuerde ich einen Vorschlag auf Basis der bestehenden Dokumentation machen. Da Dokumentation mit GitHub PRs immer recht muehsam ist zu diskutieren/reviewen, hab ich mal ein Google Docs gestartet auf dem wir arbeiten koennen bevor wir es dann in Markdown giessen. Das grobe Geruest fuer die Pugin Dokumentation habe ich https://docs.google.com/document/d/19ERhOWujB-5kMJ0UMOlMNu3qs6MUgn6oYjPXsUH5AM0/edit?usp=sharing schon mal hier angelegt und die bestehende Dokumentation zugeordnet. Es sind immer noch bewusst Redundanzen in der Beschreibung der Parameter und auch der Beispiele enthalten um sie eigenstaendig ohne viel herumnavigieren gelesen und verstanden werden kann (d.h. die Dokumentation der einzelnen Plugins kann in Isolation gelesen werden). "self-contained" ist hier das Stichwort und ich bin immer noch dafuer dies für eine Nachschlage-Dokumentation aus der man auch beispiele herauskopiert so zu behalten. Dokumentation ist kein Code, d.h DRY ist sogar oft unerwuenscht wenn es den Lesefluss zu oft unterbricht und man staendig hin und her springe muesste (die Pflege der Links ist auch aufwendig) Wenn das soweit ok ist, wuerde ich dann an diesem Dokument weiterarbeiten und euch um Reviews bitten. Falls das aber nicht gewuenscht ist, sagt es mir bitte aber auch, um nicht umsonst Energie reinzubuttern. Ok ? |
Ich will Dir da gar nicht widersprechen. Aber: DRY ist KEIN Ersatz für eine gute top-down Struktur die vom Groben ins Feine geht. Und diese hat m.E. Prio vor immer neuen Details die man dann später wieder mühsam deduplizieren muss. Konsens? |
Ja, denke das kriegen wir hin. Ich gebe dir auf jeden Fall, das die top-struktur sehr wichtig ist, die auch in der aktuellen Dokumentation vermisse. Z.b. was mir immer noch nicht 100% klar ist, was in der zweite YAML Ebene alles wann verwendet werden kann (also z.b. 'enerby', 'power', ... unterhalb 'meter', 'charger', ...). Das koennte man in einer Tabelle auch auflisten und dann z.b. erwaehnen ob dazu das Plugin lesen oder schreibend benutzt wird. Aber ich glaube, wir sollten ein eigenes issue aufmachen und nicht diesen armen PR totreiten :) |
Common ist da nur |
Closed in favor of #678 |
Extended plugin documentation for MQTT plugins and added missing fields. Most of the information is extracted from the source.
Adds also more context to the YAML examples as mentioned in #664