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...

chatgptdeutsch

GPT-4.5(https://chatgptdeutsch.info/), die neueste Forschungsvorschau, ist ein Fortschritt bei der Skalierung von unüberwachtem Lernen und Nachtraining. Durch die Erhöhung von Daten und Rechenleistung auf Microsoft Azure AI-Supercomputern verbessert GPT-4.5 sein Allgemeinwissen und seine Intuition, reduziert ,,Halluzinationen" und bietet natürlichere Interaktionen. Das Modell zeichnet sich durch ein besseres Verständnis der Nutzerabsichten aus und unterstützt effektiver beim Schreiben, Programmieren und Lösen praktischer Probleme. Auch wenn es nicht auf logisches Denken wie andere Modelle fokussiert, verspricht GPT-4.5 hohe Zuverlässigkeit und eröffnet Potenzial für unerwartete Entdeckungen durch Nutzer. Ein spannender Schritt in der KI-Entwicklung!

KölnSolar

ein knappes Jahr gewartet und nun antwortet chatGPT schon ungefragt.
Mal sehen, ob ich auch ne Antwort kriege.  :))
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Damian

Mal was ganz einfaches ausprobiert:

"Schreibe mir ein DOIF Programm in FHEM um eine Lampe um 8:00 Uhr einzuschalten und um 18:00 Uhr wieder auszuschalten."

Antwort in https://chatgptdeutsch.info

define Lampe_DOIF DOIF
set Lampe_DOIF {
    (time() >= 28800 && time() < 64800) ? "set DeineLampe on" : "set DeineLampe off"
}
attr Lampe_DOIF doif 1
attr Lampe_DOIF eventMap 28800:1,64800:0


Antwort in chatgpt.com

define Lampe_DOIF DOIF ([08:00] or [18:00])
    (set Lampe on)
DOELSEIF ([18:00])
    (set Lampe off)

beides würde nicht richtig funktionieren, also warten wir mal die nächsten zwei Jahre ab ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Antwort von DeepSeek v3:

ZitatHier ist ein Beispiel für ein DOIF-Programm in FHEM, das eine Lampe um 8:00 Uhr einschaltet und um 18:00 Uhr wieder ausschaltet:

define Lampe_DOIF DOIF ([08:00]) ({set Lampe on}) ([18:00]) ({set Lampe off})
ZitatErklärung:
define Lampe_DOIF DOIF: Definiert ein neues DOIF-Device mit dem Namen Lampe_DOIF.

([08:00]): Überprüft, ob die aktuelle Zeit 8:00 Uhr ist.

({set Lampe on}): Führt den Befehl aus, um die Lampe einzuschalten, wenn die Bedingung erfüllt ist.

([18:00]): Überprüft, ob die aktuelle Zeit 18:00 Uhr ist.

({set Lampe off}): Führt den Befehl aus, um die Lampe auszuschalten, wenn die Bedingung erfüllt ist.

Würde auch nicht funktionieren. DOELSEIF fehlt, "set Lampe off" ist kein Perl-Befehl, daher sind die geschweiften klammern falsch.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

frank

Zitat von: Damian am 03 März 2025, 11:46:56Würde auch nicht funktionieren.
ist vielleicht deine commandref zu unverständlich?  ;)
oder warum fallen hier alle ki's durch?
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

enno

ich glaube die pflügen das Forum durch und hören immer wenn dort im Beitrag als Hinweis steht "Lies die Commandref" auf und nutzen die falschen Codes zum Lernen 8) Die möchten es vielleicht auch lieber Mundgerecht vorgekaut bekommen...

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

Damian

Zitat von: enno am 03 März 2025, 14:32:41ich glaube die pflügen das Forum durch und hören immer wenn dort im Beitrag als Hinweis steht "Lies die Commandref" auf und nutzen die falschen Codes zum Lernen 8) Die möchten es vielleicht auch lieber Mundgerecht vorgekaut bekommen...

Gruss
  Enno

Da kommt eine einzelne Doku nicht gegen an.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF