[patch] 98_dewpoint.pm

Begonnen von hotbso, 23 Oktober 2017, 10:43:18

Vorheriges Thema - Nächstes Thema

Fixel2012

Bei mir hat werden komma zahlen angezeigt.

dewpoint 3.6
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

hotbso

Nein, den Patch brauchst du nicht mehr zu installieren. Am Montag werde ich eine neue Version Einchecken und dann noch Mal die absolute Feuchte kontrollieren.
- Holger

till24

super, danke, dann warte ich erstmal den Montag ab!

hotbso

Die neue Version ist jetzt im Repository, kommt also ab morgen mit UPDATE.
Es konnte tatsächlich sein, dass wg. eines gerundeten Zwischenergebnisses die abs. Feute oft (oder immer) ganzzahlig war.
Bitte auch https://forum.fhem.de/index.php/topic,21458.0.html beachten.

till24

Ich habe das Update installiert, bekomme aber leider weiterhin nur ganzzahlige Werte für dewpoint und absFeuchte. Ich habe auch schon die dewpoint devices gelöscht und neu angelernt, leider ohne Erfolg..

hotbso

Hhm, dann setze doch bitte mal in einem Dewpoint Device das Attribut verbose auf 5 und poste ein Stück aus dem Log.

till24

Hier der Auszug aus dem Log (wiederholt sich dann so):


2017.12.05 11:13:45 4: dewpoint_notify: cmd_type=dewpoint devname=XMI_198d00015273g dewname=absFeuchte_Badezimmer, dev=XMI_198d00015273g, dev_regex=XMI_198d00015273g temp_name=temperature hum_name=humidity
2017.12.05 11:13:45 5: dewpoint_notify: s='battery: 2.965'
2017.12.05 11:13:45 5: dewpoint_notify: evName='battery:' val=2.965'
2017.12.05 11:13:45 5: dewpoint_notify: s='batterystate: ok'
2017.12.05 11:13:45 5: dewpoint_notify: evName='batterystate:' val=ok'
2017.12.05 11:13:45 5: dewpoint_notify: s='temperature: 17.22'
2017.12.05 11:13:45 5: dewpoint_notify: evName='temperature:' val=17.22'
2017.12.05 11:13:45 5: dewpoint_notify temperature! dev=XMI_198d00015273g, temp_name=temperature, temp=17.22
2017.12.05 11:13:45 5: dewpoint_notify: s='humidity: 66.79'
2017.12.05 11:13:45 5: dewpoint_notify: evName='humidity:' val=66.79'
2017.12.05 11:13:45 5: dewpoint_notify humidity! dev=XMI_198d00015273g, hum_name=humidity, hum=66.79
2017.12.05 11:13:45 5: dewpoint_notify: s='pressure: 101.604'
2017.12.05 11:13:45 5: dewpoint_notify: evName='pressure:' val=101.604'
2017.12.05 11:13:45 5: dewpoint timeout=1
2017.12.05 11:13:45 5: dewpoint_notify: dewpoint=11
2017.12.05 11:13:45 5: dewpoint absFeuchte= 10
2017.12.05 11:13:45 5: dewpoint_notify: current=11

hotbso

Ich kann mir das ganze nur so erklären, dass die Funktion "round" bei Dir anders definiert ist. Hast Du vielleicht eine eigene in 99_MyUtils.pm ?
"round" wird innerhalb von FHEM überall verwendet, tritt das Problem nur beim dewpoint auf ?

Nur noch mal zur Vollständigkeit:
Die erste Zeile vom 98_dewpoint.pm ist: # $Id: 98_dewpoint.pm 15551 2017-12-04 09:04:37Z hotbso $

oder ?



hotbso

Gib doch mal im command fenster ein:
{Log(1, round(12.345, 1));;}

Steht 12.3 im log ?

mahowi

#24
Bei mir steht 12 im Log.

Aus der Doku zu Math::Round:
Zitatround LIST

Rounds the number(s) to the nearest integer. In scalar context, returns a single value; in list context, returns a list of values. Numbers that are halfway between two integers are rounded "to infinity"; i.e., positive values are rounded up (e.g., 2.5 becomes 3) and negative values down (e.g., -2.5 becomes -3).

Du müsstest nearest verwenden:
Zitatnearest TARGET, LIST

Rounds the number(s) to the nearest multiple of the target value. TARGET must be positive. In scalar context, returns a single value; in list context, returns a list of values. Numbers that are halfway between two multiples of the target will be rounded to infinity. For example:

nearest(10, 44) yields 40
nearest(10, 46) 50
nearest(10, 45) 50
nearest(25, 328) 325
nearest(.1, 4.567) 4.6
nearest(10, -45) -50
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

igami

Aus der 99_Utils.pm

sub
round($$)
{
  my($v,$n) = @_;
  return sprintf("%.${n}f",$v);
}
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

till24

bei mir steht auch 12 im Log. Ich habe nichts an der 99_Utils.pm geändert.

hotbso

Dann scheint doch irgendwas das round aus 99_Utils zu überschreiben.
fhem.pl nutzt selber jede Menge round mit 2 Argumenten, dass kann doch dann nur das aus 99_Utils.pm sein, oder ?

sash.sc

Zitat von: hotbso am 05 Dezember 2017, 16:45:01
Gib doch mal im command fenster ein:
{Log(1, round(12.345, 1));;}

Steht 12.3 im log ?
Beim mir 12.3

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

hotbso

Die mit der 12 können ja mal folgendes eingeben, dann kommt raus wo "round" definiert ist.

{use B;; my $o=B::svref_2object(\&round);; Log(1, $o->FILE);;}

Bei mir kommt das:

2017.12.05 19:28:19 1: ./FHEM/99_Utils.pm