OWServer / OWDevice

Begonnen von Martin Fischer, 11 Januar 2013, 00:16:17

Vorheriges Thema - Nächstes Thema

Martin Fischer

OWDevice:

- uncached reading hinzugefügt[1]

[1] Über das neue Attribut "uncached" bei OWDevice holt OWServer die Daten nicht aus dem Cache. Ich empfehle folgende Erläuterung What is uncached? zu lesen, bevor man pauschal alles auf "uncached" setzt. Oft ist dies nicht notwendig, da das caching vom owserver schon gut abgestimmt ist.

Beispiel:
define myTempSens OWDevice 10.123456789012 60
attr myTempSens uncached 1

Viel Spaß damit..

Gruß Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

det.

Hallo,
Kompliment an Martin Fischer und Boris Neubert! Hatte den COC schon eingemottet und war kurz davor, den hier zum Verkauf freizugeben. Gestern doch mal aus Neugier OWFS auf dem RaspPi installiert und an die COC 1-wire Schnittstelle insg. 5 Sensoren angeschlossen -> das läuft einfach prima! Für Fragen, wie ich mit dem DS2438 mit angeschlossenen HIH4000 temperatur+spannungsbereinigte Luftdruckwerte berechne ist sicher noch zu früh.
Was ich allerdings nicht verstehe ist die Anzahl der erkannten Sensoren - es sind 2 mehr, als erwartet.
Internals:
   DEF        10.67C6697351FF 300
   IODev      OWServer
   NAME       DS18S20_10.67C6697351FF
   NR         27
   STATE      95.6°C
   TYPE       OWDevice
   Readings:
     2013-01-14 21:56:51   alarm           0
     2013-01-14 21:56:51   state           temperature: 58.864  alarm: 0
     2013-01-14 21:56:51   temperature     95.6468
   Fhem:
     address    10.67C6697351FF
     alerting   1
     bus        bus.0
     interfaces temperature
     interval   300


und
Internals:
   DEF        05.4AEC29CDBAAB 60
   IODev      OWServer
   NAME       DS2405_4AEC29CDBAAB
   NR         31
   STATE      sensed: 0
   TYPE       OWDevice
   Readings:
     2013-01-14 22:12:58   sensed          1
     2013-01-14 22:12:58   state           sensed: 0
   Fhem:
     address    05.4AEC29CDBAAB
     alerting   0
     bus        bus.0
     interfaces state
     interval   60


und dann auf bus.1 die 5 Stück, welche ich physisch wirklich angehangen habe.
Gibt es ggf. dafür eine einfache Erklärung? Die Temperaturwerte des angeblichen DS18S20 springen auch wild von 0-100°C...
LG
det.

UweH

Das hat mich auch mehrere graue Haare und Anfragen hier im Forum gekostet, bis ich auf die Spur gebracht wurde...das sind die beiden Fake Devices aus der owfs.conf.

Martin Fischer

Zitat von: det. schrieb am Mo, 14 Januar 2013 22:18Für Fragen, wie ich mit dem DS2438 mit angeschlossenen HIH4000 temperatur+spannungsbereinigte Luftdruckwerte berechne ist sicher noch zu früh.
kommt demnächst in diesem theater.. boris hat da schon was vorbereitet, wir testen gerade ;-)

ABER: ich habs jetzt nicht um kopf und bin gerade zu faul zum nachsehen:
hast du bei dem DS2438 nicht das reading HIH4000/humidity?

na gut, ich schau mal eben nach..

siehe:
DS2438 - Smart Battery Monitor
SYNOPSIS
   Temperature Voltages and Current.
       26  [.]XXXXXXXXXXXX[XX][/[ CA | EE | date | disconnect/date | disconnect/udate | endcharge/date | endcharge/udate | IAD |
       offset | pages/page.[0-7|ALL] | temperature | udate | VAD | VDD | vis | address | crc8 | id | locator | r_address |  r_id
       | r_locator | type ]]

   Humidity sensor
       26 [.]XXXXXXXXXXXX[XX][/[ HIH4000/humidity | HTM1735/humidity | DATANAB/reset | DATANAB/humidity | humidity | temperature
       ]]

   Barometer
       26 [.]XXXXXXXXXXXX[XX][/[ B1-R1-A/pressure | B1-R1-A/gain | B1-R1-A/offset | ]]

   Light
       26 [.]XXXXXXXXXXXX[XX][/[ S3-R1-A/current | S3-R1-A/illuminance | S3-R1-A/gain ]]

FAMILY CODE
       26

meinte ich doch... bei den ganzen slaves, die ich zugefügt habe, hatte ich das nicht im kopf... _alle_ obigen readings kannst du sofort auswerten! beachte: humidity ungleich HIH4000/humidity!
  humidity
       read-only, floating point
       Relative humidity, as percent (1-100 scale).
       The  DS2438  actually does not read humidity, but a widely available and publicised circuit based on the chip, does. This
       design is for the common Honeywell HIH-3610 humidity chip. The mostly compatible HIH-4000 chip uses different temperature
       compensation, so is better read from the HIH4000/humidity value. See the datasheets for details.
       If the chip is instead a DATANAB design, the DATANAB/humidity value will be automatically used.


ZitatWas ich allerdings nicht verstehe ist die Anzahl der erkannten Sensoren - es sind 2 mehr, als erwartet.
das hat uwe glaub ich schon beantwortet.. nimm statt FAKE lieber TESTER. dann springen die werte nicht mehr :-) just kiddin'

nein, kommentier den FAKE eintrag einfach aus der owfs.conf

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

eppi

Hallo zusammen
ev ein wenig OT, aber Fragen kann man ja mal...

Ich habe für meine iButton folgende Routine angelegt:

sub ibutton01_bus1{
  my $ibutton = ReadingsVal("ibutton01","present","off");
  my $bus = ReadingsVal("ibutton01","location","off");
  if($ibutton eq "1" && $bus eq "bus.1" && OldValue("ibutton01") ne "present: 1"){
    fhem "set dummy6 on";
  }
}


und über nachfolgenden Notify wird getriggert:
define ibutton01_test notify (ibutton01) { ibutton01_bus1() }

Sobald ich den entsprechenden iButton am entsprechenden Bus anschliesse wird auch getriggert, jedoch 4x nacheinander!
Log:
2013.01.15 06:50:47 2: dummy set dummy6 on
2013.01.15 06:50:47 2: dummy set dummy6 on
2013.01.15 06:50:48 2: dummy set dummy6 on
2013.01.15 06:50:49 2: dummy set dummy6 on


Da ich den "OldValue" abfrage, sollte doch nur ein notify getriggert werden? Wie kann man das noch besser verriegeln, dass nur einmal getriggert wird?
Danke vielmals, Gruess Dani

det.

vielen Dank - funktioniert wie beschrieben!

M1 43.1%    -> stateFormat {sprintf("%.1f",ReadingsVal("M1","HIH4000/humidity",0))."%"}
S1 sensed.A: 1 sensed.B: 1 alarm: 1
T1 20.6°C
T3 20.6°C
T4 20.6°C

Um auf der Zeile neben der Luftfeuchte auch noch die Temperatur angezeigt zu bekommen, muß ich noch etwas probieren...
LG
det.

Martin Fischer


M1 43.1%    -> stateFormat {sprintf("%.1f%% %.1f°C",ReadingsVal("M1","HIH4000/humidity",0), ReadingsVal("<mytempsens>","temperature",0))}
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

det.

Zitat von: Martin Fischer schrieb am Di, 15 Januar 2013 20:21
M1 43.1%    -> stateFormat {sprintf("%.1f%% %.1f°C",ReadingsVal("M1","HIH4000/humidity",0), ReadingsVal("<mytempsens>","temperature",0))}

Danke, da hätte ich lange probieren müssen, um das so hinzubekommen.

Eine Frage hab ich zu dem reading noch, es kommt entweder die Temperatur vom DS2438 oder die Luftfeuchte. Beide Werte zusammen offenbar nicht?


(siehe Anhang / see attachement)

LG
det.

Martin Fischer

> Eine Frage hab ich zu dem reading noch, es kommt entweder die Temperatur vom DS2438
> oder die Luftfeuchte. Beide Werte zusammen offenbar nicht?

was steht denn in state? stehen da beide werte?

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

det.

jein - ich poste mal den Screenshot davon:



(siehe Anhang / see attachement)
LG
det.

Martin Fischer

> jein - ich poste mal den Screenshot davon:

also erstmal solltest du noch das sprintf anpassen, damit es analog zu den anderen state temp/hum) aussieht. das war von mir nur ein "quick'n'dirty".. musst du natürlich nicht. :-)

was ich aber nicht ganz verstehe, warum du humidity von M1 nimmst und temperature von T1? das dürfte (wahrscheinlich) auch die ursache sein, dass dein plot nicht funktioniert. der ds2438 liefert doch beiden temp und hum. also demnach sollte es wie folgt aussehen:

M1 H: 43.1 T: 21.5  -> stateFormat {sprintf("H: %.1f% T: %.1f",ReadingsVal("M1","HIH4000/humidity",0), ReadingsVal("M1","temperature",0))}

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

det.

Hallo Martin,

so hatte ich es ja seit Gestern und jetzt wieder. Das ist genau das Problem, jetzt bleibt der Feuchtigkeitswert  auf dem reading von 20:37 Uhr stehen.
Mit Auswahl eines daneben liegenden Temperatursensores (T1) bekomme ich die erwartete Grafik, obwohl es schon schöner wäre, den intern vorhandenen Temperatursensor anzuzeigen.


(siehe Anhang / see attachement)


Das entscheidet jetzt aber nicht den Krieg! Nur falls es ein Fehler ist, lässt es sich ggf. irgendwann mit abstellen, wenn Ihr Zeit dazu habt.
LG
det.

Martin Fischer

> so hatte ich es ja seit Gestern und jetzt wieder. Das ist genau das Problem,
> jetzt bleibt der Feuchtigkeitswert  auf dem reading von 20:37 Uhr stehen.

ok. das du das schon so hattest, habe ich nicht gesehen.

> Mit Auswahl eines daneben liegenden Temperatursensores (T1) bekomme ich die
> erwartete Grafik, obwohl es schon schöner wäre, den intern vorhandenen Temperatursensor anzuzeigen.

so sollte es sein.

> Das entscheidet jetzt aber nicht den Krieg! Nur falls es ein Fehler ist, lässt es
> sich ggf. irgendwann mit abstellen, wenn Ihr Zeit dazu habt.

nun. seitens des OWDevice bekommst du ja die readings, wenn du kein stateformat einsetzt. und das auch regelmäßig. hier ist also kein fehler. ich vermute mal, das es mit stateFormat zusammenhängt. das ist eine modulübergreifende funktion und ein "kind" von rudi. ich sprech mal mit ihm.

gruss
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

rudolfkoenig

Martin hat mich gebeten hier reinzuschauen, weil er meint, dass es mit stateFormat zusammenhaengt.

Wenn ich es richtig verstehe, habt Ihr die Vermutung, dass events ausbleiben, wenn man stateFormat setzt. Ich meine das kann nicht sein, da stateFormat nur eine Variable (STATE) setzt, und hat sonst keine Auswirkung auf events.

Ein Beweis koennte man fuehren, indem man in readingsBulkUpdate Log-Ausgaben einbaut, und diese mit den Daten in der Plot-Logfile vergleicht.

Martin Fischer

boris will sich das am wochenende mal näher anschauen. dann sehen wir weiter.

gruss martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.