Ich bin gerade dabei ein 2TE HutschienenModul für einen 1wire Arduino Busmaster zu erstellen. Incl. StrongPullup, Aktivitätsanzeige, eindeutiger ID und Spannung/Stromüberwachung.
Folgende Fragen die ich an Norbert habe:
1. mit welcher i2c-ID sprichst du den DS2482 an? Z.z. habe ich AD0 und AD1 des DS2482 mit GND verbunden.
2. Nutzt du den PCTLZ Ausgang des DS2482? Damit wird der StrongPullup aktiviert.
sowohl I2C-addresse als auch Strong-pullup können in der DS2482Firmata (https://github.com/ntruchsess/arduino/blob/DS2482/utility/DS2482Firmata.cpp#L199) über das 1-Wire-config-kommando dynamisch konfiguriert werden. Eventuell könnte man die Platine ja so gestalten, dass man ggf. einfach mehrere DS2482-100 (mit unterschiedlichen per DIP-schalter oder Lötbrücke wählbaren) I2C-addressen an einem Arduino anschließen könnte indem man die Platinen einfach übereinander steckt?
Hallo Norbert,
Gibt es zur i2c Adressauswahl im FRM Modul ein Attribut? Was ist default im Sketch? Ich möchte das Ganze gerne Plug'n'Play haben.
Im ersten Prototyentwurf sehe ich keine mehrfach Busmaster vor.
Ziel ist es ja einen einfachen und kostengünstigen Busmaster zu erhalten den man mit schmalem Budget einfach mehrfach nebeneinanderstecken kann. Ist schon kompliziert genug in dem kleinen Gehäuse den Arduino und den relativ großen Ethernetadapter unterzubringen ;
Grob abgeschätzt müsste einer später um die 15€ liegen...
kann man im Moment noch nicht per Attribut konfigurieren (möglich wären Werte von 0-3), Default im Sketch is 0 (d.h. die tatsächliche I2C-Addresse ist dann 0x30, die Bits 4 und 5 setzt die DS2482-library selbst). Aktuell unterstützt der Sketch auch nur einen einzelnen DS2482.
15 EUR für einen Netzwerkfähigen 1-Wire Busmaster im Hutschienengehäuseformat wäre aber echt eine Ansage!
Alles klar.... also AD0/AD1 mit logisch 0 initialisieren, bedeutet beides auf GND legen :)
Hi norbert,
habe es jetzt endlich geschafft alles auf dem Breadboard zum laufen zu bringen. Funktioniert mit OWX als auch mit OWX_ASYNC.
Nur habe ich auch mit dem DS2482 sehr oft 1-2sek freezes im Log. Egal ob OWX oder OWX_ASYNC. Ist das nur bei mir so? Noch ist das AbfrageIntervall durchgängig auf 300sek....
Zitat von: Tobias am 29 Mai 2014, 13:51:28
Hi norbert,
habe es jetzt endlich geschafft alles auf dem Breadboard zum laufen zu bringen. Funktioniert mit OWX als auch mit OWX_ASYNC.
Nur habe ich auch mit dem DS2482 sehr oft 1-2sek freezes im Log. Egal ob OWX oder OWX_ASYNC. Ist das nur bei mir so? Noch ist das AbfrageIntervall durchgängig auf 300sek....
Das ist bei mir leider auch so. Da steht noch Nachbesserung an. Ich komme wegen (realer) Baustelle vor dem Haus im Augenblick nur leider fast nicht zum programmieren.
Aber schön, dass die Hardware schon mal steht und es mit dem DS2482 auf Basis der existierenden Software schon mal grundsächlich läuft.
Gruß,
Norbert
Hi Norbert,
so bald du wieder zeit hast mach auch ich mit den Tests weiter. Habe das fertig aufgebaute breadboard erstmal im Schrank verstaut. Dann kann ich auch das platinenlayout weiter machen. Viel Erfolg beim Häuslebauen.
Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk
Zitat von: Tobias am 10 Juli 2014, 06:28:09
Viel Erfolg beim Häuslebauen.
danke :-). Ist eine Altbausanierung... Die Perimeterdämmung bis zur Kellersohle ist jetzt drin, die Grube wieder zu. Die verbleibenden Arbeiten über der Erde sind hoffendlich weniger schweißtreibend.
Mit der OWX_ASYNC-implementierung geht's übrigens bald weiter. Ich habe da in der letzten Woche noch einiges im code bereinigt. Die eher schwierig zu beherschenden asynchronen callback-interfaces sind durch das Protothreads-basierte Refactoring obsolet geworden und entfallen mit der nächsten Version ersatzlos. Jetzt ist ausnahmslos alles, was nicht per 'get'-befehl aus dem Web-frontend abgerufen wird, asynchron implementiert. Sieht im Test schon recht gut aus, bei mir gibt's nach der Initialisierung keine weiteren Freezes mehr. Werde ich in Kürze ins FHEM-SVN commiten.
Gruß,
Norbert
Hatte ich eigentlich schon gefragt ob die aktuellen hier beschriebenen Probleme mit arduino, ds2482 mit der neuen Version beseitigt sind?
Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk
Hallo Tobias,
Die von Dir beobachteten Probleme im Zusammenspiel von OWX_ASYNC und FRM waren ja unabhängig von der OneWireFirmata-implementierung auf dem Arduino. Ich habe es noch nicht testen können, aber das sollte mit der DS2482-Firmata jetzt auch besser laufen.
Gruß,
Norbert
Hallo Norbert,
sobald ich aus dem Urlaub zurück bin teste ich nochmal...
Allerdings hatte ich die beschrieben Hänger auch mit dem Standard OWX. Nicht ganz so schnell wie mit OWX_ASYNC aber für ein produktives System noch nicht einsetzbar.
Ich habe es noch nicht ganz verstanden, sind jetzt auch Änderungen in die Firmware eingeflossen? D.h. muss ich nocheinmal eine neue Firmware für den Arduino bauen?
Grüsse aus Benediktbeuern/Oberbayern.....
Hallo,
ich hab den DS2482 am mega328 auf dem Gertboard mit der 1-W Firmata.
Statt über USB kommuniziere ich über UART zw. Raspi und mega328 (als Arduino).
Soweit läuft alles prima. Der DS2482 wird nach Rreset auch initialisiert und als active angezeigt.
Einmal hatte ich auch Temperaturdaten.
Nun disconnectet er beim Abfragen der Temperaturen jedes Mal.
Nach reset wieder active, Abffrage wieder disconnectet....
Was mag das denn sein?
2014.10.12 13:58:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 155.
2014.10.12 13:58:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 155.
2014.10.12 13:58:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 155.
2014.10.12 13:58:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 155.
2014.10.12 13:58:12 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/OWX_FRM.pm line 155.
2014.10.12 13:58:12 3: received String_data: Unhandled sysex command
2014.10.12 13:58:21 3: received String_data: Unhandled sysex command
2014.10.12 13:58:21 3: received String_data: Unhandled sysex command
2014.10.12 13:58:23 3: received String_data: Unhandled sysex command
2014.10.12 13:58:25 3: received String_data: Unhandled sysex command
2014.10.12 13:58:27 3: received String_data: Unhandled sysex command
2014.10.12 13:58:27 3: received String_data: Unhandled sysex command
2014.10.12 13:58:29 3: OWX_ASYNC_RunTasks: onewire maximum number of timeouts exceedet (6), trying to reconnect
2014.10.12 13:58:29 3: OWX_ASYNC_Disconnect
Grüße an alle
Hallo zusammen
Bin ich hier Richtig ?
Ich habe nun mehrere Stunden versucht ein DS2482-100 via Firmata anzusprechen.
Als Server nutze ich ein Raspberry mit FHEM 5.6.
Auf dem Arduino (Original Arduino Mega mit W5100 (LAN)) läuft ConfigurableFirmata mittlerweile mit DS2482-Support.
Am Arduino selbst sind über Pin 3 schon diverse 1-Wire-Module (DS18B20 inkl. einem Aussensensor via CAT5e, DS2423, DS2438)
angeschlossen, welche funktionieren und Daten sammeln.
Ziel ist es aber den 1-Wire-Bus vom Arduino weg zu bekommen. Er kostet doch etwas mehr als der DS2482-100.
Nach dem ich in der fhem.cfg den I2C-Bus definiert bekommen habe
wird der DS2482-100 gefunden und angezeigt.
Der Wiki-Eintrag http://www.fhemwiki.de/wiki/Arduino_mit_OneWireFirmata (http://www.fhemwiki.de/wiki/Arduino_mit_OneWireFirmata) scheint hier nicht (mehr) korrekt zu sein.
Dort steht am Schluss der Seite :
define OWX 18
Dies erzeugt eine Fehlermeldung.
In der fhem.cfg habe ich das darum wie folgt definiert :
#Firmata aktivieren
define FIRMATA FRM 3030 global
attr FIRMATA room System
#I2C-Bus definieren, Pin 20/21
define OWI2C OWX 20
attr OWI2C IODev FIRMATA
#DS18B20 am DS2482-100
define OWX_28_FF143D4E0400 OWTHERM DS18B20 FF143D4E0400
attr OWX_28_FF143D4E0400 IODev OWI2C
Im Logfile steht dann dies hier:
2015.01.10 18:59:00 1: OWX: 1-Wire bus OWI2C: interface Firmata detected in FIRMATA
2015.01.10 18:59:24 1: OWX: 1-Wire devices found on bus OWI2C ()
Nach dem speichern der fhem.cfg kommt als Meldung "Error: 0 0" ?
Mit dem Oszi konnte ich am I2C-Bus Daten sehen, am 1-Wire des DS2482 tut sich nichts, ausser das er immer
High bleibt : :(
Hatte gedacht ich finde irgend wo in irgend einem Threat/Wiki im dem genau beschrieben wird wie ich den DS2482
via Firmata ansprechen soll. Aber entweder gibt es nichts oder ich sehe es nicht ;)
Danke schon mal für die Antworten.
Und Nachsicht falls irgend etwas an meinem Eintrag nicht wie erwartend ist.
Das ist mein erster Eintrag.
Gruss Gerd
Der ds2482-100 kannst du nur an einem arduino anschließen. Ohne gehts nicht
Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk
Hallo Tobias,
>Der ds2482-100 kannst du nur an einem arduino anschließen. Ohne gehts nicht
Ich habe mich hier wohl etwas unklar ausgedrückt.
Mir ist schon klar das der I2C-Bus von irgendwoher kommt ;)
Mit
ZitatZiel ist es aber den 1-Wire-Bus vom Arduino weg zu bekommen. Er kostet doch etwas mehr als der DS2482-100
meinte ich das ich den 1-Wire nicht am Arduino-Pin haben möchte, sondern den DS2482 via I2C am Arduino.
Und es geht mir ja nicht um die Elektrische Anbindung sondern um die Softwareseitige.
Man liest nur das es geht und auch die Platinen habe ich gesehen hier im Forum.
Nur wie man das mit Fhem > Firmata > I2C > DS2482 > 1-Wire macht finde ich nicht.
Gruss Gerd
Also es geht definitiv. Mein Testaufbau hatte funktioniert
Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk
Kannst Du mir deine Definitionen hier schicken?
Keine Ahnung was ich falsch mache.
Danke
Gerd
Hallo Gerd,
Hast Du auch wirklich die ConfigurableFirmata aus dem DS2482 (https://github.com/ntruchsess/arduino/blob/DS2482/examples/ConfigurableFirmata/ConfigurableFirmata.ino#L111)-branch auf dem Arduino? Die Unterstützung steckt nämlich nicht im OWX (bzw. OWX_ASYNC)-modul, sondern im Sketch. Der sollte sich gegenüber den FHEM-modulen wie eine normale ConfigurableFirmata mit 1-Wire-support verhalten (nur dass die Firmata das eben über den i2c-bus abwickelt).
Gruß,
Norbert
Hallo Norbert
Danke für deine Antwort.
Ich bin mir 99% sicher die Ino für den DS2482 in den Arduino
geschrieben zu haben.
In Fhem werden die Port Pin 20/21 (Mega) für I2C angezeigt.
Der DS2482 wird aber glaube ich nicht erkannt wie ich gestern gesehen hatte.
musste dann aber abbrechen weil wir zu einem 50ten eingeladen waren.
Ich schau das ich diese Woche noch mal alles kontrolliere.
Ich komme vermutlich erst am Samstag dazu.
Stimmt den meine Initialisierung in der CFG?
Das weis ich immer noch nicht :-[
Bis dahin eine schöne Woche
Gerd
Hallo Norbert,
habe nun nochmals geschaut ob ich das korrekte INO für den DS2482 geladen habe.
Habe es nun nochmals aufgespielt.
Es wird aber bisher kein Device auf dem I2C-Bus angezeigt.
Initialisierung I2C am Arduino erfolgt so (fhem.cfg):
# Port 20/21 vom Ardu ist I2C-Bus mit DS2482-100
define OWI2C OWX 20
attr OWI2C IODev FIRMATA
attr OWI2C room I2C,OWX
Danach rufe ich eine CFG für den 18B20 auf (fhem.cfg) :
#via DS2482-100
include /opt/fhem/FHEM/DS18B20_OWX_28_FF143D4E0400_00.cfg
In dieser steht das hier:
#########################################################################
## Name..........: DS18B20_OWX_28_FF143D4E0400_00.cfg
## Zweck.........: Ini DS18B20
## Standort......:
## Typ...........: CFG
## Installation..: 10.01.15 dg2ggp
## Update........: 10.01.15
## Besonderheiten: Via DS2482 wenns geht
##
########################################
#
# Temperaturmessung Aussen, Nordseite
#
#define OWX_28_FF143D4E04000 OWTHERM DS18B20 FF143D4E0400
#attr OWX_28_FF143D4E0400 IODev OWI2C
#attr OWX_28_FF143D4E0400 alias Aussen-Temperatur_Nord1
#attr OWX_28_FF143D4E0400 group Klima
#attr OWX_28_FF143D4E0400 icon temp_temperature
#attr OWX_28_FF143D4E0400 interval 300
#attr OWX_28_FF143D4E0400 model DS18B20
#attr OWX_28_FF143D4E0400 room Aussen,OWX
#attr OWX_28_FF143D4E0400 stateFormat state
#attr OWX_28_FF143D4E0400 tempHigh 85
#attr OWX_28_FF143D4E0400 tempLow 0
#attr OWX_28_FF143D4E0400 userReadings 1
#define log_OWX_28_FF143D4E0400 FileLog /opt/fhem/log/OWX_28_FF143D4E0400-%Y-%m.log OWX_28_FF143D4E0400:(T):.*|OWX_28_FF143D4E0400:T:.*
#attr log_OWX_28_FF143D4E0400 room Logs
#define SVG_log_OWX_28_FF143D4E0400_1 SVG log_OWX_28_FF143D4E0400:SVG_log_OWX_DS18B20_Aussen:CURRENT
#attr SVG_log_OWX_28_FF143D4E0400_1 icon temp_temperature
#attr SVG_log_OWX_28_FF143D4E0400_1 label "Außen - Norden - min.: $data{min1} °C, max: $data{max1} °C, Letzte: #$data{currval1} °C"
#attr SVG_log_OWX_28_FF143D4E0400_1 room Grafik,Aussen
Bei Firmata Device steht folgendes:
Zitat
Readings
error
I2C: Too few bytes received
2015-01-04 19:41:03
Wie man sieht wird nichts auf dem I2C-Bus gefunden.
Aber ob ich das korrekt anspreche weis ich nicht.
SDA und SDC sollten Richtig angeschlossen sein. Hatte die zwei Drähte schon getauscht.
Nach dem speichern der fhem.cfg kommt als Fehlermeldung "Error 0 0".
Bin immer noch Ratlos...
Gruss Gerd
Hallo Tobias,
gibt es zu diesem Projekt einen aktuellen Stand? Hat es funktioniert?
Viele Grüße,
elton