neues Modul 98_powerMap

Begonnen von igami, 19 Dezember 2016, 05:36:36

Vorheriges Thema - Nächstes Thema

igami

Neue Version im ersten Beitrag:
- update durch pruefung auf P1 verbessert
- Modul von energy in powerMap umbenannt
- commandref: Hinweis zu timestamp-on-change-reading hinzugefuegt
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

igami

Könnte sich noch jemand den code angucken?
Irgendwie werden im Event monitor zwar power und energy angezeit, in der Detailansicht von dem Device die Readings jedoch nicht aktualisiert.

Der wichtige Teil sollte der hier sein

sub powerMap_Notify($$) {
  my ($hash, $dev_hash) = @_;
  my $name = $hash->{NAME};

  return if(IsDisabled($name));

  my $dev = $dev_hash->{NAME};
  my $powerMap = AttrVal($dev, "powerMap", undef);

  return unless($powerMap or $dev eq "global");

  my $events = deviceEvents($dev_hash, 1);

  return unless($events);

  foreach my $event (@{$events}) {
    next if(!$event);
    next if(AttrVal($dev, "noPower", 0));

    Log3($name, 5, "powerMap ($name) - triggered by $dev $event");

    if($event !~ /^(energy|power): / and $powerMap){
      my $power = powerMap_powerMap($name, $dev, $event, $powerMap);

      readingsBeginUpdate($dev_hash);

      unless(AttrVal($dev, "noEnergy", 0)){
        my $energy = powerMap_energy($name, $dev, $power);

        readingsBulkUpdate($dev_hash, "energy", $energy);
      }

      readingsBulkUpdate($dev_hash, "power", $power)
        if($power ne "no match");

      readingsEndUpdate($dev_hash, 1);
    }

    if($event eq "INITIALIZED" and $dev eq "global"){
      for(devspec2array("powerMap=.+:FILTER=noEnergy!=1")){
        powerMap_update("$name|$_");
      }
    }

    if
    ($event =~ /^ATTR.(.+).no(Energy|Power).0$/ or
     $event =~ /^DELETEATTR.(.+).no(Energy|Power)$/
    ){
      powerMap_update("$name|$1");
    }
  }

  return;
}

Habe schon mit NotifyOrderPrefix gespielt, aber keine Verbesserung erzielt. Kann es daran liegen, dass das ganze im notify Block liegt?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Loredo

Ich habe mir die aktuelle Version jetzt auch mal gezogen und derzeit wird kein Power-Reading angelegt und das Energy-Reading bleibt nur auf 0.
Den Code habe ich mir noch nicht angesehen, mal schauen ob ich da ein paar sinnvolle Debugging-Logs einbauen kann.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Den Fehler, weshalb die Longpoll Events nicht auf der Detailseite übertragen werden, habe ich bisher nicht finden können.


Anbei ist jedoch eine überarbeitete Version.


Changelog:

#   enhanced logging
#   enhanced event handling
#   rewrite of powerMap_powerMap
#   added Unit.pm support


Bei dieser hat sich das Format des powerMap Attributs geändert, um damit eine stabilere und performantere Eventverarbeitung zu erhalten.
Ich habe die CommandRef entsprechend angepasst.

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Zitat von: hartenthaler am 23 Dezember 2016, 00:01:00Damit ist meine alte Lösung per EMONITOR dann wohl hinfällig.


Bevor hier mehr Arbeit reingesteckt wird:
Was ist denn an EMONITOR besser/schlechter, außer dass es auch "nur" ein inoffizielles Modul ist? Ich kenne es nicht und möchte es mir nicht so im Detail anschauen müssen, um das beurteilen zu können.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

igami

Zitat von: Loredo am 07 Januar 2017, 17:43:29
Bevor hier mehr Arbeit reingesteckt wird:
Was ist denn an EMONITOR besser/schlechter, außer dass es auch "nur" ein inoffizielles Modul ist? Ich kenne es nicht und möchte es mir nicht so im Detail anschauen müssen, um das beurteilen zu können.
Ich habe EMONITOR vorher getestet. Was mir daran nicht gefällt, dass es nur on und off unterstützt, also nicht für dimmer geeignet ist. Das war eigentlich der hauptgrund für das Modul hier. Weiterhin erzeugt es automatisch eine readingsGroup die bei mir dazu führt, dass mein fhem komplett abstürzt. Es wurde seit über einem Jahr nicht weiterentwickelt. Es ist so programmiert, dass es Attribute wie event-on-change-reading oder icon durch folgende Meldung blockiert:

EMONITOR_Attr: icon must at least one of: auto-save,disable,room,track-within-hour,types,use-power-event,verbose


Zitat von: Loredo am 05 Januar 2017, 23:55:04
Anbei ist jedoch eine überarbeitete Version.
Habe ich bisher noch nicht getestet, sondern nur angeschaut.
Die Änderung im powerMap Attribut finde ich sehr gut. Hatte das anfangs auch so vorgehabt, nur nicht gewusst wie das geht ::)
Werde jetzt hoffentlich nächste Woche mal dazu kommen das zu testen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Loredo

#21
Ok, das sind mir genug Gründe  8)

Hier die aktuelle Version:

# 170108-loredo:
#   initial hash defining powerMap default values for FHEM devices
#     (not in use so far)
#   permanent and standby power may be defined by using '*' => <value>
#   attributes renamed to be unique
#   new attributes to optionally rename power and energy reading to
#     avoid interference
#   let FHEM modules define their powerMap in
#     $modules{ $defs{$name}{TYPE} }{powerMap}{map}
#     or per device definition/instance in
#     $defs{$name}{'.powerMap'}{map}

Damit sind deine ToDo's glaube ich soweit abgearbeitet. Ich habe folgende neue aufgenommen:

# - let FHEM modules define their powerMap in $defs{$name}{powerMap}
# - help users setting powerMap attribute using internal hash database or
#   by copying from $defs{$name}{powerMap}


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

#22
Ich habe jetzt noch den Support für die direkte Modulunterstützung eingebaut.
Meinem Modul HP1000 habe ich den Support gerade bereits verpasst.

Das Attribut powerMap wird jetzt auch nur noch bei einer Änderung neu eingelesen und wird ansonsten dauerhaft im Device Hash mit abgelegt.
Außerdem ist es nun optional, wenn ein Modul die Definition entweder unter $modules{ $defs{$name}{TYPE} }{powerMap}{map} oder $defs{$name}{'.powerMap'}{map} selbst ablegt.
Das vom User angelegte powerMap Attribut erhält jedoch Vorrang, damit die Vorgaben aus Modulen bei Bedarf überschrieben werden können.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Vize

Ahoi,

wollte das Modul gerade mal testen, bekomme aber nach Eingabe von
reload 98_powerMap
folgende Fehlerausgabe:
Can't locate Unit.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/98_powerMap.pm line 53.
BEGIN failed--compilation aborted at ./FHEM/98_powerMap.pm line 53.


Kann mir jemand weiterhelfen?

Danke schonmal!

Gruß
Andreas

Loredo

Bitte immer FHEM neu starten und kein reload verwenden (alte Regel).
Außerdem fehlt dir Unit.pm, was für eine alte FHEM Installation spricht, die nicht auf dem aktuellen Stand ist.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Vize

#25
Jau, hast recht,

unit.pm und uconv.pm fehlten mir...habe auch lange kein update mehr gemacht...  :-[

Gruß
Andreas

EDIT: So, nu passt alles und es läuft...  Danke!

Vize

Ahoi,

so, habe das Modul nun erfolgreich mit einer E-Heizung (und HM-LC-SW1-FM) testen können.
Vielen Dank für dieses Modul!

Eine Frage hätte ich dazu noch. Das reading pM_energy wird ja, glaub ich, standardmäßig alle 15 min aktualisiert. Solange die Heizung läuft wird dieser Wert auch alle 15 min in das log des devices geschrieben. Wenn ich die Heizung nun vor der nächsten Aktualisierung des readings abschalte, wird zwar der zu diesem Zeitpunkt aktuelle Wert in das reading des devices geschrieben, aber nicht in das logfile. Dort findet man "nur" die Werte der jeweiligen "15-min-Aktualisierungen".
Kann man das irgendwie umsetzen, dass der Wert bei Ausschalten der Heizung ins log des devices geschrieben wird? Wenn ja, wie?

Danke schonmal für jegliche Hilfe!

Gruß
Andreas

igami

Das hört sich noch nach dem longpoll Problem an, welches momentan noch unerklärt ist.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Loredo

Nachdem Markus heute ganz doll geholfen hat das longpoll Problem zu beseitigen, habe ich gerade eine erste offizielle Version ins SVN eingecheckt, die ab morgen/heute früh per Update bereitsteht.

Support dafür wird es in der Forum Sektion "Unterstützende Dienste" geben. Falls ein Forum-Moderator hier mitliest: Verschieben dieses Threads wäre klasse  :)

Was in der nächsten Zeit noch nachkommen wird sind die Template Funktionen, um sich für bekannte Gerätemodelle vordefinierte Attribute erzeugen zu lassen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

igami

Zitat von: Loredo am 16 Januar 2017, 02:33:49
Nachdem Markus heute ganz doll geholfen hat das longpoll Problem zu beseitigen, habe ich gerade eine erste offizielle Version ins SVN eingecheckt, die ab morgen/heute früh per Update bereitsteht.
Worin bestand denn das Problem?

Zitat von: Loredo am 16 Januar 2017, 02:33:49
Was in der nächsten Zeit noch nachkommen wird sind die Template Funktionen, um sich für bekannte Gerätemodelle vordefinierte Attribute erzeugen zu lassen.
Also dafür hätte ich schon einen Ansatz mit meinem archetype modul. Das nutze ich selbst um die breite Masse zu pflegen.

Ich finde es wirklich schön, dass hier auch zusammen an Modulen entwickelt wird :)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED