Modul LOGO für die Mikrosteuerung Siemens Logo 7/8

Begonnen von John, 18 Dezember 2014, 21:45:30

Vorheriges Thema - Nächstes Thema

mani

RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

#121
Sicheres Schalten mit FHEM

Bei der Optimierung meiner Brennersteuerung, wollte ich nun mit Hilfe des FHEM-Moduls HCS eine Totalabschaltung des Kessels erreichen. Die kann dies durch Aktivieren eines Ausgangs realisieren.

Natürlich ist hier elementar wichtig, daß FHEM valide ist, und wenn nicht, daß die Logo ein abgeschmiertes FHEM erkennt und die Totalabschaltung aufhebt.

Folgende Strategie:
Wenn FHEM die Totalabschaltung aktivieren will, muss der Merker M7 minütlich geändert werden.
Diese Änderung muss über mindestens 10 Minuten fortgeführt werden, erst dann ist die Logo bereit, die Totalabschaltung zu vollziehen.
Die stetige Änderung des Merkers ist fortan Voraussetzung für das Beibehalten der Totalabschaltung.

Wenn nun FHEM die Totalabschaltung wieder deaktivieren will, wird es die stetige Änderung von Merker M3 beenden.
Aber das passiert auch, wenn FHEM abstürzt, die Netzwerkverbindung unterbrochen ist oder warum auch immer keine Kommunikation
zwischen Logo und FHEM gegeben ist.

Im Fehlerfall wird der sichere Zustand eingenommen, die Deaktivierung der Totalabschaltung.

Beschreibung der Mimik:

Merker M7 wird regelmässig von FHEM verändert, wenn FHEM die Totalabschaltung realisieren will.
Dies kann man alternativ zu Testzwecken auch über die LOGO-Weboberfläche durch Taster C1 realisieren.

Beide Signale werden über B091 verodert und dem Paar B067 und B070 zugeführt, die einzig die Aufgabe haben
nach einer steigenden und fallenden Flanke einen Puls zu erzeugen.

Dieser triggert das Wischer-Relais B073 , das den Puls auf 3 Minuten verlängert.
(FHEM kann sich also für das erneute Ändern bis zu 3 Minuten Zeit lassen)

B032 realisiert nun eine Einschaltverzögerung über 10 Minuten.
(solange muss FHEM mindestens für eine Änderung sorgen, damit überhaupt etwas geschalten wird)

Wenn dann auch noch der Brenner (U006) inaktiv ist, kann eine Totalabschaltung über Ausgang Q4 erfolgen.

Bleibt, der Wechsel von M7 aus, wird spätestens nach 3 Minuten das Wischer-Relais B073 seinen Ausgang deaktivieren und
die Totalabschaltung beenden.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

moonsorrox

Zitat von: John am 03 März 2015, 19:54:58
@moonsorrox
ich denke solche "Inkompatibilitäten" muss structure ohnehin lösen.

aber das Attribut "<struct_type>_map"
sieht doch verheissungsvoll aus ?
ich dachte mir schon soetwas, besser gesagt das structure dies regeln sollte.
Das Attribut hatte ich ich auch schon gesehen, aber für meinen Fall mit 0 und 1 dachte ich wird das nichts, aber auch ich kenne structure nicht gut, habe nur eine in Betrieb und die ist einfach  ;)
aber ich bin jetzt auf folgendes gestoßen gut das du es nochmal erwähnt hast...

ZitatreadingName
nehme den Wert von readingName anstatt von state

mal schauen ob ich das hinbekomme... :)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

Werte überprüfbar von FHEM zur LOGO übertragen.

Wenn man in der Logo nun Daten von FHEM benötigt, kann man auch dies absichern.

In meinem Fall wollte ich die Aussentemperatur (bezogen über Yahoo-Wetter) in der Logik der Logo weiterverwenden.
Auch hier gilt, daß die Logo erkennen muß, wenn die Übertragung von FHEM nicht mehr funktioniert.
Das Verfahren ist angelehnt an das zuvor beschriebene "sichere Schalten".

Es wird eine Hilfsvariable übertragen, die bei jeder Übertragung ihren Status ändern.

Wenn sich diese innerhalb einer festgelegten Zeit nicht mehr ändert "weiss" die Logo , daß man den FHEM-Werten nicht mehr
trauen kann und kann einen sicheren Ersatzwert aktivieren.

Rezept:

Zunächst erzeugen wir einen Dummy der als Zähler arbeiten soll.
Er wird von 0.225 zählen und beginnt danach wieder mit 0.

define LogoWatchdog dummy

Nachdem der Dummy geändert wurde, soll er in die Logo geschrieben werden.
Hierfür ist eine Variable zu definieren.

define HZA.FH.Watchdog LOGO_ANALOG V300 i2

Ein Auszug aus meiner Transfer-Sub, die den ganzen Mechanismus umsetzt.

sub LogoTransfer()
{
    my $llevel  = 2;
    my $isLogoConnected = ReadingsVal( "LOGO8", "state", "disconnected" );
    my $logoWatchdog = ReadingsVal( "LogoWatchdog", "state", 0 );
    my $cmd;
   
    # Logo muss connected sein, sonst macht übertragen keinen Sinn
    if ($isLogoConnected eq 'connected')
    {
      # FHEM dummy LogoWatchdog aktualisieren
      $logoWatchdog ++;
      $logoWatchdog=0 if ($logoWatchdog>255);
     
      $cmd = 'set LogoWatchdog '.$logoWatchdog;
      fhem($cmd);

      # Wert nun auch in der Logo absetzen
      $cmd='set HZA.FH.Watchdog value '.$logoWatchdog;
      fhem($cmd);
     
      # aussentemperatur ermitteln
      my $atemp   = ReadingsVal( "wt", "temp_c", "0" ); 
      $cmd = 'set HZA.FH.Aussentemperatur value '.$atemp;
      UtilsHans_Log( "", $llevel, $cmd );
      fhem($cmd);
      ...
}   
   

Das High- Byte des Zählers liegt auf VB300, das Low-Byte auf VB301.

Das niederwertigste Bit des Zählers liegt also auf VB301.0
Es ist bestens geeignet einen Zeitüberwachung in der Logo zu triggern.

Die Logo kann auf diese Bit über einen Netzwerkeingang zugreifen, der definiert ist wie im Anhang beschrieben.

Nun werden noch mit der User Defined Function U002 die Flanken ausgewertet. Der Ausgang ist von U002 ist high
wenn die Flanken vorhanden sind andernfalls low, also muss dieser noch invertiert werden, um mit aktiven Status
einen Fehler anzuzeigen.

Somit zeigt  Ausgang von B069 den FHEM-Übertragungsfehler an.

User defined Functions

Wenn man bestimmte Kombinationen von Blöcken öfters benötigt, kann man einen neuen Block definieren, der
als Black-Box bzw. völlig neuer Block erscheint und eben die Funktion der Ursprüngsblöcke übernimmt.

Die Auflösung von U002 sieht man im 2. Bild.

UDF stellen somit ein wertvolles Hilfsmittel dar.


John


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

der-Lolo

#124
Mensch bin ich eingerostet...
Ausgangslage ist, die Logo soll einen Wechselschalter darstellen der von FHEM aus betätigt werden kann.
Das habe ich nun in der Simulation hinbekommen - I1 und I2 sind die korrespondierenden der Wechselschaltung Q1 der Lampendraht der I3 wird später der FHEM Merker.
Hat mich ungefähr ne Stunde gekostet dieses simple Konstrukt zu basteln.

Nun habe ich das problem was hier schon beschrieben wurde, der Merker soll ja auch den Zustand des Ausgangs anzeigen.
Ich komm nicht drauf - hat jemand eine Idee?

Ausserdem habe ich meine Logo8 gestern bekommen - wie komme ich nun an die Software? Ich möchte das Programm ja schliesslich auch übertragen... Muss ich irgendwo eine CD bestellen, oder gibt's nen Download?

John

@der-Lolo

anbei mein Vorschlag.

Wenn I3 und I4 ungleich sind, wird Q2 geschalten.

I4 lässt sich mit C1 (wird später Merker, der v. FHEM gesteuert wird) invertieren, so daß du praktisch via FHEM den Wechselschalter
beeinflussen kannst.

Du brauchst einen Lizenzschlüssel für die Software, den kannst du dort erwerben, wo du auch die Logo gekauft hast (ca. 50 EUR).
Beim Installieren fragt das Setup-Programm danach. Ansonsten installiert es sich als Demo-Variante.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

der-Lolo

Danke John, das funktioniert auch auf anhieb - XOR hatte ich nicht vor Augen...
Nun soll aber ja C1 auch den zustand von Q2 zeigen, für die Visualisierung, hast du dazu noch eine Idee?

John

ZitatNun soll aber ja C1 auch den zustand von Q2 zeigen, für die Visualisierung, hast du dazu noch eine Idee?

Wenn FHEM auch einen Wechselschalter haben soll, kann dieser nicht gleichzeitig den Zustand von Q2 anzeigen.
Das ist ja gerade die Eigenschaft von Wechselschaltern, daß es kein eindeutiges EIN/AUS gibt.

Ich denke ich habe dein Problem noch nicht richtig verstanden.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

der-Lolo

Ziel ist ein devstateicon zu haben welches auf c1 wirkt und den Zustand von q2 zeigt.

moonsorrox

Zitat von: der-Lolo am 06 März 2015, 11:00:28
Ziel ist ein devstateicon zu haben welches auf c1 wirkt und den Zustand von q2 zeigt.
das geht glaube ich nur mit einem zusätzlichem Merker, den Q2 kannst du nicht direkt von Fhem schalten.
Ich habe dafür ein Merker eingebaut.
Somit habe ich dafür einen sogenannten Taster der auch anzeigt wenn er geschaltet hat. Die Qs sind bei mir nur zur reinen Status Anzeige.
Hier mal das List vom Merker:
Internals:
   CFGFN      ./FHEM/System.cfg
   DEF        M3
   NAME       M3_LichtTerrasse
   NR         1726
   PLCDev     Logo8
   STATE      Aus
   TYPE       LOGO_BINARY
   VERSION    V1.02
   bit        0
   dpAddress  M3
   index      3
   range      M
   readOnly   0
   Readings:
     2015-03-06 12:21:54   state           0
     2015-03-06 12:21:54   value           0
Attributes:
   PLCDev     Logo8
   alias      Taster Terrasse
   devStateIcon Ein:general_ein@Crimson:Aus Aus:general_aus@lightgreen:Ein
   eventMap   0:Aus 1:Ein
   icon       taster@LightSeaGreen
   room       HWR
   room_map   0:off 1:on
   userattr   room_map structexclude


und hier das list vom Logo Ausgang:
Internals:
   CFGFN      ./FHEM/System.cfg
   DEF        Q3
   NAME       LichtTerrasse
   NR         1740
   PLCDev     Logo8
   STATE      0
   TYPE       LOGO_BINARY
   VERSION    V1.02
   bit        0
   dpAddress  Q3
   index      3
   range      Q
   readOnly   0
   Readings:
     2015-03-06 12:23:40   state           0
     2015-03-06 12:23:40   value           0
Attributes:
   PLCDev     Logo8
   alias      Beleuchtung Terrasse - nur Anzeige
   devStateIcon 1:li_wht_on 0:li_wht_off
   group      Logo 8 - Ausgänge
   icon       scene_terrace@LightSeaGreen
   room       AußenLicht,HWR
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

Ich denke das Problem sollte man dort lösen, wo die Ursache ist, in FHEM.

Ein Ausgang und ein Eingang sind eben 2 unterschiedliche Dinge. (Entitäten)

Vielleicht ist readingsProxy eine Lösung. Darüber lässt sich ein neues virtuelles Device bauen.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

moonsorrox

ich habe mal eine Frage zu folgender Fehlermeldung
push on reference is experimental at ./FHEM/00_LOGO.pm line 514, <$fh> line 132.
perl: symbol lookup error: /usr/local/lib/snap7p.so: undefined symbol: Perl_gv_init


nun startet wohl mein Fhem nicht mehr weil er hier irgend etwas nicht findet.
Kann das an der Perl Version liegen leider kann ich diese nicht mehr abfragen da fhem nor running ist.

Was kann ich tun
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

die Version kann man auch ohne FHEM abfragen.

perl -v

liefert

ZitatThis is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabihf-thread-multi-64int
(with 89 registered patches, see perl -V for more detail)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

moonsorrox

#133
habe ich mal gemacht...
This is perl 5, version 20, subversion 2 (v5.20.2) built for arm-linux-gnueabihf-thread-multi-64int
(with 40 registered patches, see perl -V for more detail)


ich habe jetzt folgendes gemacht damit mir Fhem erst einmal läuft.
Das 00_Logo.pm gelöscht dann den Server gestartet und das Modul wieder eingefügt, somit ist Fhem erst mal wieder am laufen...

Nun denke ich muss irgend etwas erneuert werden, evt. das Modul angepaßt oder was sollte ich machen..?

EDITH:// nach einem Neustart von Fhem wird aber wohl das Logo Modul nicht mehr gestartet, also ich habe keine Ansicht vom Logo ich sehe nur ein leeres Feld in Fhem.

Hier auch mal die fheminfo
ZitatFhem info:
  Release  : 5.6
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.20.2
  uniqueID : d2e1c0f2022cddbf7cd6ff8672bbadf7
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

#134
Das Modul wurde nicht geändert.

funktioniert folgendes ?
./logo.sh snapDemo <logo-ip>

Ggf solltest du das Modul neu installieren.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP