Menü
Startseite
Foren
Neue Beiträge
Foren durchsuchen
Aktuelles
Neue Beiträge
Letzte Aktivität
Mitglieder
Registrierte Mitglieder
Zurzeit aktive Besucher
Chat
0
Spende
Anmelden
Registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Neue Beiträge
Foren durchsuchen
Menü
Anmelden
Registrieren
Startseite
Foren
Alles was nicht LTspice betrifft
Mikrocontroller, Raspberry und Co.
Velux Dachrollo Steuerung
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Auf Thema antworten
Nachricht
<p>[QUOTE="spicer, post: 881, member: 1"]</p><p>Hab die mit einem alten Raspberry A Rev2 realisiert.</p><p>Auf diesem läuft ein aktuelles Raspbian (stretch).</p><p></p><p> Als Aussensensor habe ich einen <strong>FWS-90</strong> von pearl genommen.</p><p>Als Empfänger dient ein <strong>RF-5V</strong>.</p><p></p><p>Angesteuert wird das Velux Solar Rollo mit einer original KUX100 3-Tasten-Fernbedienung (wegen Rolling Code), welche ich auseinander genommen habe.</p><p>Die Tasten (welche gegen Masse schalten) werden mittels 2N7000 Kleinleistungs-FETs betätigt.</p><p>Anstelle der zwei 1.5V Batterien speise ich die FB-Platine mit den 3.3V des RPI.</p><p></p><p>Habe mit Target3001 eine 2-seitige Platine layoutet. Die Datei ist angefügt und auch 3D Ansichten davon.</p><p>Des Weitern habe ich 2 Videos vom fräsen und div Fotos angehängt.</p><p></p><p></p><p>Einen zweiten Kanal für eine weitere FB habe ich auch vorgesehn (RPI GPIO 3 und 4).</p><p></p><p></p><p>Notizen für die Installation der Aussensensor-Abfrage:</p><p>[SPOILER]</p><p></p><p>[CODE]</p><p>Tutorial:</p><p></p><p>http://www.bmetallica.de/index.php/433mhz-temperatur-auslesen/#comment-1160</p><p></p><p>chmod 777 /tmp/r-log</p><p>chmod 777 /tmp/Temperatur</p><p>chmod 777 /tmp/HUM</p><p></p><p></p><p>Test:</p><p></p><p>pilight-receive</p><p></p><p></p><p>Sunset/Sunrise abfragen & weitere Pakete installieren:</p><p></p><p>sudo apt update</p><p>sudo apt upgrade</p><p>sudo apt install python-pip</p><p>sudo pip install astral</p><p>sudo apt install bc</p><p></p><p></p><p>[/CODE][/SPOILER]</p><p></p><p>Div Infos:</p><p>[SPOILER]</p><p></p><p>[CODE]</p><p>Aussensensor:</p><p>pearl.ch FWS-90</p><p></p><p>Befehls-Info:</p><p>gpio mode 6 out P6 output</p><p>gpio mode 5 out P5 output</p><p>gpio write 6 1 P6 auf 1 -- ab-befehl</p><p>gpio write 6 0 P6 auf 0 -- ab-befehl</p><p>gpio write 5 1 P6 auf 1 -- auf-befehl</p><p>gpio write 5 0 P6 auf 0 -- auf-befehl</p><p></p><p>P5 auf</p><p>P6 ab</p><p></p><p>Bedingungen:</p><p></p><p>AUF (P5) wenn nach sunset oder temp<20</p><p>AB (P6) wenn nach sunrise und temp>20</p><p></p><p>Dateien in /home/pi :</p><p>ALARM, SIGNAL , HUM , Temperatur , r-log , last (enthält letzten Rollo-Befehl Auf oder Ab)</p><p></p><p>crontab -e</p><p>*/2 * * * * sudo /home/pi/auswerte.sh >/dev/null 2>&1</p><p>*/5 * * * * python /home/pi/sensor.py >/dev/null 2>&1</p><p>0 */4 * * * /home/pi/signal.sh >/dev/null 2>&1</p><p></p><p>01 03 * * * echo "Ab" > /home/pi/last <<< Diese Zeile nur, wenn ihr wollt, dass die Steuerung spätestens am nächsten Morgen das von Hand runtergefahrene Rollo wieder hochfährt, wenn die Temperatur =< 20°C ist</p><p></p><p>Von webIF werden dann die Scripte man_ab.sh bzw man_auf.sh ausgeführt.</p><p>So wird das Rollo nicht beim nächsten Durchlauf von sensor.py wieder in die alte Position gerückt. </p><p></p><p>[/CODE][/SPOILER]</p><p></p><p>auswerte.sh in /home/pi (777 Rechte):</p><p></p><p>[SPOILER][CODE]</p><p>#!/bin/sh</p><p></p><p>dienst="$(pidof /usr/local/sbin/pilight-daemon | wc -w)"</p><p>if [ "$dienst" != 1 ]</p><p> then</p><p> sudo service pilight start</p><p>fi</p><p></p><p></p><p>dienst=`ps -aux |grep pilight-receive|wc -l`</p><p>if [ "$dienst" -le 1 ]</p><p> then</p><p> pilight-receive > /home/pi/r-log 2>&1 &</p><p> # echo Dienst wurde neu gestartet</p><p>fi</p><p></p><p>te=`cat /home/pi/r-log |grep '"id": 7,' -a --text -C 3|tail -n3|awk '{ print $2; }'|sed 's/,//g'` #Pearl Sender ändert Id (hier 7) nach Batteriewechsel! Muss dann hier angepasst werden!!!</p><p>TEMP=`echo $te |awk '{print $1}'`</p><p>HUM=`echo $te |awk '{print $2}'`</p><p>BAT=`echo $te |awk '{print $3}'`</p><p></p><p>var=$(cat /home/pi/r-log)</p><p># echo $var</p><p></p><p># TEMPALT="`cat /home/pi/Temperatur`"</p><p># echo $TEMP" akt Temp"</p><p># echo $TEMPALT" temp alt"</p><p></p><p># Validierung ob Temperatur eine Fliesskomma-Zahl ist</p><p></p><p>check=`echo "$TEMP" | grep -E ^\-?[0-9]*\.?[0-9]+$`</p><p>if [ "$check" = '' ]; then </p><p> echo 0 > /home/pi/r-log</p><p> exit</p><p>fi</p><p>check2=`echo "$HUM" | grep -E ^\-?[0-9]*\.?[0-9]+$`</p><p>if [ "$check2" = '' ]; then </p><p> echo 0 > /home/pi/r-log</p><p> exit</p><p>fi</p><p></p><p># Keine Weiterverarbeitung wenn Aussenfuehler ueber 55 Grad</p><p></p><p>if [ 1 -eq "$(echo "${TEMP} > 55" | bc)" ]; then</p><p> echo 0 > /home/pi/r-log</p><p> exit</p><p>fi</p><p></p><p># Unterschied von mehr als 8 Grad seit letztem Lauf abfragen</p><p></p><p># echo $TEMP - $TEMPALT | bc</p><p># diff=$(echo "$TEMP - $TEMPALT" | bc)</p><p># diff=${diff#-}</p><p># echo $diff</p><p># if [ -n "$TEMP" ] && [ 1 -eq "$(echo "${diff} < 8" | bc)" ]</p><p></p><p>echo $TEMP > /home/pi/Temperatur</p><p>echo $HUM > /home/pi/HUM</p><p></p><p># fi</p><p></p><p>if [ "$BAT" != "1" ]</p><p> then</p><p> echo "Batterie tief" > /home/pi/ALARM</p><p> else</p><p> echo "Batterie ok" > /home/pi/ALARM</p><p>fi</p><p>echo 0 > /home/pi/r-log</p><p>exit</p><p>[/CODE][/SPOILER]</p><p></p><p><strong>Achtung</strong>. Ist noch nicht sauber:</p><p>te=`cat /home/pi/r-log |grep '"id": <strong>7</strong>,' -a --text -C 3|tail -n3|awk '{ print $2; }'|sed 's/,//g'` #<strong>Pearl Sender ändert Id</strong> (hier 7) nach Batteriewechsel! <strong>Muss</strong> dann hier <strong>angepasst werden</strong>!!!</p><p>So sieht der Log aus (nun mit Id 29):</p><p></p><p> [CODE]</p><p>{</p><p> "message": {</p><p> "id": 29,</p><p> "temperature": 21.7,</p><p> "humidity": 19.0,</p><p> "battery": 1</p><p> },</p><p> "origin": "receiver",</p><p> "protocol": "alecto_ws1700",</p><p> "uuid": "0000-00-00-10-203518",</p><p> "repeats": 1</p><p>}</p><p>[/CODE]Nehme Hilfe gerne entgegen, um die <strong>uuid</strong> abzufragen und nicht die <strong>Id</strong>.</p><p></p><p></p><p></p><p></p><p>sensor.py Steuerprogramm in /home/pi (644 Rechte):</p><p>Je nachdem wo der Aussenfühler montiert ist (Schattenseite oder an der prallen Sonne) ist in dieser Zeile die Temperatur einzustellen.</p><p>if float(inhalt) > <strong>21</strong> and sunrise < akttime and sunset > akttime: # Temperaturen (21 Grad anpassen)</p><p>Bei mir ist der Fühler auf der Ostseite und damit bereits vor Mittag im Schatten.</p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/usr/bin/python3</p><p></p><p># Copyright 2018 by spicer</p><p></p><p>import sys, os, subprocess</p><p></p><p>try:</p><p> fobj = open("/home/pi/Temperatur") # Pfad anpassen!</p><p></p><p>except:</p><p> #print "Datei nicht vorhanden!"</p><p> exit()</p><p></p><p>for line in fobj:</p><p> in1 = line.rstrip()</p><p>fobj.close()</p><p></p><p>try:</p><p> inhalt = float(in1)</p><p>except:</p><p> #print "Kein numerischer Wert oder kein Empfang"</p><p> exit()</p><p></p><p>#print "Gespeicherte Temperatur =",inhalt</p><p>stat1 = open("/home/pi/ALARM")</p><p>for line2 in stat1:</p><p> in11 = line2.rstrip()</p><p>stat1.close()</p><p>#print "Status =",in11</p><p>hum1 = open("/home/pi/HUM")</p><p>for line3 in hum1:</p><p> in111 = line3.rstrip()</p><p>hum1.close()</p><p>#print "Luftfeuchtigkeit =",in111</p><p></p><p>from time import sleep</p><p></p><p>from datetime import date</p><p></p><p>import astral</p><p>import time</p><p></p><p>loc = astral.Location(('Bern', 'Switzerland', 46.95, 7.47, 'Europe/Zurich', 510))</p><p># for event, time in loc.sun(date.today()).items():</p><p># print(event, 'at', time)</p><p>data = loc.sun(date.today()).items()</p><p>sun1 = str(data[1])</p><p>zeit = sun1.split(', ')</p><p># print current date and time</p><p>akttime = int(time.strftime("%H"))*60+int(time.strftime("%M"))</p><p># print "Aktuelle Zeit in min =",akttime</p><p># print zeit[4],":",zeit[5],"Uhr"</p><p>sunset = int(zeit[4])*60+int(zeit[5])-60 # Sonnenuntergang +/- Korrekturzeit in Min</p><p># print "Sonnenuntergang inkl Korrektur",sunset</p><p></p><p>sun2 = str(data[3])</p><p>zeit2 = sun2.split(', ')</p><p># print zeit2[4],":",zeit2[5],"Uhr"</p><p>sunrise = int(zeit2[4])*60+int(zeit2[5])+180 # Sonnenaufgang +/- Korrekturzeit in Min</p><p>#print "Sonnenaufgang inkl Korrektur =",sunrise</p><p></p><p>last2 = open("/home/pi/last")</p><p>for line5 in last2:</p><p> in22 = line5.rstrip()</p><p>last2.close()</p><p></p><p>if in11 == "Batterie tief":</p><p> # print "in11 =",in11</p><p> # print "Batterie tief erkannt"</p><p> sys.exit(0)</p><p></p><p>#if (float(inhalt) > 21 and sunrise < akttime and sunset > akttime) or (float(inhalt) < 0): #Temperaturen hoch und tief (21 Grad / 0 Grad anpassen)</p><p>if float(inhalt) > 21 and sunrise < akttime and sunset > akttime: # Temperaturen (21 Grad anpassen)</p><p> if in22 == "Auf":</p><p> os.system('sh /home/pi/ab.sh')</p><p>else:</p><p> if in22 == "Ab":</p><p> os.system('sh /home/pi/auf.sh')</p><p></p><p>last1 = open("/home/pi/last")</p><p>for line4 in last1:</p><p> in1111 = line4.rstrip()</p><p>last1.close()</p><p>#print "Letzter Befehl =",in1111</p><p>[/CODE][/SPOILER]</p><p></p><p></p><p>signal.sh Script in /home/pi (774 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p></p><p># Schreibt "Kein Signal" in SIGNAL, wenn immer noch gleicher Temperatur Wert seit letzter Ausführung</p><p></p><p>tempakt="`cat /home/pi/Temperatur`"</p><p>tempalt="`cat /home/pi/temp_alt`"</p><p></p><p>echo $tempakt > /home/pi/temp_alt</p><p></p><p>if [ $tempakt = $tempalt ]</p><p> then</p><p> echo "Kein Signal" > /home/pi/SIGNAL</p><p> else</p><p> echo "Signal ok" > /home/pi/SIGNAL</p><p>fi</p><p></p><p>exit</p><p>[/CODE][/SPOILER]</p><p></p><p></p><p>auf.sh Script in /home/pi (777 Rechte):</p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 5 out</p><p>gpio write 5 1</p><p>sleep 0.6</p><p>gpio write 5 0</p><p>sleep 5</p><p>gpio write 5 1</p><p>sleep 0.6</p><p>gpio write 5 0</p><p>echo "Auf" > /home/pi/last</p><p>[/CODE][/SPOILER]</p><p></p><p> ab.sh Script in /home/pi (777 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 6 out</p><p>gpio write 6 1</p><p>sleep 0.6</p><p>gpio write 6 0</p><p>sleep 5</p><p>gpio write 6 1</p><p>sleep 0.6</p><p>gpio write 6 0</p><p>echo "Ab" > /home/pi/last</p><p>[/CODE][/SPOILER]</p><p></p><p>man_auf.sh Script in /home/pi (775 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 5 out</p><p>gpio write 5 1</p><p>sleep 0.6</p><p>gpio write 5 0</p><p>sleep 5</p><p>gpio write 5 1</p><p>sleep 0.6</p><p>gpio write 5 0</p><p>[/CODE][/SPOILER]</p><p></p><p> man_ab.sh Script in /home/pi (775 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 6 out</p><p>gpio write 6 1</p><p>sleep 0.6</p><p>gpio write 6 0</p><p>sleep 5</p><p>gpio write 6 1</p><p>sleep 0.6</p><p>gpio write 6 0</p><p>[/CODE][/SPOILER]</p><p></p><p>man_auf2.sh Script in /home/pi (775 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 3 out</p><p>gpio write 3 1</p><p>sleep 0.6</p><p>gpio write 3 0</p><p>sleep 5</p><p>gpio write 3 1</p><p>sleep 0.6</p><p>gpio write 3 0</p><p>[/CODE][/SPOILER]</p><p></p><p>man_ab2.sh Script in /home/pi (775 Rechte):</p><p></p><p></p><p>[SPOILER]</p><p>[CODE]</p><p>#!/bin/sh</p><p>gpio mode 4 out</p><p>gpio write 4 1</p><p>sleep 0.6</p><p>gpio write 4 0</p><p>sleep 5</p><p>gpio write 4 1</p><p>sleep 0.6</p><p>gpio write 4 0</p><p>[/CODE][/SPOILER]</p><p></p><p></p><p>Wenn alle Scripte in /home/pi sind, erst mal <strong>sh auf.sh</strong> in Terminal eingeben, damit alle Dateien für sensor.py vorhanden/verfügbar sind.</p><p></p><p></p><p>Über das webIF kann man von ausswärts auf die Steuerung zugreiffen.</p><p>Von da werden dann die Scripte man_ab.sh bzw man_auf.sh ausgeführt.</p><p>So wird das Rollo nicht beim nächsten Durchlauf von sensor.py wieder in die alte Position gerückt.</p><p>Mit den Scripts man_ab2.sh bzw man_auf2.sh wird das zweite Rollo angesteuert.</p><p>[/QUOTE]</p>
[QUOTE="spicer, post: 881, member: 1"] Hab die mit einem alten Raspberry A Rev2 realisiert. Auf diesem läuft ein aktuelles Raspbian (stretch). Als Aussensensor habe ich einen [B]FWS-90[/B] von pearl genommen. Als Empfänger dient ein [B]RF-5V[/B]. Angesteuert wird das Velux Solar Rollo mit einer original KUX100 3-Tasten-Fernbedienung (wegen Rolling Code), welche ich auseinander genommen habe. Die Tasten (welche gegen Masse schalten) werden mittels 2N7000 Kleinleistungs-FETs betätigt. Anstelle der zwei 1.5V Batterien speise ich die FB-Platine mit den 3.3V des RPI. Habe mit Target3001 eine 2-seitige Platine layoutet. Die Datei ist angefügt und auch 3D Ansichten davon. Des Weitern habe ich 2 Videos vom fräsen und div Fotos angehängt. Einen zweiten Kanal für eine weitere FB habe ich auch vorgesehn (RPI GPIO 3 und 4). Notizen für die Installation der Aussensensor-Abfrage: [SPOILER] [CODE] Tutorial: http://www.bmetallica.de/index.php/433mhz-temperatur-auslesen/#comment-1160 chmod 777 /tmp/r-log chmod 777 /tmp/Temperatur chmod 777 /tmp/HUM Test: pilight-receive Sunset/Sunrise abfragen & weitere Pakete installieren: sudo apt update sudo apt upgrade sudo apt install python-pip sudo pip install astral sudo apt install bc [/CODE][/SPOILER] Div Infos: [SPOILER] [CODE] Aussensensor: pearl.ch FWS-90 Befehls-Info: gpio mode 6 out P6 output gpio mode 5 out P5 output gpio write 6 1 P6 auf 1 -- ab-befehl gpio write 6 0 P6 auf 0 -- ab-befehl gpio write 5 1 P6 auf 1 -- auf-befehl gpio write 5 0 P6 auf 0 -- auf-befehl P5 auf P6 ab Bedingungen: AUF (P5) wenn nach sunset oder temp<20 AB (P6) wenn nach sunrise und temp>20 Dateien in /home/pi : ALARM, SIGNAL , HUM , Temperatur , r-log , last (enthält letzten Rollo-Befehl Auf oder Ab) crontab -e */2 * * * * sudo /home/pi/auswerte.sh >/dev/null 2>&1 */5 * * * * python /home/pi/sensor.py >/dev/null 2>&1 0 */4 * * * /home/pi/signal.sh >/dev/null 2>&1 01 03 * * * echo "Ab" > /home/pi/last <<< Diese Zeile nur, wenn ihr wollt, dass die Steuerung spätestens am nächsten Morgen das von Hand runtergefahrene Rollo wieder hochfährt, wenn die Temperatur =< 20°C ist Von webIF werden dann die Scripte man_ab.sh bzw man_auf.sh ausgeführt. So wird das Rollo nicht beim nächsten Durchlauf von sensor.py wieder in die alte Position gerückt. [/CODE][/SPOILER] auswerte.sh in /home/pi (777 Rechte): [SPOILER][CODE] #!/bin/sh dienst="$(pidof /usr/local/sbin/pilight-daemon | wc -w)" if [ "$dienst" != 1 ] then sudo service pilight start fi dienst=`ps -aux |grep pilight-receive|wc -l` if [ "$dienst" -le 1 ] then pilight-receive > /home/pi/r-log 2>&1 & # echo Dienst wurde neu gestartet fi te=`cat /home/pi/r-log |grep '"id": 7,' -a --text -C 3|tail -n3|awk '{ print $2; }'|sed 's/,//g'` #Pearl Sender ändert Id (hier 7) nach Batteriewechsel! Muss dann hier angepasst werden!!! TEMP=`echo $te |awk '{print $1}'` HUM=`echo $te |awk '{print $2}'` BAT=`echo $te |awk '{print $3}'` var=$(cat /home/pi/r-log) # echo $var # TEMPALT="`cat /home/pi/Temperatur`" # echo $TEMP" akt Temp" # echo $TEMPALT" temp alt" # Validierung ob Temperatur eine Fliesskomma-Zahl ist check=`echo "$TEMP" | grep -E ^\-?[0-9]*\.?[0-9]+$` if [ "$check" = '' ]; then echo 0 > /home/pi/r-log exit fi check2=`echo "$HUM" | grep -E ^\-?[0-9]*\.?[0-9]+$` if [ "$check2" = '' ]; then echo 0 > /home/pi/r-log exit fi # Keine Weiterverarbeitung wenn Aussenfuehler ueber 55 Grad if [ 1 -eq "$(echo "${TEMP} > 55" | bc)" ]; then echo 0 > /home/pi/r-log exit fi # Unterschied von mehr als 8 Grad seit letztem Lauf abfragen # echo $TEMP - $TEMPALT | bc # diff=$(echo "$TEMP - $TEMPALT" | bc) # diff=${diff#-} # echo $diff # if [ -n "$TEMP" ] && [ 1 -eq "$(echo "${diff} < 8" | bc)" ] echo $TEMP > /home/pi/Temperatur echo $HUM > /home/pi/HUM # fi if [ "$BAT" != "1" ] then echo "Batterie tief" > /home/pi/ALARM else echo "Batterie ok" > /home/pi/ALARM fi echo 0 > /home/pi/r-log exit [/CODE][/SPOILER] [B]Achtung[/B]. Ist noch nicht sauber: te=`cat /home/pi/r-log |grep '"id": [B]7[/B],' -a --text -C 3|tail -n3|awk '{ print $2; }'|sed 's/,//g'` #[B]Pearl Sender ändert Id[/B] (hier 7) nach Batteriewechsel! [B]Muss[/B] dann hier [B]angepasst werden[/B]!!! So sieht der Log aus (nun mit Id 29): [CODE] { "message": { "id": 29, "temperature": 21.7, "humidity": 19.0, "battery": 1 }, "origin": "receiver", "protocol": "alecto_ws1700", "uuid": "0000-00-00-10-203518", "repeats": 1 } [/CODE]Nehme Hilfe gerne entgegen, um die [B]uuid[/B] abzufragen und nicht die [B]Id[/B]. sensor.py Steuerprogramm in /home/pi (644 Rechte): Je nachdem wo der Aussenfühler montiert ist (Schattenseite oder an der prallen Sonne) ist in dieser Zeile die Temperatur einzustellen. if float(inhalt) > [B]21[/B] and sunrise < akttime and sunset > akttime: # Temperaturen (21 Grad anpassen) Bei mir ist der Fühler auf der Ostseite und damit bereits vor Mittag im Schatten. [SPOILER] [CODE] #!/usr/bin/python3 # Copyright 2018 by spicer import sys, os, subprocess try: fobj = open("/home/pi/Temperatur") # Pfad anpassen! except: #print "Datei nicht vorhanden!" exit() for line in fobj: in1 = line.rstrip() fobj.close() try: inhalt = float(in1) except: #print "Kein numerischer Wert oder kein Empfang" exit() #print "Gespeicherte Temperatur =",inhalt stat1 = open("/home/pi/ALARM") for line2 in stat1: in11 = line2.rstrip() stat1.close() #print "Status =",in11 hum1 = open("/home/pi/HUM") for line3 in hum1: in111 = line3.rstrip() hum1.close() #print "Luftfeuchtigkeit =",in111 from time import sleep from datetime import date import astral import time loc = astral.Location(('Bern', 'Switzerland', 46.95, 7.47, 'Europe/Zurich', 510)) # for event, time in loc.sun(date.today()).items(): # print(event, 'at', time) data = loc.sun(date.today()).items() sun1 = str(data[1]) zeit = sun1.split(', ') # print current date and time akttime = int(time.strftime("%H"))*60+int(time.strftime("%M")) # print "Aktuelle Zeit in min =",akttime # print zeit[4],":",zeit[5],"Uhr" sunset = int(zeit[4])*60+int(zeit[5])-60 # Sonnenuntergang +/- Korrekturzeit in Min # print "Sonnenuntergang inkl Korrektur",sunset sun2 = str(data[3]) zeit2 = sun2.split(', ') # print zeit2[4],":",zeit2[5],"Uhr" sunrise = int(zeit2[4])*60+int(zeit2[5])+180 # Sonnenaufgang +/- Korrekturzeit in Min #print "Sonnenaufgang inkl Korrektur =",sunrise last2 = open("/home/pi/last") for line5 in last2: in22 = line5.rstrip() last2.close() if in11 == "Batterie tief": # print "in11 =",in11 # print "Batterie tief erkannt" sys.exit(0) #if (float(inhalt) > 21 and sunrise < akttime and sunset > akttime) or (float(inhalt) < 0): #Temperaturen hoch und tief (21 Grad / 0 Grad anpassen) if float(inhalt) > 21 and sunrise < akttime and sunset > akttime: # Temperaturen (21 Grad anpassen) if in22 == "Auf": os.system('sh /home/pi/ab.sh') else: if in22 == "Ab": os.system('sh /home/pi/auf.sh') last1 = open("/home/pi/last") for line4 in last1: in1111 = line4.rstrip() last1.close() #print "Letzter Befehl =",in1111 [/CODE][/SPOILER] signal.sh Script in /home/pi (774 Rechte): [SPOILER] [CODE] #!/bin/sh # Schreibt "Kein Signal" in SIGNAL, wenn immer noch gleicher Temperatur Wert seit letzter Ausführung tempakt="`cat /home/pi/Temperatur`" tempalt="`cat /home/pi/temp_alt`" echo $tempakt > /home/pi/temp_alt if [ $tempakt = $tempalt ] then echo "Kein Signal" > /home/pi/SIGNAL else echo "Signal ok" > /home/pi/SIGNAL fi exit [/CODE][/SPOILER] auf.sh Script in /home/pi (777 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 5 out gpio write 5 1 sleep 0.6 gpio write 5 0 sleep 5 gpio write 5 1 sleep 0.6 gpio write 5 0 echo "Auf" > /home/pi/last [/CODE][/SPOILER] ab.sh Script in /home/pi (777 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 6 out gpio write 6 1 sleep 0.6 gpio write 6 0 sleep 5 gpio write 6 1 sleep 0.6 gpio write 6 0 echo "Ab" > /home/pi/last [/CODE][/SPOILER] man_auf.sh Script in /home/pi (775 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 5 out gpio write 5 1 sleep 0.6 gpio write 5 0 sleep 5 gpio write 5 1 sleep 0.6 gpio write 5 0 [/CODE][/SPOILER] man_ab.sh Script in /home/pi (775 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 6 out gpio write 6 1 sleep 0.6 gpio write 6 0 sleep 5 gpio write 6 1 sleep 0.6 gpio write 6 0 [/CODE][/SPOILER] man_auf2.sh Script in /home/pi (775 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 3 out gpio write 3 1 sleep 0.6 gpio write 3 0 sleep 5 gpio write 3 1 sleep 0.6 gpio write 3 0 [/CODE][/SPOILER] man_ab2.sh Script in /home/pi (775 Rechte): [SPOILER] [CODE] #!/bin/sh gpio mode 4 out gpio write 4 1 sleep 0.6 gpio write 4 0 sleep 5 gpio write 4 1 sleep 0.6 gpio write 4 0 [/CODE][/SPOILER] Wenn alle Scripte in /home/pi sind, erst mal [B]sh auf.sh[/B] in Terminal eingeben, damit alle Dateien für sensor.py vorhanden/verfügbar sind. Über das webIF kann man von ausswärts auf die Steuerung zugreiffen. Von da werden dann die Scripte man_ab.sh bzw man_auf.sh ausgeführt. So wird das Rollo nicht beim nächsten Durchlauf von sensor.py wieder in die alte Position gerückt. Mit den Scripts man_ab2.sh bzw man_auf2.sh wird das zweite Rollo angesteuert. [/QUOTE]
Zitate einfügen…
Vorschau
Name
Authentifizierung
U=24 V, R=6 Ohm, Wieviel Strom fliesst?
Antworten
Startseite
Foren
Alles was nicht LTspice betrifft
Mikrocontroller, Raspberry und Co.
Velux Dachrollo Steuerung
Oben