neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

Begonnen von charlie71, 12 August 2014, 15:33:23

Vorheriges Thema - Nächstes Thema

pc1246

Hallo Christian

Verstehe ich das richtig:

  • Wenn bei Dir ein Minus ( - ) davorsteht, dann ist das alt!
  • Wenn bei Dir ein Plus ( + ) davorsteht, dann ist das neu!
  • Mit denn @@ kennzeichnest Du die Position?
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

Porsti

Hallo zusammen,

ich mache gerade meine ersten schritte mit dem FHEM. Komme aus der SPS Technik und daher finde ich dieses zusammenspiel sps und fhem sehr isteressant.
Ich habe einen Raspberry und dalles s installiert wie aus den vorherigen Themen.
Perl und Libnodave installiert und die Dateien in die Ordner wie in der readme beschrieben kopiert.
Jetzt will ich den define ind die fhem config schreinben und bekomme dann direkt die Meldung: Cannot load module S7

Da ich leider noch sehr unerfahren bin scheiter ich schon seid 3 Stunden und 2 neuistallationen an diesem Thema.
Ich hoffe das mir da jemand einen Tipp geben kann.

Gruß
Thomas
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

Cnetrwal

Hallo Christoph

Ja das ist so bei einem diff.
Die Files findest Du im angehängten Zipfile.
Das diff habe ich nur zum besseren Verständnis gemacht

SG
Christian

Cnetrwal

Hallo Thomas

Versuch mal die Files aus meinem ZIP.
Da sind die meisten Fehler ausgebessert.
Ich habe noch weitere gefunden, aber noch keine Zeit gehabt die
Files hochzuladen.

SG Christian

Porsti

#34
Hallo Christian,

danke erst einmal für eine Arbeit und Mühen mit dem Script.
Habe die Dateien ausgetauscht und leider kommt im FHEM immer noch diese Fehlermeldung: Cannot load module S7

Habe die folgende installation wie hier im Beitrag durchgeführt
OS, PERL
LIBNODAVE
LIBNODAVE-PERL
wie bei der Antowrt 3

danach habe ich wie in der readme die folgenden Dateien aus deiner Zip Datei kopiert:

libnodave.patch umbenannt in libnodave.so und nach /usr/lib/ kopiert
alle Dateien aus dem zip unter FHEM nach /opt/fhem/FHEM/ kopiert
Nodave.pm nach /usr/lib/perl/5.14.2 da es die Ordner wie in der readme in meinem system nicht gibt.

System:
Bananapi ARM Cortex-A7 Dual-Core
System: Raspbian_For_BananaPi_v3.1

In hoffnung auf Hilfe.

Thomas

____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

Cnetrwal

Hallo Thomas

Ich denke Du hast ein Problem mit der libnodave Installation.
das beste ist die libnodave Version 0.8.5.1 zu verwenden.
http://sourceforge.net/projects/libnodave/files/libnodave/libnodave-0.8.5.1.tar.gz/download

die entpacken
tar -xzvf libnodave-0.8.5.1.tar.gz
cd libnodave-0.8.5.1

im Makefile die den DARM_FIX aktivieren wenn du einen ARM Prozessor verwendest
und die libnodave installieren

make clean
make
sudo make install


danach meinen Patch einspielen:
~/dev/libnodave-0.8.5.1 $ patch -p0 < ../fhem_S7/libnodave.patch

danach den Perl Modul bilden und installieren
cd PERL
perl Makefile.PL
make
make test
sudo make install

das sollte es sein

SG

Christian

Porsti

Hallo Christian,

bin gerade dabei das System neu aufzusetzten und habe auch die libnodave 8.5.1 installiert und veruche gerade den patch einzuspielen. Leider kommt da die folgende Meldung:

Befehl:
~/libnodave-0.8.5.1 $ patch -p0 < ../fhem_S7/libnodave.patch       

Der libnodave Ordner liegt bei mir direkt im Homverzeichniss und nicht im dev, daher die änderung im Befehl.

Antwort:
-bash: /home/bananapi/libnodave-0.8.5.1: Is a directory

____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

Cnetrwal

Hallo Thomas
"~/libnodave-0.8.5.1 $ " ist der shell prompt  ;)

der Befehl ist

patch -p0 < ../fhem_S7/libnodave.patch


SG

Christian

charlie71

Hallo Leute,

sorry dass ich den Thread nicht bereut habe.

Ich möchte etwas kurz erklären. Damit perl mit der lib nodave zusammenarbeit, war es notwendig die libnodave Datei Nodave.xs anzupassen. In dieser Datei fehlten die Funktionsaufrufe für  setMaxPDUlength(),  daveSetCommunicationType(). Ohne diese Funktionen klappt aber die Kommunikation mit der S7/Logo nicht.
Diese Datei muss aber für jede Plattform kompiliert werden.
Hinweis an alle Logo Besitzer ohne das setzten der korrekten setMaxPDUlength() kann keine Kommunikation aufgebaut werden.

Außerdem habe ich dass Modul in der Zwischenzeit ein wenig erweitert so dass mehrere Readings unterstützt werden. zB Analoge Werte können einmal pro Minute eingelesen werden. Digitale Eingänge die zB Schalterstellungen repräsentieren können wesentlich schneller/öfter eingelesen werden.

Bitte Code Änderungen an mich schicken ich werde Sie einpflegen.
lG
Charlie71

Porsti

Hallo Charli71,

habe gerade wie auch oben beschrieben die ersten Schritte mit fhem und einer logo gemacht.
Das lesen aus der Logo klappt jetzt wunderbar.
Jetzt scheitere ich nur daran das wir 0BA7 sondern die neue 0BA8 haben und dort der VM/Adressbereich nicht mehr so wie bei der 7'ner ist. Beim schreiben in den DB bekommen wir immer probleme mit dem Writebuffer.

Hier mal ein Beispiel:

0BA7 I1 = DB1.dbx923.0
0BA8 I1 = DB1.dbx1024.0

0BA7 Q1 = DB1.dbx942.0
0BA8 Q1 = DB1.dbx1064.0

Daher haben wir hier

attr logo19 WriteDB-Config 1 923 61

nach

attr logo19 WriteDB-Config 1 1024 250

geändert um auf diese neuen Adressbereiche zugreifen zu können.
Diese klappt 2-3 mal und dann stürt der fhem ab.

Noch mal ein großes Dankeschön an Christian für die Hilfe hier im Forum.
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

charlie71

Hallo Porsti,

Ich hab mir mal das angeschaut, aktuell wird die Startposition mit 1024 begrenzt. Das was für 0BA7 passend jedoch für die 0BA8 nicht mehr.
Ich kann gerne den Code anpassen, jedoch habe ich keine 0BA8 zum Testen.

lG
Charlie71

pc1246

Zitat von: charlie71 am 01 Dezember 2014, 22:10:28
Schnipp....

Außerdem habe ich dass Modul in der Zwischenzeit ein wenig erweitert so dass mehrere Readings unterstützt werden. zB Analoge Werte können einmal pro Minute eingelesen werden. Digitale Eingänge die zB Schalterstellungen repräsentieren können wesentlich schneller/öfter eingelesen werden.

Schnipp...

Hallo Charlie
Wie finden wir denn Dein geaendertes Modul? Du hast es ja nicht angehaengt, und im ersten Post hast Du auch nichts ausgetauscht!?
Gruss und Danke
Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

charlie71

Hallo

hier das neue Modul V1.1.
Änderungen:
1) Es werden nun mehrere Readings unterstützt (Idee: Trennung von langsamer Info ZB für Datalogging von schneller Info zB Schalterinfo)
2) Es kann nun auch von Adressen > 1024 gelesen werden (notwendig für Logo 0BA8)
3) Ich habe für den ARM Prozessor (raspberry pi) auch eine vorkompilierte libnodave.so inkludiert

Bitte um Feedback ob Modul funktioniert.

Sonstiges:
Die Portierung für die Freetz Plattform habe ich eingestellt, da hier nur eine eingeschränkte perl Umgebung zur Verfügung steht. Bin jedoch gerne behilflich wenn es jemand versuchen möchte.


lG
Charlie71

Cnetrwal

Hallo Charly71

Das sind die von mir geänderten Module.
im Zipfile findest Du auch einen Patch für das Perl Modul
von libnodave passend für die Versionen >= 0.8.5.
Ich habe noch eine weiter Funktion eingebaut:  getlibnodaveversion()

Kannst Du bitte deine Version  wieder hochladen ?

Sg
Christian


charlie71

Hallo

vielen Dank Christian, ich hab nun deine fixes in eine Version V1.2 gemerged.
Versionsinfo:

1) Auto Reconnect: dh wenn ein Reading von der PLC fehlschlägt versucht das Modul automatisch eine neue Verbindung aufzubauen (reconnect).
2) alle fixes von Christian gemerged.

Wichtige Konfiginfo:
Achtung beim Upgrade auf eine Version ab V1.1 muss die Konfig an werden:
a) Für das Modul S7 muss nun das Leseintervall nach der PortNr angegeben werden zB
Alte Konfig: S7 2 0 10.0.0.241 0 0 102 960
Neue Konfig: S7 2 0 10.0.0.241 0 0 102 2 960
dh es wird alle 2 Sekunden geprüft ob ein Reading (Analog/Digital) zur PLC geschickt werden soll.

b) Für das S7 Modul müssen muss noch die Reading config angepasst werde, hier muss das Abfrageintervall hinzugefügt werden zB:
Alte Konfig: attr logo ReadDB-Config 0 0 8
Neu Konfig: attr logo ReadDB-Config 0 0 8 300
dh es wird alle 5 min die Werte aus der PLC ausgelesen


bitte um Testfeedback

lg
Charlie71