Autor Thema: ERROR: Malformed prototype for  (Gelesen 3411 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17547
  • s/fhem\.cfg/configDB/g
Antw: ERROR: Malformed prototype for
« Antwort #15 am: 10 November 2020, 19:45:49 »
Wenn man an Prototypen was ändert, hilft in aller Regel ein FHEM Neustart mehr als das bloße Neuladen der Moduldatei nach dem Edit. Das führt immer mal zu solchen Effekten wie hier im Thread aufgetreten.

(man könnte das jetzt tiefergehend erklären, aber dazu habe ich jetzt keine Lust. Einfach merken: Neustart nach Änderung von Prototypen, auch wenn man sie löscht.)

-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2923
  • Anti-Statement befreite Zone ;)
Antw: ERROR: Malformed prototype for
« Antwort #16 am: 10 November 2020, 19:46:57 »
Jetzt geht es los, ich habe für mich mal schnell ein Programm geschrieben um nicht alles per Hand ändern zu müssen bei über 200 Gruppenadresse und nicht mein bestes geben, ich bitte dies zu entschuldigten :D Aber danke für eure Vorschläge, welche ich übernehmen werde, wenn ich die Sub feste einplane und schön machen werde ;)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2923
  • Anti-Statement befreite Zone ;)
Antw: ERROR: Malformed prototype for
« Antwort #17 am: 10 November 2020, 19:47:47 »
Wenn man an Prototypen was ändert, hilft in aller Regel ein FHEM Neustart mehr als das bloße Neuladen der Moduldatei nach dem Edit. Das führt immer mal zu solchen Effekten wie hier im Thread aufgetreten.

(man könnte das jetzt tiefergehend erklären, aber dazu habe ich jetzt keine Lust. Einfach merken: Neustart nach Änderung von Prototypen, auch wenn man sie löscht.)

Das habe ich gemerkt und mir gedacht aber top, dass du es nochmals bestätigst. Dann lag ich nicht so falsch mit meiner Vermutung :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2923
  • Anti-Statement befreite Zone ;)
Antw: ERROR: Malformed prototype for
« Antwort #18 am: 10 November 2020, 19:48:55 »
Ach und die Var $anz hatte ich am Anfang genutzt und ist dann durch Copy und Paste einfach drinnen geblieben. Hast recht, dass die nix bringt aktuell :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17547
  • s/fhem\.cfg/configDB/g
Antw: ERROR: Malformed prototype for
« Antwort #19 am: 10 November 2020, 19:54:55 »
Du rufst da vierzehn mal substr($device,4,4) auf - das könntest du auch auf einen Aufruf + eine Variable eindampfen.


sub KNX_rename {
  my @devices = devspec2array("NAME=KNX.*");
  my $anz = 0;
  my ($ugr, $gr);

  foreach my $device (@devices) {

    given (substr($device,4,4)) {
  when ('0101') { KNX_TypAendern($device, $anz); next; };
  when ('0102') { KNX_TypAendern($device, "1.001", "1/2/", $anz); next; };
      # usw...
      default {}
    }
  }
}

Wenn ja hätte ich auch noch einen der mich inwischen oft anspringt : der unötige Wechsel FHEM->Perl->FHEM usw.
Bsp : fhem("defmod  -> CommandDefMod :)

Du hast zwar prinzipiell recht, aber wenn jemand mit fhem() arbeitet, finde ich das völlig ok und vor allem für viele Anwender einfacher zu verstehen.

Und wenn Du schon mit Command<...> um die Ecke kommst: man könnte ja auch gleich AnalyzeCommandChain() verwenden ;)
« Letzte Änderung: 10 November 2020, 20:07:51 von betateilchen »
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1790
Antw: ERROR: Malformed prototype for
« Antwort #20 am: 10 November 2020, 20:04:11 »

sub KNX_rename {
  my @devices = devspec2array("NAME=KNX.*");
  my $anz = 0;
  my ($ugr, $gr);

  foreach my $device (@devices) {

    given (substr($device,4,4)) {
  when ('0101') { KNX_TypAendern($device, $anz); return; };
  when ('0102') { KNX_TypAendern($device, "1.001", "1/2/", $anz); return; };
      # usw...
      default {}
    }
  }
}

s/return/next/;

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17547
  • s/fhem\.cfg/configDB/g
Antw: ERROR: Malformed prototype for
« Antwort #21 am: 10 November 2020, 20:08:39 »
s/return/next/;

Danke für den Hinweis, das war ein copy&paste Fehler meinerseits.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2923
  • Anti-Statement befreite Zone ;)
Antw: ERROR: Malformed prototype for
« Antwort #22 am: 10 November 2020, 20:17:29 »
ah given when heißt das bei Perl. Habe nach Switch und Case gesucht aber gelesen, dass man Probleme bekommen könnte. Wieder was gelernt. Da bin ich ja froh, dass MyUtils Dienstag ist und ihr meine hässlichen Code so schön gemacht habt :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

 

decade-submarginal