Hauptmenü

[gelöst] Berechnungsproblem

Begonnen von andies, 30 Juli 2020, 08:08:18

Vorheriges Thema - Nächstes Thema

andies

Ich stehe auf dem Schlauch und finde nichts im Forum, wahrscheinlich gebe ich die falschen Werte ein. Ich möchte gern zwei Zahlen addieren und multiplizieren und kriege nur die Rechenvorschrift, nicht das Ergebnis:
setreading onvista Wert [onvista1:Preis]*[onvista1:Menge]+[onvista2:Preis]*[onvista2:Menge]
ergibt
Zitat108.033*25+45.40*1
anstatt das Ergebnis der Rechnung. Sieht jemand, was ich hier falsch mache? Es muss etwas elementares sein...
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Wzut

Äpfel und Birnen in einem Korb :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

andies

#2
Zitat von: Wzut am 30 Juli 2020, 08:50:57
Äpfel und Birnen in einem Korb :)
Du meinst Strings und Zahlen? Und wie kriege ich die strings zu Zahlen in Perl - ich probiere mal :r in setmagic...

<edit> Das klappt nicht
setreading onvista Wert [onvista1:Preis:r3]*[onvista1:Menge:r3]+[onvista2:Preis:r3]*[onvista2:Menge:r3]
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

MadMax-FHEM

Vielleicht:

fhem (Äpfel) und Perl (Birnen) ;)

Also setreading ist ein fhem-Befehl...
...die Berechnung müsstest du (verm.) in Perl machen...

Normalerweise wechselt man mit den geschweiften Klammern von fhem nach Perl...
...ob das "in" einem setreading funktioniert: keine Ahnung...

Bzw. ob dann dort noch "set Magic" geht: keine Ahnung (nutze setMagic nicht ;)  )...

Also wenn das alles geht, dann könnte das hier tun:


setreading onvista Wert {[onvista1:Preis]*[onvista1:Menge]+[onvista2:Preis]*[onvista2:Menge]}


Wenn Perl "in" setreading nicht geht, dann wirst du wohl komplett nach Perl gehen müssen, vorher rechnen und dann eben fhem("setreading ...")

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

andies

OK, dann wechsle ich komplett zu Perl. Ich dachte, man könnte diese Sachen in FHEM direkt rechnen und ReadingsNum-etc war mir zu viel Schreibarbeit. Dann mache ich das so, danke.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Also irgendwas elementares verwechsle ich hier. Wieso geht denn nicht
setreading onvista Wert { ReadingsNum('onvista1','Preis',0)*ReadingsNum('onvista1','Menge',0)+ReadingsNum('onvista2','Preis',0)*ReadingsNum('onvista2','Menge',0)}
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

MadMax-FHEM

#6
Wie geschrieben: ich weiß nicht, ob in einem setreading Perl geht...

Drum ja ganz nach Perl:


{my $Wert=ReadingsNum('onvista1','Preis',0)*ReadingsNum('onvista1','Menge',0)+ReadingsNum('onvista2','Preis',0)*ReadingsNum('onvista2','Menge',0); fhem("setreading onvista Wert $Wert");}


sollte gehen...

Bzw.: wo/wie willst du denn den Aufruf verwenden!? notify/DOIF/at/...?
EDIT: abhängig davon und evtl. auch abhängig von der Eingabemethode müssen u.U. die "Semikolon" verdoppelt werden...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Wzut

Zitat von: MadMax-FHEM am 30 Juli 2020, 09:11:50
Vielleicht:

fhem (Äpfel) und Perl (Birnen) ;)
genau so war es gemeint und die aktuellen Lösungsansätze sind noch immer Mischobst :)
Hinterfragt doch mal setreading ... was steckt da drunter ? Entweder ein readingsSingelUpdate (was auch nur ein "getarntes" Bulk Update ist oder eben gleich ein
setReadingsVal($hash, $reading, $value, TimeNow())
setReadingsVal($defs{'onvista'}, 'Wert', ReadingsNum('onvista1','Preis',0)*ReadingsNum('onvista1','Menge',0)+ReadingsNum('onvista2','Preis',0)*ReadingsNum('onvista2','Menge',0) , TimeNow())




Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

andies

OK, danke - war mir nicht klar, dass setreading mit Perl so nicht klarkommt. Ich hatte den Fehler woanders gesehen, aber jetzt klappt es.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

MadMax-FHEM

Zitat von: Wzut am 30 Juli 2020, 13:36:14
... und die aktuellen Lösungsansätze sind noch immer Mischobst :)

Jaja aber wo hört die "User-Schnittstelle" auf (fhem: setreading) und wo fangen "internals" (also interne fhem-Funktionen / "Developer-Funktionen" / "Modulinterne-Funktionen) an!?

Was ist "schlau" einem "Anwender" zu nennen!?

Dass man "um fhem rum" viel mit Perl machen kann...
...und nat. im Prinzip auch alle "Internas" nutzen kann ist schon klar...

Aber: wann nimmt man bzw. wann "erzählt" man wem was!?

Also nur so am Rande... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

andies

FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Wzut

Fein, was ich aber vergessen habe  : IMHO erzeugt setreading einen Event, das macht setReadingsVal nicht.
D.h. wenn du den Event nach dem setzen unbedingt brauchst müsstest du auf readingsSingeleUpdate ausweichen und das TimeNow() gegen eine 1 tauschen.

@Joachim, einem "echten" Anfänger hätte den Rat nicht gegeben :) aber ich war mir relativ sicher das andies damit klar kommt, aus dem Grund war auch mein erster Post schon so knapp  8)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Otto123

#12
Nur der Vollständigkeit halber:
Zwei Klammern Paare {(x*y)}hätten den Syntax komplett funktionsfähig gemacht.
setreading onvista Wert {([onvista1:Preis]*[onvista1:Menge]+[onvista2:Preis]*[onvista2:Menge])}

So steht es in der Doku von set (magic) ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

"set magic" werde ich vermutlich auch nie verstehen, das ist wie "wo wie was escapen" eine Geheimwissenschaft.

Das mit der "User-Schnittstelle" ist schwierig, aber um noch eine Variante ins Spiel zu bringen:
Meinem Gefühl nach darf man die Command.*()-Funktionen in fhem.pl auch als fortgeschrittener Anwender nutzen. Da weiß man noch recht genau, was man tut, aber die Syntax ist einfacher (bzw. überall gleich).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors