OSCAT Forum

network.lib => Codesys 2 => Thema gestartet von: lullnix am 28. August 2017, 16:17:22

Titel: HTTP_GET
Beitrag von: lullnix am 28. August 2017, 16:17:22
Hallo,

ich versuche mit HTTP_Get unter CodeSys 2.3.9 (Wago 750-841) die Webseite unseres Mähroboters abzufragen - leider ohne Erfolg.
Der Roboter befindet sich im gleichen LAN-Segment wie die SPS.
Hat jemand ein Beispielprogramm in ST - aus den Demos werde ich nicht schlau.

mfg

Lullnix
Titel: Re: HTTP_GET
Beitrag von: peewit am 28. August 2017, 17:35:50
na ja

die demo programme sind in st programmiert und zeigen mitunter den umgang mit http_get
das einfachste für dich wird es trotzdem sein das du dir ein möglichst ähnliches demo-programm hernimmst und anpasst

Titel: Re: HTTP_GET
Beitrag von: lullnix am 02. September 2017, 15:01:01
das ist es ja, ich schaffe es nicht mehr den st quellcode in den demos anzeigen zu lassen.
würde ich den quellcode sehen, dann würde ich ihn wahrscheinlich passend modifiziert kriegen.

ich schau noch mal... wahrscheinlich sehe ich den wald vor lauter Bäumen nicht.

Gruß Lullnix
Titel: Re: HTTP_GET
Beitrag von: peewit am 02. September 2017, 15:38:15
die bibliothek als projekt öffnen
dann kannst du den ordner "demo" sehen und darin befinden sich ausgeblendete programme (vom kompilieren ausgeschlossen)
die musst du wieder aktivieren und dann eventuell exportieren und in dein projekt mit neuen namen importieren
dann kannst du sie auch verändern
Titel: Re: HTTP_GET
Beitrag von: lullnix am 02. September 2017, 20:07:12
ok danke, das habe ich jetzt gefunden.
Leider ist die Demo Http_Demo nicht in ST.

Gibt es ein Beispiel in ST?
Titel: Re: HTTP_GET
Beitrag von: peewit am 02. September 2017, 23:10:43
zum beispiel verwendet der yahoo_weather baustein  den http_get baustein
Titel: Re: HTTP_GET
Beitrag von: lullnix am 15. September 2017, 20:24:23
ja, hatte ich gesehen, aber die Demo YAHOO_WEATHER_DEMO ist auch nicht in ST - schade -
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 11. Dezember 2017, 23:24:53
Hallo,

ich hänge mich mal an diesen thread, um keinen neuen mit ähnlichem Hintergrund öffnen zu müssen.

Ich schaffe es nicht eine Verbindung mit einer WLAN-Steckdose herzustellen, die mit einem http-befehl geschaltet werden kann. Dabei verwende ich den fb http_get und den fb IP_control der codesys_network_121_hf1.lib.
Mit dem http_get-Baustein der Wago-lib hatte ich es hinbekommen. Da ich allerdings in meinem Projekt die oscat-lib auch anderweitig verwende,
will ich die WagoLibHttp_02.lib nicht verwenden, da ich sonst einen Konflikt mit dem http_get Baustein bekomme, da er in beiden libs genau gleich heißt.

Ich habe mal einen screenshot angehängt. Vielleicht kann mir hier jemand auf die Sprünge helfen.
Da ich auch den fb IP-Control zum ersten mal verwende, bin ich mir auch hier nicht sicher, ob ich den richtig einsetze.

Was vielleicht noch wichtig ist. Bei der WLAN-Steckdose muss man sich mit admin:admin anmelden.

Wo ist der Fehler?

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: peewit am 12. Dezember 2017, 13:49:53
hallo

die Kommunikation dürfte ja prinzipiell funktionieren
du bekommst vom gerät als Antwort das deine Zugangsdaten nicht passen

wie sieht den der original link aus wenn du es über den Browser eingibst
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 12. Dezember 2017, 15:24:56
Hi,

erstmal vielen Dank für die umgehende Rückmeldung.
In den browser gebe ich Folgendes ein, um die Steckdose einzuschalten:
http://192.168.178.111/xml/jsonswitch.php?id=1&set=1

Aber auch wenn ich die Zugriffskontrolle ausschalte und den Benutzer und das Passwort weglasse, bekomme ich die gleiche Reaktion.

Was mich verwirrrt, ist, dass es mit diesen Zugangsdaten mit dem Wago-FB funktioniert.



Titel: Re: HTTP_GET
Beitrag von: peewit am 12. Dezember 2017, 18:51:50
kannst du von der wago lösung die kommunikation mittels wireshark aufzeichnen
und dann auch die kommunikation mit der oscat-lib

dann kann ich 100% erkennen was anders und dann normalerweise auch eine lösung für das problem liefern

Titel: Re: HTTP_GET
Beitrag von: Maiggl am 12. Dezember 2017, 21:30:41
ich weiß nicht genau, was du alles von der Aufzeichnung brauchst. habe das erste mal wireshark verwendet.
Daher habe ich mal die gesamten Aufzeichnungen angehängt.

Die wago hat die IP 192.168.178.99
die Steckdose hat die IP 192.168.178.111

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 12. Dezember 2017, 21:33:40
hier noch das codesys programm

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: peewit am 13. Dezember 2017, 12:45:23
irgenwie ist die aufzeichnung sehr merkwürdig

wie hast du denn die wireshark aufzeichnung gemacht

beschreibe mal kurz dein netzwerk und an welcher stelle hast du wie den datenverkehr aufgezeichnet


Was für ein Gerät hat die ip-Adresse 192.168.178.4
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 13. Dezember 2017, 14:02:13
Das Gerät mit der 192.168.178.4 müsste mein Laptop sein, mit dem die Aufzeichnung gemacht wurde und auf dem zu dem Zeitpunkt codesys im Online-Modus (also verbunden mit der Wago) lief.
Ich werde das aber noch mal checken, heute Abend.

Zur Vorgehensweise:
- Codesys läuft im Onlinemodus auf Laptop, um den http-request loszutreten
- Wireshark auf Laptop gestartet
- Aufzeichnen Button gedrückt
- request von HTTP_GET gestartet über codesys auf Laptop
- Nachdem der fb HTTP_GET die Statusmeldung '401 unauthorized' gezeigt hatte, Aufzeichnung gestoppt

Zum Netwerk:
-FritzBox mit 192.168.178.1
-Wago mit 192.168.178.99
-WLAN-Steckdose, die von der WAGO geschaltet werden soll mit 192.168.178.111
- Zum Zeitpunkt der Aufzeichnung befanden sich zwei smartphones, ein sat-receiver, ein raspberry, insgesamt zwei laptops, ein tablet, eine netzwerkfestplatte, ein onewire gateway und eine wlan kamera im netzwerk.

hilft das irgenwie weiter?
Titel: Re: HTTP_GET
Beitrag von: peewit am 13. Dezember 2017, 22:43:06
da die fritzbox hier anscheinend nur als switch agiert hast du ein technisches problem wenn du versuchst den datenverkehr zwischen wago-sps und wlan-steckdose vom notebook aus aufzuzeichnen.

du müsstest die wireshark aufzeichnung von der fritzbox machen lassen oder dich auf einen hub hängen oder einen switch mit spiegel-port benutzen

 
http://winfuture.de/videos/Hardware/So-lasst-ihr-euch-von-der-FritzBox-den-Datenverkehr-mitschneiden-17088.html



Titel: Re: HTTP_GET
Beitrag von: Maiggl am 13. Dezember 2017, 23:36:12
Ok. Welche Verbindung muss ich aufzeichnen (siehe Anhang)?

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: peewit am 14. Dezember 2017, 06:12:54
da es sich um lokalen datenverkehr handelt vermute ich mal das es die schnittstelle eth oder lan ist

notfalls von mehreren schnittstellen eine aufzeichnung machen !


http://www.wehavemorefun.de/fritzbox/Netzwerk-Interfaces
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 14. Dezember 2017, 21:38:06
Guten Abend,

zunächst möchte ich mich deine Hilfe bei meinem Problemchen bedanken!

Ich habe mal für beide HTTP-Bausteine jeweils drei Verbindungen mitgeschnitten und angehängt.
Für mich sieht die eth0-Verbindung am erfolgversprechendsten aus. Aber ich werde daraus auch nicht schlau.

Hoffentlich geht es dir anders...

Grüße

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 14. Dezember 2017, 21:39:30
und hier der Rest

[gelöscht durch Administrator]
Titel: Re: HTTP_GET
Beitrag von: peewit am 14. Dezember 2017, 23:07:10
hallo

Die Aufzeichnungen von device "eth0" sind die richtigen

Es gibt nun zwei möglichkeiten

1. entweder ist deine parametrierung vom "HTTP_GET" Baustein nicht korrekt

2. du verwendest nicht die oscat_network_lib v1.35 
    diese enthält den Baustein HTTP_GET in der Version 1.4
    und erst in dieser version habe ich die  Authentication hinzugefügt
    vorhergehenden ältere versionen habe keine Authentication integriert !!
 
   link zur oscat_network.lib v1_35 beta      -  keine angst - meine beta versionen sind auch super  :-)
   http://www.oscat.de/community/index.php/topic,2546.msg13223.html#msg13223

3.  der wago-baustein verwendet eine HTTP/1.0 mit persistenter Verbindung
     das gleiche kannst du beim HTTP_GET Baustein mit Parameter MODE = BYTE#1 erreichen (* HTTP/1.0 mit persistenter Verbindung gewünscht *)
     das dürfte aber kein wirkliches problem sein

viel spass noch mit oscat .....
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 14. Dezember 2017, 23:49:06
Hi nochmal,

zu 1) : Das ist gut möglich...
zu 2) : Stimmt, ich hatte die Version 1.21. wenn ich diese jetzt allerdings rauswerfe und die die oscat_network_lib v1.35  einbinde,
bekomme ich den Fehler 3803 : Speicher für Variablen aufgebraucht...

Bei den Übersetzungsoptionen habe ich die nicht verwendeten Sachen schon von der Übersetzungen ausgeschlossen.

weißt du hier auch noch Rat?
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 15. Dezember 2017, 00:03:53
Ok,ich habe erstmal in dem rudimentären Programm alle nicht benötigten libs entfernt.

Jetzt klappt es! Vielen Dank für deine Zeit!

Eine Frage habe ich allerdings noch zwei:
1) Wenn ich die url, also den Schaltbefehl, mit der Wago losschicke, dauert es ca 7 Sekunden bis die Steckdose schaltet.
    Kann man das irgendwie beschleunigen?

    Über den Browser geht das in Millisekunden...

2) Wie komme ich an die Antwort der Steckdose in Klartext ran? Ich muss nämlich den Status (ein oder aus) auswerten.
   Im Browser sieht so eine Antwort so aus:   { "result": {"id": "2",   "status": 0}}   
Titel: Re: HTTP_GET
Beitrag von: peewit am 15. Dezember 2017, 08:53:03
dein sps programm wird ja zyklisch abgearbeitet
und je nach auslastung und zykluslänge ergibt sich eine viel längere durchlaufzeit

aber selbst 7 sekunden sind sehr lange


{ "result": {"id": "2",   "status": 0}}   

du kannst mit "buffer_search" nach "{ "result": {"id": "2",   "status": " suchen und dann mit relativen offset zur gemeldeten position im buffer dann genau auf das Byte mit der "0" oder "1" zugreifen
Titel: Re: HTTP_GET
Beitrag von: Maiggl am 15. Dezember 2017, 09:16:06
das Programm wird jede Millisekunde abgearbeitet.
Mit dem Wago-HTTP_GET_Baustein dauert es ähnlich lange.

Das mit dem buffer_search klingt schon mal gut, allerdings habe ich gerade keinen Plan,
wie ich das praktisch ausführen sollte..
Titel: Re: HTTP_GET
Beitrag von: peewit am 15. Dezember 2017, 10:16:17
jede millisekunde wird wahrscheinlich so nicht stimmen

programmiere mal einen simplen zähler und schau mal wie hoch der zählerstand nach einer gewissen zeit ist