Spielzeug :)

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

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

Re: Spielzeug :)

Beitrag von udo1toni »

Du musst einfach die App "leeren", also ein "" als Payload schicken.
Alternativ kannst Du auch über die Reihenfolge der Apps tricksen, aber das ist eher umständlich, Du musst ja ohnehin bei Aktualisierungen des Wertes das vollständige JSON senden, dann kannst Du es bei einem 0-Wert auch löschen.
Den "Beep" gibt es so nicht, Du kannst aber eine (beliebige) Tonfolge abspielen lassen, und zwar wahlweise als direkte Sequenz übergeben, oder Du speicherst die Melodie auf der Uhr und lässt die Datei "abspielen".
Schau Dir dazu am besten die offizielle Doku zu Awtrix3 an, die kannst Du direkt von Deiner Uhr aus aufrufen (WebUI -> Docs -> Getting started -> Features/Sounds bzw. Features/Apps. bzw. API/Mqtt/HTTP - jeweils linke Seite)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

nw378
Beiträge: 295
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Spielzeug :)

Beitrag von nw378 »

mad-mike hat geschrieben: 6. Feb 2025 20:31 Ich habe mir die Benachrichtigung von dem I-Serv der Schule anzeigen lassen... Das klappt auch wunderbar.
Wie machst Du das denn? :?:
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

mad-mike
Beiträge: 488
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Spielzeug :)

Beitrag von mad-mike »

Wie machst Du das denn? :?:
Das habe ich mit dem Mail Binding realisiert.

IMAP fragt alle 30 minuten den account ab.

Der Ordnername heisst:

Code: Alles auswählen

Inbox
Das Item zeigt mir die ungelesenen Mail als zahl an.
Gruss mad-mike

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

mad-mike
Beiträge: 488
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Spielzeug :)

Beitrag von mad-mike »

Du musst einfach die App "leeren", also ein "" als Payload schicken.
Perfekt, Danke
Gruss mad-mike

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

mad-mike
Beiträge: 488
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Spielzeug :)

Beitrag von mad-mike »

Wie kann man denn 2 werte berechnen, welche in der "IF" stehen?

folgende Ausgangs situation:

Code: Alles auswählen

rule "awtrix soc"
when                 
    Item SOC changed
then
    if(!(newState instanceof Number))
        return;
    var Number nSOC = (newState as Number).floatValue
    
    val nSOC_set = (SOC_set.state as Number).intValue

logInfo("awtrix","SOC liefert = ({})", SOC.state)
logInfo("awtrix","SOC_SET liefert = ({})", SOC_set.state)    
    
    
    var strIcon = "8481"                                    // Bat grün
    if(nSOC < 90) strIcon = "8480"                          // Bat gelb
    if(nSOC < 60) strIcon = "8479"                          // Bat rot
 
    val strZahl = String.format("%.0f",nSOC)
    var json='{"pos" : 3,"text" : "' + strZahl + '%","icon" : ' + strIcon + ',"color" : "' + "#00FF00" + '"}'

    if(nSOC <= nSOC_set) json='{"pos" : 3,"text" : " off ","icon" : 52463 ,"color" : "' + "#00FF00" + '"}'
    
    
    AwTrixSOC.sendCommand(json)
    
end
in zeile 16 steht
und in zeile 17 steht
Ich möchte das in abhängigkeit von SOC (akku ladezustand) und SOC_set (Akku minimum einstellung) abhängig machen.

Grund: in der Aktuellen zeit steht der Akku minimum auf etwa 50 %, je länger die Sonnen tage werden, wird der Wert langsam von 50% auf 10 % sinken um einen größeren Akku nutzen zu erhalten.

Sicherlich ist es nur ein optischer Punkt auf einer Anzeige der Uhr, aber eventuell kann man das ja so realisieren das man diesen IF werte prozentual verschiebt.

;) Gruss
Gruss mad-mike

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

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

Re: Spielzeug :)

Beitrag von udo1toni »

Ich bin mir nicht sicher, ob ich die Aufgabenstellung korrekt erfasst habe, aber hier ein dynamisches "Angebot":

Code: Alles auswählen

rule "awtrix soc"
when
    Item SOC changed
then
    var nSOC = -1                                                                  // default: Fehler
    if(newState instanceof Number)                                                 // falls gültiger Wert
        nSOC = (newState as Number).intValue                                       // Wert übernehmen

    var nSOC_set = -1                                                              // default: Fehler
    if(SOC_set.state instanceof Number)
        nSOC_set = (SOC_set.state as Number).intValue

    logInfo("awtrix","SOC = {}, SOC_set = {}", nSOC, nSOC_set)

    var json='{"pos": 3, "text": "'
    val strZahl = String.format("%d",nSOC) + " %"

    if(nSOC < 0 || nSOC_set < 0)         json = json + 'Fehler!", "icon": 2493'    // Fehler
    else {
        val nBereich = (100 - nSOC_set)/4                                          // 1/4 der erlaubten Entnahme
        if(nSOC < nSOC_set)              json = json + ' off ", "icon": 52463'     // off ab Grenzwert erreicht
        else if(nSOC < 100 - nBereich*3) json = json + strZahl + '", "icon": 8479' // Bat rot ab 3/4 des Grenzwertes
        else if(nSOC < 100 - nBereich)   json = json + strZahl + '", "icon": 8480' // Bat gelb ab 1/4 des Grenzwertes
        else                             json = json + strZahl + '", "icon": 8481' // Bat grün bis 1/4 des Grenzwertes
    }
    json = json + ', "color": "#00FF00"}'

    AwTrixSOC.sendCommand(json)
end
Ungetestet...

Das erhoffte ;) Verhalten:
Sollte einer der Eingabewerte SOC bzw. SOC_set ungültig sein, zeigt die App "Fehler" an (das Icon 2493 ist ein rotes Ausrufezeichen).
Sind beide Werte gültig, kommt es auf das Verhältnis von SOC zu SOC_set an.
(100 - SOC_set)/4 ist 1/4 der erlaubten Entnahmekapazität.
Die Untergrenze wird durch SOC_set gebildet, ab Unterschreiten dieses Grenzwertes springt die Anzeige auf off mit dem Icon 52463.
Wurden mehr als 3/4 der erlaubten Kapazität entnommen, springt das Icon auf rot.
Wurden mehr als 1/4 der erlaubten Kapazität entnommen, springt das Icon auf gelb.
Falls keine der oberen Bedingungen Zutrifft, wurde bisher weniger als 1/4 entnommen und die Anzeige kann grün sein :)
Das Zusammensetzen des JSON Objekts ist leider etwas unübersichtlich, alternativ müsste man je Entscheidungsblock zwei Variablen setzen, womit jeder Entscheidungsblock separat geklammert werden müsste - auch nicht schön...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 488
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Spielzeug :)

Beitrag von mad-mike »

Funktioniert perfekt. :!:

Habe zum testen einfach mal ein

Code: Alles auswählen

SOC.postUpdate(-1)
abgesetzt.


Ging auch gleich der Wechselrichter in Standby :oops: :D.
Auch mit dem Verstellen des untern SOC bereiches wird das icon dynamisch gewählt. Exakt so stelle ich mir das vor. :!:

Danke dafür.


Aber was komisches:
Das icon 2493 wird falsch dargestellt. Im Web ist das korrekte zu sehen, unter awtrix nicht. ich habe mich für 9823 entschieden...


Edit:

Zeile 21 musste ich noch ein "=" einfügen...

Code: Alles auswählen

        if(nSOC <= nSOC_set)             json = json + ' off ", "icon": 52463'     // off ab Grenzwert erreicht
Gruss mad-mike

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

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

Re: Spielzeug :)

Beitrag von udo1toni »

mad-mike hat geschrieben: 9. Feb 2025 19:43 In Zeile 21 musste ich noch ein "=" einfügen...
Ja, stimmt, ich hab natürlich auf Unterschreiten des Grenzwertes getestet, nicht auf erreichen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten