[gelöst] Fehlermeldung im Log: Unknown argument

Begonnen von cyrusfd, 15 Mai 2024, 07:38:54

Vorheriges Thema - Nächstes Thema

cyrusfd

Guten Morgen!

Eine Pumpe wird manuell bzw per Schaltuhr gesteuert. Die Pumpe hat 3 Modi für Geschwindigkeiten und einen Aus. Diese werden mit einem kurzen Schalten über 4 verschiedenen Ausgänge gesteuert (GPIO 17/18/22/27). Die Rückmeldung, dass der Motor läuft kommt über GPIO23.
Am Beginn habe ich die Pumpe nur gesteuert, wusste aber nie, ob die Pumpe läuft oder nicht. Die Anzeige des Status des Motors habe ich erst später implementiert. Damit ich nicht alles neu machen muss, ist es vielleicht etwas komplizierter als notwendig.
Grundsätzlich funktioniert aber alles wie gewollt, jedoch sehe ich in den LOGs einige Fehlermeldungen. Ich verstehe einfach nicht, wo der Fehler ist.

2024.05.15 07:30:02 3: n_PumpeAus return value: Unknown argument motor:, choose one of toggle:noArg on:noArg off:noArg off-till-overnight on-till-overnight intervals off-for-timer on-for-timer on-till off-till blink
2024.05.15 07:30:02 3: n_PumpeAus return value: Unknown argument motor:, choose one of toggle:noArg on:noArg off:noArg off-till-overnight on-till-overnight intervals off-for-timer on-for-timer on-till off-till blink
2024.05.15 07:30:03 3: n_PumpeAus return value: Unknown argument motor:, choose one of toggle:noArg on:noArg off:noArg on-till off-till on-for-timer blink off-till-overnight off-for-timer on-till-overnight intervals
Der Dummy PumpeAus gibt mir einen Btn auf der GUI der ua den Status von GPIO23 anzeigt. Ich habe stateFormat auf "motor" geändert, damit der Btn nicht den Status des Dummys, sondern von GPIO23 anzeigt.
define PumpeAus dummy
attr PumpeAus alias Pumpe
attr PumpeAus devStateIcon on.*:general_an@green:on-2 .*:general_aus@red:on-2
attr PumpeAus eventMap /on-for-timer .5:on-2/
attr PumpeAus group Pumpensteuerung
attr PumpeAus icon Shutdown
attr PumpeAus room Technik
attr PumpeAus setList on off
attr PumpeAus sortby 1
attr PumpeAus stateFormat motor
attr PumpeAus useSetExtensions 1
attr PumpeAus webCmd :
#   FUUID      62711d34-f33f-be15-e89b-2d03b2a486610466
#   NAME       PumpeAus
#   NR         47
#   STATE      off
#   TYPE       dummy
#   eventCount 9
#   READINGS:
#     2024-05-14 22:13:26   motor           off
#     2024-05-14 22:13:24   state           off
#
setstate PumpeAus off
setstate PumpeAus 2024-05-14 22:13:26 motor off
setstate PumpeAus 2024-05-14 22:13:24 state off


Das notify kommt von n_PumpeAus
define n_PumpeAus notify PumpeAus set GPIO17 $EVENT
#   DEF        PumpeAus set GPIO17 $EVENT
#   FUUID      62712332-f33f-be15-c2f9-b970dcea11c5012c
#   NAME       n_PumpeAus
#   NOTIFYDEV  PumpeAus
#   NR         48
#   NTFY_ORDER 50-n_PumpeAus
#   REGEXP     PumpeAus
#   STATE      2024-05-15 07:30:03
#   TRIGGERTIME 1715751003.85355
#   TYPE       notify
#   READINGS:
#     2024-05-14 21:51:58   state           active
#     2024-05-15 07:30:03   triggeredByDev  PumpeAus
#     2024-05-15 07:30:03   triggeredByEvent motor: on
#
setstate n_PumpeAus 2024-05-15 07:30:03
setstate n_PumpeAus 2024-05-14 21:51:58 state active
setstate n_PumpeAus 2024-05-15 07:30:03 triggeredByDev PumpeAus
setstate n_PumpeAus 2024-05-15 07:30:03 triggeredByEvent motor: on


sowie von n_gpio23. Hier wird der Status in "motor" gespeichert und an PumpeAus weitergegeben.
define n_gpio23 notify GPIO23:.* {my $value = ReadingsVal('GPIO23','state','');;if ($value eq 'on' or $value eq 'off') {fhem "setreading PumpeAus motor $value";;}}
#   DEF        GPIO23:.* {my $value = ReadingsVal('GPIO23','state','');if ($value eq 'on' or $value eq 'off') {fhem "setreading PumpeAus motor $value";}}
#   FUUID      663775f0-f33f-be15-96e8-bf871b27140fbc4b
#   NAME       n_gpio23
#   NOTIFYDEV  GPIO23
#   NR         69
#   NTFY_ORDER 50-n_gpio23
#   REGEXP     GPIO23:.*
#   STATE      2024-05-15 07:30:03
#   TRIGGERTIME 1715751003.8506
#   TYPE       notify
#   READINGS:
#     2024-05-14 21:51:59   state           active
#     2024-05-15 07:30:03   triggeredByDev  GPIO23
#     2024-05-15 07:30:03   triggeredByEvent Longpress: on
#
setstate n_gpio23 2024-05-15 07:30:03
setstate n_gpio23 2024-05-14 21:51:59 state active
setstate n_gpio23 2024-05-15 07:30:03 triggeredByDev GPIO23
setstate n_gpio23 2024-05-15 07:30:03 triggeredByEvent Longpress: on


Vielen Dank für eure Hilfe! Ich sehe leider vor lauter Bäumen den Wald nicht mehr.

Stefan

Otto123

#1
Hallo Stefan,

Du reichst alle Events im notify weiter, Deine GPIO17 versteht aber motor xxx nicht. Du musst das Suchmuster im notiy einschränken, eventuell so:
defmod n_PumpeAus notify PumpeAus:on|PumpeAus:off set GPIO17 $EVENT
Oder etwas kürzer
defmod n_PumpeAus notify PumpeAus:o[nf]+ set GPIO17 $EVENT
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

Die Fehlerursache steht doch klar in Deinen listings:

Zitat#    2024-05-15 07:30:03  triggeredByDev  PumpeAus
#    2024-05-15 07:30:03  triggeredByEvent motor: on

Im define des notify steht:

define n_PumpeAus notify PumpeAus set GPIO17 $EVENT

Wenn also der event "motor: on" kommt, dann versucht das notify den Befehl "set GPIO17 motor: on" auszuführen. Und das geht halt nicht - logischerweise.

Mögliche Lösungen:

  • Gib in Deinem notify eine vernünftige regex an, die nur auf die events triggert, um die es geht. Aktuell steht da nur "PumpeAus" als regex, es wird also auf alles getriggert, in dem dieser String vorkommt.
  • Lass das notify aus dem EventMonitor von FHEM automatisch anlegen, wenn Du es selbst nicht hinbekommst.

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

betateilchen

Otto war schneller, aber ich war ausführlicher...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

cyrusfd

Vielen Dank euch beiden für die Hilfe!

Hab's schon angepasst und es funktioniert.