Hauptmenü

userReading bei Dummys

Begonnen von Puschel74, 29 November 2013, 21:38:31

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo zusammen,

ich hab ja schon einiges versucht aber es klappt einfach nicht so wie ich das gedacht habe.

Ausgangssituation:

Ich habe an einem RasPi 2 I2C-Senoren dran die ich per at zyklisch abfrage.
Definiert sind beide Sensoren so:

define Hzg_Ruecklauf dummy
attr Hzg_Ruecklauf room I2C
define Hzg_Vorlauf dummy
attr Hzg_Vorlauf room I2C


Die Abfragewerte sehen so aus wie im Screenshot.
Im zweiten Screenshot mal einen Dummy gesamt.
Abgefragt wird, wie gesagt, per at das ein notify triggert welches eine sub in der 99_myUtils.pm aufruft und die Werte dann so
Sensor_I2C {
my $temp = messen("@");
my ($sensor, $temp_sensor) = split /\ /, "$temp", 2;
my ($sensor_temp, $zeichen) = split /\ /, "$temp_sensor", 2;
if ($sensor eq "0x48") {
  $sensor = "Heizraum_Luft";
}
if ($sensor eq "0x49") {
  $sensor = "Hzg_Ruecklauf";
}
if ($sensor eq "0x4c") {
  $sensor = "Hzg_Vorlauf";
}
$zeichen = " °C";
fhem("set $sensor $sensor_temp $zeichen");
}

in den Dummy schreibt.

Das ganze klappt auch einwandfrei und der Plot klappt auch wunderbar aber ...

Nun wollte ich das ganze per userReading in einen Dummy Heizung schreiben den ich so definert habe:
define Heizung dummy
attr Heizung room I2C
attr Heizung userReading Vorlauftemperatur { Value("Hzg_Vorlauf");; }, Ruecklauftemperatur { Value("Hzg_Ruecklauf");; }


In der commandref und in den Beispielen wird immer ReadingsVal abgefragt.
Klappt das mit Value nicht und muss ich erst jedem dummy per userReading ein neues Reading "spendieren" um das dann gesammelt in einem Dummy als userReading eintragen zu können oder wo liegt hier, mal wieder, mein Denkfehler?
Und das als Moderator vom Anfängerbereich  8)

Für sachdienliche Hinweise bin ich mal wieder dankbar.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

Value liest STATE und nicht state. nimm mal ReadingsVal(<device>,"state","").

die interne reihenfolge ist:
- das device aktualisiert ein oder mehrere readings (auch state)
- die user readings werden getrigert und setzen ihre werte
- jetzt erst wird STATE gesetzt

d.h. du bekommst mit VALUE immer STATE aus dem vorherigen trigger. nicht dem aktuellen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

#2
Hallo,

danke für die Hilfe aber (siehe Screenshot).

Auch nach Änderung auf Vorlauftemperatur { ReadingsVal("Hzg_Vorlauf","state","");; }, Ruecklauftemperatur { ReadingsVal("Hzg_Ruecklauf","state","");; }
bekomme ich kein neues Reading im Dummy *grübel*

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

userReadings werden getriggert wenn in dem device zu dem sie gehören ein reading aktualisiert wird.

dein set geht auf Hzg_Ruecklauf oder Hzg_Vorlauf, deine userReadings hängen aber am dummy Heizung. das geht so nicht.

beschreib doch mal ganz kurz was du erreichen willst. warum stehen vorlauf und rücklauf in zwei unterschiedlichen dummys? warum möchtest du es dann doch noch in einem dritten zusammen fassen?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

#4
Hallo,

danke, mal wieder, für dein Durchhaltevermögen mit mir  8)

Ich hab 2 I2C-Sensoren die ich ob meiner "programmiertechnischen" Unzulänglichkeit, für mich glücklicherweise, bisher in 2 Dummys schreiben kann (und so auch einen Plot hinbekomme).
Nun dachte ich mir in meiner Naivität das ich diese 2 Dummys (Werte) in einem neuen Dummy zusammenfassen könnte/müsste.
Ich wollte eigentlich nur "verstehen" wie ich Werte in userReadings packen kann.
Und zwar nicht nur lt. commandref sondern an einem (meinem) lebenden Beispiel.

Wenn das alles in einem Dummy geht bin ich gerne bereit meine "Programmierung" dahingehend umzustellen.
Solange du mich "an die Hand nehmen" würdest  ;D

Grüße

Edith:

Aufgrund deines Satzes:
ZitatuserReadings werden getriggert wenn in dem device zu dem sie gehören ein reading aktualisiert wird.
Hab ich mal versucht in Hzg_Vorlauf ein userReading zu definieren was aber zu keinem neuen Reading führt (oder ich versteh da was komplett falsch).
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

statt dem set in deinem Sensor_I2C einfach ein setreading verwenden und in einem dummy direkt zwei readings erzeugen.

je nach dem was du mit den werten des dummy machst ist es dann eventuell sinnvoll mit stateFormat state so zusammenzubauen das du etwas zum anzeigen hat. oder mit einer readingsGroup beide readings zusammen anzeigen, oder, oder, ... :)



gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

Zitatstatt dem set in deinem Sensor_I2C einfach ein setreading verwenden und in einem dummy direkt zwei readings erzeugen.
soll heissen das ich aus

fhem("set $sensor $sensor_temp $zeichen");
ein
fhem("setreading Heizung $sensor $sensor_temp $zeichen");
machen kann und das Reading dann einfach nur in Hzg_Vorlauf und Hzg_Ruecklauf ... und da verliessen sie ihn.

Ich möchte die Werte von Hzg_Ruecklauf und Hzg_Vorlauf versuchen in ein "Device Heizung" einmal als Reading Vorlauftemperatur und einmal als Reading Ruecklauftemperatur zu bekommen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

ja. genau. wenn du den extra dummy für die luft  behalten willst so:

Sensor_I2C {
  my $temp = messen("@");
  my ($sensor, $temp_sensor) = split /\ /, "$temp", 2;
  my ($sensor_temp, $zeichen) = split /\ /, "$temp_sensor", 2;

  if ($sensor eq "0x48") {
    fhem("set Heizraum_Luft $sensor_temp °C");
  } elsif ($sensor eq "0x49") {
    fhem("setreading Heizung Ruecklauftemperatur $sensor_temp °C");
  } elsif ($sensor eq "0x4c") {
    fhem("setreading Heizung Vorlauftemperatur $sensor_temp °C");
  }
}


wobei ich die °C nicht mit ins reading schreiben würde. aber das ist geschmackssache.

das splitten am anfang kann mann vermutlich mit einem =~ m/.../ auf einen schlag machen. ist aber eigentlich auch egal.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

#8
Hallo,

perfekt super danke dir.

Werd ich morgen gleich mal ausprobieren *gähn*

Das mit dem splitten - da war ich schon froh das ich das so kompliziert hinbekommen habe  ;D
Und das obwohl das Perl-für-Anfänger-Buch neben mir liegt.

Grüße

Edith: Hmmmmm.
Zitat2013.11.30 17:37:18 3: setreading Heizung Vorlauftemperatur 42.0 °C : Unknown command setreading, try help
Ich werd mich mal in die (un)tiefen der commandref stürzen
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

HotteFred

Zitat von: Puschel74 am 29 November 2013, 23:12:01
Edith: Hmmmmm.

Hallo Puschel,

konntest du das zuende bringen? Ich hänge hier auch gerade fest...
Ich hätte ausserdem gerne noch die differenz von VL und RL, aber das ist dann noch ein anderes Thema.

Danke.
Gruß
BananaPi mit FHEM, KM50, Velux Raumluftsensor, jede Menge HM-CC-RT-DN, jede Menge 1Wire Zeugs