Wiederholungen von Befehlen

Begonnen von uron, 14 November 2013, 09:55:52

Vorheriges Thema - Nächstes Thema

Puschel74

#15
Hallo,

ZitatIch unterstelle einmal, dass durch den "Wiederholungsbefehl" * die Variable "Blinkerstart" direkt nach der Definition und dem Abspeichern wieder auf Null gesetzt wird.

Sorry kann ich nicht nachstellen.
Egal ob ich Blinkerstart mit oder ohne * definiere bekomme ich beim zweiten Definitionsversuch unweigerlich die Meldung das Blinkerstart bereits definiert ist.

Grüße

Edith: Das habe ich eingegeben:
define Blinkerstart at 19:27:00 {} - beim zweiten Versuch erhalte ich already definied.
define Blinkerstart at *19:27:00 {} - dito
define Blinkerstart at 19:27:00 {} und danach mit * - dito
define Blinkerstart at *19:27:00 {} und danach ohne * - dito
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

so, nachdem mich solche Fragestellungen eigentlich gerne herausfordern hab ich mal ein bischen gegrübelt und bin zu folgendem Ergebniss gekommen.

Um 06:30:00 soll das Licht 3-mal blinken (1 sec. an/1 sec. aus) und dann alle 5 Minuten genauso.

Also sollte sowas klappen:
define Blinkerstart at *06:30:00 {
  fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");
  fhem("define blink3x_neu at +{204}00:05:00 {
    fhem("define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1");
  }
}

(ich liebe Mehrzeiler  ;D ).

Täglich um 06:30:00 wird das Licht 3-mal für 1 sec. ein- und 1 sec. ausgeschaltet und ein weiteres define erstellt das genau 204-mal das Licht nach 5 Minuten 3-mal 1 sec. ein- und 1 sec. ausschaltet.
23:30:00 - 06:30:00 = 17 Stunden / 5 Minuten = 204 mal.

Ungetestet und klappt vielleicht auch nicht aber ich werd das nicht in meine Versuch-Installation schreiben  8)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

uron

#17
Zitatdefine Blinkerstart at *06:30:00 {
  fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");
  fhem("define blink3x_neu at +{204}00:05:00 {
    fhem("define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1");
  }
}

Danke für den Versuch. Beim Speichern der fhem.cfg kommt die Fehlermeldung
Blinkerstart already defined, delete it first Unknown command fhem("define, try help Unknown command fhem("define, try help Unknown command fhem("define, try help Unknown command }, try help Unknown command }, try help
auch nach mehrmaligem speichern.

Vermutung meinerseits: aus meiner Sicht fehlt mindestens vor dem 2. fhem "{" oder warum ist das beim 1. und 3. mal? Natürlich dann am Ende auch noch eine Klammer
Habe ich einmal eingesetzt, aber das allein ist es nicht, da kommt die Meldung
Blinkerstart already defined, delete it first Unknown command fhem("define, try help Unknown command {, try help Unknown command fhem("define, try help Unknown command fhem("define, try help Unknown command }, try help Unknown command }}, try help

Zitatat +{204}00:05:00
Muss es nicht auch +*{204}00:05:00 heißen
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

hckoe

Hallo,

meiner Meinung nach müssen Kommandos in { ... } mit ;; statt mit ; getrennt werden. Außerdem fehlt vermutlich ein "):

define Blinkerstart at *06:30:00 { \
  fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");; \
  fhem("define blink3x_neu at +{204}00:05:00 { fhem("define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1") }");; \
}


Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

uron

Zitatdefine Blinkerstart at *06:30:00 { \
  fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");; \
  fhem("define blink3x_neu at +{204}00:05:00 { fhem("define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1") }");; \
}
Klappt leider auch nicht, jedoch erst einmal wenigstens keine Fehlermeldung mehr beim Abspeichern der fhem.cfg
jedoch Fehlermeldung im logfile:
2013.11.15 22:31:00 3: syntax error at (eval 180) line 1, near ""define blink3x_neu at +{204}00:05:00 { fhem("define blink3x_neu1 "


RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Puschel74

Hallo,

doppelte Semikolon und \ werdet ihr bei mir nie finden da ich immer das DEF bearbeite und seltenst in der fhem.cfg direkt was mache.
Wer die Untescheide wissen will sollte mal das Forum durchsuchen.

Zu den already defined-Meldungen gebe ich mein letztes Kommentare ab - die Definition existiert bereits.

Klammerfehler können durchaus vorkommen da
ZitatUngetestet und klappt vielleicht auch nicht

Zitataus meiner Sicht fehlt mindestens vor dem 2. fhem "{" oder warum ist das beim 1. und 3. mal?
Dann solltest du dich nochmal mit dem Syntax von FHEM auseinandersetzen bevor du solche Konstrukte in einen Code giessen möchtest.

Zitat Helmut:
Zitatmeiner Meinung nach müssen Kommandos in { ... } mit ;; statt mit ; getrennt werden.
Damit kann ich nichts anfangen da ich nicht weiß was du damit meinst (oder meinen könntest).

Aber nun noch viel Spaß beim tüfteln.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

hckoe

Hallo Uron,

mit folgendem Eintrag in der fhem.cfg funktioniert es bei mir:

define Blinkerstart at *06:30:00 { \
        fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");; \
        fhem("define blink3x_neu at +*{204}00:05:00 { fhem(\"define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1\") }");; \
}

bzw. mit folgendem Eintrag direkt im DEF-Eintrag:

define Blinkerstart at *06:30:00 {fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1"); fhem("define blink3x_neu at +*{204}00:05:00 { fhem(\"define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1\") }") }

Problem war, daß "+{204}" durch "+*{204}" und beim geschachtelten fhem-String die " durch \" ersetzt werden müssen.

Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

uron

Also erst einmal recht vielen Dank für die Lösung, sie klappt ausgezeichnet.

Für mich stellt sich natürlich noch eine Erkenntnisfrage; mein Ziel, dieses Forum aufzusuchen ist ja der Erkenntnisgewinn (natürlich nebenbei auch die Lösung).
Ich möchte als Neuling den Befehl am Ende so verstanden haben, dass ich eine solche Syntax in einem ählichen Fall ohne Probleme hinbekomme.

Zitatdefine Blinkerstart at *06:30:00 { \
        fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");; \
        fhem("define blink3x_neu at +*{204}00:05:00 { fhem(\"define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1\") }");; \
}
Nicht verständlich ist für mich in der Lösung, dass sich mit dem Einfügen des \-Zeichens (steht m.E. doch für das Verbinden mehrerer Zeilen zur Herstellung der Übersichtlichkeit) das additive Semikolon (zum Ausführen zwei aufeinanderfolgender Befehle) gegenüber der DEF-Befehlsvariante verdoppelt werden muss !?  (übrigens irritiert mich auch noch das doppelte Semikolon am Befehlsende!)
Zitatdefine Blinkerstart at *06:30:00 {fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1"); fhem("define blink3x_neu at +*{204}00:05:00 { fhem(\"define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1\") }") }
Es ist möglicherweise der Tipp von Puschel74 der mich bat, die Befehlsunterschiede im Forum nachzulesen dem ich folgen sollte. Leider bin ich ich auch nach verschiedenen Suchläufen noch nicht fündig geworden - vielleicht/sicher sind meine Suchbegriffe falsch. Ich unterstelle vorab einmal, dass ich das "\" noch falsch interpetiere - ich arbeite aber am Erkenntnisgewinn.

Am Ende freue ich mich im Moment aber darüber, dass mehrere Forumsteilnehmer an der Lösung mitgearbeitet haben - dafür meinen Dank!
Offenbar ist es aber nicht ganz so eindeutig, die Syntax funtionierend hinzubekommen. Das macht mir Mut, dass ich nicht alleine bin.
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

hckoe

Hallo Uron,

hier noch ein paar kurze Infos:
ZitatIch unterstelle vorab einmal, dass ich das "\" noch falsch interpetiere - ich arbeite aber am Erkenntnisgewinn.
In Perl sind "" die Begrenzer eines Strings. Wenn ein " im String selbst vorkommen soll muss es mit \" maskiert werden, damit es nicht als Stringende interpretiert wird: "Dieses \" ist im String".
So wird auch ein Newline am Zeilenende durch \ maskiert und aufgehoben.

Gruß
Helmut
# CT mit Debian Buster / FHEM aktuell / EnOcean TCM310 / Eltako FSA12, FUD12NPN, FSB12, FRW, FSRP-230V
# Permundo PCS234, Nodon NO-SIN-2-2-00, GTAGS

Zrrronggg!

#24
Zitat
define Blinkerstart at *06:30:00 { \
        fhem("define blink3x at +*{3}00:00:02 set Versuch on-for-timer 1");; \
        fhem("define blink3x_neu at +*{204}00:05:00 { fhem(\"define blink3x_neu1 at +*{3}00:00:02 set Versuch on-for-timer 1\") }");; \
}

Nicht verständlich ist für mich in der Lösung, dass sich mit dem Einfügen des \-Zeichens (steht m.E. doch für das Verbinden mehrerer Zeilen zur Herstellung der Übersichtlichkeit) das additive Semikolon (zum Ausführen zwei aufeinanderfolgender Befehle) gegenüber der DEF-Befehlsvariante verdoppelt werden muss !?  (übrigens irritiert mich auch noch das doppelte Semikolon am Befehlsende!)

Tja, das kommt daher, dass die obige Notation auch unnötig kompliziert ist.  Es gibt hier im Forum einige Leute die das so übersichtlich finden. Ich bin da anderer Auffassung. Z.B.:

Zitat(übrigens irritiert mich auch noch das doppelte Semikolon am Befehlsende!)

Ja. Verstehe ich, ist nämlich auch überflüssig. Ebenso überflüssig ist es den Fhem Befehlsteil am Ende jeder Zeile "zuzumachen" um dann am Anfang der nächsten Zeile mit
Zitatfhem("
wieder aufzumachen.

Auch überflüssig ist, sich "in der Fhem Ebene befindlich", neue defines nochmal mit { fhem(" zu eröffnen.

Ohne die Lösung ganz genau durchdrungen zu haben, denke ich im übrigen auch, dass sie auch von der Logic her merkwürdig kompliziert ist. Vielleicht ist im Thread irgendwo was versteckt, was ich nicht gelesen habe.

Warum wird insbesondere zuerst EINMAL geblinkt und danach seperat 204x?

Warum nicht:

define Blinkerstart at *06:25:00 {fhem("define blink205x at +*{205}00:05:00 define blink3Hz at +*{3}00:00:02 set Versuch on-for-timer 1") }

(Gerade aus dem Kopp hingeschrieben, ungetestet, ich habe insbesondere ein paar der überflüssigen Klammerbenen weggelassen.)

Du hast ja inzwischen einen anderen Thread aufgemacht, wo du weitere Anforderungen an diese Schaltung einbringst.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

uron

sorry Zrrronggg!
ich lese erst jetzt deine Ausführungen in diesem Thread.
Ich hatte mich auf meinen neu aufgemachten Thread konzentriert und die Email-Benachrichtigung bei Antworten nicht eingeschaltet.

Deine Ausführungen zum Thema String, { , / , ´der Maskierung und fhem(" erhellen meinen Blick auf meine Syntax-Fragen doch enorm.

Danke für deine Mühe!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Zrrronggg!

FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL