From 33a00b8d1ad10cc1069c8ec152195b9975845ac7 Mon Sep 17 00:00:00 2001 From: dylangoepel <54411148+dylangoepel@users.noreply.github.com> Date: Sat, 7 Dec 2019 17:27:23 +0100 Subject: [PATCH 1/5] Add files via upload --- buttons-platzierung.png | Bin 0 -> 9000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 buttons-platzierung.png diff --git a/buttons-platzierung.png b/buttons-platzierung.png new file mode 100644 index 0000000000000000000000000000000000000000..df9404bc3b59ec3088bf5101b797dbcd265a3670 GIT binary patch literal 9000 zcma)gWmH^2w`JoV++BkQx8UwU8x0P@-QC^Y2^!qpU4j$b-7R>KFgNd;_hV+wni*Di zb<_8D)u}rB?7dG%C@D&zAQB*gKp+$uX>k?c^&EKqgog#j5}HaO5D3-TQ%%!Z#n6q+ z-qFs?!rGL~*~8wH%+%e&3Vj zd>X00Y?M{dmudPo-$~HVd*=e*&|Bc@^fq$-D5n1<=ITr1$F-w-kHqY>kw5Xd+?FrD zMRb_*e(>dTXHEyW(NFuG_-MxkyqkmR? zVpQG`xNoL{yfO8#le!XuJC=*z5^TGg)!%cuE*6p+w5yx{7X5U6BRaY@HS%~gegrr2 zh(ET3<$yV`V&MyXjJZ7|8!+_)ZRS8 zxO7_c*+fqHSktS7us$*OcW?ada(An9op&*WT$5#~wa!S-$Yqj)(dl7|76W67-R=+U z)5X1f&%2stGClqT_e2Ves}M;G9V0xLRIpI%gir>>ho|6tv%+E2`&rFPD-EKcF5_FSf&mQb0@cCV^Z z9O@a%dyvhUru)^l&1$|#OFfEU^d3WwzRjGjI2G&}!?~c_l&Wo2(IpdQU|_o{TT#`t zIpjhz-=^`+`)DE_U5dctn6@yM>$%9=EYstZv0;kqB@r8!rOr7;T|>tQu0L|z zOzI6k^Ov*sv!@4ozg%yT=&z5~x99J3XiI-YkZ=mOHC;#+`^?C-;84_(aKt-l#s96< zL#oM>O?(u0I)1Y4YwBo5SFXSaXp;Qw=uxVUZ2#^)vO(_mTFVOsykMh>m%eDt zSt@kV7bVdJYN5{WQg^2-(@P=f^CAt^(iI7cYAdLeGqQcitAhRB=_q-LynKgod&wJz zzOI=cjfT)xZU0Spfmw+goq^6GjjVyR$BTC5QOhltgW?=_*A|6?db+*hj6G*(DM$KJ ztt_4ZM?>Z*@q5}K-xkSf%NB$7cef^UA0H;%^|@# zIGe}7iRU~)S!hi3kEyeq$UrI_rn%v_|ih<%B^lq118EIbxU_3TYJy<{3%+)&yf)!VDgm^LDKA{802V9qDJ1z zW$&qG$1?{jlFA@>qbv?LzLq#Sq0_`U9f26ur{pRjR8jt){0up5ymE<}48a6r<9dWD zdc?IEgG9|6W#_sba!8DURDu9K00HS4!qQL zL5Ho=Q)NZimoP{@^mO{sKUMxegwa7b%ggt@-E=D5$($<%^@ena2fKGTP$=TU7vpBU zWs+uEUaS~U2om5OQN)(EM?+b%@=RFir=~}eKXc@F(|+TP-?h24(^3_3lz0!qcnX-! zP6_8TCSe3J=7=`dnKv5g4dN$`T4xA0DbTp(_vR!AMMg|>l&?X6=2kV_RMJX|M;VjK&y zNtYd5_ip<+ILDz@qGDT+22i4hXgMilg%*0cnOlAQE{4sPCxNpqK)@Rf?m7Iy%88Tj z>u`1U+Z5Xh?qcbH1DweSUxb5qLi_H($UnW!($;cqBD^EVLpocebjy(K_6~cjPrNY= zW$U0{7KK{+d+od0ZY6yoM-%&iAs)6XF_ub@xLBYq(h%Aq2XC(w3S1X->OdcC(7@?z z(Bd<1`X#!;FZ-?CKhZSGUQtKv**)N_kY8`Cxt}zDH5W2wuRjZXzZ?laM5I;sMDrdp zbv|FxMzXDWdnOsFAvz`!$G+X;YVKZ$NYqdg~Xj&w%<5L)3rtV zoI|saq&mqE8^2;fli(e zqzN__;rqA-T3fU<{I!LjgqJa2c1fmA>H;0S1F5#XeV@>4PSq7obLmjH`n|3iCM9Bi zr@BH|g5h#^SX_*Ty#wdg@J6kt2|8H}kR{#@(00dF`3-k`- zuS=~5hKF<7W@o)RCT@J8CMesjD?91ST%}l~zt~iLT0>rp{o==E#0d7qaS^lF4$<}D zvX3xq+p*y+PP--8;%>eQNvQ1I|n^LY((B_qwwR~_sp)7MtwIXO^b;0s+N_( ztNehFH@57Ax!)I5I5kQfgBk=e09|tI|MkQymJw2)s#5k5Q8+llHlNksAK|JNtp(92 zw=;pY>`o0`mMBLTsxnqS*Fe&eX}7GBrWr(chh>Nlw^P7DPEGHgP*0$Wes14OrmD8W zB?o83V?rYmRfy#;!R9O1Y-Vi;$uuu7W4$Dhb4ie{BKS8QM6{B+3fGnq{Z|;TJ6{r) zVNFr#`!Eh?@KcwLG|!b zAK{DcnwRY1ZKJo*GjsT+x^7)41sq-5<)1w~nJ_H(^+LJ$!4>dX~q?~*-!E0S?lnE~U zYU{1z8!m^ohBcSmTF)EE;ew4@W;L_9@U}`8kmQThOzIh^8_7H*ctHt@402 z&L%kUi}yKSM;KnqyJzpbEh&ol<)fip;SHazRjEpnw{ByVF<$A1M*|rCQXA$^`ejTd z!E1xBO{N`x3bXKUX5=i?u{>C4uLiPY$c$>o72^o=@g}u|>Q#_ncMLz0jA$w;G+!t% zNVQLqu)Y)&)b*H8R9@?Tlzgfq_WDe_bYdfw91e-ubz^$bZVbH+r+5c~?@Kg(GxZ}p zF8NkW`Blv2Q19~UUeEI5_h01>-`@~di?TjmYE`Fp*sO+gi;J&H1?AXWFwY`ybka(q z&f-A)G+Qof8j7f!3gX0O%b9U+j3^_+`pr@==1yGigg-_8#G;##y88$Jy-$t*a%5YH zp4ev5n|#H>lOF~C!}f5=$=^7T@Xqh0nDf7#`L{=fHZ6F>F#VOQ%yXu?;4|2Z_kHK+ z>8up7XAP%!I5t0jw!Q)!T@VN&*g{N9Nk&ZUzx!{X>(2H`5Re`aCK}RLEta51bVYL* zRmx!u$8nga$I2Hi#nyIVX}d$p#7o4&mFjES-X1Yp=o`|~fYT5`dj&Z-xTrWMV7#Yc zX%D*FugAGPlDJ)g@|8_97dStdx7(Ph$grmAql?vqlLh+*C&Xu%PRObdbnl&!Ky+^o zd8EF#2}#vx*W#g}MSM#)Tpc_cRLyGc^T^}*`LkZuTan*v4km)Mt=j!{xNX0_m%Y%8 zi(QI{8b^+}(wT)Ji@+g}r^J%)0EstFeM%?0$ug$ta!enO?s!~I_Xlq@7EUcZ0tME* zk_a}}ZsTc@=ID&?+=$TrGqoe#ez|{wF$v)eS%>en(9=ehdUp18B8ANNmmvp1N&gw< znaa;ok9B(-U;MY(?TcI92vH24lkPlqqKF}U)_R9rbW|Vw$B7ND$Kn-MQUWOp#nn%Fn7_I*bwP#-gjg>Y4#Y2!i zmTHCSs=MRMCS}%FWmQ#G%TmGbt(P{Mml7HGc|P>=b>lNi1qdDO@XcU zqhdD8>CM{e>S=%Ztoio^%ayB(u>kDnqIB}6TzmGr_}&>~6IJ-L3R_B~cxBZxwbJTp zuI00}0BclVf>m|9~w6O)q{#Yeh$nz38=B$TR;c4Dxp$o-{bbq;MK_?`Ps;{r-(pd(=b>8WRArkb~ zyc$b696(*Os)`8U)U4pNS>-4yDftJ;+J=UK-JvLl{ZVx9*WV-I(b3}S>ez>qSz#!I zT)nfi=*7jwGv*x2^`=OXQBe-SbfX71-!2S$fU!PdH>^7rs zZXC0DonW)L?LuXXMLj+F4ySUW0B}c>3UyD`Pi6C}x^+}mR!+KDURf13i1lrX zlFQ#$)AKiSworB5mM!0b z)h4U_1xr?=LHN$!!-TCaXE?D$yaj8&b*^5kuBu`1!}D6xom%LT=GAwSHjJUJvIxu>-xXq+VWL zK%oG5GG1%8(d_bUy5w2k8;KhL4jlmj!QRcyuN{42;(8~Hl!BUC0=IVY5e61^7l{>LBmsG)e-;#S``zI{jDX`Fs$hb1Q$7n|83@AtPy zi0zEu`nQ@5S{4>`on2ind-@=Lbe>Ri#+b0p01v?p&y7NySyIzr=}F+&nngE|4k(oN76Su3=0N> z*U^`$X~rA=Y+rjypfQY2x(_$r>Ut)#=;VhJ&5Dj zEHLwEEQvtmSkgyI4i2oa55z_x_Q-Og)EE&g9ycbs-QM`xRX964JC#_?wN(48=Tf9T z&`sJgz*L28#{^JvGz@HP7=3+x@Q8^0S$5rHh=ytD!Sq1RJv=-{CnrNx$_7i73pMGG z84*&#!r%acB1;-Gu(hpzDI=?slZQmHc6H@i-`LnWJPft?Rq{KN&)QI?l=*9WFo5O# z!$Z+3u<`zA0*%+b2y80!^u`9UTpDwTJWWtY2uxs5kcT@(#~_uOt*tFkP{Ar?;y@h( z<+DO<25gLj00nsbtEPjW*s!Sq)a19fw*vs+S)2~#0bVGqt4sKIU@k33ISO?E|Dd3t zw7Ol9n6Tk9L;`m=G&M~V5(j!sR5 zN*4B=)%3&yL`+Ub21=q)*iG5Q*F3cZ2n`+q!Q=9P#_fDLKqiR>I4KBV149oNYjutX zvVfql)_QIiVY-~U-%Dsfw0i$xgGI*khk%0ZotwjWczAev-16f+8N^8q9^Kp|8Hpth z0@#lKKv&EYjM3}ztaAj?PJoMx3x*u2 z6-Q=7XRQ?7yd6dW$*xr-`_Xk_qYiTpvK^nlam9uO_V-` ztyX;4;Cj1{mY)8U^=tq$LNyKt3oDq@YLSeepGZ$nZ(7&h>h5?JnK9vCb;5vZy&f;Q zNT(+zObo`HN1`Wl-P*>g&8!1V49euFsi=BaR|ymp6rKRmtFztU10zDoiJF?3g#rRU zzqDjL5Q?&)mkZEX`^JdSpM6Z&RB75|S<|RB0I8;?rnF2<5=u&FI+_K|!%Y`oQ#Rtk z)w(N(Z*Zt2gN0IY(KT=bUnAvb&sQ28F4uWsQ%CXCG&GRRXtKT<6}Z}+l4F3iu9 zF)$zj$pS)-2WYm$G;MAI`NM|~>6}*okyQ%vl_o2VIBn8c!-(a6f-oTUJG}u=(sFWQ z&dwaLCSUsLH*;$gydvsPu4IYyI&g&4h=zo%FD}vleYDKKKa4pd>nuI5exeo;^~4eN$0YO~}oS{rOWCU>GAnanc2SJfjY(b=v}M)|&GxE0KZJhet%r`Y0W% z#sWO){kY-A<90~|I3Tl$bch7$L6dF+p548@Uxia#hHS>m?d^OfW@i0kV+d1IQy@@` zB$S(*Tj%|v&Oh-4MB{prd+WQ~)h59CfqFGr+1b$(6Y`9Dop@{+$U{RznmxV(04t+o zU=--szC2uLcDl2AK3@LAEN~v=)YLElwR)x)A5G!I7?gk2YJ!}KQ%(NM# ztzB<|;Cj9cp|7tG5(d%;ga%MwUoWDvhzJD00gxbbb94W~LP`t_4Cj&Nhtmb5tIpe4 zTMxh?yxuSA^LRZ}>IJBmsYxp+4B_f~2lVy|gM@p0-|Ua3h)qmP8sUHShajP&p@Ftf zYQ+8tHV{AHH@a$x=u;3+PEP)vR@awXtN6dRo1F+LvO_qFc*C_WE-pN-=XgLgbuMS% zuM8c2@4neQ4v?rM{4>Paf45}H9@e|OaDgcRmov=|$j;(!vo7<}8&itx&c#JcVj{+d z&qYchVBaj82z-5gnc80fA7_N95HAyLm<5G~jvf#ljVvx9K~6~tCG>WO2`t5GGK#jm zx@t6?D=<1XHtY3@2oid|hU)C>4dHJ6wv|6m}yWSaq03{?O(9+R~sHtHwGBJ^-jkA86BGPSlmbrQi zkBkJg3hJNG0+sPk<2N@qr{&@4un?_R8xal;4z6!*M2(CJE|c`~9DzQ?db1P%_GmgR zCI$r(3X0YD)xD&iIM3%nD^B;5@-II)wRfwGe$JlF;N;4$ z9XJf&%9)&BWgffJ$&ZDNjU3R>(7hugaKJ*Nqoe+!`R-+&JALos=NOm?f`7f3j~+N$ z29X(+aqH{q`hYsCwOlC2Wd{6P6!1@d2=ytmN}1Z#E$2rXntD0;`5XcQg4MSj$qL@> zZ;DtWy%;X!NJvOs%q&&lirJZ&UYyj@&!*qLQ3?t53>h}q%vv_#aarR*$<609YBK?q zACN#P)x1XSyUCk`uUTL_|J)mK*eht4Jr4CTJR1JLW$FJcP6(uN)HG}?Qc_aZ8|~Q5 z&CTvl*W`dnAMV9KSQw1JbUDfgS1i;xJJ`8KMDT?EuYDxYQ~tl3&Hvwg{4>$g=UKi+WPk-~A zh=1*$o4YB_{Q<7f@<3*Efr*g}N=!`rAT&KR1fx=xj6K?`qJaoFa#Fw7+596wro^Z) z03#atUl(p3AH#Zj{K9epkOm}u{8E2|r+F%i5wTx9Qg!E@O-=KkM*4qmr}=PEv&lsE z`f!Pntu?@Sei??kpF5?g*hbIjQ)Gc9dhB`2)DR=Y=c?{s-X6CKfgX6n6cGst9S_gE zwKsCeNVn4+9bhC_{T;vr%I66ZJGN!#mB6n4L2IV-U}6_Lq_gd9e_&U2a)|b4i%iyA-NeSj(T45F-vN#S_$!^y#WJmP zYq`!?|Ktxw1T=8S^HwW^gW|3c`tzM`T-@B;K$Xyp3j;P95zwU|XX43;2|ge5U$eH& z`Rxax^g(TH9!IcXiiGbaC9vP7b2*rTe zP=L)DS}h=TnmRfSuHnHr%SS$8SU5PttK=AX39`kOE&2mmMidZDwa8Qnzqc7#|CzJU bYd?q-hPE9uweP@hI3O7bMe%A;gTVg*3S1X# literal 0 HcmV?d00001 From 47e195fbd1dce418e3e99969f7ab547eb063be9f Mon Sep 17 00:00:00 2001 From: dylangoepel <54411148+dylangoepel@users.noreply.github.com> Date: Sat, 7 Dec 2019 18:43:25 +0100 Subject: [PATCH 2/5] Create README.md --- README.md | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..7abb158 --- /dev/null +++ b/README.md @@ -0,0 +1,131 @@ +# ButtonCtl +ButtonCTL im oberen Stockwerk des Chaospott zur vereinfachenden Steuerung der via SSH kontrollierbaren Türen mithilfe +von physischen Buttons genutzt. Er ersetzt ein gleichnamiges älteres System. +In seiner momentanen Version ist es nicht mit der zweiten Button-Installation neben der Kellertür +kompatibel, und kann dort somit nicht eingesetzt werden. + +## Installation +### Software +Zur Installation der im nächsten Abschnitt besprochenen Abhängigkeiten öffnen sie zunächst eine Shell. +An diesem Punkt ist es ratsam das ihr System mit `sudo apt update && sudo apt upgrade` +zu aktualieren. Nun nutzen sie `sudo apt install python3-rpi-gpio` zur Installation der Python-RPi Library und +`sudo pip3 install adafruit-circuitpython-neopixel` zur Installation der ebenfalls notwendigen Neopixel-Library. +### Hardware +Zum Ausführen von ButtonCtl ist die korrekte Verkabelung aller Komponenten notwendig. Um +die Verkabelung in der aktuellen Installation des Systems im Club zu verändern, öffnen sie +den unteren, in der rechts neben der Tür im Bällebad befindlichen Wand verbauten Kasten. +Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben lösen, und die Abdeckung abnehmen. + +
+ +Das Programm kommuniziert mit dem LED-Strip über die Pins 7 (BCM 4) und 12 (BCM 18). Die Buttons sind den +Pins 23 (Aerie), 24 (Center), 22 (Keller) zugeordnet. + +## Abhängigkeiten +### Libraries +Zur Implementierung einiger zentraler Features werden folgende nicht-standard Libraries genutzt: +- RPi (raspbian: python3-rpi.gpio) +- neopixel (pypi: adafruit-circuitpython-neopixel) + +Da die Buttons nicht etwa über einzelne LEDs, sondern über einen einzelnen LED-Strip verläuft, angesteuert +werden müssen, wird die ```neopixel``` Library dazu genutzt, den aus 36 (3 * 12) Leds bestehenden Strip anzsuteuern +und auf Basis dessen zu einem Button-orientierten Interfcae zu abstrahieren. +Die LEDs sind folgendermaßen über die Buttons verteilt: +``` +(25-36) (13-24) (1-12) + AERIE KELLER +``` + +Um das dazu - und zur Button-Press Erkennung - benötigte GPIO-Board zu kontrollieren nutzt ButtonCtl die ```RPi.gpio``` +Library. + +### API +ButtonCtl greift auf die vom Chaospott bereitgestellte [SpaceAPI](http://spaceapi.net/)-Instanz, die - wie es die +Spezifikation vorsieht - neben den benötigten Sensor-Daten ebenfalls allgemeine Information +sowie Metadaten über den Hackerspace überträgt. +Die Statusinformationen befinden sich im `sensor` Bereich der JSON-Daten: +```json +{ + "door_locked": [ + { + "location": "aerie", + "value": false + }, + { + "location": "cellar", + "value": false + } + ] +} +``` + +### Türsteuerung +Zum Öffnen und Schließen der beiden Türen werden die jeweiligen SSH-Endpunkte genutzt: +- Keller + - `ssh unlock@10.42.1.20` + - `ssh lock@10.42.1.20` +- Aerie: open / close @ 10.42.1.28 + - `ssh open@10.42.1.28` + - `ssh close@10.42.1.28` + +## Benutzung +Wie durch wiederholte Ausfälle indiziert, sind die durch die API bereitgestellten Daten nicht immer zuverlässig, +und sollen somit Grund keinen Einfluss auf die Funktionalität der Buttons haben. In der Vergangenheit +erfolgte das Öffnen oder Schließen einer Tür durch einen einfachen Click auf den mit dieser assoziierten Knopf. +Unter der Voraussetzung, dass der gespeicherte Türstatus korrekt ist, wurde dieser dann geändert, das heißt die +Tür wurde geöffnet oder geschlossen. + +Um jenes Vorgehen trotz der Unwissenheit über den aktuellen Zustand der Türen zu ermöglichen, leuchtet in der neuen +Version, nach dem Drücken eines Türknopfes (1. / 3. Knopf für Aerie / Keller), ein Button grün und ein anderer rot auf. +Nach erneutem Drücken auf den grünen (roten) Button wird die Tür daraufhin geöffnet (geschlossen). + +Im Normalzustand leuchtet der mittlere Button nicht und die Tür-Buttons tragen die mit ihrem API-Status +assoziierten Farben. + +### Beispiele + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Linker Button + +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Grün](https://placehold.it/15/00ff00/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Mittlerer Button + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Kurze Wartezeit + +![Grün](https://placehold.it/15/00ff00/000000?text=+) +![Schwarz](https://placehold.it/15/000000j/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) + +---------- + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Linker Button + +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Grün](https://placehold.it/15/00ff00/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Linker Button + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) + +----------- + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) +→ Mittlerer Button + +![Rot](https://placehold.it/15/ff0000/000000?text=+) +![Schwarz](https://placehold.it/15/000000/000000?text=+) +![Rot](https://placehold.it/15/ff0000/000000?text=+) From d1a8570c325de0ba18fd8d5f6be3fadbc8ed334b Mon Sep 17 00:00:00 2001 From: dylangoepel <54411148+dylangoepel@users.noreply.github.com> Date: Sat, 7 Dec 2019 18:56:33 +0100 Subject: [PATCH 3/5] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 7abb158..252c222 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,11 @@ Zur Installation der im nächsten Abschnitt besprochenen Abhängigkeiten öffnen An diesem Punkt ist es ratsam das ihr System mit `sudo apt update && sudo apt upgrade` zu aktualieren. Nun nutzen sie `sudo apt install python3-rpi-gpio` zur Installation der Python-RPi Library und `sudo pip3 install adafruit-circuitpython-neopixel` zur Installation der ebenfalls notwendigen Neopixel-Library. + +Des Weiteren wird ein SSH-Client mit einem auf dem Türsystem registrierten Schlüssel benötigt. Den SSH-Client +installieren sie auf einem Raspbian System mit `sudo apt install openssh`. Für weiterer Informationen über den +benötigten Schlüssel sehen sie [hier](https://dokuwiki.chaospott.de/infrastruktur:zugang:start). + ### Hardware Zum Ausführen von ButtonCtl ist die korrekte Verkabelung aller Komponenten notwendig. Um die Verkabelung in der aktuellen Installation des Systems im Club zu verändern, öffnen sie @@ -21,6 +26,16 @@ Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben l Das Programm kommuniziert mit dem LED-Strip über die Pins 7 (BCM 4) und 12 (BCM 18). Die Buttons sind den Pins 23 (Aerie), 24 (Center), 22 (Keller) zugeordnet. +### Ausführen +Zum Ausführen klonen sie zuerst dieses Git-Repository. +```bash +git clone https://github.com/dylangoepel/buttonctl.git +cd buttonctl +``` +Nun können sie entweder `button.py` direkt mit `python3 button.py` ausführen oder einen Systemd-Service erstellen, der +daraufhin automatisch beim Bootvorgang gestartet werden kann. Zum Erstellen des Services nutzen sie `bash service.sh`, +und zur Aktivierung des automatischen Starts `systemctl enable buttond`. + ## Abhängigkeiten ### Libraries Zur Implementierung einiger zentraler Features werden folgende nicht-standard Libraries genutzt: From f826e7d08e7db64638837007329a75bc95a2eaa3 Mon Sep 17 00:00:00 2001 From: dylangoepel <54411148+dylangoepel@users.noreply.github.com> Date: Sat, 7 Dec 2019 19:18:50 +0100 Subject: [PATCH 4/5] Update README.md --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 252c222..4e73fdb 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ zu aktualieren. Nun nutzen sie `sudo apt install python3-rpi-gpio` zur Installat `sudo pip3 install adafruit-circuitpython-neopixel` zur Installation der ebenfalls notwendigen Neopixel-Library. Des Weiteren wird ein SSH-Client mit einem auf dem Türsystem registrierten Schlüssel benötigt. Den SSH-Client -installieren sie auf einem Raspbian System mit `sudo apt install openssh`. Für weiterer Informationen über den +installieren sie auf einem Raspbian System mit `sudo apt install openssh`. Für weitere Informationen über den benötigten Schlüssel sehen sie [hier](https://dokuwiki.chaospott.de/infrastruktur:zugang:start). ### Hardware -Zum Ausführen von ButtonCtl ist die korrekte Verkabelung aller Komponenten notwendig. Um +Zum Ausführen von ButtonCtl ist der korrekte Anschluss aller Komponenten notwendig. Um die Verkabelung in der aktuellen Installation des Systems im Club zu verändern, öffnen sie den unteren, in der rechts neben der Tür im Bällebad befindlichen Wand verbauten Kasten. Um den Raspberry Pi zu erreichen, müssen sie nun die dort verbauten Schrauben lösen, und die Abdeckung abnehmen. @@ -34,7 +34,7 @@ cd buttonctl ``` Nun können sie entweder `button.py` direkt mit `python3 button.py` ausführen oder einen Systemd-Service erstellen, der daraufhin automatisch beim Bootvorgang gestartet werden kann. Zum Erstellen des Services nutzen sie `bash service.sh`, -und zur Aktivierung des automatischen Starts `systemctl enable buttond`. +und zur Aktivierung des automatischen Starts daraufhin `systemctl enable buttond`. ## Abhängigkeiten ### Libraries @@ -42,22 +42,22 @@ Zur Implementierung einiger zentraler Features werden folgende nicht-standard Li - RPi (raspbian: python3-rpi.gpio) - neopixel (pypi: adafruit-circuitpython-neopixel) -Da die Buttons nicht etwa über einzelne LEDs, sondern über einen einzelnen LED-Strip verläuft, angesteuert -werden müssen, wird die ```neopixel``` Library dazu genutzt, den aus 36 (3 * 12) Leds bestehenden Strip anzsuteuern -und auf Basis dessen zu einem Button-orientierten Interfcae zu abstrahieren. +Da die Buttons nicht etwa über einzelne LEDs, sondern über einen einzelnen LED-Strip angesteuert +werden müssen, wird die ```neopixel``` Library dazu genutzt, den aus 36 (3 * 12) Leds bestehenden Strip zu bedienen +und auf Basis dessen zu einem Button-orientierten Interface zu abstrahieren. Die LEDs sind folgendermaßen über die Buttons verteilt: ``` (25-36) (13-24) (1-12) AERIE KELLER ``` -Um das dazu - und zur Button-Press Erkennung - benötigte GPIO-Board zu kontrollieren nutzt ButtonCtl die ```RPi.gpio``` +Um das dazu - und zur Button-Press Erkennung - benötigte GPIO-Board zu kontrollieren, nutzt ButtonCtl die ```RPi.gpio``` Library. ### API ButtonCtl greift auf die vom Chaospott bereitgestellte [SpaceAPI](http://spaceapi.net/)-Instanz, die - wie es die Spezifikation vorsieht - neben den benötigten Sensor-Daten ebenfalls allgemeine Information -sowie Metadaten über den Hackerspace überträgt. +sowie Metadaten über den Hackerspace überträgt, zurück. Die Statusinformationen befinden sich im `sensor` Bereich der JSON-Daten: ```json { @@ -85,13 +85,13 @@ Zum Öffnen und Schließen der beiden Türen werden die jeweiligen SSH-Endpunkte ## Benutzung Wie durch wiederholte Ausfälle indiziert, sind die durch die API bereitgestellten Daten nicht immer zuverlässig, -und sollen somit Grund keinen Einfluss auf die Funktionalität der Buttons haben. In der Vergangenheit -erfolgte das Öffnen oder Schließen einer Tür durch einen einfachen Click auf den mit dieser assoziierten Knopf. +und sollen somit keinen Einfluss auf die Funktionalität der Buttons haben. In der Vergangenheit +erfolgte das Öffnen oder Schließen einer Tür durch einfaches Drücken auf den mit dieser assoziierten Knopf. Unter der Voraussetzung, dass der gespeicherte Türstatus korrekt ist, wurde dieser dann geändert, das heißt die Tür wurde geöffnet oder geschlossen. Um jenes Vorgehen trotz der Unwissenheit über den aktuellen Zustand der Türen zu ermöglichen, leuchtet in der neuen -Version, nach dem Drücken eines Türknopfes (1. / 3. Knopf für Aerie / Keller), ein Button grün und ein anderer rot auf. +Version nach dem Drücken eines Türknopfes (1. / 3. Knopf für Aerie / Keller) ein Button grün und ein anderer rot auf. Nach erneutem Drücken auf den grünen (roten) Button wird die Tür daraufhin geöffnet (geschlossen). Im Normalzustand leuchtet der mittlere Button nicht und die Tür-Buttons tragen die mit ihrem API-Status From 6d1ab7dfffeecce8ef79efd55cbb02e8cdb56de9 Mon Sep 17 00:00:00 2001 From: dylangoepel <54411148+dylangoepel@users.noreply.github.com> Date: Sat, 7 Dec 2019 19:20:40 +0100 Subject: [PATCH 5/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4e73fdb..3f1112a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ButtonCtl -ButtonCTL im oberen Stockwerk des Chaospott zur vereinfachenden Steuerung der via SSH kontrollierbaren Türen mithilfe +ButtonCTL wird im oberen Stockwerk des Chaospott zur vereinfachenden Steuerung der via SSH kontrollierbaren Türen mithilfe von physischen Buttons genutzt. Er ersetzt ein gleichnamiges älteres System. -In seiner momentanen Version ist es nicht mit der zweiten Button-Installation neben der Kellertür +In seiner momentanen Version ist er nicht mit der zweiten Button-Installation neben der Kellertür kompatibel, und kann dort somit nicht eingesetzt werden. ## Installation