Fhem Funksteckdosen an LOGO 8

Willkommen Foren LogoControl Fhem Funksteckdosen an LOGO 8

7 Beiträge anzeigen - 1 bis 7 (von insgesamt 7)
  • Autor
    Beiträge
  • #3032
    jailbreaker07
    Teilnehmer

    Hallo,
    ich bin gerade dabei einen Funktaster welcher über Fhem laufen soll mit der Logo zu verbinden.
    Folgendes habe ich unteren anderen gemacht… den Schalter in Fhem konfiguriert sowie die untere Anleitung befolgt:

    „Wenn es nur ein Sensor ist, reicht es im LOGO-Schaltprogramm einen einfachen Netzwerkeingang einzubauen und auf die VM-Adresse zu konfigurieren, an die FHEM den Zustand schreibt (siehe „comment“-Attribut in „FHEM-Gerät konfigurieren“). Damit haben wir den aktuellen Zustand immer auf dem Netzwerkeingang.“

    Jedoch kommt die Status Änderung nicht bei der Logo an…. Netzwerkeingang habe ich gesetzt….
    Hat sich da evtl mittlerweile was geändert? Schließlich sind in Logo Control ja mehrere Device möglich…

    vielen dank

    Gruß
    T.Meißner

    #3036
    jailbreaker07
    Teilnehmer

    Hallo,
    habe bis jetzt leider nicht herausgefunden woran es liegt…. Bis jetzt habe ich in FHEM wohl nur einen Schalten als Dummy Typ eingerichtet zum testen….

    vielen dank für die Hilfe…

    Gruß

    T.MEißner

    #3038
    admin
    Administrator

    Hi, ja das Perl-Sript für FHEM müsste noch auf die neue Version von LogoControl anpassen, da nun ja mehrere Logos adressiert werden können. Da hatte ich noch keine elegante Lösung für und es daher erst mal aufgeschoben. Momentan bin ich noch im Urlaub, schau es mir danach noch mal genauer an. Bei mir kommuniziert FHEM aktuell nur mit einer der Logos, daher hab ich die PLC fest in das Perl-Script eingetragen. Evtl. hilft dir das auch übergangsweise (bei mir heißt die Logo „main“ in der URL, das musst du anpassen):

    package main;
    use strict;
    use warnings;
    use POSIX;
    sub
    myUtils_Initialize($$)
    {
     my ($hash) = @_;
    }
    
    ##########################################################
    # LogoControl Notify Handler
    #
    sub SetLogoControlState($)
    {
     my ($obj) = @_;
     my $comment = AttrVal($obj,"comment","");
    
     if ($comment =~ /LogoStateAddress=(\d+)\.(\d)/ ){
      my $url = "http://localhost:8088/rest/plcs/main/bytes/$1/bits/$2";
    
      if (Value($obj) eq "on" || Value($obj) eq "open"){
       GetFileFromURL($url."?set=1" );
      }
      elsif (Value($obj) eq "off" || Value($obj) eq "closed"){
       GetFileFromURL($url."?set=0" );
      } 
     }
     return,
    }
    1;
    #3040
    jailbreaker07
    Teilnehmer

    Hallo,

    hallo das habe ich angepasst undausprobiert….jedoch funktioniert es nicht….

    Im Log file steht:

    „2016.08.21 00:15:44 3: logoControlNotifier return value: Undefined subroutine &main::SetLogoControlState called at (eval 99) line 1.“

    Kannst dich auch gerne nach dem Urlaub drum kümmern….
    schönen Urlaub noch.

    Gruß

    Thorsten

    #3049
    jailbreaker07
    Teilnehmer

    Hey,

    die Fehlermeldung kommt nicht mehr im Log… aber passieren tut auch nichts an der Logo. Das Script wird bei jedem Tastendruck ausgeführt, wenn ich den Namen der pm Datei zum testen ändere, dann kommt eine Fehlermeldung… Also führt er sie aus….

    Der geändert Inhalt der 99_logoUtils.pm lautet:

    package main;
    use strict;
    use warnings;
    use POSIX;
    sub
    myUtils_Initialize($$)
    {
     my ($hash) = @_;
    }
    
    ##########################################################
    # LogoControl Notify Handler
    #
    sub SetLogoControlState($)
    {
     my ($obj) = @_;
     my $comment = AttrVal($obj,"comment","");
    
     if ($comment =~ /LogoStateAddress=(\d+)\.(\d)/ ){
      my $url = "http://localhost:8088/rest/plcs/myLogo1/bytes/$1/bits/$2";
    
      if (Value($obj) eq "on" || Value($obj) eq "open"){
       GetFileFromURL($url."?set=1" );
      }
      elsif (Value($obj) eq "off" || Value($obj) eq "closed"){
       GetFileFromURL($url."?set=0" );
      } 
     }
     return,
    }
    1;

    danke für die schnelle Hilfe…. 🙂

    Gruß

    Thorsten

    • Diese Antwort wurde vor vor 7 Jahren, 8 Monaten von jailbreaker07 bearbeitet.
    #3051
    jailbreaker07
    Teilnehmer

    Hallo,

    müsste mit folgender Url nicht der Netzwerkeingang 110.1 auf 1 gesetzt werden? Ich denke mal so ist die Url aufgebaut die das Script aufruft….

    http://192.168.1.35:8088/rest/plcs/myLogo1/bytes/110/bits/1?set=1“

    als Antwort kommt true in der Logo sehe ich aber nichts…. Ich habe den Netzwerkeingang auf den Trg Eingang eines RS Flipflops zum testen gesetzt….

    Gruß

    Thorsten

    #3052
    admin
    Administrator

    Hi,

    doch, der Aufruf „http://192.168.1.35:8088/rest/plcs/myLogo1/bytes/110/bits/1?set=1“ müsste genau das machen: in der myLogo1 das Bit 1 von Byte 110 auf 1 setzen. Das true welches dann zurückkommt sagt nur aus, dass die Operation erfolgreich war und nicht welcher Wert geschrieben wurde.

    Zu Kontrolle des geschriebenen Werts mach danach den gleichen Aufruf ohne das ?set=… also ein:
    http://192.168.1.35:8088/rest/plcs/myLogo1/bytes/110/bits/1
    Dieser Aufruf liest dann das Bit aus der Logo: true=1, false=0

    Das Lesen sollte also immer den Wert zurück geben, den du vorher geschrieben hast. Ist das nicht der Fall, vermute ich mal, das die Speicheradresse evtl. noch wo anders im LogoProgramm geschrieben wird und es zu einem Konflikt kommt.

7 Beiträge anzeigen - 1 bis 7 (von insgesamt 7)
  • Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.