RPi SmartHome Control 2.2

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hi,

    bisher hab ich ja noch nicht so viel mit dem SHC gemacht. Ich habe zwar große Pläne, aber die Hardwarebeschaffung steht noch aus, und so bleibt einiges erst mal graue Theorie.

    Aber zum Test habe ich ja ein Breadboard und einige LED's, Schalter, Widerstände usw.

    Also bin ich mal bei gegangen und habe ein paar LED's mit den GPIO verbunden und mit 3 Schaltfunktionen angelegt. Diese habe ich auch schön auf der Benutzerseite und kann per Maus diese Ein- und Ausschalten.

    Dann habe ich mir noch eine Schalterfunktion auf einen GPIO angelegt, auf dem ein Schalter auf dem Board sitzt, der dann die LED's alle auf einmal Ein- bzw ausschalten soll.
    Auch das Funktioniert, der Schaltzustand des Schalters wird angezeigt.
    ABER:

    Es wäre natürlich toll, wenn der Zustand der LED's (Ausgänge) auch korrekt angezeigt werden würde. Wenn ich nämlich mit dem Schalter nun alle LED's anschalte, dann sind diese zwar an, aber der Haken bei den LED's steht nach wie vor bei aus. Das mag jetzt erst mal nicht weiter tragisch sein, den ich kann natürlich eine weitere Schaltfunktion anlegen, die alle LED's wieder aus macht, aber ich möchte gerne auch die Zustände der einzelnen LED's korrekt sehen und dann bei Bedarf einzeln wieder aus oder ausschalten.

    Leider ist das nicht das einzige Problem. Nach dem ich den Schalter in den Schaltfunktionen hinzugefügt habe, kam plötzlich beim Aufruf der Schaltfunktionen ein XML Error "Die XML Datei konnte nicht geladen werden"
    Da hab ich mich das erste mal geärgert, weil die ganze Arbeit umsonst.
    Nach ein bischen Lesen hier hab einen Betrag gefunden der besagt ich könnte die switchables.xml löschen, sie wird beim nächsten Start neu erstellt. Wird sie auch, aber der Fehler bleibt:

    Es handelt sich wohl um die Datei:
    /var/www/shc/shc/data/storage/switchables.xml
    die sieht bei mir jetzt (also nach dem Löschen und dem automatischen Erstellen) so aus:

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <switchables>
         <nextAutoIncrementId>1</nextAutoIncrementId>
    </switchables>

    Zur Zeit ist es so, dass ich über all reinkomme, nur nicht nicht in Schalterfunktionen, dann kommt der XML Error

    Mir ist beim erneuten durchgehen der Fehlermeldung aufgefallen, dass die Datei:
    /var/WWW/shc/rwf/data/Cache/templates/web_listswitchables_b50b26f0273342d24a9b6356896d156b.php nicht vorhanden ist. Möglicherweise liegt da der Fehler?
    Wofür steht der lange Dateiname? Sieht wie ein Hashwert aus. Kann ich die Datei erzeugen lassen? Wenn ja, wie?

    Einmal editiert, zuletzt von DieterWo (25. Dezember 2014 um 18:58)

  • Schaue mal in die default xml datei, die liegt im default unterordner und wird kopiert wenn keine switchables.xml existiert. Hast du schon das Update auf 2.0.3 gemacht? Das sollte den cml fehler beheben.

    Wegen dem Template Fehler, das ist eine Template Cache Datei also ein kompiliertes Template. Die werden eigentlich vollautomatisch verwaltet. Du kannst die unter rwf/data/cache/templates auch einfach mal alle löschen, die werden nach bedarf automatisch neu erstellt.


  • Schaue mal in die default xml datei, die liegt im default unterordner und wird kopiert wenn keine switchables.xml existiert. Hast du schon das Update auf 2.0.3 gemacht? Das sollte den cml fehler beheben.


    Ich habe mir die DefaultSwitchables.xml als switchables.xml in das Verzeichnis kopiert.
    Fehler bleibt leider.
    Ich habe mir beide Dateien angeschaut, die gleichen sie wie ein Ei dem Anderen.

    Das Update auf 2.0.3 habe ich gemacht. Das hat auch ohne Fehler funktioniert.
    Was kann ich jetzt noch machen?
    Ich kann natürlich alles löschen. Da ich noch nicht soviel eingerichtet habe, wäre das kein Problem. Aber wenn ich dann mal real was am laufen habe, und x Schalter, Steckdosen, Lampen und Temperaturfühler installiert habe, und sowas schmeißt mir alles raus, wäre das keine Option.


    Wegen dem Template Fehler, das ist eine Template Cache Datei also ein kompiliertes Template. Die werden eigentlich vollautomatisch verwaltet. Du kannst die unter rwf/data/cache/templates auch einfach mal alle löschen, die werden nach bedarf automatisch neu erstellt.


    Nach dem ich das ganze ein wenig studiert hatte, ist mir das auch auf gefallen. Ist ja auch logisch, ist ja Ram-Disk ;)

    Wenn ich das richtig sehe, liest du per PHP die XML-Dateien. Bei einem Fehler in den XML-Daten, und sei er noch so klein und unscheinbar, haut dir das gleich die komplette Bearbeitung auseinander. Was hier fehlt ist eine Zwischenschicht, die Fehler in den Daten erkennt, aber den Fehlerfreien Teil noch zur Verfügung stellt. Oder eine Teilung zwischen Daten und Programm. Eine Umstellung auf irgendeine kleine SQL-DB würde hier das Problem beseitigen.

    Einmal editiert, zuletzt von DieterWo (25. Dezember 2014 um 19:34)

  • Ich hab jetzt mal das komplette SHC vom Raspi gelöscht, vom Git neu runtergeladen und neu installiert.
    Jetzt komme ich schon mal wieder in meine Schalterfunktionen, hab aber noch nichts konfiguriert.

    Jetzt habe ich ein neues Problem: Ich kann den Sensorreceiver nicht aktivieren.
    Bei

    Code
    php index.php app=shc -sr -c

    kommt nur 4 mal

    Code
    unknown

    . Alles andere scheint zu laufen. Raspi schon neu gestartet, geht trotzdem nicht.
    "Unknown" .... erinnert mich irgendwie an die super Windows-Fehlermeldung "Es ist ein unbekannter Fehler aufgetreten" :D

    Hier im Thread wurde das einige mal auch gefragt, leider hat keiner eine Lösung gepostet, oder ich hab sie nicht gefunden.

    [Ergänzung]
    Ich habe jetzt mal mein LED-Experiment neu konfiguriert, bisher ohne XML-Fehler. Wenn ich jetzt noch den Sensor-Receiver ans Laufen bekomme bin ich wieder Up-to-date.

    Bei den Ereignissen muß ja eine Sperrzeit von min. 10 Sekunden eingetragen werden. Bei bestimmten Ereignissen ist das ja sinnvoll. Aber wenn ich z.b. mit einem Taster Lampen einschalten will, muss ich den 10 Sekunden drücken. Das ist aber nicht wirklich sinnvoll und praxisnah. Ich denke da nur mal an einen PIR, der über einen GPIO angeschlossen ist. Das sich das Licht erst nach 10 Sekunden einschaltet, wäre ja blöd. Gibt es dafür eine andere, bessere Lösung?
    Ich habe bisher nur die Möglichkeit gefunden, das über Ereignisse zu realisieren (auf- bzw- absteigende Flanke).
    Es scheint mir auch so, dass diese 10 Sekunden nicht zwingend von der Betätigung des Tasters ab gezählt werden, den ab und an schalten die definierten Schalterfunktionen schneller bei Betätigung des Tasters.

    Einmal editiert, zuletzt von DieterWo (26. Dezember 2014 um 08:45)

  • DieterWo
    Ich habe den Fehler gefixt, der Fix kommt mit dem nächsten Update. Bis dahin nimm einfach die Reihenfolge, im Anhang ist ein Bild mit und ohne dem Fehler.

    Für Taster die sind die Ereignisse nicht direkt geeignet, die 10sek nicht von der Sperrzeit sondern der Eventtask der die Daten aktualisiert und dann auf Statusänderungen prüft läuft nur alle 10sek. Das kannst du auf 1sek runter stellen, das erzeugt aber auch die 10 Fache last auf den Raspberry.

    jsp-email
    Hast du mal das Git Rspository zurück gesetzt wie es beschrieben war?

    domii666
    Nein, das bezog sich auf einen Beitrag der jetzt gelöscht ist.
    Schaue mal die letzten Seiten durch, da steht mehrfach wie der XML Fehler zu beheben ist, nach dem Update auf Version 2.0.3 sollte der Fehler dann weg sein.

    @all
    kleiner Ausblick auf Version 2.2, links die Tabletview, rechts die Smartphoneview.


  • DieterWo
    Ich habe den Fehler gefixt, der Fix kommt mit dem nächsten Update. Bis dahin nimm einfach die Reihenfolge, im Anhang ist ein Bild mit und ohne dem Fehler.


    :D Auf die Idee, das blind zu machen wär ich ja im Leben nicht gekommen :D


    Für Taster die sind die Ereignisse nicht direkt geeignet, die 10sek nicht von der Sperrzeit sondern der Eventtask der die Daten aktualisiert und dann auf Statusänderungen prüft läuft nur alle 10sek. Das kannst du auf 1sek runter stellen, das erzeugt aber auch die 10 Fache last auf den Raspberry.

    Okay, 10-fache Last....ist ja relativ. 10fach von 0.5% wäre ja nicht schlimm. 10fach von 5% ist schon was anderes. Da ich noch nicht viel dran hab, habe ich auch noch keine Vorstellung, wie viel Last verursacht wird, wenn 20-30 Steckdosen, 15 Lampen und 24 Temperaturfühler dran habe.

    Mein Zielausbau sieht aber vor, über Taster und auch über PIR z.B. Lampen/Steckdosen ein- und auszuschalten. Da muß eine Lösung her, die "Frauenfreundlich" ist. Da brauch ich nicht mit sowas wie "Drück den Schalter 10 Sekunden und das Licht geht an" oder "Fahr unters Carport. Wenn du hinten gegengefahren bist, geht nach 10 Sekunden das Licht an" kommen, dann kann ich's gleich wieder abbauen :D

    Wo könnte ich das denn auf 1 oder 2 Sekunde runterstellen?

    Könntest du noch mal was zu den Zuständen sagen, die in der Weboberfläche angezeigt werden. Ich hatte das in einem der letzten Posts schon mal angesprochen.
    Wenn ich z.B. über ein Ereignis 3 Lampen einschalten lasse, diese aber über die Weboberfläche einzeln wieder ausschalten möchte, dann geht das nicht, weil der Status der Lampen nicht über das Ereignis auf an gesetzt wird. Umgekehrt ist es das gleiche.

    Noch ne Frage. Bei der Eingabe von Breiten und Längengrad nur Ganzzahlen, oder mit Kommastellen mögliche? Wenn ja, wie viele sind möglich und mit . oder , getrennt?

    Einmal editiert, zuletzt von DieterWo (26. Dezember 2014 um 09:34)

  • Noch ne Frage. Bei der Eingabe von Breiten und Längengrad nur Ganzzahlen, oder mit Kommastellen mögliche? Wenn ja, wie viele sind möglich und mit . oder , getrennt?

    mit Punkten.. komme geht dann.also schon wird aber abgeschnitten :bravo2:



    So wie rechts hab ich das nicht

    Agent47

    mit git komm ich nicht klar

    Hasst du ne komplette anleitung wie du das machst.

    ohh digger.. ruhig blut.. das kommt erst mit Version 2.2


  • mit Punkten.. komme geht dann.also schon wird aber abgeschnitten :bravo2:

    Das habe ich mittlerweile auch rausgefunden :D Aber trotzdem vielen Dank.

    Jetzt läuft auch mein Sensor-Receiver wieder.
    Nun findet er meinen Temperatursensor nicht mehr.
    Schaltserver: Läuft.
    Task: Läuft.
    Arduino Sensor Empfänger: deaktiviert (hab keinen Arduino)
    Sensor Empfänger: läuft
    Sensor Sender: läuft.

    Schalterfunktionen->Raumlose Elemente: keine Einträge.
    Wie finde ich ihn wieder? Ich such mir hier noch nen Wolf.
    Automatik hin oder her. Ne schöne Konfigdatei hat schon was für sich. Oder auch ne schöne Log-Datei in der man sehen könnte, ob er denn nun auch danach sucht.

    Das Problem hatte ich ja schon mal. Aber auf einmal lief's. Weiß aber nicht mehr, warum und was ich gemacht hatte. Wenn ich mich recht erinnere, dann lag es damals an dem nicht aktivierten Sensor-Receiver, bin mir aber nicht sicher, und jetzt läuft er ja.


  • agent47

    Hallo, könntest Du Dir bitte meinem Post #996 noch mal anschauen ob das richtig ist, was ich geschrieben habe und ob da noch ein Bug vorliegt.


    das Problem hab ich auch .. Sonnenaufgang geht bei Sonnenuntergang ist was faul.. ich glaub da ist ne 12 Stunden Verschiebung also reagiert der nicht für 16 Uhr sondern für 04 Uhr als Beispiel

    Einmal editiert, zuletzt von arteck (26. Dezember 2014 um 12:41)

  • Ja, das hatte ich mir als temporäre Lösung auch überlegt.

    Der Fehler tritt ja nur auf, wenn eine Lampe mit Sunset an geht, dann aber vor Sunrise per Zeitschaltfunktion ausgeschaltet wird. Bei Sunset an und Sunrise aus, fällt der Fehler nicht auf, zumindest nicht im Winter. Im Sommer müsste der Fehler auch auftreten.

    Dann würde z.B. die Lampe mit Sunset 21:30 Uhr Einschalten, mit 05:00 Uhr Sunrise ausschalten, dann aber am Vormittag um 09:30 Uhr wieder angehen.

    Was anderes noch, wenn man als Benutzer länger angemeldet ist, sind die Räume mit den schaltbaren Elementen im Benutzerbereich auf einmal leer. Nach Benutzer Abmeldung und neuer Anmeldung sind sie wieder da. Ausserdem sind auf der Webpage die Elemente Templetes manchmal verschoben. Meine SD Karte ist eine schnelle Class 10 sandisk 8 GB.

    Kann das von dem Lighttpd kommen, oder ist das ausgeschlossen?

    Noch eine Frage zum DHT22.

    Wenn mehre DHT22 betrieben werden, werden dies mit gleicher ID und unterschiedlichem pin angemeldet, oder muss die Id sich auch unterscheiden?
    pi@SHC2 /var/www/shc $ php index.php app=shc -st -listDHT
    DHT22; ID: 22; Pin: 4; Name: ""
    DHT22; ID: 23; Pin: 22; Name: ""
    Der Id 23 wird zwar gelistet, kann aber nicht gelesen werden.

    So geht es dann: pi@SHC2 /var/www/shc $ sudo python shc/lib/external/python/dht.py 22 22
    23.7;99.9
    pi@SHC2 /var/www/shc $ sudo python shc/lib/external/python/dht.py 22 4
    15.4;56.4

    Im Prinzip, werden die verschiedenen Sensoren ja bereits durch die unterschiedlichen pin's adressiert.

    Einmal editiert, zuletzt von rmjspa (26. Dezember 2014 um 13:22)

  • Hey,

    kann es sein, dass das Ereignis Sunset/Sunrise nur die Lampen anschaltet und nicht den Status im Webinterface ändert. (also die Häckchen nicht von Aus nach an ändert)?

    Außerdem habe ich immernoch das Problem, was ich in Post #979 beschrieben habe. :helpnew:

Jetzt mitmachen!

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