Taster soll wert erhöhen / veringern und neu setzen in einem Notify

Begonnen von MAC66666, 21 Februar 2018, 00:22:18

Vorheriges Thema - Nächstes Thema

MAC66666

Hi,
ich möchte einen Wert auslesen (desiredTemperature) und diesen innerhalb eines Notifys bei Tastendruck erhöhen bzw. verringern. Ich nehme an, irgendwie per Variable setzen, readingsval usw. aber mir fehlt die genaue Syntax... Ich habe nicht mal einen Versuch gestartet, weil ich hänge... Kann mir da jemand helfen?

Was ich bisher gefunden habe sind riesige Scripte für die 99_myutlis aber das muss doch auch mit minimalem Code in meinem notify gehen?

FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

CoolTux

Schau Mal hier.
https://m.youtube.com/watch?v=fQ_50-YSr6w

Das ist genau das was Du suchst, nur halt mit Hue Lampen. Musst nur bisschen umändern.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nils_

Zitat von: MAC66666 am 21 Februar 2018, 00:22:18
Ich habe nicht mal einen Versuch gestartet, weil ich hänge...
du solltest dringend was gegen deine _hänger_ tun.


und auch wenn der code noch so schlimm ist, kannst du ihn mMn ruhig posten!
so können wir immer nur raten, und du musst devicenamen usw usw. anpassen.

einfach mal mehr Infos posten!!!


ansonsten:
- anfängerdoku lesen!
- commandref benutzen
-- http://commandref.fhem.de/commandref_DE.html#notify
-- http://commandref.fhem.de/commandref_DE.html#perl (speziell der Teil ab Value() )
-- http://commandref.fhem.de/commandref_DE.html#setreading
viele Wege in FHEM es gibt!

Hollo

Zitat von: MAC66666 am 21 Februar 2018, 00:22:18
...Was ich bisher gefunden habe sind riesige Scripte für die 99_myutlis aber das muss doch auch mit minimalem Code in meinem notify gehen?
Ob Du das direkt im notify oder durch eine kleine Funktion in der 99_myUtils machen willst, bleibt eigentlich Dir überlassen.   :D

Der Ablauf ist aber identisch; sinngemäß...
- aktuellen Wert aus Reading in eine Variable lesen/schreiben ( sowas wie aktWert = ReadingsVal("meinThermostat_Kanal", "desiredtemp", "20") )
- Wert entsprechend erhöhen ( sowas wie neuWert=aktWert+1 )
- neuen Wert setzen ( sowas wie "set meinThermostat_Kanal desiredtemp "neuWert" )

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

MAC66666

Genau, die Logik ist mir klar, nur die genaue Syntax nicht, da haperts bei mir noch gewaltig...

Zitat von: nils_ am 21 Februar 2018, 09:32:56

und auch wenn der code noch so schlimm ist, kannst du ihn mMn ruhig posten!
so können wir immer nur raten, und du musst devicenamen usw usw. anpassen.

einfach mal mehr Infos posten!!!

Habe ja noch gar keinen Code, weil mir der Ansatz fehlt  ;)

FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

rabehd

ZitatHabe ja noch gar keinen Code, weil mir der Ansatz fehlt 

passt nicht zu

ZitatGenau, die Logik ist mir klar,

Vielleicht findest Du jemanden der Dir Dein FHEM bastelt.
Auch funktionierende Lösungen kann man hinterfragen.

Thyraz

Zitat von: MAC66666 am 21 Februar 2018, 09:36:57
Genau, die Logik ist mir klar, nur die genaue Syntax nicht, da haperts bei mir noch gewaltig...

Habe ja noch gar keinen Code, weil mir der Ansatz fehlt  ;)

Der Post von Hollo beinhaltet doch schon fast den gesamten Code den du innerhalb des Notifies brauchst.
Was soll man denn da noch liefern?

Wenigstens minimale Eigeninitiative zu zeigen wäre schon hilfreich.
Und wenn es nur dadurch ist, dass du mitteilst wo du jetzt GENAU hängst nachdem du die Logik und 90% des Codes schon vor dir hast.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

MAC66666

Meine Antwort bezog sich ja auf Nils' Post, vor Hollos Post. Ich habe aber nun eine Ahnung, wie ich das umsetze. Und dann kommt mein fehlerhafter Code hier rein  ;)

Mit Logik meinte ich, dass ich weis was passieren soll, ich aber Syntax Probleme habe...  Ich wusste z. B. nicht so richtig, wie ich die Variablen innerhalb des Notifys verpacken soll... Das von Hollo hilft hoffentlich schon weiter...
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

schwatter

Gerade eben musste ich mir ein DOIF anlegen um Volume zu steuern. Wert +/-. Nutze einen HM-PB-6-WM55 um StreamRadio zu steuern.

([HM_6Buttons:"^HM_566EBA_Btn_03.Short$"]) (set Dum_Volume_D {([Dum_Volume_D]-10)})
DOELSEIF ([HM_6Buttons:"^HM_566EBA_Btn_04.Short$"]) (set Dum_Volume_D {([Dum_Volume_D]+10)})


Vielleicht hilft dir das.

fiedel

Irgendwo im Streamradio- Thread steht auch ein Lautstärketaster- Beispiel von mir als Notify.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

MAC66666

Ja, perfekt, das habe ich gefunden und genutzt! vielen Dank!

hier noch mal ein Auszug aus meinem Notify:

{ my $dtemp_plus = Value("dTWZli") + 1;;
  my $dtemp_minus = Value("dTWZli") - 1;;

.
.
.

  if ($EVTPART1 == 4 and $dtemp_plus >=30) {
    fhem ("set dTWZli 30");
    fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on"); 
    fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}
  if ($EVTPART1 == 64 and $dtemp_minus <=5) {
    fhem ("set dTWZli 5");
    fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on"); 
    fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}

  if ($EVTPART1 == 4 and $dtemp_plus <=30) {
    fhem ("set dTWZli $dtemp_plus");
    fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on"); 
    fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}
  if ($EVTPART1 == 64 and $dtemp_minus >=5) {
    fhem ("set dTWZli $dtemp_minus");
    fhem ("set ESPEasy_SWZ1_Touch oledframedcmd on"); 
    fhem ("define Disptemp at +00:00:15 set ESPEasy_SWZ1_Touch oledframedcmd off");
}
}


mit drei anderen Notifies (die fasse ich ggf. noch zusammen) wird der Wert vom Dummy an das Thermostat bzw. vom Thermostat an das Dummy gesendet und vom Thermostat an mein Display. Ist ein bisschen langsam, aber ich drück ja nicht von 5 bis 30 Grad immer alles durch, wenn doch sehe ich halt nicht gleich den aktuellen Wert... Wenn am Thermostat ein "halber" Wert, also irgendwas mit x.5 Grad eingestellt wird, bleiben zwar alle Dummywerte auch auf x.5 Grad, aber damit kann ich erst mal leben. Könnte man natürlich auch noch ändern...


Super, danke!
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

betateilchen

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

MAC66666

Weil die Befehle (noch) nicht zusammengefasst sind? Oder weil es so ein Monsternotify ist? Oder weil es über ein Dummy geht? Oder warum?
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota

CoolTux

Weil Dein Code unnötig aufgebläht ist.
Sowas kann man mit 3-5 Zeilen erschlagen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MAC66666

Ja, ich muss mir das erst mal so vor Augen halten. Komprimieren kann man ja noch... Optimierungsvorschläge?
FHEM @ Ubuntu 20.04 VM@ Windows 2019 Hyper-V @ NVMe
MAXCube als CUL_MAX (Thermostate)
MAXCube als SlowRF (FS20, wird durch ESPs ersetzt, teilweise geschehen)
Einige ESPs mit ESPEasy, zwei GHoma und ein Sonoff Tasmota