Moin,
ich habe nun meine erste Dimmer von Shelly in meine Hausautomatisierung
eingebunden. Nun geht es darum den Status vernünftig zu interpretieren.
Meine Steuerung (selfmade) unterstützt bereits Regex-Ausdrücke. Ich
könnte mir nun auch einen Shelly-Hack implementieren, jedoch möchte ich
die Haussteuerung weiterhin generisch halten.
Für mich die schönste Lösung wäre, wenn ich es per Regex-Ausdruck lösen
kann.
Daraus ergibt sich folgende Fragestellung:
Kann ich alleine durch einen Regex-Ausdruck folgende
Übersetzungsfunktion realsieren?
Fabian H. schrieb:> Meine Steuerung (selfmade) unterstützt bereits Regex-Ausdrücke. Ich> könnte mir nun auch einen Shelly-Hack implementieren, jedoch möchte ich> die Haussteuerung weiterhin generisch halten.> Für mich die schönste Lösung wäre, wenn ich es per Regex-Ausdruck lösen> kann.
Du hast da so schönes JSON und das willst du nun mit gewalt
Du hast da so schönes JSON und das willst Du nun mit Gewalt in eine
Regex Prügeln, warum nur, weil Du woanders eine regex parst? Ich würde
Dir empfehlen Deine tolle selbst entwickelte Steuerung zu erweitern, wie
wäre es, wenn Du eine Plugin Infrastruktur entwickelst, welche dann denn
Status interpretiert, und wenn kein Plugin zuständig ist dann greift das
Default verhalten. Dann brauchst Du kein Shelly-Hack, sondern hast dann
der passenden Stelle ein Plugin für Shelly, das ist sauber und
generisch.
Fabian H. schrieb:> Beispiel C (Dimmer an 50%):Eingangsdaten:> {"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"ti
mer_remaining":0,"mode":"white","brightness":100}
>> Ergebnis:> 50
Falsch, ison == False ergo Ergebnis: 0
Fabian H. schrieb:> Ich nutze .NET (also C#)
Ich habe aber keine Ahnung von .NET, da musst du schon mal selbst
nachschauen, welche RE-Syntax sie implementieren.
Zweizeiler, weil ich der Einfachheit halber für den Test zwei
RE-Ersetzungen gleich in die Kommandozeile geschrieben habe. Die erste
ersetzt "ison":false durch eine 0. Die zweite würde die Zahl nach
"brightness" suchen und übrig lassen – die es natürlich nur gibt, wenn
die erste nicht schon komplett alles durch 0 ersetzt hat.
Keine Ahnung, ob dir das jetzt weiter hilft …
Ich würde allerdings meinem Vorredner Recht geben: mit irgendeiner
Bibliothek das JSON zu parsen, ist der vernünftigere Weg.
Edit: hat sich mit deiner Lösung überkreuzt.
Imonbln schrieb:> Du hast da so schönes JSON und das willst Du nun mit Gewalt in eine> Regex Prügeln, warum nur, weil Du woanders eine regex parst? Ich würde> Dir empfehlen Deine tolle selbst entwickelte Steuerung zu erweitern, wie> wäre es, wenn Du eine Plugin Infrastruktur entwickelst, welche dann denn> Status interpretiert, und wenn kein Plugin zuständig ist dann greift das> Default verhalten. Dann brauchst Du kein Shelly-Hack, sondern hast dann> der passenden Stelle ein Plugin für Shelly, das ist sauber und> generisch.
Klingt sinnvoll! Danke!