Neues Modul: 98_InfratecPM für Infratec PowerModul PM x-IP

Begonnen von VB90, 21 Februar 2015, 12:04:36

Vorheriges Thema - Nächstes Thema

Damu

#135
Hallo
Ich benutze das Modul schon seit einigen Jahren das Modul erfolgreich.
Nun Habe ich bemerkt das ich eine Fehlermeldung im Log habe:
Zitat2018.12.23 18:53:48 1: PERL WARNING: Use of uninitialized value $b in concatenation (.) or string at ./FHEM/98_InfratecPM.pm line 411.
2018.12.23 18:53:48 1: PERL WARNING: Use of uninitialized value $b in concatenation (.) or string at ./FHEM/98_InfratecPM.pm line 403.

Das wäre dieser Teil:
sub InfratecPM_summaryFn($$$$) {
my ($FW_wname, $hash, $room, $pageHash) = @_;
        $hash            = $defs{$hash};
        my $state        = $hash->{STATE};
        my $name         = $hash->{NAME};
   
        return if(AttrVal($name, "stateFormat", ""));

        my ($icon,$html,$cmd,$i,$title,$txt,$a,$b);

$html  ="<nobr>";
        if (($state ne "defined") && ($state ne "error") && ($state ne "Initialized"))
        {
         for ($i=1; $i<= $hash->{PORTS}; $i++)
         {
          if  (defined($hash->{helper}{$i."state"}))
          {
           if ($hash->{helper}{$i."state"})
           {
            $cmd  =  "Out".$i." off";
            $title = $hash->{helper}{$i."name"}. " on";
            ($icon, undef, undef) = FW_dev2image($name,"on");
            ($a,$b) = split('title=\"on\"' , FW_makeImage($icon, "on"));
            $txt = $a."title=\"".$title."\"".$b;
           }
           else
           {
            $cmd   = "Out".$i." on";
            $title = $hash->{helper}{$i."name"}. " off";
            ($icon, undef, undef) = FW_dev2image($name,"off");
            ($a,$b) = split('title=\"off\"' , FW_makeImage($icon, "off"));
            $txt = $a."title=\"".$title."\"".$b;
           }

           $html .= "<a href=\"/fhem?cmd.$name=set $name ".$cmd."&room=$room&amp;room=$room\">$txt</a>&nbsp;&nbsp;";
         }
         }
        } else { $html .= $state };

        $html .= "</nobr>";
return $html;
}

1;

=pod
=begin html
<a name="InfratecPM"></a>
<h3>InfratecPM</h3>
<ul>
  <table>
  <tr><td>
  Device for Infratec Power Modules , see <a href='http://www.infratec-plus.de/produktlinien/powerdistribution/switched-pdu/pm4-ip/'>
  http://www.infratec-plus.de/produktlinien/powerdistribution/switched-pdu/pm4-ip/</a> for details
  <br>
  FHEM Forum : <a href='http://forum.fhem.de/index.php/topic,34131.0.html'>http://forum.fhem.de/index.php/topic,34131.0.html</a>
  </td>
</tr>
  </table>
  <a name="InfratecPMdefine"></a>
  <b>Define</b>
  <ul>
    <code>define &lt;name&gt; InfratecPM &lt;IP or FQDN&gt; [&lt;PORT&gt;] (Port 80 default)</code><br>
    example :<br>
    define myPM InfratecPM 192.168.0.100<br>
    define myPM InfratecPM myhost.dyndns.org 88<br>
  </ul>
  <br>
  <a name="InfratecPMset"></a>
  <b>Set </b>
  <ul>
    <li>Outx on (force)<br>
turns Outx on</li><br>
    <li>Outx off (force)<br>
        turns Outx off</li><br>
    <li>Outx toggle<br>
        toggle Outx</li><br>
  </ul>
  <a name="InfratecPMget"></a>
  <b>Get</b>
  <ul>
    <li>status<br>
        returns the status of all Outs
        </li><br>
  </ul>
  <a name="InfratecPMattr"></a>
  <b>Attributes</b>
  <ul>
    <li>autocreate<br>
        autocreate sub devices for each reading (default 1)<br>
        requires 98_InfratecOut.pm</li><br>
    <li>interval<br>
        polling interval in seconds, set to 0 to disable polling (default 30)</li><br>
    <li>timeout<br>
        seconds to wait for a answer from the Power Module</li><br>
    <li>user<br>
        defined user on the Power Module</li><br>
    <li>password<br>
        password for user</li>
  </ul>
<br>
</ul>
=end html


Zeile 403:  $txt = $a."title=\"".$title."\"".$b;
Zeile 411:  $txt = $a."title=\"".$title."\"".$b;

Vieleicht kann mir das jemand korrigieren?

Funktionieren tut noch alles, sieht einfach nicht mehr so schön aus:


DeviceOverview
Infratec_OG
   
title="Out9 off"   title="Out10 on"   title="Out11 on"   title="Out12 off"   title="Out13 off"   title="Out14 off"   title="Out15 on"   title="Out16 off"

Wzut

Das gleiche Thema hatten wir vor zwei Wochen hier -> https://forum.fhem.de/index.php/topic,35722.msg868339.html#msg868339
Die dort von mir vorgeschlagende Änderung sollte auch hier helfen. 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Damu

#137
Vielen Dank. Genial.
Funkioniert wieder ganz normal.
Die Ubiquiti Steckdose hab ich auch mal angeschaut, diese hat aber leider keine Bistabile Relais, wie das Infratec verbaut.
Steckdosen 1-4 sind bei mir über die Steckdose und 5-8 über eine APC.
Wobei Steckdose 5 der FHEM Sever und Steckdose 6 der FHEM Reserve Server ist.
Zitatsub InfratecPM_summaryFn($$$$) {
   my ($FW_wname, $hash, $room, $pageHash) = @_;
        $hash            = $defs{$hash};
        my $state        = $hash->{STATE};
        my $name         = $hash->{NAME};
   
        return if(AttrVal($name, "stateFormat", ""));

        my ($icon,$html,$cmd,$i,$title,$txt,$a,$b);

   $html  ="<nobr>";
        if (($state ne "defined") && ($state ne "error") && ($state ne "Initialized"))
        {
         for ($i=1; $i<= $hash->{PORTS}; $i++)
         {
          if  (defined($hash->{helper}{$i."state"}))
          {
           if ($hash->{helper}{$i."state"})
           {
            $cmd  =  "Out".$i." off";
            $title = $hash->{helper}{$i."name"}. " on";
            ($icon, undef, undef) = FW_dev2image($name,"on");
            ($a,$b) = split('title=\"on\"' , FW_makeImage($icon, "on"));
            $txt  = $a;
            $txt .= "title=\"".$title."\"".$b if($b);

           }
           else
           {
            $cmd   = "Out".$i." on";
            $title = $hash->{helper}{$i."name"}. " off";
            ($icon, undef, undef) = FW_dev2image($name,"off");
            ($a,$b) = split('title=\"off\"' , FW_makeImage($icon, "off"));
            $txt  = $a;
            $txt .= "title=\"".$title."\"".$b if ($b);

           }

           $html .= "<a href=\"/fhem?cmd.$name=set $name ".$cmd."&room=$room&amp;room=$room\">$txt</a>&nbsp;&nbsp;";
         }
         }
        } else { $html .= $state };
   
        $html .= "</nobr>";
   return $html;   
}

1;

=pod
=begin html

<a name="InfratecPM"></a>
<h3>InfratecPM</h3>
<ul>
  <table>
  <tr><td>
  Device for Infratec Power Modules , see <a href='http://www.infratec-plus.de/produktlinien/powerdistribution/switched-pdu/pm4-ip/'>
  http://www.infratec-plus.de/produktlinien/powerdistribution/switched-pdu/pm4-ip/</a> for details
  <br>
  FHEM Forum : <a href='http://forum.fhem.de/index.php/topic,34131.0.html'>http://forum.fhem.de/index.php/topic,34131.0.html</a>
  </td>
</tr>
  </table>

  <a name="InfratecPMdefine"></a>
  <b>Define</b>
  <ul>
    <code>define &lt;name&gt; InfratecPM &lt;IP or FQDN&gt; [&lt;PORT&gt;] (Port 80 default)</code><br>
    example :<br>
    define myPM InfratecPM 192.168.0.100<br>
    define myPM InfratecPM myhost.dyndns.org 88<br>
  </ul>
  <br>
  <a name="InfratecPMset"></a>
  <b>Set </b>
  <ul>
    <li>Outx on (force)<br>
   turns Outx on</li><br>
    <li>Outx off (force)<br>
        turns Outx off</li><br>
    <li>Outx toggle<br>
        toggle Outx</li><br>
  </ul>

  <a name="InfratecPMget"></a>
  <b>Get</b>
  <ul>
    <li>status<br>
        returns the status of all Outs
        </li><br>
  </ul>

  <a name="InfratecPMattr"></a>
  <b>Attributes</b>
  <ul>
    <li>autocreate<br>
        autocreate sub devices for each reading (default 1)<br>
        requires 98_InfratecOut.pm</li><br>
    <li>interval<br>
        polling interval in seconds, set to 0 to disable polling (default 30)</li><br>
    <li>timeout<br>
        seconds to wait for a answer from the Power Module</li><br>
    <li>user<br>
        defined user on the Power Module</li><br>
    <li>password<br>
        password for user</li>
  </ul>
<br>
</ul>
=end html

no_Legend

Hallo Zusammen,

ich hab mal ne Frage, gibt es eine Dokumentation zu der verwendeten API?
Da keine Bowser mehr Flash unterstützt, kann man eigentlich nicht mehr im Browser die Steckdosen leisten bedienen.

Ich würde dann gerne auch mit einfachen Boardmitteln ohne FHEM trotzdem die Ports schalten können.

Danke und Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Damu

#139
Hallo
Zitatich hab mal ne Frage, gibt es eine Dokumentation zu der verwendeten API?
Steht auf den ersten Seiten von hier.
Welches Infratec hast Du?

no_Legend

Zitat von: Damu am 07 Mai 2020, 20:51:49
HalloSteht auf den ersten Seiten von hier.
Welches Infratec hast Du?

Ich hab zwei pm4.
Einen mit PM4-IPS und eine normale PM4-IP

Aktuell würde ich gerne die Schalter per HTTP gerne Direkt in Homebridge einbinden.
Als Homebridge Plugin sieht folgendes ganze gut aus:
https://www.npmjs.com/package/homebridge-http-switch

Danke und Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Damu

#141
Hallo

Habe zwei PM8 IP (Ein PM8  IPS und ein PM8 IP)
Wobei der Unterschied warscheinlich nur in der aufgespielten Software besteht.
Hatte bei meinen mal Irtümicherweise die Falsch aufgespielt.
Hab eines mal auf POE umgebaut.
Das wird jetzt über ein TP-Link POE Splitter (TL-POE10R) mit Strom versorgt.
Den Trafo im Infratec hab ich entfernt.
Am Ausgang der Gleichrichterdioden hatte ich 15V gemessen.
Hab deshalb ein DC/DC 15V Trafo eingebaut.
Funktionieren tut das Ganze aber auch nur mit 12V.
Muss noch schauen ob der DC/DC Trafo für das Teil reicht.

Als DC/DC Wandler hab ich den:TracoPower TMDC 06 DC/DC-Wandler 400 mA 6 W
Am Eingang des DC Wandler hab ich 226mA (alle 8 Relais Ein) und 200mA (alle 8 Relais Aus) (12Volt).
Am Ausgang des DC Wandler 152mA und 132mA gemessen (15Volt).
Der DC /DC Wandler hat somit noch genügend Reserven.

Der Vorteil liegt hier bei den Bistabilen Relais und FHEM.
FHEM Schaltet am POE-Switch den Port ein und somit erhält der POE Splitter Strom und das Infratec wird somit mit Strom versorgt.
Danach kann FHEM am Infratec die Relais schalten.
Später schaltet FHEM über demn POE-Switch das Infratec und den POE-Splitter wieder ausschalten.