Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

dancatt

Zu früh gefreut. Leider nein.


sub readingsGroupValueFormat($$$) {
  my($DEVICE,$READING,$VALUE) = @_;
  Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";

  if ($READING eq "batteryLevel" or $READING eq "battery") {
    my $batteryLevelValue = ReadingsVal($DEVICE,"batteryLevel","undef");
    my $batteryValue = ReadingsVal($DEVICE,"battery","undef");

    # Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
    if ($batteryLevelValue ne "undef" and $batteryValue ne "undef" and $READING eq "battery") {
       return 'undef';
    }
  }
}
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

Spiff

Ohne Anführungszeichen = auch ohne Hochkomma, wenn ich mich nicht irre.

sub readingsGroupValueFormat($$$) {
  my($DEVICE,$READING,$VALUE) = @_;
  Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";

  if ($READING eq "batteryLevel" or $READING eq "battery") {
    my $batteryLevelValue = ReadingsVal($DEVICE,"batteryLevel","undef");
    my $batteryValue = ReadingsVal($DEVICE,"battery","undef");

    # Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
    if ($batteryLevelValue ne "undef" and $batteryValue ne "undef" and $READING eq "battery") {
       return undef;
    }
  }
}


Gruß
Spiff

justme1968

ohne anführungszeichen. weder doppelt noch einfach. ganz ohne.

sub readingsGroupValueFormat($$$) {
  my($DEVICE,$READING,$VALUE) = @_;

  return undef if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
 
  return $VALUE;
}


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

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

dancatt

Wenn nur undef zurückgegeben wird, wird wieder die Zeile mit dem Batteriesymbol angezeigt.


sub readingsGroupValueFormat($$$) {
  my($DEVICE,$READING,$VALUE) = @_;
  Log 3, "readingsGroupValueFormat() DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";

  return "%0.1f °C"   if($READING eq "desired-temp");
 
  return "%0.1f °C"   if($READING eq "measured-temp");
 
  return "%0.1f %%"       if ($READING eq "ValvePosition");

  # Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
  return undef            if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
 
  return $VALUE;
}
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

justme1968

bitte teste das mal mit der offiziellen version die per update kommt. nicht. mit der aus dem thread. es kann sein das es genau da noch einen fehler gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

ich habe die version hier: http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 noch mal aktualisiert. bitte nimm diese zum testen.

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

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

dancatt

Ok.
1. Über das Update habe ich keine aktuelle bekommen.
2. Deine aktualisierte funzt prima.

Vielen Dank für diesen schnellen Support.

Dann überlege ich mir mal noch weitere Dinge  ;)
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

Roaster

Zitat von: justme1968 am 28 September 2014, 20:33:55
in etwa so:attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming_noconnect" ) { return "phone_ring_in@red";}; if ( $VALUE =~ "incoming" ) { return "phone_ring_in@green";} }

aber ich würde empfehlen es so zu machen:
eine sub in 99_myUtils.pm das das icon liefert:sub myPhoneIcon($)
{
  my($value) = @;
  Log 3, $value;

  my $icon = "phone_ring_in";
  $icon = "phone_ring_out" if( $value =~ /outgoing/ );

  my $color = "green";
  $color = "red" if( $value =~ m/noconnect/ );

  Log 3, $icon ."@". $color;
  return $icon ."@". $color;
}

Andre, ich bekomme beim Speichern der 99_MyUtils.pm diesen Fehler hier angezeigt:
Zitatsyntax error at ./FHEM/99_MyUtils.pm line 89, near "@; Log " Global symbol "$value" requires explicit package name at ./FHEM/99_MyUtils.pm line 89.
Zeile 89 enthält in diesem Fall
Log 3, $value;

Edit: denke ich habe den Fehler gefunden: my($value) = @; Hier fehlte der underscore  :D

Ansonsten funktionierts prima, musste noch die ein oder andere kleine Anpassung vornehmen, aber als Grundlage hat's mir sehr gut weitergeholfen - DANKE!

Michael



justme1968

ja. stimmt. war nur schnell ohne testen hingeschrieben...

hab es oben korrigiert.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Roaster

Zitat von: justme1968 am 29 September 2014, 21:25:21
ja. stimmt. war nur schnell ohne testen hingeschrieben...
Macht nichts ich hab' den Fehler ja sogar Mal selbst gefunden und dafür dass du es einfach so geschrieben hast: meine Respekt hast du  :-*

Danke,
Michael

dancatt

Zitat von: justme1968 am 29 September 2014, 20:59:42
bitte teste das mal mit der offiziellen version die per update kommt. nicht. mit der aus dem thread. es kann sein das es genau da noch einen fehler gibt.

Dazu muss ich jetzt doch noch was fragen. Hätte ich nicht per Update heute eine aktuelle bekommen müssen?
Ist deine Aktualisierung aus http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485 nicht im SVN enthalten? Zumindest deine Änderungen von gestern hätte ich doch bekommen müssen
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

justme1968

die version ist noch nicht eingecheckt. ich hatte die aktuelle alte version aus dem svn gemeint. hab mich undeutlich ausgedrückt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

franky08

#687
Hallo Andre, habe heute im Log eine Fehlermeldung welche die Heizungs ReadingsGroup betrifft. In meiner 99_myUtils:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}

#Heizung regeln in readingsGroup
sub
myUtils_HeizungUpDown($$)
{
  my($DEVICE,$CMD) = @_;

  my $icon = $CMD;
  my $VALUE = ReadingsVal($DEVICE,"desired-new","20" );
  $VALUE = ReadingsVal($DEVICE,"desired-temp","20" )
     if( !$VALUE || $VALUE == 0 );
  my $link;

  if( $CMD eq "up" ) {
    $icon = "control_arrow_upward";
    $VALUE += 1;

    if( $VALUE <= 24 ) {
      $icon .= "\@red";
      $link = "setreading $DEVICE desired-new $VALUE";
    }
  } elsif( $CMD eq "down" ) {
    $icon = "control_arrow_downward";
    $VALUE -= 1;

    if( $VALUE >= 18 ) {
      $icon .= "\@blue";
      $link = "setreading $DEVICE desired-new $VALUE";
    }
  }

  my $notify = "notifyHeizungUpDown";
  if( !defined($defs{$notify}) ) {
    CommandDefine(undef,
                   "$notify notify .*:desired-new.* "
                   ."{ myUtils_HeizungUpDownNotify(\$NAME,\$EVTPART1); }" );
  }

  my $ret = "%$icon";
  $ret .= "%$link" if( $link );

  return $ret;
}
sub
myUtils_HeizungUpDownNotify($$)
{
  my($DEVICE,$VALUE) = @_;

  return if( $VALUE == 0 );

  my $at = "triggerHeizungUpDown_$DEVICE";
  CommandDelete(undef, $at) if( defined($defs{$at}) );
  CommandDefine(undef,
                 "$at at +00:00:03 "
                 ."{my \$v = ReadingsVal(\"$DEVICE\",\"desired-new\",undef);"
                 ."fhem(\"set $DEVICE desired-temp \$v\") if( \$v );"
                 ."fhem(\"setreading $DEVICE desired-new 00\");}" );

  return undef;
}



Bringt seit heute folgende Fehlermeldung:

[Wed Oct  1 21:33:07 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 21:33:07 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct  1 21:33:50 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 21:33:50 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct  1 21:35:52 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 21:35:52 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.


In Line 33 : $VALUE -= 1;
In Line 25 : $VALUE += 1;

Vorher gehen die RT´s auf off, da die Außentemperatur über 18°C geht:
im Log:
2014.10.01 11:00:28 3: CUL_HM set 16_LED_11 led green
2014.10.01 11:08:40 3: CUL_HM set Kueche_Heizung_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Flur_Heizung_Clima controlManu off
2014.10.01 11:08:40 3: CUL_HM set Bad_Heizung_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Kinderzimmer_Heizung_links_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set Kinderzimmer_Heizung_rechts_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set SZ_Heizung_links_ClimRT_tr controlManu off
2014.10.01 11:08:40 3: CUL_HM set SZ_Heizung_rechts_ClimRT_tr controlManu off
[Wed Oct  1 11:08:42 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 11:08:42 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct  1 11:08:44 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 11:08:44 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.
[Wed Oct  1 11:08:54 2014] fhem.pl: Argument "off" isn't numeric in subtraction (-) at ./FHEM/99_myUtils.pm line 33.
[Wed Oct  1 11:08:55 2014] fhem.pl: Argument "off" isn't numeric in addition (+) at ./FHEM/99_myUtils.pm line 25.

Danach fangen die Meldungen an. Habe gerade mal die letzten Septembertage nachgesehen, da trat die Meldung nicht auf.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

justme1968

das desired einen nicht numerischen wert haben kann wird in dieser version nicht berücksichtigt.

in der nächsten version wird das auch gehen.

ein erster workaround wäre nach zeile 20 etwas in der art einzubauen:$VALUE = 20 if( $VALUE eq "off" );


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

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

franky08

Hallo Andre, Zeile 20 ist gleich nach dem Header/Kommentar, Zeile 21 ist: package main; in welche sub müsste es? Arbeite auf dem MAC mit Editra, hab mal einen Screenshot angehangen.

VG
Frank

Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1