Hallo,
ich habe eine Panstamp, der als Counter eingesetzt wird. Dieser Counter überträgt hex Zahlen.
Was passiert, wenn ich Tagessummen / Monatssummen mittels average auf diesen Wert mache? Funktioniert das, oder muss ich den Wert erst irgendwie nach Integer wandeln ?
Gruß Christoph
das einfachste ist die hex register werte per userreading jeweils dezimal readings zu erzeugen und dann average darauf los zu lassen.
die user readings werden übrigens automatisch angelegt wenn du ein zu deinem sketch passendes device description file hinterlegst.
gruß
andre
Hallo Andre,
das XML File für das Device habe ich mir aus dem Temp/Hum und dem Counter zusammengefasst. Da werden "nur" die Register zerlegt die Umrechung der hex Werte geschieht, auch im Original, in den UserReadings.
Ich habe das mit dem Dezimalwert für average bereits gemacht. die Werte sehen besser aus. Was mich gewundert hat ist, das average irgendetwas mit den Hex Werten gemacht hat - zumindest gab es keine Fehlermeldungen.
Kann man die Werte auch schon im XML File umrechenen?
Gruß Christoph
Average kann nicht (immer) erkennen, ob ein Wert hex ist oder dezimal, und rechnet los, wenn er meint dezimal erkannt zu haben.
die umrechnung hex -> dezimal geschieht bei SWAP immer über user readings.
aber das anlegen der user readings geht automatisch für jedes register bzw. jeden endpoint zu dem es einen units knoten im description file gibt. die dort angegeben werte für facor und offset werden dann genommen um vom hex wert auf einen 'menschen lesbaren' dezimal wert zu kommen. du kannst einfach 1 und 0 angeben und der wert wird 1:1 umgerechnet. der name des endpoint wird dann zum namen des user readings.
perl versucht den string als zahl zu interpretieren und nimmer von links nach rechts alles an ziffern das da steht und interpretiert es als dezimal zahl. da die umrechnung von hex nach dezimal fehlt ist es in fast allen fällen falsch selbst wenn es nach dezimal ausschaut. nur einstellige zahlen zwischen 0 und 9 sind zufällig richtig.
gruss
andre