Hauptmenü

Firmata+Arduino

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

Vorheriges Thema - Nächstes Thema

fhainz

Danke das klappt nun.

Leider wird nach einen neustart wieder das reading "reading" aktualisiert/on-off gesetzt.


Grüße

ntruchsess

Zitat von: fhainz am 17 März 2014, 18:43:38Leider wird nach einen neustart wieder das reading "reading" aktualisiert/on-off gesetzt.

Das sollte mit Attribut 'count-mode' auf 'falling' nicht stören.

Gruß,

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

fhainz

Ich nutze zum zählen das HourCounter Modul, nicht den internen zähler.
Mir ist es nur bei meinem Boiler aufgefallen da dieser auf nachtstrom läuft und zu dieser Zeit eigentlich keine impulse ankommen sollten ;)

Grüße


fhainz

Hallo!

Ich hab heute ich 2 Ein-/Ausgänge definiert um meine Stromstossschaltung im Vorzimmer "anzuzapfen". Das funktioniert problemlos solange ich immer on/off befehle absetzte.
Wenn ich aber ein paar mal (manchmal schon beim 1. mal) zB on-for-timer 1 sende, stürzt die Mega ab. Es lassen sich keine befehle mehr senden, naja senden via FHEM geht aber es passiert anschließend nichts, und am S0 Zähler tut sich auch nichts mehr. Nach dem An/Abstecken der Stromversorgung passt wieder alles.

- 1x 230V Relais das anzieht wenn das Licht an ist, Schließer-Kontakt zum Arduino Mega Eingang
- 1x 5V Relais das die Arduino Mega schaltet, Schließer-Kontakt parallel zum Stromstossschalter um das Taster-Drücken zu simulieren

Meine Defines:

define allgVorzimmerLicht FRM_IN 47
attr allgVorzimmerLicht IODev FIRMATA
attr allgVorzimmerLicht alias Licht
attr allgVorzimmerLicht devStateIcon .*on.*:light_ceiling_off .*off.*:light_ceiling@green
attr allgVorzimmerLicht group 1. Vorzimmer
attr allgVorzimmerLicht internal-pullup on
attr allgVorzimmerLicht room 5. Wohnung
attr allgVorzimmerLicht stateFormat reading

define allgVorzimmerLichtSchalten FRM_OUT 48
attr allgVorzimmerLichtSchalten IODev FIRMATA
attr allgVorzimmerLichtSchalten alias Licht schalten
attr allgVorzimmerLichtSchalten devStateIcon .*:light_toggle
attr allgVorzimmerLichtSchalten group 1. Vorzimmer
attr allgVorzimmerLichtSchalten room 5. Wohnung
attr allgVorzimmerLichtSchalten stateFormat value
attr allgVorzimmerLichtSchalten webCmd on-for-timer 1


Jemand eine Idee?


Grüße


larsberghahn

Hallo,
ich habe gerade mehrere on-for-timer auf dem Mega am laufen, bis jetzt hat sich noch nichts verabschiedet.
Auch auf einem zweiten Arduino, einem Ethernet funzt das ganze im Grunde.

Welche Firmata verwendest du? Ich habe Configurable 2_05 am laufen.

Ich kämpfe gerade mit einem anderen Wunder.
Ich habe eine 8-Kanal Relaismodul welchen nach masse geschaltet werden möchte. Der Mega macht das auch anstandslos aber
der Ethernet nicht...
Es sieht so aus als wenn die Pins des Ethernet Arduinos nur zwischen 5v und floating wechseln.

Nebenbei, in der 20_FRM_OUT idt mir in Zeile 59 folgendes ins Auge gestochen:
my $invert = AttrVal($hash->{NAME},"activeLow","no");
soll das "no" vielleicht "on" heissen?
Dürfte aber meines Erachtens keine Auswirkung haben...

Was ich auch komisch finde ist, dass wenn ich den Mega in FHEMWEB anklicke bekomme ich eine schöne Übersicht über die Pis und deren
Möglichkeiten. z.B. i2c_pins 20,21 Beim Ethernet steht zwar auch firmware ConfigurableFirmata.ino und firmware_version V_2_05
aber keine Pins...   Obwohl das nicht kriegsentscheidend ist...

Warum das mit dem nach Masse schalten nicht funktionieren will ist mir jedoch schleierhaft...

MFG Lars

ntruchsess

Zitat von: fhainz am 19 März 2014, 17:59:27
Jemand eine Idee?

Ja, vermutlich bringen die Schaltimpulse der Relais den Arduino zum Absturz. Abhilfe: Suppressordioden gegen die Spannungsspitzen und ausreichend weit weg vom Arduino plazieren.

Gruß,

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

fhainz

#261
Zitat von: lars am 19 März 2014, 20:34:05
Hallo,
ich habe gerade mehrere on-for-timer auf dem Mega am laufen, bis jetzt hat sich noch nichts verabschiedet.
Auch auf einem zweiten Arduino, einem Ethernet funzt das ganze im Grunde.

Welche Firmata verwendest du? Ich habe Configurable 2_05 am laufen.
Ich verwende auch die Configurable 2_05. Eigenartig das es bei dir Problemlos funktioniert. Schaltest du damit auch Relais?

Zitat von: ntruchsess am 19 März 2014, 23:11:55
Ja, vermutlich bringen die Schaltimpulse der Relais den Arduino zum Absturz. Abhilfe: Suppressordioden gegen die Spannungsspitzen und ausreichend weit weg vom Arduino plazieren.
Ich hab RC-Glieder die direkt in dem Relais-Sockel stecken. Sollte genügen oder? Weit weg platzieren wird unmöglich da der arduino im Verteiler sitzt.
Hast du noch einen andern Tipp was ich versuchen könnte? Bzw. hast du eine Erklärung warum es bei einem normalen on und anschließendem off problemlos funktioniert?

Grüße

larsberghahn

Hallo,
ja ich schalte auch Relais, allerdings schaltet der Arduino nur Optokoppler welche dann die Relais schalten. Die 5V für Die Relais habe ich zwar vom gleichen Netzteil abgezwackt aber halt vor dem Arduino.

Ich verwende das "8 Kanal 5V Relay Relais Module Modul für Arduino" von Amazon


MFG Lars

larsberghahn

Ich habe mal einen Test gemacht bzgl. meines Masseschaltproblems.

Wenn ich einen Pin darauf Programmiere zu blinken:
define arduinoblinka2 at +*00:00:01 set Out_2_7 on-for-timer .5 #Dauerblinken
Das ganze identisch am Mega (über USB) und am Ethernet.

und dann eine LED mit Vorwiderstand nehme und diese einmal von GND-PIN und einmal verpolt von 5v-PIN stecke blinkt sie am Mega
immer und am Ethernet nur wenn sie vom PIN nach GND gesteckt ist. Der EThernet schaltet also bei ON 5V raus, aber bei OFF nicht auf
Masse sondern floating.

1wire habe ich auch getestet, das funktioniert auch nur am Mega.
Mit dem Atrribut activeLow habe ich auch schon gespielt

Hat jemand eine Idee?

MFG Lars

larsberghahn

Hallo,

ich habe es hinbekommen. Das Problem muss an der Programmierung des Arduino selber gelegen haben.
Ich habe ihn neu Programmiert (eigendlich mit dem identischen Sketch) und siehe da, ich bekomme die
Übersicht der Funktionen der Pinne und das Masseschalten funktioniert auch.

MFG Lars

larsberghahn

Hallo,
ersteinmal vielen Dank für die Tolle arbeit mit den FRM Geschichten. Ich bin gerade dabei so einiges auf Arduinos umzustellen
weil es nach meiner Ansicht eine der flexibelsten und preisgünstigsten Lösungen ist.

bei verwendung eines 1wire Temperatursensors am Etnernet Arduino und einem reradcfg hängt sich FHEM immer auf.
Im fhem.log steht zuletzt folgendes:
2014.03.21 20:30:27 1: OWX: 1-Wire bus Arduino_OW_Temp1: interface Firmata detected in Arduino2

Wenn ich den Prozess kille und neu starte bzw. bevor ich ein rereadcfg versuche über shutdown restart starte funktioniert ersteinmal alles.
Auch die Temperatur des 1wire Sensors wird gelesen.
Allerdings hat sich FHEM letze nach wieder von selbst verabschiedet.

Jetzt habe ich mal eine kleine Verständnisfrage.
Norbert, in diesem Thread hattest du doch im laufe des letzten Jahres die module 11_OWX_FRM.pm etc. gepostet.
Ich habe diese mal testweise eingesetzt und auch versucht herauszufinden ob es davon auf Github schon neuere gibt.
Mit denen aus dem Thread hier bekam ich eine Fehermeldung, dass mein ausgewählter Pin für 1wire ungültig sei.
Dann hab ich die von https://github.com/ntruchsess/fhem-mirror/blob/owx_async/fhem/FHEM/ ausprobiert, aber FHEM hat
sich trotzdem beim rereadcfg aufgehängt. Ich konnte da ersteinmal keinen direkten Unterschied zum aktuellen Update feststellen.

Könntest du mir eventuell einen Kurzen überblick geben welchen Stand die jeweiligen Varianten haben?
Oder bin ich völlig auf dem falschen Dampfer? :)

MFG Lars

ntruchsess

Zitat von: lars am 22 März 2014, 10:58:50
Könntest du mir eventuell einen Kurzen überblick geben welchen Stand die jeweiligen Varianten haben?

der Stand im SVN ist aktuell der einzige der an die Semantikänderung von AssignIOPort angepasst ist, wobei ich da noch ein paar Kleinigkeiten nachschärfen muss. Komme ich aber nicht vor heute abend oder morgen im Laufe des Tages dazu.

Der owx_async-branch auf Github ist noch nicht darauf angepasst. Der wird mit einer aktuellen fhem.pl vermutlich Probleme haben.

Gruß,

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

fhainz

#267
Zitat von: fhainz am 19 März 2014, 17:59:27
Hallo!

Ich hab heute ich 2 Ein-/Ausgänge definiert um meine Stromstossschaltung im Vorzimmer "anzuzapfen".
Wenn ich aber ein paar mal (manchmal schon beim 1. mal) zB on-for-timer 1 sende, stürzt die Mega ab. Es lassen sich keine befehle mehr senden, naja senden via FHEM geht aber es passiert anschließend nichts, und am S0 Zähler tut sich auch nichts mehr. Nach dem An/Abstecken der Stromversorgung passt wieder alles.

Mittlerweile hab ich mir ein 8 Kanal Schaltmodul bestellt. Gestern ist es angekommen und das schalten der Relais hat den ganzen Abend ohne absturz funktioniert. Heute morgen ist die Mega wieder aber wieder abgestürzt. :(
Jetzt nach dem nachhause kommen hab ich es noch ein paar mal versucht, aber spätestens beim 3. mal schalten ging nichts mehr. Es war auch egal welchen Befehl ich absetzte. on, on-for-timer und blink hab ich versucht und die mega ist immer nach ein paar versuchen abgestürzt.   

Meine Defines:
define FIRMATA FRM 3030 global
attr FIRMATA sampling-interval 1000
attr FIRMATA verbose 3

define allgVorzimmerLicht FRM_IN 47
attr allgVorzimmerLicht IODev FIRMATA
attr allgVorzimmerLicht alias Licht
attr allgVorzimmerLicht devStateIcon .*on.*:light_ceiling_off .*off.*:light_ceiling@green
attr allgVorzimmerLicht group 1. Vorzimmer
attr allgVorzimmerLicht internal-pullup on
attr allgVorzimmerLicht room 5. Wohnung
attr allgVorzimmerLicht stateFormat reading

define allgVorzimmerLichtSchalten FRM_OUT 48
attr allgVorzimmerLichtSchalten IODev FIRMATA
attr allgVorzimmerLichtSchalten alias Licht schalten
attr allgVorzimmerLichtSchalten group 1. Vorzimmer
attr allgVorzimmerLichtSchalten restoreOnReconnect on
attr allgVorzimmerLichtSchalten restoreOnStartup on
attr allgVorzimmerLichtSchalten room 5. Wohnung
attr allgVorzimmerLichtSchalten stateFormat value
attr allgVorzimmerLichtSchalten webCmd on-for-timer 1


Bin schon kurz vorm verzweifeln... Hat jemand eine Idee?

Grüße

Edit:
Ausserdem hab ich nach jedem FHEM Neustart diese Fehlermeldungen im Log:
2014.04.02 16:42:07.494 1: Including ./FHEM/arduino.cfg
2014.04.02 16:42:07.518 3: [HourCounter] HourCounter_Initialize.215 Init Done with Version 1.02 - 17.03.2014 (john)
2014.04.02 16:42:07.527 3: Registering GEOFANCY geofancy for URL /geo...
2014.04.02 16:42:07.530 3: kuGeschirrspuehler: I/O device is jeelink
2014.04.02 16:42:07.533 3: kuKuechenGeraete: I/O device is jeelink
2014.04.02 16:42:07.545 2: error initializing 'allgVorzimmerLichtSchalten': allgVorzimmerLichtSchalten, FIRMATA is not connected
2014.04.02 16:42:07.545 3: Licht schalten
2014.04.02 16:42:07.545 3: 1. Vorzimmer
2014.04.02 16:42:07.545 3: on
2014.04.02 16:42:07.545 3: on
2014.04.02 16:42:07.545 3: 5. Wohnung
2014.04.02 16:42:07.545 3: value
2014.04.02 16:42:07.545 3: on-for-timer 0.5
2014.04.02 16:42:07.561 2: error initializing 'allgBoiler': allgBoiler, FIRMATA is not connected
2014.04.02 16:42:07.561 3: Arduino
2014.04.02 16:42:07.562 3: value
2014.04.02 16:42:07.563 1: configfile: Licht schalten
1. Vorzimmer
on
on
5. Wohnung
value
on-for-timer 0.5
Arduino
value
2014.04.02 16:42:07.563 1: Including ./log/fhem.save
2014.04.02 16:42:07.601 3: FIRMATA: port 3030 opened
2014.04.02 16:42:07.602 1: usb create starting
2014.04.02 16:42:07.609 3: Probing CUL device /dev/cu.usbmodem1d1321
2014.04.02 16:42:07.609 3: Can't open /dev/cu.usbmodem1d1321: Resource busy
2014.04.02 16:42:07.610 3: Probing TCM310 device /dev/cu.usbserial-AE01DUEH
2014.04.02 16:42:07.610 3: Can't open /dev/cu.usbserial-AE01DUEH: Resource busy
2014.04.02 16:42:07.635 1: usb create end
2014.04.02 16:42:07.638 0: Server started with 283 defined entities (version $Id: fhem.pl 5369 2014-03-30 06:58:52Z rudolfkoenig $, os darwin, user Fabian, pid 8708)
2014.04.02 16:42:07.638 1: HMLAN_Parse: HMLan new condition ok
2014.04.02 16:42:09.834 3: Device szFensterkontakt added to ActionDetector with 028:00 time
2014.04.02 16:42:12.923 3: querying Firmata Firmware Version
2014.04.02 16:42:12.946 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_05
2014.04.02 16:42:14.823 3: FHT8V set wzStellventil valve 18

fhainz

#268
Anscheinend hat mein Pin 49 irgendetwas. Ich bin draufgekommen das ich gestern, als es problemlos funktionierte, einen anderen PIN verwendet hab.
Umgesteckt und es funktioniert -.- Auf die Idee hätte ich auf früher kommen können..  ::)

Die Fehlermeldungen nach dem start hab ich aber immer noch.


Grüße

Edit
Nun ist das ding schon wieder abgestürzt. Für heut hab ich die Nase voll...
Diese Fehlermeldung steht im FHEM log.
2014.04.02 18:05:59.727 3: set allgBoiler on : Can't call method "message_prepare" on an undefined value at FHEM/lib/Device/Firmata/Platform.pm line 481.
2014.04.02 18:05:59.727 3: n_allgBoiler return value: Can't call method "message_prepare" on an undefined value at FHEM/lib/Device/Firmata/Platform.pm line 481

ntruchsess

die 'Firmata is not connected'-meldung beim Fhem-start ist kein Fehler im eigentlichen Sinn, das liegt einfach daran, dass der Arduino ein bischen braucht um sich mit FHEM zu verbinden.

der andere Fehler läßt darauf schließen, dass die Netzverbindung zum Arduino (temporär) unterbrochen war.

Gruß,

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