Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisfragen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MaBo76
    hat ein Thema erstellt Verständnisfragen

    Verständnisfragen

    Hallo,
    es hat sich ja viel getan bei smarthome.py. Ich habe auch gleich einen neuen Anlauf gestartet und gleich ein paar Fragen.

    Ich habe das hier in der plugin.conf stehen:
    Code:
    [ow]
        class_name = OneWire
        class_path = plugins.onewire
        host = 192.168.2.200
    #    port = 4304
    
    [knx]
       class_name = KNX
       class_path = plugins.knx
       host = 192.168.2.46
    #   port = 6720
       send_time = 600 # update date/time every 600 seconds, default none
       time_ga = 11/1/1 # default none
       date_ga = 11/1/2 # default none
    uns das hier in der items.conf:
    Code:
    ['heizung']
        [['h-vorlauf']]
            type = num
            knx_dpt = 9
            knx_send = 12/1/2
            knx_reply = 12/1/2
            ow_id = 28.6C858B020000 # see 1-Wire plugin
            ow_sensor = temperature # see 1-Wire plugin
    Jetzt wird die Zeit auch brav alle 600 Sekunden übertragen - Das ist schön!
    Aber die Temperatur wird nur einmal beim starten von smarthome.py gesendet und dann nicht wieder.

    Jetzt würde ich aber gerne die Temperatur häufiger senden oder besser noch bei Änderung den neuen Wert senden - Aber wie stelle ich das an.

    Wenn ich das Richtig gelesen habe sollte jetzt auch Busanfragen beantwortet werden. Aber die ETS bekommt bei 12/1/2 keine Antwort.

    Was ich gerne auch mit der smarthome.py realisieren würde ist:
    Tasterschnittstelle z.B. 12/2/1 einen Anruf über Asterisk auslöst (Haustür Klingel). Der Asteriskserver ist nicht auf dem selben Rechner aber im selben Netzwerk.

    Viele Dank
    Maik

  • MaBo76
    antwortet
    Ich habe den Firefox installiert und es läuft! :-)

    Gruß Maik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    oh, Android unterstützt wohl keine Websockets!

    Siehe Can I use... Support tables for HTML5, CSS3, etc
    Testen kann man es z.B. bei WebSocket.org | Echo Test

    Man kann aber wohl mobile firefox verwenden, das geht angeblich.

    Das tut mir Leid, aber mit dem Standard Android Browser wird das wohl nix.

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Es erscheint keine Fehlermeldung - smarthome.py bekommt gar nicht mit wenn ich den Browser auf den Android Geräten starte.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Wenn Du die Fehlermeldung liest, dann passiert auf dem Socket nichts mehr. Der wird dann geschlossen.
    Kannst Du die Fehlermeldung bitte mal posten?

    Danke

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Die Websocket Meldung erscheint wenn ich den Firefox öffne wo alles OK ist.
    Bei den Android Teilen (4.0.4 + 4.0.3 + 2.0.3) Passiert gar nichts auf der Console.

    :-(

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Maik,

    ich befürchte da klappt die Websocket-Kommunikation mit Android nicht.

    Welche Android Version verwendest Du und was sagt smarthome.py, wenn Du es mit 'smarthome.py -n' aufrufst?

    Steht da etwas von "Handshake for XXX with the following header failed!"?

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Hier noch einmal der ganze Code:

    Code:
    root@smarthome:~# cat /var/www/test.html
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <meta name="apple-mobile-web-app-capable" content="yes" />
            <meta name="apple-mobile-web-app-status-bar-style" content="black" />
            <title>SmartHome.py</title>
            <link rel="stylesheet" href="/css/jquery.mobile.min.css" />
            <link rel="stylesheet" href="/css/my.css" />
            <script src="/js/jquery.min.js"></script>
            <script src="/js/jquery.mobile.min.js"></script>
            <script src="/js/smarthome.min.js"></script>
            <script src="/js/my.smarthome.js"></script>
        </head>
    <body>
    <div data-role="page" id="example">
        <div data-role="header"><h3>MaBo's Visu </h3></div>
        <div data-role="content">
    
    <div data-role="fieldcontain">
        <label for="temp1">Heizung Vorlauf Temperatur</label>
        <input id="temp1" data-sh="temperatur.h-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp2">Heizung Rücklauf Temperatur</label>
        <input id="temp2" data-sh="temperatur.h-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp3">Fußboden Vorlauf Temperatur</label>
        <input id="temp3" data-sh="temperatur.f-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp4">Fußboden Rücklauf Temperatur</label>
        <input id="temp4" data-sh="temperatur.f-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp5">Warmwasserspeicher Temperatur</label>
        <input id="temp5" data-sh="temperatur.speicher" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp6">Keller Temperatur</label>
        <input id="temp6" data-sh="temperatur.keller" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp7">Aussen Temperatur</label>
        <input id="temp7" data-sh="temperatur.aussen" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp8">Luft Feuchtigkeit</label>
        <input id="temp8" data-sh="temperatur.humidity""test" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="example_toggle">Büro Deckenstrahler</label>
        <select id="example_toggle" data-sh="licht.buero" data-role="slider"><option value="off">Off</option><option value="on">On</option></select>
    </div>
    
        </div> <!-- /content -->
        <div data-role="footer" data-position="fixed">
            <div data-role="navbar" data-iconpos="top">
                <ul>
                    <li><a href="/example.html#html">HTML</a></li>
                    <li><a href="/example.html#trigger">Logic Trigger</a></li>
                    <li><a href="/example.html#form">Form</a></li>
                    <li><a href="/gen/">Generated</a></li>
                </ul>
            </div><!-- /navbar -->
        </div><!-- /footer -->
    </div><!-- /page -->
    
    </body>
    </html>
    Ich habe mir das so aus der example.html kopiert und angepasst. Jetzt die IDs und die 1011 wie vorgeschlagen geändert.

    Es bleibt aber leider alles beim alten! Im Firefox unter Ubuntu 12.04 ist alles OK. Aber auf den Android Geräten werden die Werte nicht angezeigt und das Licht kann ich da auch nicht schalten.

    Bei der VISU Generierung habe ich das gleich Problem.

    Gruß Maik

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Maik,

    freut mich das wir Dich begeistern konnten.

    Zu Deinem Problem:
    Was ist das für Code? Sieht ein bisschen unvollständig aus. Da fehlt ja Header und Footer. Und woher kommt das HTML, hast Du das erzeugt?

    Was mir auffällt, dort steht mehrmals id="temp". Die id sollte bei HTML wirklich eindeutig sein.

    Und Du hast ein Item '1011' unter dem Item 'licht' angelegt? Das würde ich vermeiden und nur Items mit ASCII-Buchstaben verwenden. Auf keinen Fall Ziffern am Anfang, das mag Python nicht so gerne.


    Hast Du mal die automatische Visu Generierung probiert? Für den Einstieg hilfreich.

    Bis morgen & Gute Nacht

    Marcus

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Vielen Dank für deine Beispiele!
    Ich denke ich taste mich so langsam ran an die Sache und muss sagen ich bin bis jetzt total begeistert von samrthome.py.

    Ich versuch mich gerade an der VISU und habe auch hier ein Problem!
    Wenn ich das hier auf meinem Desktop mit Firefox aufrufe, werden mir die Werte angezeigt und ich kann auch das Licht schalten. Aber auf meinem Galaxy S2 und auf dem Galaxy Tab werden mir die Werte nicht angezeigt :-(

    Code:
    <div data-role="fieldcontain">
        <label for="temp">Heizung Vorlauf Temperatur</label>
        <input id="temp" data-sh="temperatur.h-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Heizung Rücklauf Temperatur</label>
        <input id="temp" data-sh="temperatur.h-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Fußboden Vorlauf Temperatur</label>
        <input id="temp" data-sh="temperatur.f-vorlauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Fußboden Rücklauf Temperatur</label>
        <input id="temp" data-sh="temperatur.f-ruecklauf" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Warmwasserspeicher Temperatur</label>
        <input id="temp" data-sh="temperatur.speicher" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Keller Temperatur</label>
        <input id="temp" data-sh="temperatur.keller" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Aussen Temperatur</label>
        <input id="temp" data-sh="temperatur.aussen" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="temp">Luft Feuchtigkeit</label>
        <input id="temp" data-sh="temperatur.humidity" type="text" />
    </div>
    <div data-role="fieldcontain">
        <label for="example_toggle">Büro Deckenstrahler</label>
        <select id="example_toggle" data-sh="licht.1011" data-role="slider"><option value="off">Off</option><option value="on">On</option></select>
    </div>
    Gruß Maik

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hallo Maik,

    freut mich, dass es läuft. Das mit enforce_updates ist sogar noch besser als mein Vorschlag!

    Die Doku kennst du oder? http://mknx.github.com/smarthome/

    Ansonsten kannst du in den Logiken alles machen was man mit Python eben machen kann
    Ich schalte z.B. momentan im Technikraum beim Betreten auch einen Lautsprecher ein (war ursprünglich zum Testen des Russound Plugin, aber da dort auch Lebensmittel und Schuhe drin sind betreten wir den Raum öfters und die bessere Hälfte fand das mit der Musik ganz nett und daher hängt da immer noch ein notdürftig angeschlossenes Logitech Soundsystem). Die Logik dafür ist extrem einfach:

    Code:
    sh.eg.technik.audio(sh.eg.technik.licht())
    getriggert wird das ganze vom Licht, also:

    Code:
    ['audio_technik']
        filename = audio_technik.py
        watch_item = eg.technik.licht
    oder wenn ich meine Terrassentüre schließe soll die Jalousie (die automatisch beim Öffnen hochgefahren wurde) sich gleich ausrichten wie die Jalousie daneben:

    Code:
    if sh.eg.essen.terrassen_tuer() is False:
        sh.eg.essen.jalousie.mitte.position(sh.eg.essen.jalousie.rechts.position())
        sh.eg.essen.jalousie.mitte.lamelle(sh.eg.essen.jalousie.rechts.lamelle())
    Hoffe damit ein paar Ideen geweckt zu haben und dass du dir das mit den Logiken nun etwas besser vorstellen kannst. Vielleicht wäre es einfacher, wenn du konkrete Fragen oder Ideen hättest.

    Ansonsten wünsche ich weiterhin viel Spass mit smarthome.py

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Es klappt!
    Aber das mit :
    Code:
    if sh.haustuer.klingel() is True:
    Habe ich nicht hin bekommen. Dann passiert gar nichts mehr!

    Da der Taster nur ON sendet lief die Logic auch nur einmal. Ich habe das Item jetzt so geändert:

    Code:
    [haustuer]
        [[klingel]]
            type = bool
            enforce_updates = on
            knx_dpt = 1
            knx_listen = 6/0/0
    Damit klappt es! Natürlich klingeln die Telefone auch wenn ein OFF gesendet wird aber der Fall tritt ja nicht ein.

    Trotzdem würde ich gerne die Logic verstehen.
    Gibt es noch Beispiele die beim Verstehen helfen?

    Gruß Maik

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Hallo Maik,

    du legst eine Datei mit dem Inhalt der Logik im Ordner logics an. Das könnte z.B. so aussehen:

    /usr/local/smarthome/logics/doorbell.py
    Code:
    #!/usr/bin/env python
    # make asterisk call if door bell button is pushed
    sh.ast.call('LOCAL/2222', '1233', 'kingel')
    Anschließend musst du die Logik mit deiner definierten Klingel verknüpfen. Dazu registrierst du die oben angelegte Datei in der logics.conf

    Code:
    # /usr/local/smarthome/etc/logic.conf
    [doorbell]
        filename = doorbell.py
        watch_item = haustuer.klingel
    Damit wird die Logik immer ausgeführt sobald sich der Wert von haustuer.klingel ändert. Evtl. musst du bei der Logik vor dem Asterisk Call noch ein:

    Code:
    if sh.haustuer.klingel() is True:
    einfügen, damit das Telefon nicht klingelt wenn der Wert der Türklingel wieder von eins auf null geht. Aber das musst du dann einfach ausprobieren.

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Ich bin zu doof!

    Asterisk und smarthome sind jetzt verbunden.

    Aber wie schreibe ich die Logic ???

    Code:
    #/usr/local/smarthome/items/klingel.conf
    ['haustuer']
        [['klingel']]
            type = bool
            knx_dpt = 1
            knx_listen = 6/0/0
    Wie geht es weiter um:
    Code:
    sh.ast.call('LOCAL/2222', '1233', 'kingel')
    abzuschicken?


    Alles was ich versucht habe erbrachte nur Fehlermeldungen.

    Gruß Maik

    Einen Kommentar schreiben:


  • MaBo76
    antwortet
    Vielen Dank,
    jetzt klappt es!

    Dann versuche ich jetzt mal Asterisk mit mit dem Klingeltaster zu verbinden.

    Gruß Maik

    Einen Kommentar schreiben:

Lädt...
X