FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rohan am 08 November 2013, 21:57:34

Titel: Frage zu devspec2array
Beitrag von: Rohan am 08 November 2013, 21:57:34
Hallo zusammen,

ich versuche die Ventilöffnung eines HM-CC-RT-DN abzufragen (für "Heizungssteuerung Einfach")

Folgendes

  my @@thermostat = devspec2array("model=HM-CC-RT-DN");;\
  foreach(@@thermostat) {\
    my $ventil=ReadingsVal($_, "ValvePosition", "101 %");;\
    $ventil=substr($ventil, 0, (length($ventil)-2));;\
    $i++;;\
    if ($ventil > 16) {\
      $brauche_waerme=1;;\
      $ventile_mit_bedarf++;;\
    }\
    if ($ventil < 10) {\
      $ventile_im_leerlauf++;;\
    }\
  Log(3,"HKE - Ventilöffnung: " . $_ . " " . $ventil);;\
  }\


ergibt in der Log-Datei folgende Aussage.

Zitat
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung 10
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_ClimRT_tr 0
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_ClimaTeam 10
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_Climate 10
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_Weather 10
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_WindowRec 10
2013.11.08 21:08:52 3: HKE - Ventilöffnung: UG.Treppe.Heizung_remote 10

Der HM-CC-RT-DN wird also sieben mal gewertet, was sein "Gewicht" überhöht.

Laut commandref sind "internal" attributes DEF, STATE and TYPE" möglich.

Welche Möglichkeit(en) habe ich, diesen (und zukünftig wohl mehrere) HM-CC-RT-DN nur ein einziges Mal auszuwerten?

Gruß
Thomas

P.S. Möglich, dass diese Frage in den HM-Forenbereich gehört, aber evtl. ist dies auch von allgemeinem Interesse. Und ich bin ja auch noch Anfänger.
Titel: Antw:Frage zu devspec2array
Beitrag von: Rohan am 08 November 2013, 23:16:53
Hmmm...

habe einen nach der commandref möglichen Ausweg gefunden.

Beim HM-CC-RT-DN (Edit: Channel 4, also ClimRT_tr) ein attr comment mit dem Wert "Thermostat" erstellt und nun:


  my @@thermostat = devspec2array("comment=Thermostat");;\
  foreach(@@thermostat) {\
    my $ventil=ReadingsVal($_, "ValvePosition", "101 %");;\
    $ventil=substr($ventil, 0, (length($ventil)-2));;\
    $i++;;\
    if ($ventil > 16) {\
      $brauche_waerme=1;;\
      $ventile_mit_bedarf++;;\
    }\
    if ($ventil < 10) {\
      $ventile_im_leerlauf++;;\
    }\
  Log(3,"HKE - Ventilöffnung: " . $_ . " " . $ventil);;\
  }\


bringt nur noch

Zitat
2013.11.08 23:04:22 3: HKE - Ventilöffnung: UG.Treppe.Heizung_ClimRT_tr 0

Also nur noch 1 Eintrag.

Mit dem Erstellen eines attr comment mit dem Wert "Thermostat" auch bei allen HM-CC-VD dürfte ich also nun  alle "Thermostaten" mit einem foreach abfragen können.

Dürfte gelöst sein, falls nicht noch jemand etwas anderes/besseres/alternatives weiß.

Danke für die Geduld. Manchmal ist es gut, einfach darüber zu reden/schreiben, dann kommt die Lösung evtl. von selbst  ;)

Gruß
Thomas
Titel: Antw:Frage zu devspec2array
Beitrag von: JoeALLb am 27 Januar 2017, 11:10:23
Falls dies noch jemand benötigt und diesen alten Thread findet:

"TYPE=CUL_HM:FILTER=NAME=.*_Clima"
funktioniert auch ohne comment
Titel: Antw:Frage zu devspec2array
Beitrag von: DeeSPe am 27 Januar 2017, 11:22:34
Zitat von: JoeALLb am 27 Januar 2017, 11:10:23
Falls dies noch jemand benötigt und diesen alten Thread findet:

"TYPE=CUL_HM:FILTER=NAME=.*_Clima"
funktioniert auch ohne comment

TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=chanNo=04
Funktioniert auch wenn der Channel umbenannt wurde!

Gruß
Dan
Titel: Antw:Frage zu devspec2array
Beitrag von: betateilchen am 27 Januar 2017, 11:25:06
Funktioniert aber nur bei wirklich modellidentischen devices.
Einen manuell erstellten Kommentar kann man natürlich in jedem beliebigen device unterbringen.