Pollin AVR Net-I/O

Hallo HJH,

Die Zeile:
SetValue($varID, $IPS_VALUE); // empfangenen Wert abspeichern

Gruß
Thilo

Hallo Thilo,

das war noch ein Fehler von mir: :o
Der 2. „case“ muss „RegisterVariable“ lauten, nicht „Variable“.

Auch das habe ich inzwischen berichtigt. Am besten Du kopierst das Skript noch mal.

Gruß
HJH

BINGO…

jetzt geht es…da fällt mir ein Stein vom Herzen, hatte echt Zweifel…

Ich danke dir wie verrückt.

Ich werde morgen mal versuchen, das Script auf die restlichen Ports der NET-IO auszuweiten (kann mit meinen php-Kenntnissen eine Weile dauern g).
Aber dann hat man eine schöne Möglichkeit, den AVR zu nutzen.
Vielleicht wäre das auch eine Sache, die man (also paresy?) direkt in IPS einbauen könnte.

Vielen Dank nochmal und einen schönen Abend

PS: Welcher IPS_Sender muss denn rein, damit das Script auch durch den Timer gestartet wird?
Eigene Antwort: TimerEvent
Thilo

Hallo Thilo,

freut mich, dass es jetzt läuft. :slight_smile:

Wenn Du das Skript über den Timer starten willst, brauchst Du nur eine weitere „case“ Zeile einfügen. Da beide Ereignisse (Execute und Timer) das selbe bewirken sollen, lässt man die „break“ Anweisung für den ersten „case“ einfach weg. Du hast dann den Vorteil, dass Du das Skript auch weiterhin von Hand starten kannst.

Auch das habe ich im [b]Skript[/b] gleich nachgetragen.

Die Systemvariablen werden hier erklärt (ganz nach unten scrollen).

Gruß
HJH

Hallo Bernd,

genau das wollte ich hören. Danke für deine Hilfe, werde mir die 2 Teile mal bestellen und nachher überlegen wieviele ich noch benötige.:smiley:

PS: für mich persönlich habe ich keine Probleme diese Einheit in einem geeignetem Gehäuse für 230 V AC zu nutzen.

Muß mit das Teil mal physikalisch betrachten und weitersehen.

Hallo an alle Beteiligten,

als erstes schönen Dank an HJH für den funktionierenden Script.

Ich habe etwas ähnliches mit meinen lächerlichen PHP Grundkenntnissen zusammengehäkelt, bei dem sich 3 Script´s jeweils den Ball zuwerfen. Dabei fiel mir auf: die Kommunikation auf dem Wege der in der Anleitung dokumentierten Befehle ist träge;… mir viel zu träge, um etwa Taster als Eingabemedium zu nutzen.

Schaut man sich hingegen das Ergebnis der Netserver.exe an kommt man zu dem Schluß: mit der dortigen Pollinghäufigkeit sollte man leben können.
Da dort das MS NET Framework 2.0 zum Einsatz kommt, vermute ich, dass dieses über undokumentierte Befehle mit dem AVR NET-IO kommuniziert.

Wir sollten uns also einmal mit einem LAN Sniffer bewaffnen und diese dort laufende Kommunikation aufzeichnen, analysieren und im

ersten Schritt versuchen die Antworten zu verstehen und in IPS, quasi als Lauscher, abzubilden. Der

zweite Schritt wäre IPS dazu zu bringen die Kommunikation anstelle der NetServer.exe zu betreiben.
Mir geht es nicht darum, aus der NetServer.exe die Routinen herauszuangeln (das wäre illegal), vielmehr geht es um das Verständnis der Art und Weise der Kommunikation und dem Nachbilden mit eigenen Routinen.

Noch ein Wort zum jetzigen Script:

Der Befehl:

CSCK_SendText(CSCK1, "GETADC ". $port);    // ersten Wert anfordern

liefert ein Ergebnis zurück (glaub ich jedenfalls),
da es sich bei der Kommunikation ja um keine Shout and Forget (wie UDP),
sondern um eine nach TCP/IP handelt.
Diese werten wir leider nicht aus (ist das Niveau der FS 20 Komponenten), könnten wir aber indem wir bei einer FALSE Meldung den Befehl, als Beispiel, bis zu dreimal wiederholen lassen und erst dann eine Fehlermeldung ausgeben.
Dies ist die Kontrolle der Transmit (TX) Kommunikation.
Antwortet das Board mit dem Wert und den beiden folgenden HEX Werten 0D und 0A ist dies die Bestätigung,
das auch die Receive (RX) Kommunikation in Ordnung ist.
Folgt hingegen ein NAK 0D 0A als Antwort war der ankommende Befehl beim Board falsch, aus welchen Gründen auch immer.
Falls diese Erweiterungen mit in den Script einfliessen könnten, hätten wir das Niveau der Homematic.

Haben wir hier jemand mit NET Framework 2.0 Kenntnissen? und der Neugier die Kommunikation zu erforschen?

mfg

BerndJ

Hallo BerndJ,

zur Erhöhung der Zuverlässigkeit:

1. Ich weiß nicht, wie die Rückmeldung des CSCK_SendText() Befehls zu interpretieren ist. Ich zumindest habe keine Dokumentation dazu gefunden.
2. Es ist fraglich, ob eine Wiederholung des Befehls zu einem noch besseren Ergebnis führen wird. Im Allgemeinen ist eine Fehler im LAN nicht mit Wiederholungen zu bereinigen.
3. Wir haben es hier nicht mit Funk sondern mit einer Kabelverbindung zu tun. Das heißt, wir befinden uns bereits jetzt auf einem deutlich höheren Niveau als die Homematic.

Ich sehe also dazu keinen Handlungsbedarf.

Gruß
HJH

Hallo BerndJ,

ich habe gestern abend mal die Kommunikation zwischen dem AVR-WEB-I/O und dem Programm Netserver von Pollin mitgeschrieben (Wireshark).
Mir ist aufgefallen, das die Abfrage der Ports und ADCs mit den gleichen Befehlen per TCP/IP erfolgt, die auch in der Anleitung beschrieben sind.
D.h. der Netserver sendet GETADC 1 bis GETADC 4, danach GETPORT 1 bis GETPORT 4 und danach GETSTATUS.
Die GEschwindigkeit der Antwort hat mich überrascht, nach ca. 1,2ms kommt diese vom AVR-NET-I/O im bekannten Format.
D.h. auch hier wird nur mit Wasser gekocht um eine schnelle Abfrage zu erreichen.
Wenn du Interesse hast, kann ich dir das Protokoll (ca. 1min mit Umschalten aller Ports 1-8) heute abend zur Verfügung stellen.
Leider habe ich kein Programmierwissen:(, aber trotzdem Interesse daran, die Kommunikation zw. den beiden Parteien (IPS und AVR) reibungsloser und schneller zu gestalten, weil der AVR eine sehr schöne und preisgünstige I/O-Lösung als Peripherie zu IPS ist.

Viele Grüße
Thilo:)

Hallöchen ich wollte mal hier anfragen ob nicht jemand ne ahnung davon hat wie ich per Java ein Programm schreiben kann das die AVR Karte schalten kann. Also ich hab das ja mit Socketprogrammierung mal angefangen und naja ich weiß nicht was ich jetzt für befehle an die karte schicken muss um die einzelnen Ports zu steuern. Kann mir da jemand helfen?

Hi,

hier geht um immer noch um den Einsatz dieser Karte unter IPS.

Diese Frage solltest Du in einem entsprechendem Forum stellen,

Java Spezies sind hier kaum vertreten.

mfg

BerndJ

Bevor ihr jetzt anfangt den AVR im ms Bereich zu pollen:

Denkt lieber um und programmiert den AVR zu einem Interrupt gesteuerten Gerät um. Ihr schont dadurch wertvolle Ressourcen (CPU, Netzwerk-Last, Logfile-Größe…) und euch geht dann auch zu 100% kein Impuls verloren. Beim Pollen kann immer was verloren gehen, solange ihr nicht wieder irgendwelche „Impulsverlängernde“ Hardware vorbastelt.

paresy

Hallo paresy,

den Gedanken hatten wir auf unserem Bayernstammtisch auch schon durchdiskutiert.

Für den AVR gibt es Programme die einen 1-Wire-Busmaster aus diesem machen. Sprich, AVR pollt 1-Wire-Sensoren und schickt die Daten an IPS oder IPS frägt die Daten beim AVR an.

Bin gespannt was aus diesem Gedanken wird.

Hallo Werner,

in Arbeit…

Hallo torro,

wie in Arbeit…

…Du willst dich auch an einem 1-Wire-Bus-Master auf AVR-Basis machen?

Da haben wir wohl den gleichen Gedanken :wink:

Hallo Werner,

den Gedanken haben wir schon seit zwei Jahren, und weitere noch…
frag mal HJH, mit dem habe ich schon voriges Jahr mal ausfuehrlich darueber gesprochen…

Auf serieller Basis für Temperaturen gibt es hier etwas sehr preiswertes.
Elektronik-Projekte - Temperatur-Messsystem - Sensormodul 2
Also davon nur die ser. Datenausgabe nutzen, meine ich.
Man kann ja auch das Diplay (Sensor-Modul 1) nicht benutzen, dann kostet es noch weniger…
Gruß Helmut

Aber ich schätze mal euer Wunsch ist, dass das System alle 1-Wire Bausteine ansprechen soll.
Da muss man schon selber ran…:rolleyes:
Gruß Helmut

Hallo Helmut,

so ist es, weniger macht keinen Sinn. Und die ganze Verwaltung etc. muss natuerlich auch da gemacht sein, also muss eine Konfiguration moeglich sein. Ein kleiner reicht da auch nicht mehr, da ist schon um einiges mehr notwendig.

Hallo zusammen,

bin jetzt auch stolzer Besitzer von 3 AVR NET-IOs :smiley: und will mich mal kurz einklinken …

@paresy
leider hat nicht jeder die Kenntnisse um das Teil neu zu programmieren … ich werd mich die Tage aber mal mit alternativer Firmeware für das Teil beschäftigen und ein so großer unterschied zwischen C++ und PHP wirds wohl nicht sein :confused:

@thifi & Berndj

zu der Dauer bis der Net-IO Antwortet, kann ich folgendes Beitragen:

da mir das mit dem ClientSocket, REgisterVariable und Cutter und blabla … irgendwie zu kompliziert war … ja ich habe versucht aus der Doku hier schlau zu werden :smiley: hab ich das komplett in PHP gelöst … und zwar damit

http://www.ip-symcon.de/forum/f53/telnet-php-6345/

beim Abfragen des Analogeingänge


$a=microtime();
$telnet->DoCommand('getadc 1', $result1);
$b=microtime();
$telnet->DoCommand('getadc 2', $result2);
$c=microtime();
$telnet->DoCommand('getadc 3', $result3);
$d=microtime();
$telnet->DoCommand('getadc 4', $result4);
$e=microtime();

komme ich auf folgende Zeiten


0.42397400 1239713941
0.54896500 1239713941
0.67403300 1239713941
0.79901700 1239713941
0.92402200 1239713941
Zeit in Sekunden: 0.124991 0.125068 0.124984 0.125005

Im Wireshark sind die Zeiten ähnlich, vielleicht auch weil ich diesen Net-IO über WLAN angebunden habe.

Bei Bedarf könnte ich aber auch mal schnell einen 2. Net-IO über Kabel anschließen und diesen dann testen.

Just my two Cents

Andreas

Hallo saerdna76,
kannst du deine Abfrage mal etwas genauer beschreiben bzw. das vollständige Script hier posten?
Habe wie in dem Beitrag das TelnetPHP-Script unter Script kopiert.
Ich muss doch aber eine Beziehung zu meiner IP-Adresse der AVR-IO herstellen…

Irgendwie fehlt mir da ein Stückchen Film. Vielleicht kannst du ein bisschen Licht ins Dunkel bringen.

Ansoinsten finde ich es eine sehr gute Idee, den Zugriff auf die AVR-IO zu vereinfachen/erleichtern/schneller zu machen.

Danke im voraus…

Thifi

Ganz zu Anfang dieses Beitrags hat es schon mal einen Verweis auf AVR für wenig Geld im LAN - mikrocontroller.net gegeben.

Dort findet man einige Skripte zum Ansteuern des AVR Net-I/O über PHP.
(Der Zugriff über Webserver und PHP funktioniert bei mir recht gut)

Aus dem obigen Beitrag bei Microcontroler.net ist sogar ein eigenes Forum AVR-Net-IO Pollin AVR-Webserver Bausatz entstanden.
Dort gibt’s auch einiges an Code (PHP, VB,…)

Gruß
astrastar