Hallo, Forum!
kurze Vorstellung:
Ich, Andreas, 35, Servicemonteur für Windenergieanlagen, technikbegeistert, aus Braunschweig (Niedersachsen), beschäftige mich seit kurzem mit Hausautomatisierung. Da ich bereits gute Kenntnisse habe mit Mikrocontrollern, Assembler, Elektrotechnik, Steuerungstechnik etc habe, möchte ich das ganze gerne peu-a-peu in Eigenregie aufbauen. Dann bin ich auf FHEM gestoßen, und denke, das wäre genau das richtige als Basis. Seit etwa 2 Wochen beschäftige ich mich jetzt damit, aber komme ohne Hilfe wohl nicht wirklich weiter. Deshalb hoffe ich jetzt hier, Hilfe zu bekommen. :)
-----
kurz:
Suche Grundlagen-Infos zu FHEM (nicht zu FS20 oder ähnliches, wie es unter http://fhem.de/Heimautomatisierung-mit-fhem-V2.pdf (//fhem.de/Heimautomatisierung-mit-fhem-V2.pdf) zu finden ist)... Bisher verstehe ich nur 'Bahnhof' ;) Diese Anleitung bezieht sich ja in erster Linie eher auf das FS20-Funksystem, aber das möchte ich (zunächst) ja gar nicht nutzen...
-----
lang:
Ich habe ein Fritzbox7390 mit installiertem FHEM. Des weiteren ein AVR-Net-IO mit funkionierender ethersex-firmware. Und jetzt soll es weiter gehen, zunächste möchte ich es erstmal nur schaffen, einzelne Ports des AVR-Net-IO ein- und auszuschalten. Aber wie mache ich das per FHEM? Sämtliche Infos die ich bisher gefunden habe, helfen mir dabei nicht wirklich weiter, mir fehlen einfach die absoluten Basics... Bisher weiß ich nur, dass das wohl per ECMD klappen sollte...
Ich habe über das Web-Front-End (unter fritz.box:8083/fhem) inzwischen (nach 3 Tagen suchen und lesen) in der fhem.cfg folgende Einträge hinzugefügt:
define NETIO_01 ECMD telnet 192.168.2.79:2701
attr NETIO_01 room NET-I-O
Das scheint soweit auch schonmal zu funkionieren, nach einem Neustart wurde mir zumindest "connected" angezeigt.
Aber nun stehe ich gänzlich auf dem Schlauch. Ich verstehe bisher auch nicht wirklich, was diese beiden Zeilen in der .cfg im Detail bewerkstelligen. Wie kann ich jetzt einzelne ECMD-Befehle senden? Wie funktioniert FHEM eigentlich im Detail? Ich finde hier überall irgendwelche Codeschnippsel, aber wo fügt man diese ein? Irgendwo in einem 'HowTo' hab ich mal etwas gelesen wie "eine Datei erstellen und folgenden Code einfügen"... Aber ich weiß noch nicht einmal, wie ich auf der Fritzbox eine Datei erstellen soll. Und selbst wenn: wie erfährt FHEM dann von dieser Datei, wie binde ich die ein?
Die offiziellen Infos, die man aus dem Wiki erhält, oder so allgemein im Netz findet, haben mir bisher nicht wirklich weiter geholfen. Eine Befehlsreferenz (http://fhem.de/commandref_DE.html (//fhem.de/commandref_DE.html)) habe ich zwar gefunden, verstehe aber nicht, wo ich die Befehle eingeben muß... Doch sicher nicht alles in die fhem.cfg? Ich nehme doch mal an, dass diese Datei praktisch wie eine Art Initialisierung des Systems ist, worüber ich fhem mitteile, welche Geräte verwendung finden, oder? So sagt in der fhem.cfg die Zeile 'define NETIO_01 ECMD...' dem System, dass da ein Gerät Namens NETIO_01 existiert und per ECMD angesteuert werden muß. Dann sagt das attr danach aus, dass dieses Gerät zu meinem 'Raum' Net-I-O gehört.
Aber jetzt weiß ich nicht mehr weiter. ->
- Nächster Schritt soll sein, ein Ausgag des NetIO per FHME-Frontend ein bzw auszuschalten. D.h., ich brauche irgendo einen Knopf im Frontend, den ich drücke und der Ausgang des NetIO geht an (bzw aus)... (???)
- Und wenn das dann klappt, würde ich als Schritt 2 ein Eingang des NetIO auslesen und als "Status" irgendwo anzeigen lassen. (???)
- Und Schritt 3 wäre dann, sofern sich der Zustand des Eingangs ändert, den Ausgang zu schalten...
----
Könnt Ihr mir helfen? Tipps? Links? Tausend Dank schonmal. :)
Gruß,
Andi.
Hi,
hier z.B.
http://www.fhemwiki.de/wiki/AVR-NET-IO (//www.fhemwiki.de/wiki/AVR-NET-IO)
Hallo,
herzlich willkommen erstmal bei deinem neuen Hobby - FHEM ;-)
Das Einsteiger.pdf von Uli ist dennoch gut zu lesen, auch wenn etwas FS20-lastig ist.
Aber das stört nicht weiter.
Für das FS20-System übernimmt den "Zwischenschritt" für das schalten die 10_FS20.pm
Für den AVR-NET-IO übernimmt es das 66_ECMD.pm
Da FS20 etwas weiter verbreitet ist als der AVR-NET ist mit diesem noch etwas Handarbeit nötig aber der, von fhem-hm-knecht, verlinkte Wiki-Eintrag ist perfekt für sowas gemacht.
Und daher ist auch das Einsteiger.pdf durchaus lesenswert da du dort siehst wo es welche Dateien gibt und welche wie und wo angelegt und bearbeitet werden können/müssen.
Tipp: Wenn du Windows einsetzt (Linux und Mac kenn ich mich nicht so aus) kannst du dir im Explorer einen Netzwerlink auf
FRITZ.NAS legen und die Dateien unter /fhem dann mit Notepad++ bearbeiten.
Oder eben direkt über fhem.
Sollten sich weitere Fragen ergeben, nur her damit.
Grüße
Hey, prima, so schnell schon Antworten! :) Da hab ich noch gar nicht mit gerechnet, also nochmals besten Dank. :)
Die von 'fhem-hm-knecht' verlinkte Seite
Zitathttp://www.fhemwiki.de/wiki/AVR-NET-IO (//www.fhemwiki.de/wiki/AVR-NET-IO)
habe ich schon (mehrfach) aufgerufen, aber bin auch damit noch nicht wirklich weiter gekommen... Die ersten beiden Absätze sind soweit klar. Aber als es dann um das Thema ging, 'das AVR-NET-IO im FHEM bekannt zu machen', hat es aufgehört:
define NETIO_01 ECMD telnet 192.168.0.99:2701
attr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_
/fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef
attr NETIO_01 room Interfaces
Ein Anfänger wie ich steht jatzt da und fragt sich: 'was bitte??? '... Wozu? Wieso? Was macht das? Was sagt das aus? Okay, inzwischen bin ich -etwas- weiter, aber hätte dort noch etwas Hintergrundwissen dabei gestanden, wäre einiges einfacher gewesen. Eine kurze Erklärung, WAS diese beiden Zeilen bewerkstelligen, würde helfen, damit man das ganze Prinzip etwas besser versteht. Ok, die erste Zeile ist mir -inzwischen- klar:
Zitatdefine NETIO_01 ECMD telnet 192.168.0.99:2701
...sagt dem FHEM halt, das es ein Gerät mit dem Namen NETIO_01 überhaupt erst gibt und mit dem Protokoll 'ECMD' über telnet an der genannten IP zu erreichen ist. (Stimmt doch, oder? ;) )
Zitatattr NETIO_01 classdefs ONEWIRE=/var/InternerSpeicher/fhem/onewire.classdef:RFM12=/var/InternerSpeicher_
/fhem/intertechno.classdef:RELAIS=/var/InternerSpeicher/fhem/relais.classdef
... ist mir noch nicht so ganz klar, aber zumindest verstehe ich, dass hier auf eine Datei verwiesen wird. Was genau macht 'classdefs'? Klassen definieren? Was sind 'Klassen' und wozu brauche ich die?
ZitatTipp: Wenn du Windows einsetzt (Linux und Mac kenn ich mich nicht so aus) kannst du dir im Explorer einen Netzwerlink auf
FRITZ.NAS legen und die Dateien unter /fhem dann mit Notepad++ bearbeiten.
Oder eben direkt über fhem.
OK, da hätte ich vielleicht mal schauen sollen, den Link habe ich schon lange. Aber ich dachte nicht, dass ich darüber an die Dateien von FHEM ran komme... Jetzt ist zumindest klar, wie ich neue Dateien anlegen kann. ;)
Dann werd ich nochmal weiter rumprobieren, sicher ergeben sich dabei noch Fragen.
Danke nochmals,
Gruß,
Andi.
Hallo,
das Wiki ist eigentlich klar gegliedert.
Unter
8-Kanal Relaiskarte K8IO
hast du den Inhalt der benötigten classdef abgebildet:
# Uebergabeparameter HEX Adresse Port
params RelaisPort
# erst alle Ports PC.. auf Ausgang setzen und dann per Hexcode schalten
set on cmd {"io set ddr 2 ff\nio set port 2 %RelaisPort %RelaisPort"}
set on postproc {s/([OK|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
set off cmd {"io set ddr 2 ff\nio set port 2 00 %RelaisPort"}
set off postproc {s/([OK|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
Hier wird auch klar das ECMD (resp. ethersex) die Ports hexadezimal anspricht.
Soweit ja ok aber kein Mensch kann hexadezimal denken ;-)
Also setzt dein on/off an Relais 1 diese ECMD mithilfe der classdef in ein Format für ethersex um.
Darunter hast du den Zusammenhang zwischen hex und den Relais abgedruckt.
Diese classdef muss in dem angegebenen Verzeichniss erstellt werden und mit dem abgedruckten Inhalt gefüllt.
Danach kannst du deine Relais (hoffentlich) über fhem schalten ;-)
Grüße
Hallo,
aber in irgendeinen Fehler bin ich jetzt mit meinem K8IO gelaufen.
Relais 1,2,7,8 lassen sich wunderbar schalten.
Relais 3,4,5,6 streiken.
Obwohl gleich definiert:
define Relais1 ECMDDevice RELAIS 01
define Relais2 ECMDDevice RELAIS 02
define Relais3 ECMDDevice RELAIS 04
define Relais4 ECMDDevice RELAIS 08
define Relais5 ECMDDevice RELAIS 10
define Relais6 ECMDDevice RELAIS 20
define Relais7 ECMDDevice RELAIS 40
define Relais8 ECMDDevice RELAIS 80
Jemand ne Idee woran es liegen könnte?
Ok. Die Relais streiken auch unter ethersex - kann man da beim kompilieren was vergessen???
Grüße
Edith: Auch ein define Alle ECMDDevice RELAIS ff
lässt mit on oder off nur 1,2,7 und 8 schalten.
[OT an]
Hi Puschel74,
Zitat von: Puschel74 schrieb am Fr, 15 März 2013 19:30... Jemand ne Idee woran es liegen könnte? ...
Evtl. ... ich zitiere mal Boris:
"das liegt an den Fuses des AVR - du mußt ihn so fusen, daß Du alle Ports
als I/O benutzen kannst. Im Auslieferungszustand sind m.W. einige Pins
für Sonderzwecke resetviert (JTAG IIRC). Näheres sagt Dir das Datasheet
zum AVR." (
Quelle)
Du wirst sehr wahrscheinlich irgendwelche Funktionalitäten nicht abgeschaltet haben, so dass diese die von dir gewünschten überlagern / belegen.
Gruß
Thomas
[/OT aus]
Edith: ein überflüssiges / sinnveränderndes "nicht" entfernt.
Erstmal besten Dank an alle für Eure Hilfen, das hat mich schon ein ganzes Stück weiter gebracht. Vor allem hat es mir schon geholfen, mal ein wenig darüber zu schreiben. Ich werde die Tage nochmal eine kleine Zusammenfassung verfassen, vielleicht hilft das dann ja dem einen oder anderen mit ähnlichen Problemen ;)
---
zum Thema AVR-NET-I-O (und evtl K8IO), insbesondere ECMD... zum Testen der ECMD-Befehle kann man hervoragend ein Terminal-Programm (z.B. Putty bei einem Windows-Rechner) benutzen, und darüber "von Hand" die ECMD-Befehle senden. Gut zum rumprobieren... Einfach Putty starten, die IP vom AVR-Net-IO eintragen, als Port 2701 eingeben und bei Connection Typ 'Telnet' wählen. Nach dem Click auf Open kann man jetzt einzelne ECMD-Befehle eingeben.
io set ddr 2 ff
OK
io get ddr 2
port2: 0xfc
Obwohl ich zunächst in (Zeile 1) mit 'io set ddr 2 ff' alle Pins auf Ausgang geschaltet habe (hex ff = binär 11111111) und mir das Board ein 'OK' zurück lieferte, ergab ein erneutes auslesen (Zeile 3) mit 'io get ddr 2' die antwort 'port2: 0xfc' (also binär 11111100).
Also schalten bei mir momentan PC0 und PC1 noch nicht richtig. Ich schätze auch, dass es an falsch gesetzten Fuses liegt, das werde ich morgen mal überprüfen. Wenn nicht daran, dann wird vermutlich irgendwas beim kompilieren der ethersex-firmware falsch eingetellt gewesen sein, dass mir die Ports blockert. Jedenfalls kann da FHEM nichts für, wenn der Fehler auf der Gegenseite (=AVR-Net-IO) liegt... Das gehört dann wohl eher ins Ethersex-Forum... ;)
Gruß und nochmals Danke an Euch,
bis zur nächsten Frage ;),
Andi.
Hallo und Guten morgen,
na dann danke erstmal für Eure Rückmeldungen.
Ich dachte schon ich habs mal wieder nicht geschnallt in fhem richtig zu definieren.
Dann werd ich mir auch mal die Fuses reinziehen und schauen wo es hackt (g***** ist ja mein Freund)
Nicht das ich meinen ATmega durch falsche Fuses in die Ewigen Jagdgründe schicke.
Grüße
Auch wenn es hier nicht (mehr) unmittelbar um FHEM geht, sondern um das AVR-NET-IO... Bei mir lag es nicht an den Fuses, sondern an den Einstellungen zum Kompilieren der ethersex Firmware für das NET-IO. Bei mir hatte ich versehentlich das NETIO:ADDON als Hardware-Konfiguration ausgewählt, das Addon-Board wird per SPI angesteuert und belegt deshalb die Pins PC0 und PC1. Das war der Grund, weshalb ich diese Pins nicht schalten konnte, logischerweise weder direkt noch per ECMD von FHEM aus... Sie sind halt von ethersex für das Addon belegt und nicht mehr ansprechbar.
Ich empfehle deshalb wirklich, sollte sich beim AVR-Net-IO etwas von FHEM aus nicht schalten (oder auslesen) lassen, unbedingt per Telnet-Verbindung (siehe oben) testen, ob es dort geht. Und unbedingt die Konfiguration von Ethersex prüfen. Denn wenn dort was falsch eingestellt ist, gibt es eben Fehlfunktion, woran FHEM dann nicht Schuld ist. :)
Gruß, und fröhliches Basteln,
Andi.