AVR-NET-IO und IPS

über das NetServer programm geht das nicht?

Für alle die es interressiert: Ich habe die Verbindung mit der Standart Pollin Firmware hinbekommen.
Ein Script:

<?

CSCK_SendText(19984 /*[AVR]*/ ,"GETADC 1");

?>

Socket Client auf die IP des AVR-NET-IO mit Port 50290 (bei mir die ID 19984 )
Register Variable Drunter die ein Script ausführt.

<?
IPS_LogMessage("AVR TEST",$IPS_VALUE);
usleep (200000);
IPS_RunScript (44655 /*[test\avr]*/ );

?>

44655 ist das erste Script.

Ist ziemlich Quick & Dirty, aber ist ja auch nur ein Test. Im Log steht nun der Wert des 1ten analogen Eingang, der nun alle 200ms abgerufen wird.

Hallo sschnake,

das Script von Ernst/EHB benötigt wie schon erwähnt, eine modifizierte Firmware. Es gibt hier im Forum einen langen Thread, der sich auch mit der originalen Firmware und dem Netserver beschäftig. Eventuell hilft das ja weiter.

Gruss
Bernd

Hi,
sorry das ich den alten Thread wieder ausgrabe, aber versuche gerade mein Net IO mit IPS ans laufen zu bekommen. Erschwerend kommt hinzu, dass ich noch nie was mit Mikrocontrollerprogrammierung gemacht habe.

Habe mir beide Ordner (für AVR Studio und WinAVR) heruntergeladen und sowohl Atmel Studio als auch WinAVR installiert. Nun sind in den Ordnern aber tausende Dateien, was muss ich da mit welcher machen? Einfach nur die AVR-NET-IO.hex im Ordner default auf den Controller flashen? Wozu sind dann die ganzen anderen Dateien? Muss ich vorher noch irgendwo etwas bearbeiten, IP o.a.? Wo muss ich die Fusebits einstellen?

Bin völlig überfordert und je mehr ich lese desto weniger überblicke ich das ganze, sorry! Mit der Pollin Firmware läuft das Board zumindest schonmal! Was ich möchte ist einfach nur die 8 digitalen Ausgänge schalten.

Würde mich sehr freuen wenn mir jemand ein bischen auf die Sprünge helfen könnte.

Gruß

Ich wäre auch sehr Dankbar für eine Erklärung. Das Projekt ist bei mir genau vor dem Schritt des flashens mit ethersex-Firmware zum Erliegen gekommen.
Grüße

Die Fusebit sind im Brennerprogramm zu setzen.

Und, die normale Firmware läßt auch eine Abfrage der Portzustände zu. Steht alles im Link.

Falls man Futures im Ethernetsex für sich einstellen will, sind auch die Quellsourcen für eine eigene Wünsche dabei.

Wer das nicht kann, ist auch mit der Orginalsoft gut bedient.

Gruß Helmut

Hi,
also kann ich auch einfach das hexfile direkt flashen wenn ich nichts ändern möchte? Mit der Originalsoftware bekomme ich die Einbindung in IPS ja nicht hin wie von EHB beschrieben…

Denke ich,
wenn Dir die Parameter in dem Ethernet-Hex-File richtig erscheinen, Fusebit vor’m brennen einstellen.

IP-Adressen, Zugangspunkte, MAC-Adresse, und was er dann so kann ist bekannt?

Gruß Helmut

Moin,
beim Flashen gibts nur Fehler, wo man die Fuses einstellen soll findet man auch nirgendwo und wenn man versucht rauszufinden welche Fuses dann meint auch jeder was anderes, ich gebs auf.

Gibt es eine Möglichkeit die 8 Ausgänge über IPS mit der original Pollin Firmware zu steuern? Habe da über die Suche wohl schon Ansätze gefunden, ich bin aber Neuling, sprich ich bräuchte so eine Art Step by Step Anleitung für Blöde, kann mir da jemand helfen? Das Ding ist langsam echt frustrierend…

Gruß

Mal so unter uns. :wink:
Du versuchst Dich auf einem Gebiet, auf dem Dir sämliche Grundlagenkenntnisse fehlen. Aber Warum???
Schau Dir mal einen PoKeys 57E an. Den kannst Du komplett ohne tiefgehende Kenntnisse ansteuern und hast sofort Ergebnisse.

Hi Luca,

bitte nicht böse sein, aber der AVR-NET IO ist meines Erachtens was von gestern. Heute gibt es andere Varianten.

Eine DAVON ist auf Raspberry PI zu setzen. Ich habe mittlerweile 5 davon direkt an IPS und überhaupt keine Ausfälle (1Heizungssteuerung, 1Garage inkl.- Bewässerung, 1Elt-Verteilung, 2Türsprechstellen auch mit PJSIP-Client auf Raspberry). Dadurch, dass man mittels I2C-Baugruppen (wie von Horter & Kalb) auch problemlos größere Eingangsspannungen als 3,3V verarbeiten kann, ist das Teil für mich universell einsetzbar).

Hier ist EIN Beispiel an dem man sich auch als Anfänger gut voran arbeiten kann:

Ciao

Herbert

Mhmmmm, ein Raspberry PI ist aber auch etwas komplizierter. Klar gibt es alle möglichen Sachen dafür aber man sollte schon eine Idee von Linux und Co haben.

Ich finde die AVRs immer noch gut da die auch unschlagbar günstig sind. Haben nicht auch sehr zuverlässige Projekte mit AVRs funktioniert?
Mit Pokeys und RasPI zahlt man deutlich mehr.
Ich hoffe ich komme damit zurecht, wenn ich dann mal die Zeit finde. Ich geb dann Bescheid

Naja, der AVR-NET IO ist so zuverlässig nicht. Es gab immer Hänger mit dem LAN und ich weiß nicht, ob das dauerhaft gelöst wurde.
Ich hab übrigens selbst 2 AVR-NET IO und andere diverse WebServer. Allen gemeinsam ist, dass sie dem PoKeys in Sachen Funktionalität nicht das Wasser reichen können und mittels PoBlocks ist der PoKeys per Bildchen verschieben zu programmieren.

Moin,
danke für die Antworten. Da ich den Net IO schon im Schaltschrank eingebaut hatte wollte ich ihn nun natürlich auch nutzen, habe das jetzt mit der Original Firmware so geschafft, dass ich einfach die Befehle über einen Clientserver an den AVR schicke, klappt! Der nächste Schritt wäre es nun, die Ausgänge auch abzufragen um ein korrektes Schalten sicherzustellen, hat aber erstmal Zeit, bei FS20 erfolgt ja auch keine Rückmeldung.

Einen Raspberry PI setze ich bereits als MedienPC (RaspBMC) ein, in Verbindung mit IPS muss ich mich da noch reinlesen. Pokeys hört sich gut an, kannte ich vorher nicht, danke für den Tipp!

Gruß

Hallo zusammen,

ich habe eine Frage zur Anbindung des „originalen“ AVR-NET-IO von Pollin an IPS.
Es hat soweit auch alles funktioniert (mit Client Socket etc.), jedoch hängt sich das NETIO nach ca. 11-12 Stunden auf und lässt sich nur noch per harten Reboot zur Wiederbelebung überreden.
Auch die Kontaktaufnahme per Tool NetServer von Pollin schlägt fehl (Timeout)

Hat jemand von euch eine Idee dazu?

Besten Dank schon mal und Grüße,
Caspi

Hm, ich habe die Pollin-FW noch nie genutzt…

Meine insg. 5 Net-IOs arbeiten alle nur mit Ethersex. SInd überwiegend draußen und laufen 24/7, bisher seit 3 Jahren völlig störungsfrei, wenn über LAN angeschlossen.

Alle Ports lassen sich per UDP steuern und abfragen, sogar ohne Pollen: Ändert sich ein Port, meldet das Ethersex per control6 und udp direkt dem IPS.

Neue Firmware gibt es per bootloader, in IPS sitzt zur Sicherheit ein Watchdog-Script, das die Dinger resetten kann. Ist bei mir eigtl. nur nötig, wenn die fritzbox aus mir unerklärbaren Gründen den DNS nicht vernünftig auflösen kann. Da hilft dann der reset …

Irgendwo habe ich mal gelesen, dass die originale FW Probleme mit LAN hat, ich würde da mal ethwersex probieren und schauen, ob ich das Teil dauerhaft anpingen kann. Falls das auch ausfällt, Netzwerk überprüfen (LAN ? WLAN ? dLAN ?) und den Test ggf. mit direkter LAN-Kabelverbindung wiederholen.

Moin,

TomW kannst du mir mal einen auszug aus Control6 zeigen wegen dem polling?

lg
Sven

Klaro,

// ############################################################################################################################
// Beispiele zum Abfragen auf r2d2 als .php und .sh
// 
// Aufruf z.B.:
// wget -q -O - http://ether6terrs/ecmd?c6%20set%20r1%205
// ############################################################################################################################

C6_HEADER(`/* This will be in control6.h */')

#include "config.h"
#include "protocols/httplog/httplog.h"

static uint8_t t1=0;
static uint8_t t2=0;
static uint8_t relais;
static uint16_t adc0;
static uint16_t adc1;
static uint16_t adc2;
static uint16_t adc3;
static uint16_t adc4;
static uint16_t adc5;
static uint16_t adc6;
static uint16_t adc7;

CONTROL_START

PIN_OUTPUT(RELAIS1)
PIN_OUTPUT(RELAIS2)
PIN_OUTPUT(RELAIS3)
PIN_OUTPUT(RELAIS4)
PIN_OUTPUT(RELAIS5)
PIN_OUTPUT(RELAIS6)
PIN_OUTPUT(RELAIS7)
PIN_OUTPUT(RELAIS8)

ECMD_GLOBAL(seccnt, 0, uint8_t);
ECMD_GLOBAL(r1, 0, uint16_t);
ECMD_GLOBAL(r2, 0, uint16_t);
ECMD_GLOBAL(r3, 0, uint16_t);
ECMD_GLOBAL(r4, 0, uint16_t);
ECMD_GLOBAL(r5, 0, uint16_t);
ECMD_GLOBAL(r6, 0, uint16_t);
ECMD_GLOBAL(r7, 0, uint16_t);
ECMD_GLOBAL(r8, 0, uint16_t);

ECMD_GLOBAL(state, 0, uint8_t);

THREAD(boot)
if (state==0) {
   WAIT(10)
   state=1; 
   UDP_DIRECT_SEND(192.168.178.255,2701,2701,"%s start %s
",CONF_HOSTNAME,VERSION_STRING_LONG);

}
if (relais!=PINC) {
   relais=PINC;
   UDP_DIRECT_SEND(192.168.178.255,2701,2701,"%s R %d",CONF_HOSTNAME,relais);
}
THREAD_END(boot)

THREAD(Relaistimer)
seccnt++;
if (seccnt==50){
 seccnt=0;
}

ON r1 &gt; 0 && seccnt == 0 DO
   r1--;
   PIN_SET(RELAIS1);
END
ON r2 &gt; 0 && seccnt == 0 DO
   r2--;
   PIN_SET(RELAIS2);
END
ON r3 &gt; 0 && seccnt == 0 DO
   r3--;
   PIN_SET(RELAIS3);
END
ON r4 &gt; 0 && seccnt == 0 DO
   r4--;
   PIN_SET(RELAIS4);
END
ON r5 &gt; 0 && seccnt == 0 DO
   r5--;
   PIN_SET(RELAIS5);
END
ON r6 &gt; 0 && seccnt == 0 DO
   r6--;
   PIN_SET(RELAIS6);
END
ON r7 &gt; 0 && seccnt == 0 DO
   r7--;
   PIN_SET(RELAIS7);
END
ON r8 &gt; 0 && seccnt == 0 DO
   r8--;
   PIN_SET(RELAIS8);
END

ON r1 == 0 DO
   PIN_CLEAR(RELAIS1);
END
ON r2 == 0 DO
   PIN_CLEAR(RELAIS2);
END
ON r3 == 0 DO
   PIN_CLEAR(RELAIS3);
END
ON r4 == 0 DO
   PIN_CLEAR(RELAIS4);
END
ON r5 == 0 DO
   PIN_CLEAR(RELAIS5);
END
ON r6 == 0 DO
   PIN_CLEAR(RELAIS6);
END
ON r7 == 0 DO
   PIN_CLEAR(RELAIS7);
END
ON r8 == 0 DO
   PIN_CLEAR(RELAIS8);
END

THREAD_END(Relaistimer)

THREAD(radc)
   TIMER_START(new)	
   relais=PINC;
   adc0=ADC_GET(0);
   adc1=ADC_GET(1);
   adc2=ADC_GET(2);
   adc3=ADC_GET(3);
   adc4=ADC_GET(4);
   adc5=ADC_GET(5);
   adc6=ADC_GET(6);
   adc7=ADC_GET(7);
   UDP_DIRECT_SEND(192.168.178.255,2701,2701,"%s RA %d %d %d %d %d %d %d %d %d",CONF_HOSTNAME,relais,adc0,adc1,adc2,adc3,adc4,adc5,adc6,adc7); 
   TIMER_WAIT(new,30)
THREAD_END(radc)

ON STARTUP DO
  THREAD_START(Relaistimer);
  PIN_CLEAR(RELAIS1);
  PIN_CLEAR(RELAIS2);
  PIN_CLEAR(RELAIS3);
  PIN_CLEAR(RELAIS3);
  PIN_CLEAR(RELAIS4);
  PIN_CLEAR(RELAIS5);
  PIN_CLEAR(RELAIS6);
  PIN_CLEAR(RELAIS7);
  PIN_CLEAR(RELAIS8);
  THREAD_START(boot);
  THREAD_START(radc)
END

if (!(PIND & 0b00000100)) t1++; else t1=0;
if (t1==5) {if (r1&gt;0) {r1=0;} else {r1=180;}}

if (!(PIND & 0b00001000)) t2++; else t2=0;
if (t2==5) {if (r2&gt;0) {r2=0;} else {r2=180;}}

CONTROL_END

das ist der Teil, der auf dem Net-IO per udp die Werte der Relais und ADC in mein Heimnetz sendet. Habe ich per UDP gemacht, damit es ungerichtet ist und „überall“ abgefischt werden kann (Broadcast). Außerdem sind da Relaistimer drin, die damit nix zu tun haben (Meine Relais steuern Magnetventile, da wollte ich auf jeden Fall, dass die auch wieder abfallen)

Auf IPS sitzt dann ein UDP CS, der auf dem Port 2701 die Sachen über eine RegVar entgegennimmt. Der Rest ist Schnippelkram.

Die ganze Sache läuft seit einigen Jahren völlig problemlos. Es gibt aber auch zusätzlich den NetIO-Watchdog und einen Soft-Watchdog in IPS, der bei Nichterreichbarkeit per ECMD einen reset probiert.