iButtons

Begonnen von Prof. Dr. Peter Henning, 15 Februar 2014, 09:04:15

Vorheriges Thema - Nächstes Thema

ntruchsess

#15
Zitat von: Prof. Dr. Peter Henning am 15 Februar 2014, 11:18:32
Nein, das Modul gibt es bereits ... OWID.
[...]
Das wird wegen der relativ hohen Buslast darauf hinauslaufen, dass man die Ansteuerung des 1-Wire-Bus auf einen Mikrocontroller verlagert (der Arduino sollte das können...) und somit ein von FHEM autonomes sicheres System schafft, das aber mit FHEM verbunden ist.

Mir wird gerade klar, dass das die Firmata-firmware ja heute schon kann. Nämlich sowohl komplette 1-Wire-Bus-suche und zyklisches Wiederausführen beliebiger Firmata-kommandos (wie z.B. eben die 1-Wire-Bussuche). (Dieses zyklische Wiederausführen ist das Firmata-scheduler-feature - nur bisher verwende ich das in den FRM-modulen (noch) gar nicht). Wäre aber eigentlich eine Kleinigkeit das in FRM_OWX einzubauen und schon würden die Ergebnisse der automatisierten Bussuche von selber im OWX ankommen :-)

Hier ein Beispiel aus der perl-firmata, das den Arduino automatisiert DS18B20 Temperatursensoren abfragen läßt. Zu beachten ist, dass das Beispiel ab Zeile 85 nichts anderes tut, als die Messages der Firmata zu pollen (An der Stelle müsste man sich den FHEM-main-loop denken, die ruft immer dann, wenn was kommt poll als ReadFn an der Firmata auf). Aus der poll-methode wird dann beim Eintreffen einer Firmata-nachricht der jeweilige - vorher registrierte - Callback aufgerufen.

Gruß,

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

Prof. Dr. Peter Henning

So, ich habe das mal auf einem Arduino Micro implementiert. Flache Lernkurve, geht innerhalb von einigen Minuten:

iButton-Polling im Takt von 500 ms, zuverlässige Erkennung

Die Idee ist, den Arduino Micro direkt hinter die Klingelplatte zu montieren und dann eine Nachricht an FHEM abzusetzen, wer gerade warum die Tür geöffnet hat.

LG

pah

ntruchsess

schick :-)

eigener Sketch, oder ConfigurableFirmata mit Scheduler?

Wie findest Du raus 'warum' jemand die Tür öffnet?

Gruß,

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

Prof. Dr. Peter Henning

Zusätzliche Tastatur.

  • Nur iButton öffnet Garagentor, und Haustür, wenn diese nicht abgeschlossen wurde.
  • iButton + Code öffnet die Haustür, wenn diese abgeschlossen wurde - bzw. schließt diese ab.
    Dafür wird nach dem Anhalten des iButton für ein paar Sekunden die Tastatur aktiviert.
Derzeit suche ich noch nach einer gut aussehenden Edelstahltastatur, die sich bündig in eine Frontplatte integrieren lässt. Die Frontplatte dann aus golden eloxiertem Aluminium mit Gravur - hoher WAF.

LG

pah

Tobias

ICh habe das noch nicht korrekt verstanden: Der Arduino Nano pollt selbständig im 500ms Takt sein 1wire Netz durch und meldet Veränderungen sofort per Ethernet/CC1101 an den FHEM-Server? Das wäre ja dann quasi der lang ersehnte 1wire Push(!)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ext23

Hallo,

ZitatDie Idee ist, den Arduino Micro direkt hinter die Klingelplatte zu montieren und dann eine Nachricht an FHEM abzusetzen, wer gerade warum die Tür geöffnet hat.

und wie wird hier sicher gestellt, dass niemand das Teil manipuliert? Wird die Nachricht verschlüsselt übertragen? Was passiert wenn man durch zufällige Bitfolgen FHEM zum Absturz bringt? Das klingt für mich gerade nach "security by obscurity" :-)

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

UweH

Zitat von: ext23 am 12 März 2014, 14:06:25
Was passiert...
Gar nichts, weil sich niemand die Mühe machen wird, sowas zu versuchen. Der Einbrecher geht nach hinten und versucht's mit dem Kuhfuß an der Hintertür. Alles andere ist "Mission Dingsbums" oder Bond.
Die "intelligentesten" Einbrecher, die ich hier in meiner Gegend erlebt habe, wussten gerade mal, was eine Lampe mit Bewegungsmelder macht...

Prof. Dr. Peter Henning

@Tobias: Ja.
@ext123: Nix da, über Sicherheit brauche ich nun wirklich keine Nachhilfe ...
Hier öffnet nicht FHEM die Tür, das wird auch durch das autonome System übernommen - per Ansteuerung einer KeyMatic.

LG

pah

JoeALLb

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Prof. Dr. Peter Henning

So, ich habe das mal auf Video aufgenommen - glaubt mir sonst keiner: mit dem Arduino Micro frage ich den 1-Wire Bus alle 250 ms ab - es gibt keine sichtbare Verzögerung zwischen dem Auflegen des iButtons und dem Schaltvorgang.

http://youtu.be/HiIFBWxebUM

Jetzt muss ich mir nur noch einen gescheiten Weg überlegen, in FHEM einen Event auszulösen. Oder direkt einen BidCos-Befehl abzusetzen. Oder die Tür aufzumachen.

LG

pah

ntruchsess

#25
hat eigentlich jemand interesse daran, dass ich eine schnelle automatische 1-Wire-Bussuche über Firmata sozusagen 'freischalte'? (Die kann das nämlich schon lange...)

An dem Bus sollten aber im Regelfall keine Devices dranhängen (sondern nur der iButton, wenn er denn da ist). Sonst kommt OWX garantiert aus dem Tritt.
Dann könnte man mit ein paar Änderungen im OWX einfach ein notify auf das entsprechende present-reading setzten.

Die Firmata kann im Gegensatz zu einer darauf spezialisierten Firmware natürlich nichts selbstständig (wie z.B. noch eine Tastatur abfragen oder ein Schloss öffnen) machen, das müßte dann alles über fhem gehen.

Gruß,

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

Prof. Dr. Peter Henning

Das macht m.E. derzeit nur Sinn, wenn OWX das auch schnell genug pollen kann.

Ich möchte OWX gerne um einen "Interrupt-Mechanismus" erweitern, der gezielt von außen getriggert werden kann.

LG

pah

ntruchsess

ich hab nix von pollen gesagt.

man kann der Configurable-firmata 'sagen', dass sie den 1-Wire-bus selbstständig regelmäßig durchsuchen soll. Nach jeder Bussuche schickt die Firmata dann eine Nachricht mit den gefundenen Devices an FRM (wird über die ReadFn von FRM asynchron verarbeitet). FRM schreibt mit jeder dieser Nachrichten die Liste der 1-Wire-devices neu.

An dieser Stelle fehlen eigentlich nur ein paar Zeilen code die present-readings der betreffenden Devices bei einer Änderung zu updaten.

Gruß,

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

Prof. Dr. Peter Henning

Ich habe das schon richtig verstanden. Ich möchte aber, dass nicht nur die Liste neu geschrieben wird - sondern dass man einen echten FHEM-Event auslöst. Und das auch nicht nur für durch deine Arduinos.

LG

pah

ntruchsess

wenn man das present-reading eines OW-devices updated erzeugt man doch einen 'echten' fhem-event? Wie viel 'echter' soll der event denn sein?

Und was soll schlecht daran sein, wenn das erst mal nur mit einem Arduino geht? Dein gerade vorgestelltes 250ms Buspollen läuft doch genauso darauf?
Ich weiß, ich sollte das asynchrone OWX endlich mal zur Reife bringen, damit könnte man durchaus continuierlich per DS2480 den Bus pollen ohne fhem damit signifikant auszubremsen, auch wenn einige Geräte auf dem Bus vorhanden sind.

Aber eigentlich wollte ich Deinen Thread hier nicht kapern... sorry..

Gruß,

Norbert

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