noch nicht ganz gelöst:* bei cmdalias

Begonnen von rasti, 11 Februar 2020, 20:43:42

Vorheriges Thema - Nächstes Thema

rasti

Hallo,

ich will bei einem abgesetzten Befehl (Solltemperatur einstellen) gleichzeitig ein burstXmit mitschicken.

Also z.B. bei
set HM_2E5CE0_Clima desired-temp 13.5
einen zweiten Befehl
set HM_2E5CE0_Clima burstXmit
hinterher schicken.

Normaler cmdalias ist mit klar, z.B.
define burst1 cmdalias set  ELRO_C1 on AS  set ELRO_C1 on ;; sleep 3 ;; set ELRO_C2 on
aber oben muss ja die Temperatur durch einen Platzhalter ersetzt werden.
Wie codiert man das ?
Danke schon mal im Voraus für eure Hilfe.
Viele Grüße
Ralf

xenos1984

Mit regulärem Ausdruck und $EVENT bzw. $EVTPART:

http://fhem.de/commandref.html#cmdalias

Ganz sicher bin ich nicht, da ungetestet.

defne NAME cmdalias set HM_2E5CE0_Clima desired-temp .* AS set HM_2E5CE0_Clima desired-temp $EVTPART1 ;; set HM_2E5CE0_Clima burstXmit

Otto123

Hi,

es gibt auch im Wiki ein paar aussagekräftige Beispiele.
https://wiki.fhem.de/wiki/Cmdalias

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

rasti

Zitat von: xenos1984 am 11 Februar 2020, 22:21:51
Mit regulärem Ausdruck und $EVENT bzw. $EVTPART:

http://fhem.de/commandref.html#cmdalias

Ganz sicher bin ich nicht, da ungetestet.

define NAME cmdalias set HM_2E5CE0_Clima desired-temp .* AS set HM_2E5CE0_Clima desired-temp $EVTPART1 ;; set HM_2E5CE0_Clima burstXmit

Hallo,

ich habe das und kleine Variationen davon versucht, klappt leider nicht.

:(

Otto123

#4
Zitat...klappt leider nicht.
Zu wenig Informationen.  :o
Was hast Du versucht? Code?
Was passiert?
Steht was im Log?

Meine Empfehlung: Schritt für Schritt ...
Vorschlag simpel, funktioniert das?
define NAME cmdalias willi .* AS set HM_2E5CE0_Climate desired-temp $EVENT


Danach funktioniert dies in der FHEM Kommandozeile:
willi 15

Beachte
Eigentlich heissen die Kanäle bei Homematic nicht Clima sondern Climate!
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

rasti

Zitat von: Otto123 am 13 Februar 2020, 23:18:12
Meine Empfehlung: Schritt für Schritt ...
Vorschlag simpel, funktioniert das?
define NAME cmdalias willi .* AS set HM_2E5CE0_Climate desired-temp $EVENT


Danach funktioniert dies in der FHEM Kommandozeile:
willi 15


Das sendet nur die desired-Temperature und nicht den Burstxmit

Zitat

Beachte
Eigentlich heissen die Kanäle bei Homematic nicht Clima sondern Climate!

Wenn ich Climate nehme anstelle von Clima kommt die Fehlermeldung:
Unknown argument desired-temp, choose one of burstXmit clear getConfig getRegRaw inhibit peerBulk regBulk regSet sign sysTime

Otto123

#6
Oh Mann bist Du ein schwieriger Typ  :-X

Klar, Du musst den richtigen Namen Deines Klima Kanales nehmen - es war nur ein Hinweis. :o

Und immerhin sendet willi die Temperatur :)
Denn Deine Frage war
Zitataber oben muss ja die Temperatur durch einen Platzhalter ersetzt werden.
Wie codiert man das ?
Die Frage ist doch damit beantwortet. ;) Alles andere ist wie immer ;)

Und nun? "Mutti - mach mal?"
defmod NAME cmdalias willi .* AS set HM_2E5CE0_Clima desired-temp $EVENT;; set HM_2E5CE0_Clima burstXmit

Oder hast Du das versucht? Weil sagen willst Du es ja nicht  :-X :-\ :'(
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

rasti

Zitat von: Otto123 am 14 Februar 2020, 10:40:14
Oh Mann bist Du ein schwieriger Typ  :-X

Und nun? "Mutti - mach mal?"
defmod NAME cmdalias willi .* AS set HM_2E5CE0_Clima desired-temp $EVENT;; set HM_2E5CE0_Clima burstXmit

Super Mutti - funktioniert !

Vielen Dank  ;D

rasti

Hallo,

doch noch nicht ganz gelöst ....

Den CMDAlias hab ich so definiert
define burst_220A2E cmdalias settemp_220a2e .* AS set HM_220A2E_Clima desired-temp $EVENT;; set HM_220A2E_Clima burstXmit und das geht aus Standard-FHEM-Oberfläche auch. Also settemp_220a2e 15 z.B. setzt die desired-temp auf 15 und schickt ein burstXmit hinterher.

Soweit so gut, nun muss das ganze noch mit Tablet-UI verheiraten, siehe auch Screenshot....der zugehörige Code ist hier :

<li data-row="2" data-col="2" data-sizex="1" data-sizey="3" class="semitransparent">
<header><font size="+1">Daniel</font></header>

<table width="100%">
                <tr>     <td> Ist:</td>

                             <td>
<div data-type="label" style="font-size: 200% "
data-device="HM_2E5CE0" data-get="measured-temp" data-unit="%B0C%0A" data-fix="1"
data-limits="[10,18,23]" data-colors='["#0000ff","#00ff00","#ff0000"]' >
</div>
                          </td>
                          </tr>
                            <tr><td> Ventil:</td>
<td> <div data-type="label" style="font-size: 200% "
data-device="HM_2E5CE0" data-get="actuator" data-unit="%" data-fix="1"
data-limits='[0,33,66]' data-colors='["skyblue","darkorange","orangered"]'>
</div>
</td>
                 </TR>

</table>

<TABLE>
<hr>
Reglereinstellung<br><br>
<div data-type="thermostat"
data-device="HM_2E5CE0_Clima" data-get="desired-temp"
                                                         data-set="desired-temp" 
                                                      data-valve="ValvePosition"
                                  data-min="0" data-max="30" data-step="0.5"

data-fgColor="darkorange"
data-height="100px"
data-width="100px">
</div>

<hr>
Modus<br>

<div data-type="multistatebutton"
                                                                             data-device="HM_2E5CE0_Clima"
                                                                             data-get="controlMode"
                                                                             data-get-on='["auto","manual"]'
data-set='["controlMode manual","controlMode auto"]'                                                data-icons='["oa-sani_heating_automatic","oa-sani_heating_manual"]'                                                 data-colors='["darkgreen","darkblue"]'
data-background-icon="fa-square"
data-background-color="grey"
>
</div>


<div data-type="multistatebutton"
                                                                             data-device="HM_2E5CE0"
                                                                        data-get="R-btnLock" data-get-on='["set_on","set_off"]'
data-set='["regSet btnLock off","regSet btnLock on"]'
data-icons='["oa-secur_locked","oa-secur_open"]'
data-colors='["darkred","darkblue"]'
data-background-icon="fa-square"
data-background-color="grey"
>
</div>

<div data-type="symbol" data-device="HM_2E5CE0" data-get="batteryLevel"
     data-icons='["oa-measure_battery_100","oa-measure_battery_100","oa-measure_battery_75","oa-measure_battery_50","oa-measure_battery_25","oa-measure_battery_0"]'
     data-get-on='["3","3\\.[0-9]","2\\.[789]","2\\.[456]","2\\.[123]","((2\\.0)|([01]\\.[0-9]))"]'
     data-on-colors='["#0CFB0C","#0CFB0C","#42BC0A","#F5FF10","#FB5909","#E50005"]'>
</div>

<div data-type="pagebutton" data-url="temperatur-daniel.html" class="cell" data-icon="fa-area-chart" class="cell"></div>
     
</li>


Problem ist nun, dass im Tablet-UI-Code beim Thermostat <div data-type="thermostat"
data-device="HM_2E5CE0_Clima" data-get="desired-temp"
                                                         data-set="desired-temp" 
                                                      data-valve="ValvePosition"
                                  data-min="0" data-max="30" data-step="0.5"

data-fgColor="darkorange"
data-height="100px"
data-width="100px">
</div>

die Daten ans Device "HM_2E5CE0_Clima"gesendet werden, z.B. kommt beim Einstellen auf 15°in Tablet UI
in FHEM letztendlich der Befehl "set HM_2E5CE0_Clima desired-temp 15" an. Es müsste aber ein "settemp_220a2e 15" aus Tablet UI erzeugt werden. Oder aber den CMD-Alias ändern so ähnlich wie xenos1984 vorgeschlagen hat (aber der vorgeschlagene CMDalias geht aber nicht....ich glaube das hat was mit den Großbuchstaben in HM_2E5CE0 zu tun bin mir aber nicht sicher).

Kann mir da jemand weiterhelfen ?
Viele grüße

Otto123

Ich habe keine Ahnung von TabletUI - aber wenn Du eigentlich einfach hinter jedem set desired-temp ein burstxmit hinterherschicken willst, kannst Du auch einfach folgendes machen:
define HM_220A2E_Clima_notify_1 notify HM_220A2E_Clima:desired-temp:.* set $NAME burstXmit
Und sparst Dir den Umweg über den Alias. ;)

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

rasti

#10
Danke dir Otto. Das sieht schon mal ganz gut aus.

Problem ist hier nun, dass das burstXmit zwar irgendwann hinterher kommt aber oft relativ spät
Im Log steht :

2020.02.14 21:50:42.399 3: CUL_HM set HM_220A2E_Clima desired-temp 12.5
2020.02.14 21:51:31.301 3: CUL_HM set HM_220A2E_Clima desired-temp 13.5
2020.02.14 21:52:09.545 3: CUL_HM set HM_220A2E_Clima burstXmit
.......
.......
.......
2020.02.14 21:54:33.333 3: CUL_HM set HM_220A2E_Clima burstXmit


?????
hilfe !

Otto123

naja der Ablauf ist wie folgt:
Du schickst ein set desired-temp
es wird ein Event erzeugt: HM_220A2E_Clima:desired-temp:.*
Auf den reagiert das notify und sendet ein set burstXmit

Da können irgendwelche Zeiten dazwischen liegen.

Um den Ablauf zu verstehen solltest Du nicht nur ins Logfile schauen sondern auch in den Eventmonitor.

Ich habe Deine Thermos nicht, musst Du also selbst testen. Meine WandThermostate reagieren sofort, kein sein deine sind anders.

Wir hier auch erklärt, also blöde Idee. Musst Du doch mit anderem machen....
https://forum.fhem.de/index.php?topic=17159.60

Wenn das ein Problem ist war es eine blöde Idee. Ob es aber wirklich anders ist wenn Du zwei set Befehle hintereinander schickst, weiß ich  nicht. Siehst Du aber auch im Eventmonitor.

Schlechter Funkkontakt kann auch alles beeinflussen.


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

rasti

#12
Hallo,

also bei der CMDAlias Implementierung reagieren die Thermostate sofort.

Also
define burst_220A2E cmdalias settemp_220a2e .* AS set HM_220A2E_Clima desired-temp $EVENT;; set HM_220A2E_Clima burstXmit tut genau das was soll.

Nun müsste man doch irgendwie doch im obigen Ausdruck das settemp_220a2e .* ersetzen können durch ein set HM_220A2E_Clima desired-temp .* . Wenn das ginge sollte es aus Tablet UI raus einfach funktionieren. Geht aber aus irgendeinem Grund nicht. Evtl. Gross/Kleinschreibung, denn  settemp_220A2E .* im obigen Ausdruck geht auch nicht






Otto123

#13
Damit Du in Zukunft auch mal ohne Mutti auskommst, definierst Du Dir mal das:
define burst_220A2E cmdalias set temp_220a2e temp .* AS {Log 1, "Kompletter Event |$EVENT| eins |$EVTPART0| zwei |$EVTPART1| drei |$EVTPART2|"}


Und dann probierst Du ein bisschen :) Du hast ja in #3 offenbar nur an der falschen Stelle variiert  ;D
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

Otto123

Wobei ich ein ungutes Gefühl mit solch einem Alias habe. Am Ende ersetzt Du damit den set Befehl im System. Ich würde das nicht machen, kann sein, dass es unangenehme Nebenwirkungen gibt.

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