[gelöst] Mqtt und At bei Power1[-x] mit RegEx greifen.

Begonnen von DasQ, 28 Februar 2024, 10:59:24

Vorheriges Thema - Nächstes Thema

DasQ

Hi,

Ich und mein graul vor RegEx, alle Jahre wieder, such ich mir nen Wolf.

Ich hab mir ein At gemacht in dem ich jeden Abend (Nacht) einige Geräte abschalte.

Nun stört mich ein wenig die Formatierung bzw. Anzahl Zeilen Code.
*0:30:00 {fhem "set MQTT2_obk.* POWER5 OFF"};;
{fhem "set GOSUND_P.* POWER1 off"};;
{fhem "set GOSUND_P.* POWER2 off"};;
{fhem "set GOSUND_P.* POWER3 off"};;
{fhem "set MQTT2_DVES_DCE08B POWER1 off"};;
{fhem "set MQTT2_DVES_DCE3E1 POWER3 off"};;
{fhem "set MQTT2_DVES_DCE3E1 POWER4 off"};;
{fhem "set MQTT2_TasmotaNouv[2-4] off"}

Wie kann ich das, wie in der letzten Zeile einkürzen?
Und warum klappt das [2-4] bei den Zeilen mit ,,POWER1" usw. nicht

Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

rudolfkoenig

Soweit ich verstehe, das Problem ist, dass man POWER1, POWER2, etc. per Regexp zusammenfassen will: dafuer gibt es keine direkte Mechanismen im FHEM Framework.

Das ist einer der Gruende, warum ich Mehrkanalgeraete nicht mag, und lieber auf sog. Split-Loesungen setze, d.h. statt ein Geraet mit POWER1, POWER2, POWER3 lieber drei Geraete, die jeweils nur ihren (einzigen) Kanal schalten.
attrTemplate hilft hier in den meisten Faellen.

Unschoene Alternativen:
- jeden setList mit einem weiteren Befehl erweitern, der hintereinander POWER1, POWER2, etc ausfuehrt
- ein cmdalias, was das Gleiche tut.

Btw.: {fhem "<FHEM-BEFEHL>"} wuerde ich durch <FHEM-BEFEHL> ersetzen.

DasQ

#2
Ok super danke, mir gehts ja hier mehr um das verstehen. ;)
Das fhem{ ,,set ... ist bei mir etwa so entstanden, das ich versucht hab den Fehler einzugrenzen. War aber auch etwas verwirrt warum ich da mit so viel Fehlermeldungen belohnt werd, obwohl es eins zu eins der commandref entsprach.

Jetzt ist klar woran das lag. Wird wieder eingekürzt.

Zu dem warum das zu einem mehrkanaligengerät gefasst ist, da ist ne strommessdose integriert die von allen Verbrauchern den Verbrauch misst. (Nicht einzeln)
Eigentlich schalt ich die Verbraucher überhaupt nicht. Das ist alles manuell geschaltet und nur das Feedback an Fhem zurück.

Aber jetzt wo du es sagst, ich kann das clientseitig lösen, das sich nur die Dosen auf ein Befehl ,,nenne wir ihn ab jetzt ausbefehl"  ::) ausschalten lässt.

Danke Rudi
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

betateilchen

Zitat von: DasQ am 28 Februar 2024, 10:59:24Und warum klappt das [2-4] bei den Zeilen mit ,,POWER1" usw. nicht

Weil das [2-4] für devices angegeben ist und eine devspec darstellt.
POWER1 usw. sind aber Werte innerhalb eines devices, da greift devspec logischerweise nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DasQ

Zitat von: rudolfkoenig am 28 Februar 2024, 12:43:38Btw.: {fhem "<FHEM-BEFEHL>"} wuerde ich durch <FHEM-BEFEHL> ersetzen.

klappt nicht. ich habs gestern ungetestet eingepflegt, weil zu dem zeitpunkt steckdosen in betrieb waren und ich nicht einfach den saft abdrehen kann.
jetzt eben die logs kontrolliert und gesehen es tut sich ohne den zusatz fhem nüscht.
dachte dann (jetzt kann ich schalten weil keiner da ist) ich teste des jetzt. aber mit folgendem ergebniss. logeinträge ohne zeitstempel.

log heut nacht
2024.02.29 00:30:00 3: MQTT2_DEVICE set MQTT2_obkFF68249E POWER5 OFF;
set GOSUND_P.* POWER1 off;
set GOSUND_P.* POWER2 off;
set GOSUND_P.* POWER3 off;
set MQTT2_DVES_DCE08B POWER1 off;
set MQTT2_DVES_DCE3E1 POWER3 off;
set MQTT2_DVES_DCE3E1 POWER4 off;
set MQTT2_TasmotaNouv[2-4] off

händischer test über die commandline mit dem ersten gosund set
2024.02.29 07:30:38 3: MQTT2_DEVICE set GOSUND_P1_1 POWER2 off
2024.02.29 07:30:38 3: MQTT2_DEVICE set GOSUND_P1_2 POWER2 off
2024.02.29 07:30:38 3: MQTT2_DEVICE set GOSUND_P1_3 POWER2 off
2024.02.29 07:30:38 3: MQTT2_DEVICE set GOSUND_P1_4 POWER2 off

AT manuell ausgeführt
2024.02.29 07:31:03 3: MQTT2_DEVICE set MQTT2_obkFF68249E POWER5 OFF;
set GOSUND_P.* POWER1 off;
set GOSUND_P.* POWER2 off;
set GOSUND_P.* POWER3 off;
set MQTT2_DVES_DCE08B POWER1 off;
set MQTT2_DVES_DCE3E1 POWER3 off;
set MQTT2_DVES_DCE3E1 POWER4 off;
set MQTT2_TasmotaNouv[2-4] off

ohne zeilenumbrüche
2024.02.29 07:32:56 3: MQTT2_DEVICE set MQTT2_obkFF68249E POWER5 OFF; set GOSUND_P.* POWER1 off;set GOSUND_P.* POWER2 off;set GOSUND_P.* POWER3 off;set MQTT2_DVES_DCE08B POWER1 off;set MQTT2_DVES_DCE3E1 POWER3 off;set MQTT2_DVES_DCE3E1 POWER4 off;set MQTT2_TasmotaNouv[2-4] off
2024.02.29 07:33:03 3: MQTT2_DEVICE set MQTT2_obkFF68249E POWER5 OFF; set GOSUND_P.* POWER1 off;set GOSUND_P.* POWER2 off;set GOSUND_P.* POWER3 off;set MQTT2_DVES_DCE08B POWER1 off;set MQTT2_DVES_DCE3E1 POWER3 off;set MQTT2_DVES_DCE3E1 POWER4 off;set MQTT2_TasmotaNouv[2-4] off

mit {fhem "set...
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_obkFF68249E POWER5 OFF
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_1 POWER1 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_2 POWER1 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_3 POWER1 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_4 POWER1 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_1 POWER2 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_2 POWER2 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_3 POWER2 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_4 POWER2 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_1 POWER3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_2 POWER3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_3 POWER3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set GOSUND_P1_4 POWER3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_DVES_DCE08B POWER1 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_DVES_DCE3E1 POWER3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_DVES_DCE3E1 POWER4 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_TasmotaNouv2 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_TasmotaNouv3 off
2024.02.29 07:38:31 3: MQTT2_DEVICE set MQTT2_TasmotaNouv4 off



Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

rudolfkoenig

Liegt wohl an der Anzahl der Trenner (;), versuchs mal mit halbsoviel.

Merke: im DEF Fenster braucht man halbsoviel (in der Regel eins), wie in der "+" / Raw Definition oder beim direktes Editieren der fhem.cfg.

DasQ

Danke das war's!

Ggf ein kleiner Verbesserungsvorschlag (aber viel Arbeit für dich) ne Art tooltip oder help Fragezeichen zu den jeweiligen BearbeitungsFenster mit einbauen. Damit so idioten wie ich nicht ständig fragen müssen.

Ich hatte das mit dem Kommas und Klammern schon mal hier im Forum gebookmarkt.
Wäre aber nicht draufgekommen, das die Semikolon Setzung aus dem Wiki mir hier ein Bein stellt.
Fettnäpfchen erfolgreich gefunden. :))
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org