DOIF von ChatGPT generiert. Funktioniert das?

Begonnen von gent, 04 Juli 2024, 19:06:19

Vorheriges Thema - Nächstes Thema

gent

Hallo,

ich habe mal ChatGPT bemüht, in der Hoffnung, dass auch FHEM verstanden wird. Das war mein Prompt:

Ich brauche eine Automatisierung in FHEM für meine Gartenbewässerung. Ich habe ein Device "Wasserpumpe und ein Device "Ventil" und ein weiteres Device "Bodensensor". Ich möchte, dass zu einer bestimmten Uhrzeit jeden Tag und wenn der Bodensensor einen gewissen Prozentsatz unterschreitet, zunächst die Wasserpumpe angeht und dann 2 Minuten später das Ventil eingeschaltet wird. Nach 15 Minuten soll dann zunächst das Ventil ausgeschaltet werden und danach die Wasserpumpe.
Das erste Ergebnis war:

define Gartenbewässerung DOIF ([Bodensensor] < 30 and [timeofday] eq "08:00:00")
DOELSEIF ([Bodensensor] < 30) (set Wasserpumpe on) (set Ventil on-for-timer 120) (set Ventil off-after-timer 900) (set Wasserpumpe off-after-timer 915)

Hier frage ich mich, ob set Ventil on-for-timer 120 das Ventil nur 2 Minuten einschaltet?

Die nächste Version, die mir vorgeschlagen wurde, klingt logisch korrekter, ist mir aber von der Syntax nicht klar:

define Gartenbewässerung DOIF ([Bodensensor] < 30 and [timeofday] eq "08:00:00")
DOELSE (set Wasserpumpe on) (define StartVentil at +00:02:00 set Ventil on) (define StopVentil at +00:17:00 set Ventil off) (define StopPumpe at +00:17:15 set Wasserpumpe off)

Kann man wirklich innerhalb eines DOIF ein "at" definieren?

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

frank

warum probierst du es nicht aus, ob es funktioniert?

ZitatKann man wirklich innerhalb eines DOIF ein "at" definieren?
was sagt chatgpt?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

gent

Es stimmt, innerhalb eines DOIF kann man keine at-Befehle definieren. Stattdessen müssen wir die Timer-Funktionalität direkt innerhalb des DOIF implementieren. Dazu können wir die define-Befehle außerhalb des DOIF platzieren oder alles in einem einzigen DOIF so gestalten, dass es funktioniert.
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

KarlHeinz2000

Bei mir funktioniert 'at' im DOIF. Du musst defmod nehmen, da das at ja evtl schon existiert.

(["^MYSENSOR_:lost_cnt"])
  (setreading $DEVICE timeout 0 , defmod at_$DEVICE at +01:30:00 setreading $DEVICE timeout 1 )

Per

on-for-timer geht, off-after-timer nicht, das gibt es in Fhem nicht.
at kann man in DOIF problemlos erstellen, normalerweise arbeitet man aber mit wait.

Den Ansatz mit KI finde trotzdem ich ganz interessant. Warten wir mal noch ein-zwei Jahre...