Raw Definition kann keine FHEM oneliner?

Begonnen von Otto123, 01 Juni 2020, 12:27:31

Vorheriges Thema - Nächstes Thema

Otto123

Hi,

ich arbeite in der Raw Definition gern auch mal ein paar FHEM Befehle ab. Geht Zeilenweise ja auch gut. Wenn man aber sowas macht:
set SD3 on
sleep 5
set SD3 off

Bekommt man diese Fehlermeldung:
2020.06.01 12:10:51 3: CUL_HM set SD3 on
2020.06.01 12:10:51 1: WARNING: sleep without additional commands is deprecated and blocks FHEM
2020.06.01 12:10:57 3: CUL_HM set SD3 off

Ok Klar, muss wohl so aussehen:
set SD3 on
sleep 5;set SD3 off
Das geht aber nicht: Fehlermeldung last Parameter must be quiet
Ok, der ganz normale FHEM oneliner in der "kleinen" Kommandozeile funktioniert:
set SD3 on;sleep 5;set SD3 off
Das Gleiche in der raw Definition führt wieder zum Fehler, diesmal schon beim set Befehl.  ::)
So funktioniert es auch in der Raw Def:
{fhem("set SD3 on;sleep 5;set SD3 off")}
Ist das ein Bug oder will ich ein Feature was so nicht gedacht war?  :D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

#1
bei mir funktioniert das problemlos... Abgesehen von der Warnung im Log, die darauf hinweist, dass sleep ohne folgenden Befehl nicht schön ist, treten keine Fehlermeldungen auf.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Und letzteres funktioniert bei Dir? das habe ich auch probiert, bringt bei mir den gleichen Fehler.

das erste ist klar. Ist bei mir ja auch so. Wobei eben nicht schön, will man so ja nicht :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Die FHEMWEB Befehlsschnittstelle fuehrt nur _Einzelbefehle_ aus.
Raw Definition emuliert das Verhalten, indem das Input in Zeilen zerteilt, und einzeln zum Server gesendet wird.
Damit kriegt sleep die Argumente "5 ; set D3 off", und beschwert sich.
Es ist ein Bug, ist aber nur durch groesseren Umbau zu beheben, und ich plane das (noch?) nicht.
@betateilchen: in einem Fall kriegt das erste set alle Argumente, beschwert sich bloss nicht. sleep wird nie aufgerufen, das zweite set auch nicht.

Otto123

Hallo Rudi,
danke für die Info, irgendwie bin ich froh, dass es ein Bug ist :) ist nicht schlimm wenn man es weiß. ;)
Und wegen mir musst Du den größeren Umbau nicht tun, wenn es nicht sowieso passt.

Deinen ersten Satz verstehe ich nicht. Ist die normale Kommandozeile nicht die "FHEMWEB Befehlsschnittstelle"?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: Otto123 am 01 Juni 2020, 14:54:45
Deinen ersten Satz verstehe ich nicht. Ist die normale Kommandozeile nicht die "FHEMWEB Befehlsschnittstelle"?

Es gibt mindestens drei Möglichkeiten, im Frontend etwas einzugeben


  • die klassische Eingabezeile oben
  • das Eingabefenster, das man durch das Pluszeichen oben links bekommt
  • das Eingabefeld unter "raw definition" in einem beliebigen device
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Das weiß ich :)
ich hätte vermutet: bei 2. und 3. wird es Zeilenweise in 1. geworfen

Aber Rudi sagt: Bei 2. und 3. zerlegt er es in die Zeilen und wirft es dann in die  "FHEMWEB Befehlsschnittstelle" (die kann nur einzelne Befehle?).

Das kann ja offenbar nicht einfach 1. sein, dort funktionieren ja mehrere Befehle getrennt mit Semikolon.
Es muss also 4. geben ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Ich meinte eigentlich (4) die "API" Schnisstelle in FHEMWEB.pm, aber nach nochmaliges Pruefen hat sich rausgestellt, dass sie bereits AnalyseCommandChain bei passenden Parameterwahl aufruft. Deswegen habe ich jetzt fhemweb.js angepasst, "set d on; sleep 3; set d off" sollte in "+" und "Raw Definition" "richtig" abgearbeitet werden. Ich habe zwar noch etwas Bauchschmerzen, dass in Raw-Definition deswegen Probleme entstehen koennten, ich habe aber nach kurzen Tests kein Problem gesehen.

Otto123

Hallo Rudi,

ich kann berichten: sowas wird jetzt richtig abgearbeitet :)
set d on; sleep 3; set d off
Mir ist noch was aufgefallen, sowas:
{my @array="d1";;foreach (@array) {}}wird und wurde richtig abgearbeitet(im + und RawDef), am Ende kommt aber nicht die typische Erfolgsmeldung sondern ein leeres Popup mit ok Button. "Zerbeiße" ich damit irgendeine Variable wie $_ oder so?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Die Meldug "Executed everything, no errors found." kriegst du, wenn das Ausgefuehrte undef zurueckliefert.
Was genau dein Konstrukt zurueckliefert, weiss ich nicht, wuerde mich aber interessieren.

Otto123

Stimmt:
{my @array="d1";;foreach (@array) {};;return undef}
Liefert die normale Meldung. 8)
Das Verhalten kommt durch die foreach Schleife, ohne diese kommt offenbar undef zurück. Wie bekomm ich raus was der Rückgabewert ist? Sowohl im Browser als auch mit perl -e "my @array="d1";foreach (@array) {}" kommt da nichts sichtbares zurück.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz