Autor Thema: Firmata Seriell/USB in 98_autocreate.pm integriert  (Gelesen 4687 mal)

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Firmata Seriell/USB in 98_autocreate.pm integriert
« am: 24 Oktober 2013, 01:44:30 »
Hallo liebe FHEM Freunde,

ich habe die autocreate Funktion für StandardFirmata Geräte mit der seriellen/USB Schnittstelle auf meinem Raspberry Pi integriert.
Ich kann leider nicht überprüfen, ob ich dabei die Geräteerkennung der anderen Geräte beeinflußt habe. Vielleicht kann das jemand mit diesen Geräten testen.

Sollte Interesse bestehen, stelle ich die Datei gerne zur Verfügung (Bitte mit Tip wie).

Die Arduino (1.5.4b) StandardFirmata Software führt bei einem Neustart eine Ausgabe der Versionnummern auf der LED PIN 13 durch. Das dauert aktuell, einschließlich Reset, mehr als 2 Sekunden.
Ich habe deshalb einen neuen Hashkey (Timeout) eingeführt um dem Rechnung zu tragen.

Es gibt aber auch die Möglichkeit das Blinken zu unterbinden, wenn man statt
  Firmata.begin(57600);

wie in der StandardFirmata.ino

  Serial.begin(57600);
  Firmata.begin(Serial);

verwendet. Dabei wird kein Blinken mehr durchgeführt und es muss nur die Resetzeit berücksichtigt werden.

Viele Grüße,
CaptBlaubaer (CBR)

FHEM Raspberri Pi B
FHEM Fritzbox 7390  (ToDo)
Gembird USB Steckdosenleiste (SISPM)
Gembird LAN Steckdosenleiste (EGPM2LAN)
Diverse Arduinos (ToDo)
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20866
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #1 am: 24 Oktober 2013, 08:50:44 »
> Sollte Interesse bestehen, stelle ich die Datei gerne zur Verfügung (Bitte mit Tip wie).

Die Aenderungen als Patch hier anhaengen.

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #2 am: 24 Oktober 2013, 13:14:57 »
Originale Datei

# $Id: 98_autocreate.pm 3957 2013-09-25 06:21:02Z rudolfkoenig $
und die Patches mit den Änderungen

14,17d13
< # Changes:
< # - added Firmata Serial/USB detection; CaptBlaubaer 2013-10-23 CBR
< # - changed output, device is shown only once; CaptBlaubaer 2013-10-23 CBR
<
363,371d358
<     { NAME      => "FRM",
<       matchList => ["cu.usbserial(.*)", "cu.usbmodem(.*)",
<                     "ttyUSB(.*)", "ttyACM(.*)", "ttyAMA(.*)"],
<       DeviceName=> "DEVICE\@57600",
<       init      => pack("H*", "F9"),   # Reset
<       Timeout   => 2.5,
<       request   => pack("H*", "F079F7"),   # Query firmware version and filename START_SYSEX (0xF0), queryFirmware (0x79), END_SYSEX (0xF7)
<       response  => "^\xF0\x79(.*)\xF7",    # Response Sysex xF0 x78 (2 Byte version) (n Byte filename) Endsysex xF7
<       define    => "FRM_PARAM FRM DEVICE\@57600", },
386,387d372
<   my $newDeviceFlag;    # CaptBlaubaer (CBR)
<
422d406
<         $newDeviceFlag = 1;
425c409
<        if($dev =~ m/$ml/) {
---
>         if($dev =~ m/$ml/) {
429,433c413,415
<           if ($newDeviceFlag) { # show dev only once in the list
<                       $msg = "\n### $dev:";
<                       Log3 undef, 4, $msg; $ret .= $msg . "\n";
<                       $newDeviceFlag = 0;
<                 }
---
>           $msg = "### $dev: checking if it is a $name";
>           Log3 undef, 4, $msg; $ret .= $msg . "\n";
>
439c421
<               $msg = "    already used by the fhem device $d ";
---
>               $msg = "already used by the $d fhem device";
444,445d425
<           $msg = "    checking if it is a    $name";
<           Log3 undef, 4, $msg; $ret .= $msg . "\n";
462,466c442
<              if(defined($thash->{Timeout})) {
<                 DevIo_TimeoutRead($hash, $thash->{Timeout});   # eg. StandardFirmata blink takes time
<              } else {
<                 DevIo_TimeoutRead($hash, 0.5);
<              }
---
>             DevIo_TimeoutRead($hash, 0.5);
472,475d447
<
<           $msg = "    request <".unpack("H*", $thash->{request}).">";
<           Log3 undef, 4, $msg; $ret .= $msg . "\n";
<
480,482d451
<           $msg = "    reponse <".unpack("H*", $answer).">";
<           Log3 undef, 4, $msg; $ret .= $msg . "\n";
<
484c453
<             $msg = "    got wrong answer for a $name";
---
>             $msg = "got wrong answer for a $name";
492c461
<           $msg = "    create as a fhem device with: define $define";
---
>           $msg = "create as a fhem device with: define $define";
« Letzte Änderung: 24 Oktober 2013, 22:25:52 von CaptBlaubaer »
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #3 am: 25 Oktober 2013, 10:32:09 »
und die Patches mit den Änderungen
<

hab's gerade ausprobiert. Der Timeout von 2.5 Sekunden ist bei einem UNO zu kurz, mit 5 Sekunden gings dann :-)

- Norbert

P.S.: Du darfst bei einem Patch nicht die trailing spaces entfernen sonst akzeptiert das patch-kommando die '<'-Zeilen nicht.
P.P.S: welchen Zweck hat es die messages mit 4 vorgestellten Spaces zu versehen?
P.P.P.S: in den aktuellen SVN-stand integrierte Datei liegt hier: https://github.com/ntruchsess/fhem-mirror/blob/autocreate/fhem/FHEM/98_autocreate.pm @rudolfkoenig: soll ich das grade mal in den SVN-trunk committen?
« Letzte Änderung: 25 Oktober 2013, 10:40:43 von ntruchsess »
while (!asleep()) {sheep++};

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20866
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #4 am: 25 Oktober 2013, 11:02:36 »
Das commit uebernehme ich.

Ich mache mir Sorgen ueber die 5 Sekunden Timeout: bei mehreren stummen seriellen Geraeten koennten die Benutzer wegen des Wartens verunsichert werden.

Das geaenderte Einruecken hat mich auch stutzig gemacht, ich habs aber noch nicht getestet, um zu sehen wie es aussieht.

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #5 am: 25 Oktober 2013, 11:44:34 »
Hallo Norbert, liebe FHEM Freunde,

vielen Dank fürs Testen. Ich hoffe es sind keine Nebenwirkungen bei anderen Geräten wie CUL, CUM, CUN und CUQ eingetreten.

Die 4 SPACES stammen aus der buddhistischen Mythologie

### ttyACM0:
    checking if it is a    CUL
    request <560a>
    reponse <>
    got wrong answer for a CUL
    checking if it is a    TCM310
    request <5500010005700838>
    reponse <>
    got wrong answer for a TCM310
    checking if it is a    FRM
    request <f079f7>
    reponse <f07902035300740061006e0064006100720064004600690072006d006100740061002e0069006e006f00f7>
    create as a fhem device with: define FRM_0 FRM /dev/ttyACM0@57600

### ttyACM1:
    already used by the fhem device mega2

### ttyAMA0:
    checking if it is a    CUL
    request <560a>
    reponse <>
    got wrong answer for a CUL
    checking if it is a    TCM310
    request <5500010005700838>
    reponse <>
    got wrong answer for a TCM310
    checking if it is a    FRM
    request <f079f7>
    reponse <>
    got wrong answer for a FRM

### ttyUSB0:
    checking if it is a    TCM310
    request <5500010005700838>
    reponse <5500010005700838>
    got wrong answer for a TCM310
    checking if it is a    TCM120
    request <a55aab5800000000000000000003>
    reponse <a55aab5800000000000000000003>
    create as a fhem device with: define TCM120_0 TCM 120 /dev/ttyUSB0@9600

Ich habe sie eingeführt um die für mich wichtigen Geräte schneller zu finden.
Die Ausgabe von request und response habe ich eingefügt, da ich keine Ahnung von Perl habe und auch nicht weiß wie ich hier debuggen kann.

Meine Arduino Megas und mein Nano laufen mit den 2.5 Sekunden und eingeschaltetem Versionsnummer Blinken.

Ohne Blinken genügte auch ein Timeout von 0.5s.

Zitat
Es gibt aber auch die Möglichkeit das Blinken zu unterbinden, wenn man statt
  Firmata.begin(57600);

wie in der StandardFirmata.ino

  Serial.begin(57600);
  Firmata.begin(Serial);

verwendet. Dabei wird kein Blinken mehr durchgeführt und es muss nur die Resetzeit berücksichtigt werden.


Viele Grüße,
CaptBlaubaer (CBR)
« Letzte Änderung: 25 Oktober 2013, 12:05:37 von CaptBlaubaer »
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #6 am: 25 Oktober 2013, 12:22:05 »
Ich hoffe es sind keine Nebenwirkungen bei anderen Geräten wie CUL, CUM, CUN und CUQ eingetreten.

hab es grade mal den CUL vom Produktivsystem abgezogen und noch mal getestet. CUL und FRM-device wurden einwandfrei angelegt.

Firmata.begin(Serial);

hihi.... wer hat's erfunden: https://github.com/firmata/arduino/blame/master/Firmata.cpp#L79

Gruß,

Norbert
while (!asleep()) {sheep++};

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #7 am: 25 Oktober 2013, 12:38:09 »
Fein gemacht!!!

Zitat
hihi.... wer hat's erfunden: https://github.com/firmata/arduino/blame/master/Firmata.cpp#L79

Jetzt brauchen wir nur noch einen stabilen TelnetServer für die Arduinos, damit wir die auch "richtig herum" (damit meine ich FHEM als Telnet Client) einbinden können.
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #8 am: 25 Oktober 2013, 13:18:15 »
FHEM als TelnetClient? Sag mal genauer, was Du damit meinst.
Wenn Du Firmata über Ethernet meinst - das gibt's längst:
https://github.com/firmata/arduino/blob/configurable/examples/ConfigurableFirmata/ConfigurableFirmata.ino#L50
« Letzte Änderung: 25 Oktober 2013, 13:20:29 von ntruchsess »
while (!asleep()) {sheep++};

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #9 am: 25 Oktober 2013, 17:43:29 »
Hallo Norbert, liebe FHEM Freunde,

für mich ist ein Firmata Gerät ein Server, der Daten liefert. D.h. ein Client, in diesem Fall FHEM greift über eine Schnittstelle mittels eines Protokolls darauf zu.

Bitte korrigier mich falls ich die FoE (Firmata over Ethernet) anders interpretiere als sie implementiert ist.
Ich habe es so verstanden, dass das FoE Gerät eine Verbindung zum Controller, z.B. FHEM aufbaut.
Das bedeutet, dass die Controller IP jedesmal neu programmiert werden muss.

Ich bin leider egoistisch und faul und will mich mit dem ganzen *Programmierkrams" eigentlich gar nicht beschäftigen, muss es aber weil es noch keine funktionierende Enduser (DAU) Lösung gibt die ich verwenden kann.

Als DAU ist für mich nur eine Lösung akzeptabel, die nach der "Fertigung" nur noch konfiguriert aber nicht mehr programmiert werden muss.
D.h., wenn ich bei einem Freund ein Firmata Gerät installieren möchte, dann will ich höchstens noch seine FHEM Konfiguration anpassen aber nicht mehr den Firmata auf die IP Verhältnisse der anderen Umgebung programmieren.

Deshalb muss die Client -Server Architektur unter Firmata IMHO noch umgedreht werden um eine breitere Akzeptanz zu gewinnen.
Sprich - nicht nur Programmierer sondern auch Anwender haben ihren Spaß mit Firmata -

Update:
Habe gerade gesehen, daß es diese Lösung anscheinend schon gibt.
Zitat
ArduinoCommander
Setzt auf Firmata auf allerdings als Server und bietet auch ein Android Interface, das als Ethernet Client fungiert.

Leider bekomme ich weder FoE noch die ArduinoCommander Version ans laufen. Aber vielleicht hat ja schon jemand Erfahrung damit.
« Letzte Änderung: 25 Oktober 2013, 21:36:51 von CaptBlaubaer »
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #10 am: 25 Oktober 2013, 23:16:28 »
ach so, also nix mit telnet (das ist eine Anwendung zum interaktien Login) - Du meinst einfach nur wer hier die Verbindung initiiert.

Im Prinzip läßt sich der Serverport auch auf dem Arduino öffnen, so dass FHEM die Verbindung aufbauen würde. Das wären auf beiden Seiten nur wenige Zeilen Programmcode und ab Verbindungsaufbau vom Verhalten her exakt das gleiche.

Als wir das vor ein paar Monaten hier im Forum diskutiert haben, wurde halt eher die jetzt implementierte Lösung gewünscht. Hat was damit zu tun, dass die Arduinos so Ihre IP-addresse unkompliziert per dhcp bekommen können und es dabei auch nichts macht, wenn die Addresse sich mal ändert. Wenn der Arduino Server ist, dann muss man entweder eine statische IP einstellen, oder dafür sorgen, dass der dhcp-server der mac-addresse des Arduinos immer die gleiche Addresse zuweist (Geht mit den meißten Dhcp-servern). Aber auch dann kriegst Du die Arduinos nicht völlig ohne Programmieren 'gebacken' - mindestens musst Du dafür sorgen, dass jeder seine eigene Mac-addresse bekommt. Aber Du hast schon recht - wenn der Arduino der Server ist braucht die Arduinos nicht umzuflashen, wenn der FHEM-server mal eine andere ip-addresse bekommt.

Wo hängt's denn bei der FoE-Version?

Gruß,

Norbert
while (!asleep()) {sheep++};

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #11 am: 25 Oktober 2013, 23:50:51 »
Hallo Norbert,

Zitat
ach so, also nix mit telnet (das ist eine Anwendung zum interaktien Login) - Du meinst einfach nur wer hier die Verbindung initiiert.
Nein, telnet ist nicht nötig, hab's auch erst später gesehen, TCP reicht auch schon.

Das Verhalten der IP-Adressen und die Konfiguration der Zuweisung wäre immerhin bei allen IP-Geräten (IP-Steckdosen, Web-Servern, Firmatas, ...) einheitlich (IMHO nach Standard) und könnte ohne neue Programmierung geändert werden.

Zur MAC-Adressen Programmierung hätte ich den Vorschlag diese durch ein Firmata Kommando ins EEProm zu schreiben und bei jedem Neustart zu lesen und zu verwenden. Das Gleiche könnten wir dann auch mit den IP Parametern machen. Alternativ hätt ich noch ein paar andere Ideen dazu. Die sind aber vielleicht off-topic.

Zitat
Wo hängt's denn bei der FoE-Version?
Irgendwie an Allem. Ich komm nicht durch die Anleitung. Fehler 99 - Benutzer austauschen.

Viele Grüße,
CaptBlaubaer (CBR)

« Letzte Änderung: 25 Oktober 2013, 23:54:49 von CaptBlaubaer »
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20866
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #12 am: 26 Oktober 2013, 11:45:10 »
Habs eingecheckt, allerdings ohne die Mythologie.

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #13 am: 26 Oktober 2013, 13:22:59 »
Ok, es gibt 2 Gründe die gegen den Server auf dem Arduino sprechen:

1. Speicherbedarf (der Client spart sich das EthernetServerObjekt im Flash und RAM)

2. Wiederverbinden beim Neustart (Reset) des Arduinos. FHEM bekommt nämlich gar nicht mit, wenn man die Verbindung physikalisch hart unterbricht (Kabel am Arduino absteckt, oder diesen resettet). Das liegt am TCP-protokoll, das ein ausbleiben von Paketen erst mal nicht als Fehler ansieht und noch etliche Minuten bis Stunden (je nach Betriebssystem und Kerneleinstellungen) versucht die ausstehenden Pakete immer wieder zu senden. Ist der Arduino der Client, dann verbindet er sich zumindestens bei einem Reset sofort wieder. (Andersherum gilt das natürlich auch, aber in der Regel schaltet man seinen FHEM-server nicht einfach aus, sondern stoppt den FHEM-prozess. Hierbei werden die offenen Socketverbindungen zuverlässig geschlossen, auch wenn man den Prozess einfach killt).

Die IP-addresse des FHEM-servers könnte man übrigens genauso gut im EEPROM ablegen. Die Idee ist nicht neu, es muss sie nur mal jemand implementieren.

Genauso bräuchte es noch sowas wie ein keep-alive Protokoll (also Nachrichten, die nur dafür hin- und hergehen, dass man weiß, wann die Gegenstelle zuletzt lebend gesehen wurde. Wenn man keine AD-pins konfiguriert hat, oder 1-Wire devices pollt, kommt vom Arduino ja ggf. auch lange gar nix). Bei Firmata über USB ist das verzichtbar - wenn man den USB abstöpselt, dann erkennt FHEM das sofort.

Wenn Du Hilfe brauchst, Firmata über Ethernet ans Laufen zu kriegen, dann frag einfach (geziehlt, mit Info darüber, was genau Du gemacht hast, und an welchem Punkt du nicht weiterkommst) nach.

Gruß,

Norbert
« Letzte Änderung: 26 Oktober 2013, 13:26:09 von ntruchsess »
while (!asleep()) {sheep++};

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #14 am: 26 Oktober 2013, 17:42:09 »
Hallo Norbert,

vielen Dank für Dein Angebot
Wenn Du Hilfe brauchst, Firmata über Ethernet ans Laufen zu kriegen, dann frag einfach (geziehlt, mit Info darüber, was genau Du gemacht hast, und an welchem Punkt du nicht weiterkommst) nach.
Ich habe mich nur noch nicht getraut, weil ich die Kopfschmerzen durch den Off-Topic Hammer gefürchtet habe. Evtl. über PM oder in einem anderen Forum?

ad 1. Speicherbedarf:
kann ich nicht nachvollziehen, meine ($20) Megas sollten laufen, Nano habe ich nur am USB

ad 2. Wiederverbinden beim Neustart der FirmataIP Geräte
Ich bin noch am Grübeln, wo der Unterschied (FoE als Server) z.B. zu einem FB_CALLMONITOR ist.
FHEM läuft bei mir auf einen Himbeerchen und die FB ist übers LAN angebunden.
Wenn diese Verbindung unterbrochen oder die FB resetet wird habe ich IMHO dasselbe Verhalten wie bei einem FoE-Server. Auch können mehrere FBen eingebunden werden.
Ich gehe aktuell davon aus, dass es funktioniert auch wenn ich mir die Internals des FB_CALLMONITORs noch nicht angeschaut habe.

Ich bin klein und gemein, bitte erklär mir mal wie Du das bei einem fabrikneuen FoE-Client, remote machen möchtest:
Zitat
Die IP-addresse des FHEM-servers könnte man übrigens genauso gut im EEPROM ablegen. Die Idee ist nicht neu, es muss sie nur mal jemand implementieren.
Wenn das mit dem Server funktioniert schau ich mal ob ich das mit dem EEPROM hinbekomme. (hab nur schon wieder eine viel zu perfekte Lösung im Kopf)

Viele Grüße,
CaptBlaubaer (CBR)
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #15 am: 26 Oktober 2013, 23:44:17 »
Das kann man schon hier im Forum diskutieren, geht ja schließlich darum, dass es mit FHEM läuft. Halt in der Rubrik 'Sonstiges'.

Speicherbedarf ist auf dem Mega natürlich weniger ein Thema ;-)
Aber das war auch nicht der primäre Grund, warum ich auf den Client gesetzt habe. Ich habe es schlichtweg nicht hinbekommen, dass sich FHEM sauber, schnell und vor allem auch zuverlässig automatisch wieder mit dem Arduino verbindet, wenn man den Arduino resettet oder temporär die Verbindung (physikalisch d.h. ohne protokollgesteuerten Verbindungsabbruch) trennt. Tu dir keinen Zwang an - wenn Du dafür eine Lösung hast würde ich mich natürlich darüber freuen und diese auch gerne ins offizielle Firmata-repository übernehmen.

Beim Callmonitor wird das im Prinzip genauso sein, nur dass sich offenbar niemand daran stört, dass ein Wiederverbinden nach hartem Abschalten der Fritzbox ein paar Minuten dauern kann. Mangels Fritzbox habe ich das nicht testen können, aber das Modul verläßt sich genauso darauf, dass DevIO_SimpleWrite impliziet die Verbindung schließt, wenn die Gegenseite nicht mehr da ist.
Wobei Du einen Arduino rein von den Resourcen her nicht mit einer FB vergleichen kannst. Der macht die eine oder andere noch offene und auf Timeout wartende Verbindung nix aus. Der Arduino ist in so einem Fall einfach nicht mehr erreichbar, bis die Timeouts abgelaufen sind.

Naja, wegen der Konfiguration: Vergleich das mal realistisch: Hat der Arduino als Server eine voreingestellte ip-addresse, dann muss man sich eine Addresse im gleichen Subnetz auf ein Interface am PC konfigurieren um ihn erreichen und konfigurieren zu können. Will der Client zu einer fest vorgegebenen default-ip-addresse verbinden, dann muss man eben diese auf dem Interface binden. Vom Aufwand her kein erkennbarer Unterschied. Ich würde dafür natürlich ein kleines FHEM-unabhängiges Tool (in Perl) schreiben. Das braucht es eh - so was über eine Implementierung in FHEM zu testen wäre mir zu aufwändig.

Ach so - auf einem Mega mit original Ethernetshield könnte man die Netzwerkkonfiguration auch einfach von SD-karte laden. Auf den kleineren Arduinos könnte da der Speicher aber zu knapp sein - die library um das FAT-filesystem zu lesen ist ja nicht gerade schlank.

- Norbert
« Letzte Änderung: 26 Oktober 2013, 23:49:26 von ntruchsess »
while (!asleep()) {sheep++};

Offline CaptBlaubaer

  • New Member
  • *
  • Beiträge: 48
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #16 am: 27 Oktober 2013, 00:57:37 »
Hallo Norbert,

ich habe unter Sonstiges ein neues Thema eröffnet:
Zitat
Firmata over Ethernet: Einbindung in Arduino

Wenn das klappt schau ich mir erstmal Deine Lösung für FoE an. Vielleicht fallen mir dann noch ein paar Argumente ein. ;-)

Heißt das
Zitat
Aber das war auch nicht der primäre Grund, warum ich auf den Client gesetzt habe. Ich habe es schlichtweg nicht hinbekommen, dass sich FHEM sauber, schnell und vor allem auch zuverlässig automatisch wieder mit dem Arduino verbindet, wenn man den Arduino resettet oder temporär die Verbindung (physikalisch d.h. ohne protokollgesteuerten
dass Du schon eine FoE Server Variante getestet hast und auch das passende FHEM Modul dazu hast?

Ich versuch mal meine Anforderungen beschreiben:
  • Ein Firmata Gerät muss nicht mehr programmiert sondern "nur" noch konfiguriert werden.
  • Die Konfiguration muss mit standardisierten Mitteln erfolgen können, z.B. Webbrowser, Telnet, DHCP, Terminal, ....
    (Ein Firmata Windows Programme würde ich auch noch akzeptieren.)
  • Sofern vom Management Systemen wie z.B. FHEM unterstützt, muss es möglich sein ein oder mehrere konfigurierte Firmata Geräte automatisch zu erkennen und einzubinden.
  • Steuer- / Konfigurationsbefehle müssen gesichert übertragen werden. D.H., es ist nachvollziehbar, ob der Befehl ausgeführt wurde, oder ob nicht. (FHEM -> Firmata)
  • TBD  Push-Werte (Firmata -> FHEM) kann bei unkritischen Applikationen (z.B. Regentropfen zählen) ungesichert erfolgen (Bei einem Lichtschalter sollte der Befehl aber schon sicher empfangen werden)
  • To be continued ...
Viele Grüße,
CaptBlaubaer (CBR)
« Letzte Änderung: 27 Oktober 2013, 01:33:38 von CaptBlaubaer »
Best regards und viele Gruesse,
CaptBlaubaer (CBR)
_________________________________
FHEM 5.5 Raspberry Pi (B), IOMEGA iConnect, Firmata Arduinos USB/LAN, Gembird USB/LAN, ToDo: FHEM auf FritzBox 7390, 7270

Offline ntruchsess

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1123
    • My code on github...
Antw:Firmata Seriell/USB in 98_autocreate.pm integriert
« Antwort #17 am: 27 Oktober 2013, 17:49:39 »
Heißt dasdass Du schon eine FoE Server Variante getestet hast und auch das passende FHEM Modul dazu hast?
getestet: ja, passendes Modul haben: Nein, den Stand vom FRM habe ich nie ins SVN commitet und auch nicht mehr auf meiner Platte. Wäre auch total veraltet.
Der Firmata-Ethernet-Server von damals:
https://github.com/ntruchsess/arduino/tree/93c1c84efa3981e42b64d9c1615765d2fe8d4fb1/examples/OneWireSchedulerEthernetServer

Deine ganzen Wünsche darfst Du gerne unter 'Issues' ins Firmata Github repository einstellen https://github.com/firmata/arduino/issues, das hat mit FHEM so unmittelbar nix mehr zu tun, bzw. erst wenn da die Basis umgesetzt ist, kann man Unterstützung dafür ins FHEM einbauen.
Contributions zum Firmata-projekt sind in dem Zusammenhang sicher willkommen. Jeff Hoefs (der aktuelle Chef-maintainer) wünscht sich eh schon länger ein Configurationstool für die ConfigurableFirmata.
« Letzte Änderung: 27 Oktober 2013, 17:52:10 von ntruchsess »
while (!asleep()) {sheep++};

 

decade-submarginal