Hauptmenü

Firmata+Arduino

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

Vorheriges Thema - Nächstes Thema

Charles

Hallo Norbert,

hab inzwischen Einiges Weiteres versucht:

Lade abwechselnd das 1Wire-Temperaturskript auf den Arduino und lese damit Temperaturen aus.
Danach mein ConfigurableFirmata und versuche, auch hier an die Sensoren zu kommen.
Immer das gleiche Ergebnis (siehe oben). Auch der Loglevel 5 oder 6 brachte nichts Neues. Es kommt nicht mehr im Logfile an.
Inzwischen hab ich mir auch die aktuellsten OWX-, FRM- und  OWTHERM-Dateien geholt, weil ich dachte, die sind vielleicht beschädigt. Hat aber auch nichts gebracht. Ich hab die Namen gewechselt, die Pins gewechselt ...
list Input (umbenannt von Eingang) bringt Folgendes:Internals:
   DEF        7
   FRM_OWX_CORRELATIONID 0
   INTERFACE  firmata
   IODev      FRM_Input
   NAME       Input
   NR         221
   PIN        7
   PRESENT    0
   ROM_ID     FF
   STATE      Initialized
   TYPE       OWX
   ALARMDEVS:
   DEVS:
   Frm_owx_replies:
   Readings:
     2014-01-05 14:48:11   state           failed
Attributes:
   group      Firmata
   loglevel   6
   room       HEIZUNG


fhem.cfg sieht so aus:# -------------Arduino-Anbindung ---------------------
define FRM_Input FRM 3030 global
attr FRM_Input loglevel 6
define Input OWX 7
attr Input loglevel 6


FRM_Input status: listening
Input status: Initialized
FRM:192.168.0.80:1028 status: Connected


Nochmal der Filelog-Auszug nach Neustart:2014.01.05 14:48:13 0: Server started with 100 defined entities (version $Id: fhem.pl 4519 2014-01-01 15:43:32Z rudolfkoenig $, os linux, user root, pid 18583)
2014.01.05 14:48:17 3: querying Firmata Firmware Version
2014.01.05 14:48:17 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_05
2014.01.05 14:48:32 1: OWX: 1-Wire devices found on bus Input ()


Ich wäre für Hilfe sehr dankbar!
Charles
Raspberry · FB 7590 · CUL · FS20 · MAX · ESP

ntruchsess

#211
Hallo Charles,

jetzt hatte ich grade mal Zeit deinen Sketch_Firmata.txt vom 30. Dezember genauer unter die Lupe zu nehmen. Du hast das ein bischen viel wild auskommentiert - die ganzen #ifdefs sind so aufgebaut, dass jedes Feature, dass man im oberen Teil (vor Zeile 108) per Kommentar abschalted weiter unten auch nicht mehr verwendet wird. Da hast Du das FirmataExt-feature irgendwie durcheinandergebracht (sieht man unter anderem daran, dass 2 mal die Fehlermeldung 'unhandles Sysex Command' kommt und in den FRM-details die Pin-eigenschaften fehlen. Ohne FirmataExt werden die Sysex-commands nicht verteilt und OneWire geht nicht.

Also nimm einfach noch mal ConfigurableFirmata im Originalzustand, und passe erst mal nur die Netzwerkkonfig so wie in Deinen bisherigen Sketch an, dann läuft das.

übrigens: Wegen des ENC28J60-shields das bei Dir mit '#define ENC28J60_CONTROL_CS 8' nicht funktioniert hat - dafür gibts im UIPEthernet mitlerweile einen Patch (siehe aktuelle UIPEthernet-Releases)

Gruß,

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

Charles

Hallo Norbert,

Ja!!!!! das wars. Ich hab das Ausgangsskript genommen und vorsichtiger auskommentiert. Sofort krieg ich meine Sensoren.
Vielen Dank für die Hilfe

Charles
Raspberry · FB 7590 · CUL · FS20 · MAX · ESP

Charles

Hallo,

die Sensorenanbindung funktioniert perfekt. Alles absolut stabil. Jetzt hab ich mich endlich weitergewagt und wollte mit dem Arduino noch einen Schalter auslesen. Da ging fhem wieder in die Knie.
Das Wiki gibt zum dem Thema zu wenig her. So hab ich Ein- und Ausgang und Sensoren angebunden:
define FRM_Input FRM 3030 global
define FRM_Input_OUT FRM_OUT 6
attr FRM_Input_OUT stateFormat 1
define FRM_Input_IN FRM_IN 5
attr FRM_Input_IN stateFormat reading
define Input OWX 7
attr Input buspower real
define ofen_ruecklauf OWTHERM DS18B20 38E5F4040000 60
attr ofen_ruecklauf IODev Input
attr ofen_ruecklauf model DS1822
...


Die stateFormat Zeilen wurden automatische eingefügt.
Was ist denn da falsch?

Das Log sagt Folgendes nach einem Neustart:
2014.01.19 23:16:50 3: FRM_Input: port 3030 opened
2014.01.19 23:16:50 2: error initializing FRM_Input_OUT: error initializing 'FRM_Input_OUT': FRM_Input_OUT, FRM_Input is not connected
2014.01.19 23:16:50 2: error initializing FRM_Input_IN: error initializing 'FRM_Input_IN': FRM_Input_IN, FRM_Input is not connected
2014.01.19 23:16:50 2: error initializing Input: error initializing 'Input': Input, FRM_Input is not connected
2014.01.19 23:16:50 1: OWX: 1-Wire bus Input: interface FRM_Input is not connected to Firmata
2014.01.19 23:16:51 1: Including ./log/fhem.save
2014.01.19 23:16:53 4: Connection accepted from FRM:192.168.0.80:1026
2014.01.19 23:16:56 3: querying Firmata Firmware Version
2014.01.19 23:16:56 3: Firmata Firmware Version: ConfigurableFirmata_Uno.ino V_2_05
2014.01.19 23:16:56 3: received String_data: Unhandled sysex command
2014.01.19 23:28:36 1: Including fhem.cfg


Danke für Hilfe

Charles
Raspberry · FB 7590 · CUL · FS20 · MAX · ESP

Wzut

#214
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.

Achso , ich hatte es auch nicht geschafft mit der set text Funktion Texte mit Leerzeichen auszugeben egal wie ich versucht habe den Text zu maskieren.
Vllt. hast du ja einen Tipp, ich habe jetzt mit einem join gelöst
     
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

det.

Zitat von: det. am 20 April 2013, 22:22:21
Hallo Norbert,
ich habe ein China Billigdisplay http://www.ebay.de/itm/New-2004-204-20X4-Character-LCD-Display-Module-Blue-Backlight-/261162290069?pt=Motoren_Getriebe&hash=item3cce7c4b95 über diesen Adapter angeschlossen: http://www.ebay.de/itm/390527388644?ssPageName=STRK:MESINDXX:IT&_trksid=p3984.m1436.l2649
Zwei solcher Displays habe ich schon lange im Einsatz mit dem Louis Swart Interface für 1wire und OWLCD von pah. Die Ardunio Variante ist noch günstiger und in Ardunionähe als Füllstandsanzeiger praktisch zu verwenden mit dem von Dir schon angekündigten  Ultraschallmodul nur fehlt Deiner FRM_LCD noch die Möglichkeit ( oder mir die Fähigkeit) Variablen auf den 4 Zeilen des Displays darzustellen.
@ Norbert und Wzut,
die Frage treibt mich auch noch immer um und resultiert in einer gefüllten Kiste ungenutzter Bauteile. Norbert, wenn es deine knappe Zeit erlaubt, da weiterzumachen wäre das großartig.
LG
det.

ntruchsess

hallo WZut,

find ich prima dass Du Dich daran gemacht hast. Ich teste Deine Änderungen in den nächsten Tagen mal mit meinem 2-Zeiligem Display und checke das dann ein.

@det. konnstest Du das von WZut geänderte Modul mal mit Deinem 4-zeiligem Display testen?

Gruß,

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

ntruchsess

Zitat von: Charles am 21 Januar 2014, 20:11:45
Jetzt hab ich mich endlich weitergewagt und wollte mit dem Arduino noch einen Schalter auslesen.
[...]
Was ist denn da falsch?
Config sieht eigentlich gut aus.

Zitat von: Charles am 21 Januar 2014, 20:11:45
Das Log sagt Folgendes nach einem Neustart:
2014.01.19 23:16:56 3: received String_data: Unhandled sysex command
[/quote]

Hast Du vieleicht das DigitalInputFirmata oder DigitalOutputFirmata oder das FirmataReporting-feature aus der ConfigurableFirmata rauskonfiguriert?

Gruß,

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

Achim

Hallo,

ich habe mal wieder Zeit gefunden, an meinem Firmata-Arduino Projekt weiterzumachen. Dabei bin ich auf folgendes Problem gestoßen:

Mit FRM_IN und FRM_OUT kann ich die Pins D20 (A6) und D21 (A7) nicht ansprechen bzw. auslesen. Bis D19 (A5) funktionieren alle Pins ausgenommen D0/D1 (TX/RX) und D10-D13 (Kommunikation mit dem Ethernetshield). Ich habe einen NANO mit ENC28J60 Shield.

In der Datei "boards.h" im Firmataverzeichnis habe ich folgenden Eintrag gefunden:
#define IS_PIN_DIGITAL(p)       ((p) >= 2 && (p) <= 19)

Ein Ändern auf
#define IS_PIN_DIGITAL(p)       ((p) >= 2 && (p) <= 21)
hat aber keine Änderung am Verhalten bewirkt.

Wo ist noch eine Begrenzung der digitalen IN/OUT Ports im Programmcode vorhanden? Oder können diese zwei Ports digital gar nicht angesprochen werden?

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Wzut

#219
Hast du den I2C Teil in Firmata auskommentiert ?  Wenn nein müssten sie die dir in FHEM als I2C Pins gelsitet werden.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

woody

Hallo,
versuche mich gerade an einem 1602 Display über firmata_2.05.

############################
define Arduino2 FRM 3040 [192.168.0.73]
attr Arduino2 i2c-config 1
attr Arduino2 room Arduino
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 75
attr OWX_10_68A454020800 tempLow 70
define OWX_10_E2EE54020800 OWTHERM DS1820 E2EE54020800
attr OWX_10_E2EE54020800 IODev Input
attr OWX_10_E2EE54020800 model DS1820
attr OWX_10_E2EE54020800 room Arduino
attr OWX_10_E2EE54020800 tempHigh 75
attr OWX_10_E2EE54020800 tempLow 70
define LCD_1 FRM_LCD i2c  16 2 0x3F
attr LCD_1 IODev Arduino2
attr LCD_1 room Arduino
attr LCD_1 stateFormat text

Onewire funktioniert wunderbar, aber das Display bekomme ich nicht zum laufen. Irgendwas scheint laut log mit der I2C Adresse nicht zu stimmen.
Welche Eingabe erwartet FRM_LCD?

LOG:
Argument "0x3F" isn't numeric in bitwise and (&) at FHEM/lib/Device/Firmata/Protocol.pm line 542.

Viele Grüße

woody

ntruchsess

Zitat von: Achim am 30 Januar 2014, 22:16:52
Ein Ändern auf
#define IS_PIN_DIGITAL(p)       ((p) >= 2 && (p) <= 21)
hat aber keine Änderung am Verhalten bewirkt.
Port C des ATmega328p hat nur 6 bits für Digital-I/O. (Siehe Datasheet 1.1.4, Pin Description Port C. Da kann die Software nichts dran ändern.

Gruß,

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

ntruchsess

Zitat von: woody am 02 Februar 2014, 13:21:12
Argument "0x3F" isn't numeric in bitwise and (&) at FHEM/lib/Device/Firmata/Protocol.pm line 542.
versuchs mal mit 63 (dezimalwert von 0x3F)

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

Achim

Hallo Norbert,

ZitatPort C des ATmega328p hat nur 6 bits für Digital-I/O.

da habe ich mich wohl durch den Belegungsausdruck des NANO in die Irre führen lassen. Da ist A6 und A7 mit angegeben. Vielen Dank.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

woody

Zitat von: ntruchsess am 02 Februar 2014, 14:52:29
versuchs mal mit 63 (dezimalwert von 0x3F)

- Norbert

Hallo Norbert,
ja das wars......habs leider nirgends gesehen das es so eingegeben werden muß..

Danke