FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: romarira am 16 August 2025, 14:19:15

Titel: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: romarira am 16 August 2025, 14:19:15
Hallo,

ich will in meiner Programmierung der DOIF etwas umstellen und ein etwas umfangreicheres "Master-DOIF" bauen. Dazu wollte ich die if-Kommandos von Perl nutzen.

Mein Skript ist auch schon einigermaßen vorangekommen, aber ich habe ein Problem, das ich nicht gelöst bekomme.

Setze ich den set-Befehl über die Kommandozeile oder in einem "normalen" DOIF ab set Kuechenrollo pct 100 fährt der Rollo gleichmäßigen hoch und bei pct 0 auch runter.

Steuere ich über fhem ("set Kuechenrollo pct 100"); fährt der Rollo immer so ca. 5 % stoppt, fährt weiter usw.
Ich habe intervall schon mal auf 60 gesetzt. Hat aber keine Änderung gebracht.

Hier einmal ein vollständiges Beispiel-DOIF

define di_Test_perl DOIF

  ## ===== Hitzeschutz AN =====
  if ( [07:35] ) {
    fhem("set Kuechenrollo pct 20");
    fhem("set WZ_Wohnzimmerrollo pct 35");
}

Das Verhalten ist auch dasselbe ob ich zwei Semikolon oder ein Semikolon am Ende der Zeile habe. Auch wenn ich nur einen Rollo steuere, ist das gleiche Phänomen.

Gibt es dafür eine Erklärung?
Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: Damian am 16 August 2025, 15:27:18
Also, es gibt absolut keinen Unterschied, ob du set Kuechenrollo pct 100 im FHEM-Modus aufrufst oder fhem ("set Kuechenrollo pct 100"); im Perl-Modus.

Wenn das Verhalten unterschiedlich ist, dann liegt es an etwas anderem.

Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: passibe am 16 August 2025, 16:09:44
Wie oft hast du das getestet? Ist das wirklich dauerhaft reproduzierbar? Betrifft das alle Rollos?

Wie sieht der Event-Monitor aus, während das Rollo fährt? Sind da Unterschiede erkennbar?

Ansonsten wäre es wohl noch sinnvoll, wenn du ein list der betroffenen Rollo-Devices postest.
Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: romarira am 16 August 2025, 22:52:21
Das Verhalten trifft auf alle Rollos zu, die ich mit dem Set-Befehl anspreche.

Den Event-Monitor muss ich mir morgen einmal anschauen.

Hier schon mal das Listing eines Devices, vielleicht ergibt sich ja daraus etwas.

Internals:
   CFGFN     
   DEF        192.xxx.xx.xxx
   DURATION   60
   FUUID      689xxxxxx
   INTERVAL   60
   MOVING     stopped
   NAME       Kuechenrollo
   NR         838
   NTFY_ORDER 50-Kuechenrollo
   SHELLYID   shellyplus2pm-1c692045ea50
   STATE      pct-0
   TARGETPCT  0
   TYPE       Shelly
   eventCount 3113
   units      0
   OLDREADINGS:
   READINGS:
     2025-08-15 08:08:23   ap              disabled open
     2025-08-15 08:08:23   ap_clients      disabled
     2025-08-15 08:08:23   ap_name         ShellyPlus2PM-1C692045EA50
     2025-08-15 08:08:23   ble             enabled
     2025-08-15 08:08:23   ble_rpc         enabled
     2025-08-15 08:08:23   cloud           enabled(connected)
     2025-08-16 21:17:18   current         0
     2025-08-16 21:16:16   current_last    0.762 down
     2025-08-16 21:17:18   energy          542.66
     2025-08-16 21:18:18   energy_lastMinute 0
     2025-08-15 08:08:24   firmware_ID     20250730-063231/1.7.0-gbe7545d
     2025-08-15 08:08:24   firmware_current v1.7.0
     2025-08-15 08:09:23   firmware_updIcon OK
     2025-08-15 08:09:23   firmware_updText -/-
     2025-08-16 21:58:24   frequency       50
     2025-08-15 08:08:23   input_0         off
     2025-08-15 08:08:23   input_0_function single
     2025-08-15 08:08:23   input_0_mode    switch straight enabled
     2025-08-15 08:08:23   input_1         off
     2025-08-15 08:08:23   input_1_function detached
     2025-08-15 08:08:23   input_1_mode    switch straight enabled
     2025-08-16 22:46:32   inttemp         38.2
     2025-08-16 21:16:16   last_dir        down
     2025-08-15 08:08:23   login           open
     2025-08-15 08:08:23   mac             1C:69:20:45:EA:50
     2025-08-15 08:08:23   model_ID        SNSW-102P16EU
     2025-08-15 08:08:23   model_family    Plus/Gen2
     2025-08-15 08:08:23   model_function  switch
     2025-08-15 08:08:23   model_name      Shelly Plus 2PM
     2025-08-15 08:08:23   name            Kuechenrollo
     2025-08-15 08:08:23   network         <html>connected to <a href="http://192.xxx.xxx.xxx">192.xxx.xxx.xxx</a> (Wifi)</html>
     2025-08-15 08:08:23   network_DNS     -
     2025-08-15 08:08:23   network_connection online
     2025-08-15 08:08:23   network_ip-address 192.xxx.xxx.xxx
     2025-08-16 22:46:32   network_rssi    -53
     2025-08-15 08:08:23   network_ssid    xxxxxxx
     2025-08-15 08:08:23   network_wifi_roaming -80
     2025-08-15 08:08:23   output_mode     O1=up, O2=down
     2025-08-16 21:17:18   pct             0
     2025-08-16 21:17:18   pfactor         0
     2025-08-16 21:17:18   position        closed
     2025-08-16 21:17:18   power           0
     2025-08-16 21:16:16   power_last      155 down
     2025-08-15 08:08:23   protection      none
     2025-08-15 08:08:48   scripts         0
     2025-08-15 12:51:18   start_reason    HTTP_in
     2025-08-16 21:17:18   state           pct-0
     2025-08-16 14:33:40   stop_reason     limit_switch
     2025-08-16 22:46:32   uptime          140151
     2025-08-16 22:46:32   voltage         238.5
     2025-08-15 08:08:24   webhook_cnt     0 / 0 / 0
     2025-08-15 08:08:23   webhook_ver     1
   helper:
     Sets       config:ap_disable,ap_enable interval password reboot:noArg update:noArg name clear:disconnects,error,energy,responsetimes actions script_start script_stop closed open stop:noArg pct:slider,0,1,100 delta zero:noArg predefAttr:noArg
     StatusCall 0
     range_extender disabled
     settings_time 1755377192.99494
     timer      0
     timerCnt   1
   hmccu:
Attributes:
   genericDeviceType blind
   interval   60
   maxtime_close 60
   maxtime_open 60
   mode       roller
   model      shellyplus2pm
   room       01.11_Küche,30.50_Shelly,30.90_Rolladen,90.30_Alexaroom
Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: romarira am 18 August 2025, 07:39:15
Ich scheine, die Ursache des Problems gefunden zu haben.

In meinem "Master-DOIF" sind viele if-Prüfungen enthalten. Die kommen sich wohl so in die Quere, dass nach Auslösen eines set-Befehls noch eine andere Prüfung greift und auch einen set-Befehl an das jeweilige Device sendet.

Mal schauen, wie ich das gelöst bekomme.

Welche Möglichkeit hätte ich, mit einem DOIF und DOIFELSE Prüfungen vorzunehmen, wo nicht nach der ersten erfolgreichen Bedingungen das DOIF stoppt, sondern die anderen Bedingungen auch noch geprüft werden.

Es gab wohl einmal so etwas wie ein attribut attr do always all oder multiple. Ich finde aber keinen aktuellen Stand dazu.
Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: Prof. Dr. Peter Henning am 18 August 2025, 09:14:41
Erst einmal ist es ziemlich unsinnig, solche komplexen Prüfungen in einem "Master-DOIF" zu versammeln. Das ist - wie die auftretenden Probleme zeigen - vollkommen unwartbar. So etwas sollte in klar abgegrenzte Perl-Unterprogramme ausgelagert werden.

Zweitens gibt es für die Rollladensteuerung sehr gut ausgetestete Module, die eigentlich alle Features bieten.

Zitat von: romarira am 18 August 2025, 07:39:15. Ich finde aber keinen aktuellen Stand dazu.
DOIF ist nun wirklich umfassend dokumentiert, die Beschreibung des "do"-Attributes findet sich auch in der CommandRef.

LG

pah

P.S.: Es heißt Rollladen, mit 3x "l"
Titel: Aw: Rolladen ruckelt beim Fahren bei perl-Kommandao (Shelly)
Beitrag von: Damian am 18 August 2025, 10:44:34
Zitat von: romarira am 18 August 2025, 07:39:15Es gab wohl einmal so etwas wie ein attribut attr do always all oder multiple. Ich finde aber keinen aktuellen Stand dazu.

Du meinst wohl das Attribut checkall, welches dein gewünschtes Verhalten veranlasst.