Dämmerungsschalter ohne Fotozelle

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
    - Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
    -> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
    - Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
    - Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

    Danke...

    • Dämmerungsschalter ohne Fotozelle

      14.06.2016: Anpassungen zum direkten Ausführen des PHP Skript aus DoorPi, Danke an sothoku (siehe Post 35)
      15.06.2016: Dito

      Hallo zusammen.

      Ich kann / möchte keine Fotozelle einsetzen, um die Beleuchtung meiner Sprechstelle ein- bzw. auszuschalten. In PHP gibt es eine Funktion, welche den Zeitpunkt von Sonnenauf- bzw. Untergang berechnet. Ich habe dieses PHP Script erstellt:

      PHP Source Code

      1. #!/usr/bin/php -q
      2. <?php
      3. // Flughafen Düsseldorf (DUS)
      4. $lat = 51.282785; // North
      5. $long = 6.76227; // East
      6. $filenameOn = "/home/pi/keyboard/twilight/input/on";
      7. $filenameOff = "/home/pi/keyboard/twilight/input/off";
      8. $logfilename = "/home/pi/twilight.txt";
      9. If(file_exists($logfilename))
      10. {
      11. unlink($logfilename);
      12. }
      13. $logfile = fopen($logfilename, "wb+");
      14. fwrite($logfile, date(DATE_RFC822));
      15. $offset = 1 + date("I"); // difference between GMT and local time (and daylight saving time) in hours
      16. $now = date("U"); // actual timestamp
      17. $zenith=90+50/60; // best practices for visible twilight
      18. // Calculate surise and sunset for today
      19. $sunrise = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);
      20. $sunset = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);
      21. If ($now > $sunrise)
      22. {
      23. If($now < $sunset)
      24. {
      25. fwrite($logfile, " - Es ist Tag");
      26. If(file_exists($filenameOn))
      27. {
      28. unlink($filenameOn);
      29. $myfile = fopen($filenameOff, "wb+");
      30. fwrite($myfile, "1");
      31. fclose($myfile);
      32. }
      33. }
      34. Else
      35. {
      36. fwrite($logfile, " - Es ist Abend");
      37. If(file_exists($filenameOff))
      38. {
      39. unlink($filenameOff);
      40. $myfile = fopen($filenameOn, "wb+");
      41. fwrite($myfile, "1");
      42. fclose($myfile);
      43. }
      44. }
      45. }
      46. else
      47. {
      48. fwrite($logfile, " - Es ist Morgen");
      49. If(file_exists($filenameOff))
      50. {
      51. unlink($filenameOff);
      52. $myfile = fopen($filenameOn, "wb+");
      53. fwrite($myfile, "1");
      54. fclose($myfile);
      55. }
      56. }
      57. fclose($logfile)
      58. ?>
      Display All


      Das PHP Skript muss anschließend mit chmod u+x ausführbar gemacht werden.


      Es legt im Verzeichnis /home/pi/keyboard/twilight/input entweder eine Datei "on" oder "off" an, je nach Tageszeit.

      Ausgeführt wird das Script alle 5 Minuten per Event:

      Source Code

      1. [EVENT_OnTimeMinuteEvery5]
      2. 10 = os_execute:/home/pi/twilight.php


      Der Rest der doorpi.conf für diesen Teil:

      Source Code

      1. [keyboards]
      2. onboardpins = gpio
      3. twilight = filesystem
      4. [onboardpins_InputPins]
      5. 11 = Sleep:0
      6. [onboardpins_OutputPins]
      7. 12 = amp
      8. 13 = light
      9. 22 = alive_led
      10. [onboardpins_keyboard]
      11. bouncetime = 1000
      12. mode = board
      13. polarity = 0
      14. pressed_on_keydown = true
      15. pull_up_down = PUD_DOWN
      16. [twilight_keyboard]
      17. base_path_input = /home/pi/keyboard/twilight/input
      18. base_path_output = /home/pi/keyboard/twilight/output
      19. reset_input = true
      20. pressed_on_keydown = true
      21. [twilight_InputPins]
      22. on = Sleep:0
      23. off = Sleep:0
      24. [EVENT_OnKeyUp_twilight.on]
      25. 10 = out:light,1
      26. [EVENT_OnKeyUp_twilight.off]
      27. 10 = out:light,0
      Display All

      Ich muss jetzt mal schauen ob das mit der Helligkeit passt. Ggf. kann man noch einen Offset einbauen oder den Zenith ändern. :D
      Bis Ende September beruflich und privat abwesend. Ab Oktober geht es mit DoorPi weiter :)

      The post was edited 3 times, last by AndyGR42: Vertippt ().

    • FHEM ist natürlich die Kür. :)

      Ich werde mich da auch mal dran machen, aber vermutlich erst Richtung Herbst / Winter. In dem Fall würde ich aber auch einen Sensor integrieren um die witterungsbedingten Schwankungen bei der Helligkeit besser in den Griff zu bekommen.
      Bis Ende September beruflich und privat abwesend. Ab Oktober geht es mit DoorPi weiter :)
    • Ich denke für die Beleuchtung der Sprechanlage ist die Schwankung relativ irrelevant.
      Aber das twilight Modul in FHEM kann auch Daten von yahoo Weather in die Helligkeitsberechnung einbeziehen :)

      In jedem Fall sollte man es so machen (wenn man FHEM nutzt), nicht im DoorPi noch einen zweiten Sensor zu verwenden. Sonst ist für FHEM zu einem anderen Zeitpunkt dunkel als für DoorPi. Sondern wenn, dann einen Sensor, und über einen geeigneten Mechanismus die Infos an das andere System geben.
    • @AndyGR42
      oder
      @motom001

      Hmmm, seltsamerweise startet DoorPi mir das Script twilight.sh aber nur einmal. Kannst Du mal bitte schauen?

      Source Code

      1. 2016-04-26 21:25:00,293 [DEBUG] [watchdog.observers.inotify_buffer] in-event <InotifyEvent: src_path=/home/pi/keyboard/twilight/input/off, wd=1, mask=IN_DELETE, cookie=0, name=off>
      2. 2016-04-26 21:25:00,298 [DEBUG] [watchdog.observers.inotify_buffer] in-event <InotifyEvent: src_path=/home/pi/keyboard/twilight/input/on, wd=1, mask=IN_MODIFY, cookie=0, name=on>
      3. 2016-04-26 21:25:00,815 [TRACE] [doorpi.action.handler] fire Event OnKeyPressed from doorpi.keyboard.from_filesystem asyncron
      4. 2016-04-26 21:25:00,817 [TRACE] [doorpi.action.handler] fire Event OnKeyPressed_on from doorpi.keyboard.from_filesystem asyncron
      5. 2016-04-26 21:25:00,820 [DEBUG] [doorpi.action.handler] no actions for event OnKeyPressed - skip fire_event OnKeyPressed from doorpi.keyboard.from_filesystem
      6. 2016-04-26 21:25:00,822 [TRACE] [doorpi.action.handler] fire Event OnKeyPressed_twilight.on from doorpi.keyboard.from_filesystem asyncron
      7. 2016-04-26 21:25:00,823 [DEBUG] [doorpi.action.handler] no actions for event OnKeyPressed_on - skip fire_event OnKeyPressed_on from doorpi.keyboard.from_filesystem
      8. 2016-04-26 21:25:00,827 [DEBUG] [doorpi.action.handler] no actions for event OnKeyPressed_twilight.on - skip fire_event OnKeyPressed_twilight.on from doorpi.keyboard.from_filesystem
      9. 2016-04-26 21:25:00,828 [TRACE] [doorpi.action.handler] fire Event OnKeyDown from doorpi.keyboard.from_filesystem asyncron
      10. 2016-04-26 21:25:00,832 [TRACE] [doorpi.action.handler] fire Event OnKeyDown_on from doorpi.keyboard.from_filesystem asyncron
      11. 2016-04-26 21:25:00,834 [DEBUG] [doorpi.action.handler] no actions for event OnKeyDown - skip fire_event OnKeyDown from doorpi.keyboard.from_filesystem
      12. 2016-04-26 21:25:00,837 [DEBUG] [doorpi.action.handler] no actions for event OnKeyDown_on - skip fire_event OnKeyDown_on from doorpi.keyboard.from_filesystem
      13. 2016-04-26 21:25:00,838 [TRACE] [doorpi.action.handler] fire Event OnKeyDown_twilight.on from doorpi.keyboard.from_filesystem asyncron
      14. 2016-04-26 21:25:00,842 [DEBUG] [doorpi.action.handler] no actions for event OnKeyDown_twilight.on - skip fire_event OnKeyDown_twilight.on from doorpi.keyboard.from_filesystem
      15. 2016-04-26 22:18:17,215 [INFO] [doorpi.sipphone.from_linphone] linphone_core_find_auth_info(): returning auth info username=0620, realm=asterisk
      16. 2016-04-26 22:18:17,217 [INFO] [doorpi.sipphone.from_linphone] Auth info found for [0620] realm [asterisk]
      17. 2016-04-26 22:18:17,220 [INFO] [doorpi.sipphone.from_linphone] Changing [client] [REGISTER] transaction [0xce5330], from state [INIT] to [TRYING]
      18. 2016-04-26 22:18:17,225 [INFO] [doorpi.sipphone.from_linphone] channel [0xca6898]: message sent to [UDP://192.168.178.241:5060], size: [694] bytes
      Display All


      Source Code: doorpi.ini

      1. [twilight_keyboard]
      2. base_path_input = /home/pi/keyboard/twilight/input
      3. base_path_output = /home/pi/keyboard/twilight/output
      4. reset_input = true
      5. pressed_on_keydown = true
      6. [twilight_InputPins]
      7. on = Sleep:0
      8. off = Sleep:0
      9. [EVENT_OnKeyUp_twilight.on]
      10. 10 = out:Licht,1
      11. [EVENT_OnKeyUp_twilight.off]
      12. 10 = out:Licht,0
      13. [EVENT_OnTimeMinuteEvery5]
      14. 10 = os_execute:sudo /usr/local/etc/DoorPi/tools/twilight.sh
      Display All
      So wie Du schon weiter oben geschrieben hast startet DoorPi auch das .php script nicht direkt ais der .ini heraus.

      Danke
      Mit freundlichen Grüßen

      Andreas
    • Ich beantworte mir mal selbst meine Frage.

      So wie aussieht war nicht das Script Schuld. Dieses arbeitet, soweit, korrekt. In dem Log vom DoorPi taucht auch hier nicht alle 5 Min einen Eintrag auf, warum das so ist liegt vermutlich daran das nicht soviel auf die Karte geschrieben werden muss.

      Die Ordner Input und Output, in /home/pi/keyboard/twilight, werden nicht automatisch erstellt dies muss händisch nachgeholt werden.

      @motom001
      Vieleicht kannst Du uns, wenn Du Zeit hast, erklären warum der Aufruf des .php Scriptes aus DoorPi nicht funktioniert.
      Mein take_snapshot.php Script zB. wird sauber in DoorPi aufgerufen.
      Mit freundlichen Grüßen

      Andreas
    • Moin.

      Das Anlegen der Ordner ist einmalig. Da wäre es mehr Aufwand gewesen dies zu scripten :)

      Also, ich habe nicht viel Zeit investiert das php Script direkt aus DoorPi aufzurufen. Als es nicht auf Anhieb klappte, habe ich in einem shell script verpackt. Mag auch sein, ich war nur zu doof dafür.
      Bis Ende September beruflich und privat abwesend. Ab Oktober geht es mit DoorPi weiter :)
    • Hallo Andy,
      du verwendest DoorPi um einen Event alle 10min auszuführen und anschließend noch os_execute um ein PHP Script auszuführen?

      Das klingt wie die magische Kugel beim Kenndy Attentat. Von hinten per Umweg durch die Brust geschossen...

      Warum benutzt du nicht sunwait auf der Shell zusammen mit einem cronjob?
      Sobald die Dämmerung eintritt, schreibst du dann direkt eine "1" in die GPIO Schnittstelle an der die Beleuchtung angeschlossen ist.
    • Hi,
      Sunwait wäre für mich auch eine ideale Ergänzung des DoorPI.
      Habe es mal in einer Debian-Testumgebung versucht zu installieren - leider vergeblich.
      Beim "make" kommt eine Fehlermeldung... soll - laut Angaben in einigen Foren "normal" sein, ausführen konnte ich das Paket trotzdem nicht.

      @han-solo: Kannst du kurz beschreiben, wie du das zum Laufen bekommen hast?

      Gruß
      Jörg
    • Komplizierteste Kameralösungen mit Bewegungsmeldern, aber die Helligkeit wird auf Grund von geografischer Breite und Länge geraten ?

      Es gibt so viele Möglichkeiten, einen echten Helligkeitssensor (digital oder analog) mit dem Raspberry Pi auszuwerten (auch ohne FHEM), dass ich jede reine Softwarelösung für schwach halte. Die reine Softwarelösung kann nämlich einen strahlend hellen Herbstttag nicht von einem trüben unterscheiden.

      Übrigens gibt es auch auch Sensoren wie etwa den Taos TSL250/260, die auf einfachste Weise, nämlich mit mit einem Transistor und zwei Widerständen, direkt und ohne Software mit einer Beleuchtung gekoppelt werden können.

      Und noch ein Hack: Mit Hilfe der ImageMagick Tool Suite lässt sich innerhalb von einer Programmzeile die Gesamthelligkeit eines digitalen Bildes ermitteln. Das liefert probemlos auch ohne separaten Sensor einen EInstellungswert.

      LG

      pah

      Note added in proof:
      Wenn man nach Funktionen zur Berechnung sucht landet man quasi immer bei PHP
      Verstehe ich nicht. Jede halbwegs brauchbare Programmiersprache hat ausreichende Mathe-Libraries für so simple Sachen. Hierfür würde sogar bc mit einer einfachen Näherungsformel ausreichen.

      The post was edited 1 time, last by pahenning ().

    • pahenning wrote:

      Komplizierteste Kameralösungen mit Bewegungsmeldern, aber die Helligkeit wird auf Grund von geografischer Breite und Länge geraten ?

      Verstehe ich nicht. Jede halbwegs brauchbare Programmiersprache hat ausreichende Mathe-Libraries für so simple Sachen. Hierfür würde sogar bc mit einer einfachen Näherungsformel ausreichen.
      Wenn es ausreichend ist, warum in etwas anderes Zeit und Material stecken? In meinem Fall kommen noch handfeste Gründe wie eine unzureichende Anzahl von Aderpaaren für Sensoren und eine völlig ungeeignete Position der Kabelausführung / Sprechstelle dazu. Ich bohre nur ungern neue Löcher in mein Haus. Oder in meine fertige Sprechstelle, was für eine halbwegs sinnvolle Positionierung des Sensors erforderlich gewesen wäre. Eine funkbasierte Lösung einzurichten, nur um die Beleuchtung meiner Sprechstellen zu schalten, ist für mich völliger overkill. Bei der nächsten Sonnenfinsternis schalte ich das Licht von Hand ein, versprochen!

      Es gibt also genug Gründe, warum man die eine Lösung bevorzugt. Daran ist nichts schwach, sondern es ist das Ergebnis individueller Abwägungen.

      Den weniger Wissenden liefern Suchmaschinen Ergebnisse unter anderem in PHP. PHP kenne ich und war so vermessen, es für mich als Lösung zu betrachten. Dank des konstruktiven Austausches in diesem Forum kennen ich nun eine bessere Lösung. Das ist ein Lernprozess und dieser wiederum für mich leicht zu verstehen.
      Bis Ende September beruflich und privat abwesend. Ab Oktober geht es mit DoorPi weiter :)