Funksteckdosen,... mit iOS & Android (Version 2)

  • schulle
    Du musst dich auch auf der Seite von netio registrieren. Sonst Funzt das nicht. Ich glaube nicht das du die Vollversion haben musst...

    Gruß
    Beast

    P.s. Kann mir jemand sagen was ich machen muss um den Status zu bekommen? So wie es sich anhört funktioniert es ja jetzt...

    Einmal editiert, zuletzt von Black Beast (18. Mai 2013 um 23:19)

  • "send" sollte jetzt funktionieren.

    Ich hatte p.popen den falschen String übergeben :blush:


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

    • Offizieller Beitrag

    Alles klappt super! Echt der Hammer! :) :)

    Jetzt könnte man natürlich noch weitere Elemente implementieren wie z.B. Systeminfos.
    CPU Auslastung, CPU Temp, RAM, Wie lange der Pi schon läuft. usw.

    Also eine weitere Seite in NetIO für Systeminfos. Dort könnte man auch die Ausgabe anzeigen lassen, die man sonst im Terminal sehen würde.. Quasi dict nur erweitern.


    Noch was zur Temperatur.
    Da ich auch gerne die Temperatur von draußen hätte, bräuchte ich irgendwie einen Funkmesser oder so was.. Gibt es etwas, was man am Pi anschließen kann?? Villt. auf 800mhz oder so?

    lg und danke!

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>

  • Auf der NetIO-Seitehttp://netio.davideickhoff.de/projects
    gibt es nun ein Projekt "RPI 433 MHz Power Plug Server ".

    Hier kann man die Einstellungen für den Net UI-Designer sehen,
    wie z.B. Timer, Labels, Switches und die Temperatur-Anzeige.

    In der angehängte Datei sind alle notwendigen Programme bzw. Scripte.

    433_server.py - der Server
    433_client.py - ein einfacher Client, um den Server ohne iPad / NetIO-Client zu testen
    send - das Programm spricht den Sender am Raspberry an
    z.B. send 10101 5 1
    433send - das Programm spricht den Sender am Raspberry an
    z.B. 433send -k 10101 -d 5 -s 1
    433_json.txt - die JSON Daten für den NetIO Client
    hier kann man auch die Einstellungen für die Elemente in NetIO UI-Designer sehen.

    • Offizieller Beitrag

    Habe es noch nicht getestet, müsste meiner Meinung nach aber funktionieren, da diese Dosen mit der Selben Fernbedienung funktionieren!


    Wollte gerade das Tutorial editieren, um es auf den neusten Stand zu bringen, aber es geht nicht. Wieso?

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>

    Einmal editiert, zuletzt von mario (20. Mai 2013 um 14:36)

  • Hallo Zusammen,

    also ersteinmal ein herzliches Dankeschön an die Erfinder dieser genialen "Scheisse" !!! Ich hatte mich schon damit abgefunden meine "Haussteuuerung" mit den AVM DECT200 zu realisieren, aber so ist es natürlich Kostengünstiger und viiiiel Cooler :) :)

    Jetzt kurz zu mir, ich habe weder Kentnisse von Linux oder sonst welchen Programmierungen. Ich habe schon vieles Umgesetzt, aber war immer stark abhängig von HowTos die von tollen Menschen ;) zur Verfügung gestellt werden.

    So jetzt kurz zu meinen Fragen :)

    Ich habe alles soweit hinbekommen. (Appsteuerung An/Aus)
    Jetzt möchte ich gern noch diese Timerfunktion nutzen.

    Scenario: Raspberry mit Airplayserver - daran aktive Lautsprecher die nach 20 min ausgehen sollen.

    Aus dem Startpost habe ich alle Schritte getätigt und komme jetzt mit der ganze Sache nicht weiter. Vielleicht erbarmt sich ja einer der mir das nochmal erklärt wie das mit den ganzen Scripten funktioniert bzw. wo die hinmüssen. Ihr seht mein Wissen ist echt begrenzt und ich hoffe ich schreibe nicht völligen Irrsinn.

    LG und schönen Abend noch!
    Uwe

    Nachtrag: Warum kann ich das App nicht mehr benutzen, wenn das Fenster mit dem NET IO Script (oder was auch immer das ist :) ) am PC geschlossen wird? Ich dachte das läuft im Hintergrund vom Raspberry, warum muss der PC dafür anbleiben? Dankeschön für Antworten :)

    Einmal editiert, zuletzt von Uwe (22. Mai 2013 um 20:03)

    • Offizieller Beitrag

    Hei Uwe,
    toll das du so begeistert bist :)

    Um die Timerfunktion nutzen zu können, musst du das Skript von ThomasH nutzen, da mein Skript im Tutorial nur die Grundfunktion unterstützt (Senden)!!

    Also:

    In der App musst du die Timer Funktion wie folgt konfigurieren: (Buttons oder Switch)
    Ein Button mit SEND: Timer LAMPENNAME An 20 Damit geht die Lampe/Dose bei drücken des Buttons an und noch 20 Sekunden/Minuten wieder aus.
    Falls du In Minuten rechnen möchtest, musst du im Skript von ThomasH die Variable names "timer_multi" von 1 in 60 ändern.
    Andernfalls musst du halt selber rechnen :P
    Ich habe einen weiteren Button mit SEND: Timer LAMPENNAME Stop eingefügt, um den Timer ggf. anzuhalten.
    Zusätzlich habe ich ein Label erstellt mit READS: Timer LAMPENNAME Status.
    Dieses Label zeigt dann "Timer is running" oder "Timer is not running" an. Sehr praktisch, falls man etwas vergesslich ist :P

    Falls du alles aus meinem Tutorial nur kopiert hast, sollte dein Skript in dem Ordner [font="Verdana"]RPi.GPIO-0.1.0 liegen. Dort sollte deine Datei (Python) gespeichert sein namens netio_server.py [/font]
    [font="Verdana"]Richtig? [/font]
    [font="Verdana"]Im Tutorial ist beschrieben, wie man z.B. nach einem Neustart diesen Server startet: [/font]

    Code
    cd RPi.GPIO-0.1.0
    sudo python netio_server.py &

    [font="Verdana"]Das & hinter dem Sudo-Befehl bewirkt, das das Skript auch nach schließen des SSH Klienten noch weiterläuft. [/font]

    [font="Verdana"]Falls du noch weitere Fragen hast, frage ruhig! ;)[/font]
    [font="Verdana"]_________________________________________________________[/font]

    [font="Verdana"]Ich habe auch direkt mal eine Frage: [/font]
    [font="Verdana"]Wie kann ich jetzt mein Tutorial editieren, damit das "neue" Skript von ThomasH dort eingefügt werden kann usw.?[/font]
    [font="Verdana"]Muss ich das Tut löschen und ein neues erstellen?? [/font]

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>

  • Dank Dir schonmal für die Antwort.

    Ich habe den Inhalt meiner

    Code
    netio_server.py

    komplett gelöscht und das letzte Script von Thomas eingefügt. (Mittels Putty SSH Wind 7 64bit). den Autostart habe ich mittels contrab -e auch Realisieren können. (Es fehlte tatsächlich nur dieses & Zeichen :) )

    Jetzt habe ich nur ein weiteres Problem. Meine Befehle über NET IO funktionieren nicht mehr. Über die SSH Konsole kann ich noch weiter sudo ./send 01001 1 1 eingeben und kommen auch zum nötigen Erfolg, aber über die APP geht es jetzt leider nicht mehr :(

    Auch die Timerfunktion kann ich leider nicht nutzen, obwohl ich (ich hoffe das dies richtig war) das Script folgendermaßen angepasst habe.


    Code
    light_dict  = {    "Licht"  : "01001 1",
                    "Musik"   : "01001 4",
                    "Garage" : "10010 3",
                    "Black"  : "00101 5"

    Was mache ich hier falsch?

    LG

  • Hallo Uwe,
    in Version 0.7 gab es noch ein Fehler.
    Bitte verwende die aktuelle Version - V0.9
    Wenn es weiterhin nicht klappt, bitte im Script verbose_level auf 3 setzen
    und mir die Meldungen des Servers schicken.


    Für alle:

    Es gibt einen neuen Befehl: Linux
    z.B. Linux date oder Linux ls /var/www

    Damit kann man einen beliebigen Befehl absetzen, der im NetIO Client definiert wird.
    Da ich gerade kein iPad zu Hand habe, habe ich dies mit meinem Client getestet.
    Versucht es bitte einmal.

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

    • Offizieller Beitrag

    Also bei mir klappt in Version 0.7 alles Problemlos!
    Was hast du denn geändert, abgesehen von Linux...

    Was bringt mir das denn, wenn bei mir eh schon alles klappt?

    @ Uwe:
    Abgesehen davon, das bei deinem Post die Klammer ZU fehlt, sieht es so weit richtig aus!!
    Würde villt. noch mal einen Neustart machen und die Pickel-Datei löschen mit "sudo rm 433_status.p" und "yes" (Dabei musst du im gleichen Ordner sein, indem auch die NetIO_Server.py liegt!)

    Dann den Server starten (erst mal ohne & um zu sehen, was er ausgibt und um ggf Änderungen vorzunehmen und erneut testen zu können.)
    Wie sieht denn deine Konfiguration in NetIO aus?? Wichtig ist SEND: "Licht Licht an" oder "Licht Musik an" oder "Licht Garage an" oder ....

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>

  • Danke euch beiden für die Tatkräftige Unterstützung :D

    Ich habe mittels

    sudo rm 433_status.p die Pickel Datei gelöscht und mit
    sudo rm netio_server.py auch die netio Datei.

    Diese habe ich dann im Ordner /RPi.GPIO-0.1.0 $ mittels

    sudo nano netio_server.py

    Erstellt und den kompletten Text von Thomas eingefügt.

    Aber mein Rasp nimmt leider immer noch keine Befehle über NETIO an. Im SSH Modus funktioniert die Variante "sudo ./send 01001 1 1" aber die Variante mit "sudo ./send Licht LED an" geht leider nicht :(
    Ich habe nochmal die Passage von netio_server.py angehangen, die ich geändert habe.

    Das ist der "Report" von meinem Raspberry. Vielleicht könnt ihr damit etwas anfangen.

    LG

  • Hallo Uwe,

    Der Server gibt eine Fehlermeldung aus, wenn er ein Kommando nicht kennt:

    Code
    client requested unknown command  light

    oder

    Code
    client requested unknown command  timer

    Die Kommandos sind im server_dict definiert:
    Licht
    Timer
    Linux
    dict

    Man muss unbedingt auf Groß/Kleinschreibung achten.
    Ich werde die Fehlermeldung überarbeiten, so dass dann ein entsprechender Hinweis erfolgt.

    Also statt licht bitte Licht schreiben.

    Gruß,
    Thomas

    Alle Kommandos werden jetzt umgewandelt, so dass Groß- und Kleinschreibung nicht mehr relevant ist
    Die entsprechende Fehlermeldung ist überarbeitet worden.

    Code
    ERROR: client requested unknown command  totalermurks
    -> please check spelling
    -> commands are defined in server_dict{}, valid commands:
    ['temp', 'read', 'timer', 'dict', 'linux', 'licht2', 'licht']
    
    
    server reply:  my dear client, your command is unknown:


    os.popen ist überholt und wurde durch subprocess.Popen ersetzt.
    Somit kann der Server nun auch die Ausgaben des System-Befehls anzeigen.

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

    Einmal editiert, zuletzt von ThomasH (24. Mai 2013 um 09:58)

  • Hey Zusammen,

    ich melde Vollzug :D ... jetzt funktioniert alles so wie es soll. Danke euch für die Hilfestellungen!

    Eine Sache wundert mich aber noch. Wenn das Script startet, steht da das es alle Steckdosen ausschaltet um den Status genau zu kennen, nur schaltet er bei mir keine einzige Dose ... muss man das erst einschalten? Denn die Idee ist ansich Klasse!!

    Jetzt habe ich noch eine Frage. Ich habe hier mal gelesen das man auch eine Wetterstation ansprechen kann? Welche ist hier gemeint und wo wird dann, was angezeigt?

    Meine Aufgaben werden jetzt noch die Steuerung über DynDns und ein schickes NETIO Layout für Tablet im Flur :)

    Danke nochmal und LG

  • Ganz unten im Script, kann man bestimmen, wie sich der Server beim Start verhält.

    server_init("reset") - alle Schalter im light_dict erhalten werden via "send" aktiv auf aus geschaltet
    server_init("resetno") - die Schaltzustände werden aus dem pickle file gelesen, es erfolgt kein send

    Code
    server_init("resetno") #reset used to switch off all lights


    Diese Einstellung wird nun in der neuen Version oben im script vorgenommen:

    server_init_mode = "resetno" # read pickle file , no send command
    # server_init_mode = "reset" # use send command to switch off all lights when server is started



    Wetterstation:

    Grundsätzlich kann man aus dem Raspberry eine Wetterstattion machen,
    in dem man entsprechende Sensoren anschliesst.

    Alternativ kann man sich das Wetter inkl. Vorhersage von einem Wetterdienst holen.
    a) Man liest die web-seite (z.B. http://www.wetter.de/deutschland/we…220738.html)und extrahiert die gewünschten Daten mit System-tools wie grep.
    b) Es gibt wunderground.com, die eine API bieten. Wenn der Dienst das Layout der web-seite ändert, würde bei a) das Script zusammenbrechen. Eine API ist üblicherweise stabiler.

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

    Einmal editiert, zuletzt von ThomasH (25. Mai 2013 um 08:55)

  • Neue Version mit Kommandozeilen-Paramters:

    Somit kann man einige Einstellungen beim Aufruf mitgeben, ohne den Code zu ändern.

    netio_server.py # start server with default parameters
    netio_server.py -h # help : show brief description of options
    netio_server.py -r # reset: switch off all lights when starting server and create new pickle file
    netio_server.py -r -v 3 -H 192.168.178.21 -P 5431



    In der angehängten Datei sieht man jetzt einmal, wie man den NetIO Designer anwenden muss, damit er mit dem netio_server aus diesem Tutorial zusammenspielt.

  • Danke dir Thomas,

    (der Server und alle Funktionen laufen perfekt !)

    EDIT:
    Ich kriege komischerweise seit eben folgende Fehlermeldung, wenn ich auf meinem Handy die App öffne und er sich zum Server connected:

    Die Buttons und Labels in der App leuchten dabei für ca. 2 sek. auf und dann werden sie wieder dunkel. Das passiert die ganze Zeit abwechselnd und der gleiche Fehlercode wird bei jedem Drücken eines Buttons erneut angezeigt. Das Schalten funktioniert dabei trotzdem.

    Grüße,

    bl4ckOut

    Einmal editiert, zuletzt von bl4ckOut (26. Mai 2013 um 20:06)

  • Problem wurde gelöst ! Danke Thomas.
    Zitat aus der PM für andere Menschen hier :D :

    Zitat


    Bitte ersetze mal den folgenden Code

    Code: Alles markieren

    Code
    server_reply = LightName + " Aus / " + light_val

    mit

    Code: Alles markieren

    Code
    server_reply = LightName + " Aus / " + str(light_val)


    Hätte aber noch ein, zwei Fragen zum Server:

    1) Wie siehts mit der Sicherheit des Socket Server aus ? Kann ich den ohne Bedenken im WWW freigeben. Botscanner werden den sicherlich irgendwann aufspähen. Ich weiß nur nicht, ob die mit dem Server was anfangen können. :)

    2) Ich starte mit deinem "Linux" - Befehl mehrere Scripte, z.B. ein Copyscript, um Dateien und Ordner auf meinen Nas zu verschieben. Wenn ich den Befehl ausführe, kann ich während des Kopiervorgangs bzw. während das Script läuft, keine Steckdosen schalten bzw. andere Befehle ausführen. Könnte man das irgendwie umgehen, sodass sich während des Scriptablaufs auch andere Befehle ausführen lassen ?

    3) Für etwaige Serverabstürze wäre eine Logdatei sehr hilfreich. Könnte man das optional mit einfügen ?

    Grüße
    bl4ckOut

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!