Smarte Kaffee Maschine

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Die Rule ist zwingend auf den echten Status der Lampe angewiesen.
Wenn das Bord nicht lesbar ist, musst Du dafür sorgen, dass das Item den Status anhand des zuletzt gesendeten Befehls speichert. Natürlich darfst Du dann das Bord keinesfalls unabhängig von openHAB steuern,
Sobald ich dort "Write / Read" markiere, wechselt das Item von OFF zu Undef.
Wie sieht denn die Rule nun tatsächlich aus?
So:

Code: Alles auswählen

// Globale Variablen zu Beginn der Datei definieren!
var Timer tOutLamp = null                                                       // Timer für Außenlampen Meldung

rule "X Gartenlampe"
when
    Item HTTPURLThing_km1 changed
then
    tOutLamp?.cancel                                                            // beende bestehende Timer
    if(HTTPURLThing_km1.state !== OFF)                                          // Lampe an?
        tOutLamp = createTimer(now.plusMinutes(30), [|                           // Erstelle Timer
            sendBroadcastNotification("Lampe noch an ")                         // Gib Meldung aus
            tOutLamp.reschedule(now.plusMinutes(30))                             // Plane Timer erneut
        ])
end
Von der Sache, hat es so gearbeitet, wie gewünscht. Wenn du sagst, das ist falsch, dann werde ich es wieder entfernen.

Aus irgendeinem Grund hatte sich der Timer vorgestern abend nicht gelöscht oder so. Habe die Ganze Nacht, alle 30 Min, Nachricht bekommen, das die Lampe noch an ist. :mrgreen: :lol:

Vorhin, im Garten, lief es wie gewünscht... Und Zweckmäßig, Nachricht Erhalten, -> Licht ausgeschaltet, und Kam auch keine Nachricht mehr. Perfekt.
Und ein Tipp, den ich nicht müde werde zu geben:
Ich ändere Die Item Namen dann Passend ab. Das heisst, das Item hat den Namen: Garten, Flutlicht klein.

So wird mir das auch in der Sitemap angezeigt. (also Alle Namen die ich vergebe, werden in der Sitemap korrekt angezeigt).

Nur in der Rule, muss ich dann halt:

Code: Alles auswählen

HTTPURLThing_km1
eingeben.

Den jeweiligen namen bzw, den Trigger Channel, kopiere ich mir direkt aus dem Item und füge diese dann in die Rule ein.
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

mad-mike hat geschrieben: 22. Aug 2022 01:14 Sobald ich dort "Write / Read" markiere, wechselt das Item von OFF zu Undef.
Nein, das ist der Channel. der spielt hier aber keine Rolle, der darf durchaus write only bleiben.
Du musst aber dafür sorgen, dass das Item den Status passend zum letzten gesendeten Befehl bekommt. Ich gehe davon aus, dass das Licht auch über openHAB geschaltet wird. Im Item definierst Du über die Metadaten autoupdate = true. Danach sollte der Status des Items immer dem letzten Befehl folgen, also auf ON oder OFF wechseln. Der Vergleich prüft genau das ab, ob der Status von OFF abweicht oder nicht. Und da könnte auch der Fehler liegen, wenn nämlich der Status NULL oder UNDEV ist, ist er ebenfalls von OFF verschieden, dann käme die Nachricht ebenfalls.
Nun ist die Frage, was schlimmer ist: Eine Nachricht, die Dir sagt, das Licht sei noch an, obwohl das nicht der Fall ist, oder keine Nachricht, obwohl das Licht an ist - deshalb die Prüfung in dieser Form. Man könnte auch if(... == ON) prüfen, aber dann bekommst Du nicht mit, wenn ein Fehler vorliegt, wegen dem die Rule nie Alarm schlägt.
mad-mike hat geschrieben: 22. Aug 2022 01:14 Aus irgendeinem Grund hatte sich der Timer vorgestern abend nicht gelöscht oder so. Habe die Ganze Nacht, alle 30 Min, Nachricht bekommen, das die Lampe noch an ist. :mrgreen: :lol:
Ja, siehe oben. Am einfachsten wird man das los, indem man das Licht gezielt einmal ein- und wieder ausschaltet. Die Rule löscht zuverlässig den Timer weg, bei jedem Schaltvorgang (bzw. wenn sich der Zustand des Items ändert).
mad-mike hat geschrieben: 22. Aug 2022 01:14 Ich ändere Die Item Namen dann Passend ab. Das heisst, das Item hat den Namen: Garten, Flutlicht klein.

So wird mir das auch in der Sitemap angezeigt. (also Alle Namen die ich vergebe, werden in der Sitemap korrekt angezeigt).

Nur in der Rule, muss ich dann halt:

Code: Alles auswählen

HTTPURLThing_km1

eingeben.
Da bringst Du was durcheinander. Das ist nicht der Name des Items, sondern das Label. Das Label kannst Du immer nach eigenem Gusto beschriften.
Ich rede aber vom Namen des Items, auch dieser Name sollte nicht vom Channel oder gar Thing abhängen.

Stell Dir mal vor, Du hast eine Schaltsteckdose zum dazwischen stecken. Die Technologie ist Homematic (nur als Beispiel) und Du schaltest damit im Wohnzimmer eine Stehlampe.
Du nennst das Item Homematik_Zwischenstecker_3_Power_Switch. (Weil es ein Homematic Zwischenstecker ist, der dritte, den Du eingebunden hast...)
Jetzt stößt Du auf Sonoff Basic Module, die man mit einer alternativen Firmware bespielen kann. Die Module sind so kompakt, dass Du eines davon direkt in den Fuß der Leuchte einbauen kannst, womit der hässliche Klotz an der Wand endlich weg kann.
Du baust die Leuchte um.
Und weil Du diverse Regeln hast, in denen Du die Stehlampe schaltest, bist Du in einem Dilemma, denn entweder legst Du nun zusätzlich zum neuen Generic MQTT Thing für das Sonoff Basic noch ein neues Item MQTT_Sonoff_Basic_1_Power_Switch an und tauschst den Namen in allen Rules aus (und es sind eeeecht viele Rules...) oder Du verlinkst einfach das alte Item mit der neuen Hardware, aber der Name passt dann überhaupt nicht mehr.

Hättest Du mal auf meinen Ratschlag gehört und das Item GF_WZ_Stehlampe genannt...

Das ist nämlich einer der wichtigen Punkte in openHAB: die beiden Teile, Channel und Items, sind voneinander getrennt. Man kann jederzeit Verbindungen anders konfigurieren und muss nichts an den Abhängigkeiten anpassen.

Und wenn man die Itemnamen systematisch erstellt, muss man nicht mal zwingend nachschauen, wie das Item heißt, es reicht, zu wissen, dass das Wohnzimmer im Erdgeschoss ist (GF = Ground Floor) und als WZ in allen Itemnamen auftaucht. Da die Stehlampe im Wohnzimmer steht, ist der Name dann einfach herzuleiten. Auch das Semantic Model kann da äußerst hilfreich sein.

Ich habe meine Itemnamen auch mal an der Hardware ausgerichtet und bin schon sehr lange davon abgekommen, es ist einfach komplett unlogisch, so vorzugehen. Dass openHAB die Namen aus den Things generiert, ist da kein Widerspruch, schließlich weiß openHAB es nicht besser.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Moin.

Eine Idee noch zu meiner Kaffee maschine:
:)


Ich möchte die Shelly Steckdose überwachen und abschalten wenn:

Steckdose aktiv und 30 Minuten der Wert "Leistung" nicht über 25 Watt geht...

Ich weiss nur nicht, Was ich da als Trigger nehmen könnte...

""Leistung changed"" und ein Timer starten?


Danke und Gruss
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Code: Alles auswählen

var Timer tKaffeemaschine = null                                // Timer Kaffeemaschine

rule "Kaffeemaschine Teil3"
when
    Item shellyplugsb580c9192168178120_Leistung changed
then
    tKaffeemaschine?.cancel                                     // beende bestehende Timer
    if(shellyplugsb580c9192168178120_Leistung.state <= 25)      // Kleiner gleich 25
    tKaffeemaschine = createTimer(now.plusMinutes(30), [|        // Erstelle Timer
        sendBroadcastNotification("Kaffeemaschine Aus ")            // Gib Meldung aus
        shellyplugsb580c9192168178120_Betrieb.sendCommand(OFF)                     // Steckdose deaktivieren
            ])
end

Kann da einer mal drüber schauen? ich glaube es funktioniert, zumindest bei den ersten Tests...
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Nahe dran. Meine Variante:

Code: Alles auswählen

var Timer tKaffeemaschine = null                                         // Timer Kaffeemaschine

rule "Kaffeemaschine Teil3"
when
    Item shellyplugsb580c9192168178120_Leistung changed
then
    if(!(newState instanceof Number))                                    // falls Status keine Zahl
        return;                                                          // Abbruch
    if((newState as Number).intValue < 25 && tKaffeemaschine === null) { // falls kleiner 25 und kein Timer gestartet
        tKaffeemaschine = createTimer(now.plusMinutes(30), [|            // Erstelle Timer
            sendBroadcastNotification("Kaffeemaschine Aus ")             // Gib Meldung aus
            shellyplugsb580c9192168178120_Betrieb.sendCommand(OFF)       // Steckdose deaktivieren
            tKaffeemaschine = null
        ])
    } else if((newState as Number).intValue > 25) {                      // falls größer 25
        tKaffeemaschine?.cancel                                          // Timer abbrechen
        tKaffeemaschine = null
    }
end
Der Timer darf nicht einfach abgebrochen werden, sondern nur, wenn die Leistung über 25 Watt steigt. Die Leistung wird immer leicht schwanken, und wenn es nur die zweite Nachkommastelle ist. Dementsprechend darf der Timer auch nur angelegt werden, wenn kein Timer existiert. Deshalb ist es in diesem Fall wichtig, am Ende des Timer Codes und beim Canceln die Variable auf null zu setzen, damit auf Identität mit null getestet werden kann (===)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 402
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Smarte Kaffee Maschine

Beitrag von mad-mike »

Moin.

Danke dir.

Es wird ein Fehler ausgelöst, und zwar meckert er wegen:

Code: Alles auswählen

then
    if(!newState instanceof Number)
Dem !.

gut, habe ich rausgelöscht.

Nun passiert aber nix mehr...

Kann es sein, das der Zahlen wert vom Shelly wieder mit der ""Watt"" Endung ein Problem macht?
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Smarte Kaffee Maschine

Beitrag von peter-pan »

mad-mike hat geschrieben: 29. Sep 2022 21:14 Es wird ein Fehler ausgelöst, und zwar meckert er wegen:
Ich meine da gehört noch eine Klammerung dazu. Probier's mal so:

Code: Alles auswählen

 if(!(newState instanceof Number))
Das sollte dann klappen ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Genau... da fehlen Klammern. Nun ja, 0 Uhr...

Ich habe es oben korrigiert...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Smarte Kaffee Maschine

Beitrag von peter-pan »

udo1toni hat geschrieben: 30. Sep 2022 01:43 Genau... da fehlen Klammern.
...Ich musste auch erst suchen und hab ein bisschen gegoogelt. Und hab es dann gefunden .... In einem Thread... von dir ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Smarte Kaffee Maschine

Beitrag von udo1toni »

Ja klar, ich baue immer extra Fehler ein, damit ihr was zu suchen habt... :lol:
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten