Projekt:Konferenzraumuhr: Unterschied zwischen den Versionen

Bild und mehr Text!
(Weitergemacht)
(Bild und mehr Text!)
Zeile 4: Zeile 4:
|beschreibung = Zeigt die Zeit im Konferenzraum an
|beschreibung = Zeigt die Zeit im Konferenzraum an
|autor          = [[Benutzer:Dg3hda|Hendrik]]
|autor          = [[Benutzer:Dg3hda|Hendrik]]
|image          =  
|image          = Naked konfiuhr.jpg
|imagesize      =240
|imagesize      =240
}}  
}}  


'''Gesucht: Netter, freundlicher Frontplattengestalter! Bitte bei Ansprechpartnern melden!'''


= Übersicht =
= Übersicht =
Zeile 14: Zeile 15:
== Uhrzeitanzeige ==
== Uhrzeitanzeige ==
Die Uhrzeit wird durch einen LED-Strip dargestellt. Der hat einen Gesamtumfang von 16 LEDs, wovon die hintersten 14 für die BCD-Darstellung der aktuellen Uhrzeit genutzt werden.  
Die Uhrzeit wird durch einen LED-Strip dargestellt. Der hat einen Gesamtumfang von 16 LEDs, wovon die hintersten 14 für die BCD-Darstellung der aktuellen Uhrzeit genutzt werden.  
Gesetzte Bits leuchten weiß, nicht gesetzte grün.
Gesetzte Bits leuchten weiß, nicht gesetzte grün. Das Vorschaubild zeigt also '''21:21'''.
Die beiden ersten Bit, die bei der Darstellung der Stunden nicht benötigt werden, dienen anderen Zwecken - so sparsam sind wir. =) Die Uhrzeit wird aus dem Internet per NTP bezogen, wenn wir keinen kriegen (DSL-Ausfall oder so) zeigt es halt nix.  
Die beiden ersten Bit, die bei der Darstellung der Stunden nicht benötigt werden, dienen anderen Zwecken - so sparsam sind wir. =) Die Uhrzeit wird aus dem Internet per NTP bezogen, wenn wir keinen kriegen (DSL-Ausfall oder so) zeigt es halt nix.  
   
   
=== Ablesehilfe ===
=== Ablesehilfe ===
Die Anzeige ist in 4 Nibble aufgeteilt, mit dem höchsten Wert jeweils rechts. Die Lesefolge ist also HH:MM.
Pro Ziffer sind bei den weißen LEDs die im Feld "Wert" stehenden Zahlen zu addieren um den Wert der Ziffer zu erhalten.  
Pro Ziffer sind bei den weißen LEDs die im Feld "Wert" stehenden Zahlen zu addieren um den Wert der Ziffer zu erhalten.  


Zeile 44: Zeile 44:
= Ansprechpartner =
= Ansprechpartner =
* [[Benutzer:Dg3hda|Hendrik]]
* [[Benutzer:Dg3hda|Hendrik]]
* Paul
* [[Benutzer:VinRisen360|Paul]]


= Beschreibung =
= Beschreibung =
Zeile 68: Zeile 68:


== Nyu push ==
== Nyu push ==
 
Der Telegram-Bot "Nyu" erhält die Temperaturmessung per HTTP GET Request in der Form ''http://serveradresse/token?temperatur=messwert''. [[Benutzer:VinRisen360|Paul]] kümmert sich um die Umsetzung der Ausgabe über die Telegram-API.
Der Telegram-Bot erhält die Temperaturmessung per HTTP GET Request in der Form ''http://serveradresse/token?temperatur=messwert''


== TürAmp Interface ==
== TürAmp Interface ==
Das blinken mit akustischer Ausgabe eines Morse-D, welches zur Signalisierung der Türklingel dienen soll, wird durch einen HTTP GET Request der Form "http://uhradresse/msg?kommando=wert" ausgeführt, der vom Türsensor-Controller an die Uhr gesendet wird.
Das blinken mit akustischer Ausgabe eines Morse-D, welches zur Signalisierung der Türklingel dienen soll, wird durch einen HTTP GET Request der Form "http://uhradresse/msg?kommando=wert" ausgeführt, der vom Türsensor-Controller an die Uhr gesendet wird.
Im Gegenzug sendet die Uhr in regelmäßigen einen anderen Request zum Türcontroller, den dieser mit der richtigen Meldung beantworten muss.
Im Gegenzug sendet die Uhr in regelmäßigen einen anderen Request zum Türcontroller, den dieser mit der richtigen Meldung beantworten muss.
Bleibt diese Meldung aus wird von einem Kommunikationsverlust oder Absturz des Türcontroller ausgegangen und die erste LED im Strip schaltet auf rot. Stimmt die Antwort, ist die aus.
Bleibt diese Meldung aus wird von einem Kommunikationsverlust oder Absturz des Türcontroller ausgegangen und die erste LED im Strip schaltet auf rot. Stimmt die Antwort, ist die aus, zu sehen im Projektvorstellungs-Bild.
 


== Gehäuse ==
== Gehäuse ==
Besteht aus einer Grundplatte auf die ein paar Holzleisten geleimt sind. Es fehlt derzeit noch eine Frontplatte, die an den Positionen der LEDs durchscheinend oder durchsichtig sein muss.
Besteht aus einer Grundplatte auf die ein paar Holzleisten geleimt sind. Es fehlt derzeit noch eine Frontplatte, die an den Positionen der LEDs durchscheinend oder durchsichtig sein muss. Vorgesehen ist ein mit doppelseitigem Klebeband befestigtes einlaminiertes Papier.
 


= Finanzierung =
= Finanzierung =
 
Zuschüsse an [[Benutzer: Dg3hda]] oder Befürwortung bei PVT (Zuschüsse werden dann natürlich einkalkuliert) willkommen!


= Benötigte Teile =
= Benötigte Teile =
Zeile 94: Zeile 91:
= Projekttagebuch =
= Projekttagebuch =


 
= Quellcode =
= Quellcode =  
Würde öffnen.
 
msgbranch [message]
neo.stripcolor(0,13,0,0,5)
delay 7000
neo.stripcolor(0,13,0,0,0)
time.setup(2,1,"pool.ntp.org")
mytime=""
timercb 3000, [drawClock]
door=0
drawcount=59
wait
 
[message]
timercb 0, [drawClock]
pwmfreq 800
RetMsg = "0"
msgcmd=msgget("klingelkey")
if msgcmd="geheimnis" then
  for n=1 to 3
  neo.stripcolor(0,15,64,64,64) 
  gosub [morsed]
  neo.stripcolor(0,15,0,0,0)
  zeit=millis()
  do
  loop until millis()>(zeit+250)
  next
  door=30
  RetMsg="1"
  endif
timercb 3000, [drawClock]
MsgReturn RetMsg
wait
 
[drawClock]
timercb 0, [drawClock]
drawcount=drawcount+1
gosub [aquireandpost]
gosub [dotime]
gosub [drawm2]
gosub [drawm1]
gosub [drawh2]
gosub [drawh1]
gosub [drawflags]
if drawcount > 10 then
drawcount=0
gosub [minuteservice]
end if
timercb 1000, [drawClock]
wait
 
[drawh1]
my=myh1
if my="0" then
neo(12,0,5,0)
neo(13,0,5,0)
endif
if my="1" then
neo(12,20,20,20)
neo(13,0,5,0)
endif
if my="2" then
neo(12,0,5,0)
neo(13,20,20,20)
endif
return
 
[drawh2]
my=myh2
if my="0" then
neo(8,0,5,0)
neo(9,0,5,0)
neo(10,0,5,0)
neo(11,0,5,0)
endif
if my="1" then
neo(8,20,20,20)
neo(9,0,5,0)
neo(10,0,5,0)
neo(11,0,5,0)
endif
if my="2" then
neo(8,0,5,0)
neo(9,20,20,20)
neo(10,0,5,0)
neo(11,0,5,0)
endif
if my="3" then
neo(8,20,20,20)
neo(9,20,20,20)
neo(10,0,5,0)
neo(11,0,5,0)
endif
if my="4" then
neo(8,0,5,0)
neo(9,0,5,0)
neo(10,20,20,20)
neo(11,0,5,0)
endif
if my="5" then
neo(8,20,20,20)
neo(9,0,5,0)
neo(10,20,20,20)
neo(11,0,5,0)
endif
if my="6" then
neo(8,0,5,0)
neo(9,20,20,20)
neo(10,20,20,20)
neo(11,0,5,0)
endif
if my="7" then
neo(8,20,20,20)
neo(9,20,20,20)
neo(10,20,20,20)
neo(11,0,5,0)
endif
if my="8" then
neo(8,0,5,0)
neo(9,0,5,0)
neo(10,0,5,0)
neo(11,20,20,20)
endif
if my="9" then
neo(8,20,20,20)
neo(9,0,5,0)
neo(10,0,5,0)
neo(11,20,20,20)
endif
return
 
 
 
[drawm1]
my=mym1
if my="0" then
neo(4,0,5,0)
neo(5,0,5,0)
neo(6,0,5,0)
neo(7,0,5,0)
endif
if my="1" then
neo(4,20,20,20)
neo(5,0,5,0)
neo(6,0,5,0)
neo(7,0,5,0)
endif
if my="2" then
neo(4,0,5,0)
neo(5,20,20,20)
neo(6,0,5,0)
neo(7,0,5,0)
endif
if my="3" then
neo(4,20,20,20)
neo(5,20,20,20)
neo(6,0,5,0)
neo(7,0,5,0)
endif
if my="4" then
neo(4,0,5,0)
neo(5,0,5,0)
neo(6,20,20,20)
neo(7,0,5,0)
endif
if my="5" then
neo(4,20,20,20)
neo(5,0,5,0)
neo(6,20,20,20)
neo(7,0,5,0)
endif
if my="6" then
neo(4,0,5,0)
neo(5,20,20,20)
neo(6,20,20,20)
neo(7,0,5,0)
endif
if my="7" then
neo(4,20,20,20)
neo(5,20,20,20)
neo(6,20,20,20)
neo(7,0,5,0)
endif
if my="8" then
neo(4,0,5,0)
neo(5,0,5,0)
neo(6,0,5,0)
neo(7,20,20,20)
endif
if my="9" then
neo(4,20,20,20)
neo(5,0,5,0)
neo(6,0,5,0)
neo(7,20,20,20)
endif
return
 
 
[drawm2]
my=mym2
if my="0" then
neo(0,0,5,0)
neo(1,0,5,0)
neo(2,0,5,0)
neo(3,0,5,0)
endif
if my="1" then
neo(0,20,20,20)
neo(1,0,5,0)
neo(2,0,5,0)
neo(3,0,5,0)
endif
if my="2" then
neo(0,0,5,0)
neo(1,20,20,20)
neo(2,0,5,0)
neo(3,0,5,0)
endif
if my="3" then
neo(0,20,20,20)
neo(1,20,20,20)
neo(2,0,5,0)
neo(3,0,5,0)
endif
if my="4" then
neo(0,0,5,0)
neo(1,0,5,0)
neo(2,20,20,20)
neo(3,0,5,0)
endif
if my="5" then
neo(0,20,20,20)
neo(1,0,5,0)
neo(2,20,20,20)
neo(3,0,5,0)
endif
if my="6" then
neo(0,0,5,0)
neo(1,20,20,20)
neo(2,20,20,20)
neo(3,0,5,0)
endif
if my="7" then
neo(0,20,20,20)
neo(1,20,20,20)
neo(2,20,20,20)
neo(3,0,5,0)
endif
if my="8" then
neo(0,0,5,0)
neo(1,0,5,0)
neo(2,20,20,20)
neo(3,0,5,0)
endif
if my="9" then
neo(0,20,20,20)
neo(1,0,5,0)
neo(2,20,20,20)
neo(3,0,5,0)
endif
return
 
[dotime]
io(pwo,4,0)
mytime = time()
myh1 = mid(mytime,12,1)
myh2 = mid(mytime,13,1)
mym1 = mid(mytime,15,1)
mym2 = mid(mytime,16,1)
return
 
[drawflags]
end if
if alive<>"+" then
  neo(15,5,0,0)
end if
if alive="+" then
  neo(15,0,door,0)
endif
return
 
[morsed]
  io(pwo,4,256)
  zeit=millis()
  do
  loop until millis()>(zeit+300)
  io(pwo,4,0)
  zeit=millis()
  do
  loop until millis()>(zeit+100)
  io(pwo,4,256)
  zeit=millis()
  do
  loop until millis()>(zeit+100)
  io(pwo,4,0)
  zeit=millis()
  do
  loop until millis()>(zeit+100)
  io(pwo,4,256)
  zeit=millis()
  do
  loop until millis()>(zeit+100)
  io(pwo,4,0)
  zeit=millis()
  do
  loop until millis()>(zeit+300)
  return
 
[aquireandpost]
tempcount=tempcount+1
vt=io(ai) 
tempsum=tempsum+vt
if tempcount=60 then
tscount=tscount+1
tempsum=  -47/5120*tempsum + 1230537/5120
tempsum=tempsum-2
if tscount=1 then
io(po,16,0)
sendts("thingspeakkey","2",str(tempsum))
nyutemp=str(tempsum)
nyumessage = "adresse/service=" & nyutemp
nubsi=wget(nyumessage,80)
io(po,16,1)
tscount=0
end if
tempcount=0
tempsum=0
end if
return
 
[minuteservice]
wprint "m"
alive=wget("esp-doorbell/msg?")
wprint alive
nubsi=wget("status.schaffenburg.org/")
wprint nubsi
return
mitglieder, vorstand
1.620

Bearbeitungen