Autor Thema: neues Modul 98_powerMap  (Gelesen 7379 mal)

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1885
  • RTFM
Antw:neues Modul 98_powerMap
« Antwort #15 am: 01 Januar 2017, 14:49:48 »
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
FHEM Module: archetype, LuftdatenInfo, monitoring, Nmap
FHEM Module ToDo: alexaWebApp, DaikinD3nIU, DaikinHTTPinterface, TBot_Dialog
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1885
  • RTFM
Antw:neues Modul 98_powerMap
« Antwort #16 am: 02 Januar 2017, 09:36:38 »
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
FHEM Module: archetype, LuftdatenInfo, monitoring, Nmap
FHEM Module ToDo: alexaWebApp, DaikinD3nIU, DaikinHTTPinterface, TBot_Dialog
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #17 am: 05 Januar 2017, 14:06:15 »
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.
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #18 am: 05 Januar 2017, 23:55:04 »
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.

FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_energy
« Antwort #19 am: 07 Januar 2017, 17:43:29 »
Damit 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.
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1885
  • RTFM
Antw:neues Modul 98_powerMap
« Antwort #20 am: 08 Januar 2017, 08:28:23 »
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

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
FHEM Module: archetype, LuftdatenInfo, monitoring, Nmap
FHEM Module ToDo: alexaWebApp, DaikinD3nIU, DaikinHTTPinterface, TBot_Dialog
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #21 am: 08 Januar 2017, 16:31:03 »
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
« Letzte Änderung: 09 Januar 2017, 02:14:37 von Loredo »
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #22 am: 08 Januar 2017, 22:56:49 »
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.
« Letzte Änderung: 09 Januar 2017, 02:12:24 von Loredo »
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline Vize

  • Full Member
  • ***
  • Beiträge: 402
Antw:neues Modul 98_powerMap
« Antwort #23 am: 11 Januar 2017, 21:28:27 »
Ahoi,

wollte das Modul gerade mal testen, bekomme aber nach Eingabe von
reload 98_powerMapfolgende 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

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #24 am: 11 Januar 2017, 21:29:48 »
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.
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline Vize

  • Full Member
  • ***
  • Beiträge: 402
Antw:neues Modul 98_powerMap
« Antwort #25 am: 11 Januar 2017, 21:36:42 »
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!
« Letzte Änderung: 11 Januar 2017, 21:48:41 von Vize »

Offline Vize

  • Full Member
  • ***
  • Beiträge: 402
Antw:neues Modul 98_powerMap
« Antwort #26 am: 12 Januar 2017, 17:55:56 »
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

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1885
  • RTFM
Antw:neues Modul 98_powerMap
« Antwort #27 am: 12 Januar 2017, 18:22:45 »
Das hört sich noch nach dem longpoll Problem an, welches momentan noch unerklärt ist.
Pi3 mit fhem.cfg + DbLog/logProxy
FHEM Module: archetype, LuftdatenInfo, monitoring, Nmap
FHEM Module ToDo: alexaWebApp, DaikinD3nIU, DaikinHTTPinterface, TBot_Dialog
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2808
  • ~ Challenging Innovation ~
Antw:neues Modul 98_powerMap
« Antwort #28 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.

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.
FHEM-Module: ENIGMA2, GEOFANCY, ONKYO_AVR, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, powerMap, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM 5.9dev auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs
ONKYO TX-NR626, Philips 55" PFL8008S, Sonos 1xS1, 1xS3, 2xS5

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1885
  • RTFM
Antw:neues Modul 98_powerMap
« Antwort #29 am: 16 Januar 2017, 06:19:43 »
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?

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
FHEM Module: archetype, LuftdatenInfo, monitoring, Nmap
FHEM Module ToDo: alexaWebApp, DaikinD3nIU, DaikinHTTPinterface, TBot_Dialog
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben.

 

decade-submarginal