[Erledigt] Hilfe bei userReading

Begonnen von Manul, 08 Juli 2017, 13:30:10

Vorheriges Thema - Nächstes Thema

Manul

Ich hätte gerne für ein device einen String als userReading. Wie ich den berechne, habe ich, glaube ich, rausbekommen. Aber wie gebe ich den zurück? Mein Ansatz war:


attr device userReadings reading {
  my $value = "ein berechneter String";
  $value;
}


Das scheint so aber nicht zu funktionieren. Ist der Ansatz falsch oder habe ich schon vorher einen Fehler im Code? In perlconsole habe ich den Code getestet, da scheint er zu tun, was er soll.

Otto123

Hi,

ich würde return $value versuchen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Manul

#2
Danke, funktioniert leider genauso wenig. Vielleicht ist ja doch ein Fehler in meinem sonstigen Code. Mag jemand mal drüberschauen?


powerlevel {

  my %levels = split(/[ ,:]/,attrVal("Robi","powerlevels","");

  my $numlevel = ReadingsVal("Robi","fan_power",undef);
 
  my $level = "Custom";
 
  while(my ($key,$value) = each %levels) {
 
    if ($value == $numlevel) {
   $level = $key;
}
  }
 
  return $level;
}


Das Attribut "powerlevels" hat den Wert "Quiet:38 Balanced:60 Turbo:77 MAX:90", ein "set Robi fan_power 60" produziert den Fehler "Error evaluating Robi userReading powerlevel: syntax error at (eval 46297) line 3, at EOF".

Edit: Verwendung von "eq" statt "==" (werf ich immer durcheinander) ändert nichts

Otto123

Also das kannst Du so erstmal nicht sagen, deine Aufgabe würd emit return schon funktionierenattr device userReadings reading {
  my $value = "ein berechneter String";
  return $value;
}

ich kenne attrVal nicht, ich denke es muss AttrVal heißen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Manul

Ich denke, Du hast recht. Ich denke außerdem, ich sollte die Klammer von der split-Funktion wieder schließen.  :-[

Das Ergebnis gibt uns beiden recht: Funktioniert, danke!