Hauptmenü

Firmata+Arduino

Begonnen von Rohan, 31 Januar 2013, 14:31:12

Vorheriges Thema - Nächstes Thema

woody

Hallo Leute,
habe noch ein anderes Problem, die Suche hat leider nichts gebracht und ich verstehs net.

Nach einem Reset oder rereadcfg, also wenn der Arduino sich neu connected hat er immer einen anderen Port.
Das bedeute allerdings auch, das die OWX-Devices immer neu gefunden werden.

Wie kann ich dem FRM-Device mitteilen das es für die IP X immer den Port y nutzen soll?

meine fhem.cfg sieht momentan so aus:

###############
#    Waeschekeller      #

define Arduino1 FRM 3030 [192.168.0.72]
attr Arduino1 room Arduino
define Arduino1_ANALOG18 FRM_AD 18
attr Arduino1_ANALOG18 event-min-interval 5
attr Arduino1_ANALOG18 event-on-change-reading 1
attr Arduino1_ANALOG18 room Arduino
attr Arduino1_ANALOG18 stateFormat reading

############
#      Heizung      #

define Arduino2 FRM 3040 [192.168.0.73]
attr Arduino2 room Arduino
#attr Arduino2 i2c-config 1
define Input OWX 8
attr Input IODev Arduino2
attr Input buspower real
attr Input room Arduino
define OWX_10_68A454020800 OWTHERM DS1820 68A454020800
attr OWX_10_68A454020800 IODev Input
attr OWX_10_68A454020800 model DS1820
attr OWX_10_68A454020800 room Arduino
attr OWX_10_68A454020800 tempHigh 30
attr OWX_10_68A454020800 tempLow 20

Ergebnis unter everything:

Arduino1                           listening
Arduino2                           listening
FRM:192.168.0.72:2903    Connected
FRM:192.168.0.73:1071    Connected

soweit ja OK. aber beim nächsten reboot oder reconnect ändert sich der Port und damit auch das FRM Device.

Ich raffs net.

Grüße
woody

ntruchsess

#226
also dass sich der Port beim neu-verbinden ändert ist normal, der wird beim Socket-accept vom Betriebssystem dynamisch vergeben. Das mit den OWX-devices muss ich mir aber näher ansehen, dass ist mir so noch nicht aufgefallen. Hat ziemlich sicher damit zu tun, dass Du mehrere Arduinos parallel verwendest, das habe ich bei meinen Tests so noch nicht auf dem Schirm gehabt.

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

ntruchsess

Hallo Jürgen,

Hab mir auch ein 20x4-Display besorgt um Deine Änderungen am FRM_LCD-modul zu testen. Sind jetzt eingepflegt und auch schon in den fhem-SVN-trunk committed ;-)

Gruß,

Norbert

Zitat von: Wzut am 22 Januar 2014, 11:52:19
Hallo Norbert,
ich habe inzwischen ein I2C LCD 20x4 Display das ich mit 20_FRM_LCD nutze. Zu diesem Modul hätte ich drei Erweiterungs Vorschläge in der angehängten .pm :
1. set <name> backlight on|off  , Zwecks einfaches ein und ausschalten

2. set <name> reset , resetet das LCD ohne FHEM neu starten zu müsssen. Grund : Ich hatte des öfteren nur noch Zeichsensalat auf dem Display, keine Ahnung ob meinem Display ne Macke hat , der I2C Bus auf dem Schreibtisch zu chaotisch oder das Display bestimmte Codes nicht mag. Mit dem set reset habe ich es jedenfalls sofort wieder einsatzbereit.

3. set <name> writeXY PosX,PosY,max.Länge, aligment L|R  belieber Text
Mit der jetzigen set text Funktion bin ich nicht recht glücklich geworden , da ich aus verschiedenen Modulen bestimmte Werte an ganz bestimmten Stellen ausgeben wollte. Mit der neuen Funktion ist das recht leicht , zumal mein Display z.Z keine Umlaute darstellen kann und diese auch gleich ersetzt.
while (!asleep()) {sheep++};

Wzut

Zitat von: ntruchsess am 26 Februar 2014, 23:49:21
Sind jetzt eingepflegt und auch schon in den fhem-SVN-trunk committed ;-)
Hallo Norbert, vielen Dank
ein Punkt ist mir in der command.ref aufgefallen bei dem attr writexy
set <name> writeXY x-pos,y-pos,len[,l] <text to be displayed>
wäre ich nicht der Autor von writexy würde ich es nicht verstehen .... d.h das vor dem eigentlichen Text vier Paramter zu übergeben sind :
set <name> writeXY x-pos,y-pos,len, align l|r <text to be displayed>
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

ntruchsess

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

cyberdwarf

Hallo zusammen,

seit dem gestrigen Update, kann ich keine 2 Firmata Arduinos mehr parallel betreiben. Egal ob 1x USB und 1x Ethernet, oder 2x USB. Sobald mehr als ein Firmata Device  definiert ist, gehen die Devices nicht auf "opened"
Beim Starten bleiben die Devices auf "Initialized" stehen. Erst nach einem "set Firmata_USB reset" funktionieren diese wieder.

Gehe ich auf die Version vom 28.02.2014 (mein vorletztes Update + Backup) zurück, werden die Devices automatisch verbunden.

Kann ich einen Befehl nach einem Neustart ausführen lassen, damit ein Reset ausgeführt wird?

Gruß
Torsten

Auszug aus meiner Konfiguration
define FIRMATA_USB FRM /dev/ttyUSB0@57600

define OWFRM OWX 6
attr OWFRM IODev FIRMATA_USB

define FIRMATA_USB1 FRM /dev/ttyUSB1@57600
attr FIRMATA_USB1 i2c-config 1

define FIRMATA_NET FRM 3030 global

#################################

define Firmata_OUT_7 FRM_OUT 7
attr Firmata_OUT_7 IODev FIRMATA_USB
attr Firmata_OUT_7 room FRM
attr Firmata_OUT_7 stateFormat value

define Firmata_OUT_13 FRM_OUT 13
attr Firmata_OUT_13 IODev FIRMATA_NET
attr Firmata_OUT_13 group Netzwerk
attr Firmata_OUT_13 room FRM
attr Firmata_OUT_13 stateFormat value

define LCD FRM_LCD i2c 20 4 39
attr LCD IODev FIRMATA_USB1
attr LCD backLight on
attr LCD stateFormat text

RPi+COC | RFXtrx433 | HMLAN
fht80b, FHT80TF, S300TH, hms100-tf, EMFM, EMWZ
FS20:bs,di,piri,rsu,s4a,s6a,sm4,sm8,s8m,st,tfk
YCR-1000, ITL-230, HE877, HE878A, AB440
KD101, RGR918, TS15C_10, WGR918, WS2300
HM-LC-Sw1PBU-FM, HM-LC-BL1-FM
ZWAVE(Test)

ntruchsess

hab ich letzte Woche auch bemerkt, dass das mit der IODev-Zuordnung im FRM plötzlich nicht mehr tut. Hatte aber noch keine Gelegenheit das näher zu untersuchen. (bin grade auf der Rückfahrt von einem Kurztripp nach Berlin).

Vielleicht hilft dir der Fix, der vorhin zuIODevv reingekommen ist:

http://forum.fhem.de/index.php?topic=21227.msg147212.msg#147212

fhem.pl: fixing IODev issues

<b>fhem.pl: fixing IODev issues</b><br /><br />fhem.pl: fixing IODev issuesView Changes<br /><br />Source: fhem.pl: fixing IODev issues

Gruß, Norbert
while (!asleep()) {sheep++};

Will

Hallo,

versuche das MOdul mit einem Arduino Nano und einem ENC28j60 zum laufen zu bekommen:

der ENC ist folgendermassen am nano angeschlossen:
ENC SO -> Arduino pin 12
ENC SI -> Arduino pin 11
ENC SCK -> Arduino pin 13
ENC CS -> Arduino pin 10
ENC VCC -> Arduino 3V3 pin
ENC GND -> Arduino Gnd pin

In meinem sketch sieht das dann so aus:

#define NETWORK_FIRMATA
//replace with ip of server you want to connect to, comment out if using 'remote_host'
#define remote_ip IPAddress(192,168,1,11)
//replace with hostname of server you want to connect to, comment out if using 'remote_ip'
//#define remote_host "server.local"
//replace with the port that your server is listening on
#define remote_port 3030
//replace with arduinos ip-address. Comment out if Ethernet-startup should use dhcp
#define local_ip IPAddress(192,168,1,16)
//replace with ethernet shield mac. It's mandatory every device is assigned a unique mac
const byte mac[] = {0x90,0xA2,0xDA,0x0D,0x07,0x02};
#endif


die Pin Definition sieht so aus


ifdef NETWORK_FIRMATA
  // ignore SPI and pin 4 that is SS for SD-Card on Ethernet-shield
  for (byte i=0; i < TOTAL_PINS; i++) {
    if (IS_PIN_SPI(i)
        || 4==i
        || 10==i //explicitly ignore pin 10 on MEGA as 53 is hardware-SS but Ethernet-shield uses pin 10 for SS
        ) {
      Firmata.setPinMode(i, IGNORE);
    }
  }


Firmdata lauscht aber hoert nix, Arduino leuchtet rot, ebenso der ENC, die LEDs am ENC fuer Netzwerkaktivitaet blinkt, aber ich finde ihn nicht unter der IP.
Was mich wunderte ist, dass ich die anderen MOdule nicht auskommentiert habe und der Arduino trotzdem nicht meckert...ueberall steht dass Speicher zu knapp ist.

Was mache ich falsch?


W

ntruchsess

hast Du den Kommentar vor #include "UIPEthernet.h" entfernt?
while (!asleep()) {sheep++};

ntruchsess

Hallo Jürgen,

Zitat von: Wzut am 27 Februar 2014, 21:45:03
ein Punkt ist mir in der command.ref aufgefallen bei dem attr writexy
set <name> writeXY x-pos,y-pos,len[,l] <text to be displayed>
wäre ich nicht der Autor von writexy würde ich es nicht verstehen ....

tu Dir keinen Zwang an und verbessere die Dokumentation nach Deinen Vorstellungen ;-)

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

Will

Also ich bin jetzt soweit, dass ich den enc im Netz sehe ( die IP), somit denke ich, dass ich das enc Modul richtig angeschlossen habe. Frm in fhem bleibt aber immer bei listening....frm_in und frm_out sagen, dass sie nicht erkannt sind.....hat jemand Ideen woran das liegen könnte?
Danke. W

Sent from my Nexus 7 using Tapatalk


ntruchsess

mit 'im Netz sehe' meinst Du, dass der Arduino auf ein Ping antwortet?
while (!asleep()) {sheep++};

Will

Ich sehe die ihm zugewiesene IP auftauchen. Ich benutze fing als tool alle Teilnehmer in meinem Netz zu zeigen.

Sent from my Nexus 7 using Tapatalk


ntruchsess

hm... keine Ahnung was fing so treibt um die Services im Netz aufzuspüren, versuch es mal ohne - nicht dass dein 'fing' die ConfigurableFirmata mit einem Portscan zumüllt und runterreißt :-(

Laufen denn die UIPEthernet-examples (wie z.B. der EchoServer-sketch?
while (!asleep()) {sheep++};

strauch

@Norbert kann man dich eigtl. irgendwie bestechen, das du Support für ein DHT22 in die Firmata einbaust?! Ich würde total gerne kleine "Kistchen" basteln mit Bewegungsmelder,Reedkontakt für Fensterkontakt und DHT22 Sensoren, die dann in einige Räume (Flur, Garage, HWR) kommen (wo sich kein komplettes Homematicsystem lohnt, aber die Werte trotzdem interessant sind). Leider fehlt mir sowohl das Wissen als auch die Zeit (kleine Tochter) das hinzubekommen.
Aber vielleicht kann ich dich ja mit einem Arduino und DHT22 Sensor o.ä. motivieren da was umzusetzten :-).
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.