Led ticker: Difference between revisions

From NURDspace
Line 79: Line 79:


* <code>echo "PX 100 10 00ff00" > /dev/udp/10.208.42.159/5003</code>
* <code>echo "PX 100 10 00ff00" > /dev/udp/10.208.42.159/5003</code>
* text mbv python:
<code>#! /usr/bin/python
import socket
import sys
UDP_IP = "10.208.42.159"
UDP_PORT = 5001
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(sys.argv[1], (UDP_IP, UDP_PORT))</code>
* pixelflut mbv python:
<code>#! /usr/bin/python
import colorsys
import random
import socket
import struct
import sys
#HOST = '10.208.42.159'
HOST = '192.168.64.124'
PORT = 5004
dimx = 64
dimy = 32
def rand():
    return random.randint(0, 4000000000)
def pixel(pixels):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#    s = ''
    s = struct.pack("<B", 1) + struct.pack("<?", 0)
    for x, y, r, g, b in pixels:
#        s += 'PX %d %d %02x%02x%02x\n' % (x, y, r, g, b)
        s += struct.pack("<2H3B", x, y, r, g, b)
#    print len(s)
    sock.sendto(s, (HOST, PORT))
    del sock
while True:
    pixels = []
    if len(sys.argv) == 1 or sys.argv[1] == 'random':
        for n in range(0, dimx * dimy):
            r, g, b = colorsys.hls_to_rgb(random.random(), 0.5, 1.0)
            pixels.append((rand() % dimx, rand() % dimy, int(r * 255), int(g * 255), int(b * 255)))
    elif sys.argv[1] == 'red':
        for n in range(0, dimx * dimy):
            pixels.append((rand() % dimx, rand() % dimy, 255, 0, 0))
    elif sys.argv[1] == 'blue':
        for n in range(0, dimx * dimy):
            pixels.append((rand() % dimx, rand() % dimy, 0, 0, 255))
    elif sys.argv[1] == 'green':
        for n in range(0, dimx * dimy):
            pixels.append((rand() % dimx, rand() % dimy, 0, 255, 0))
    pixel(pixels)
</code>


=== links ===
=== links ===

Revision as of 22:37, 2 March 2019

Led ticker
Ledtickerns.jpg
Participants Folkert
Skills
Status Active
Niche
Purpose
Tool No
Location Space
Cost
Tool category

Led ticker

Ledtickerns.jpg {{#if:No | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:No | [[Tool Cost::{{{Cost}}} | }}


algemeen

tekst

  • luistert op port 5001 UDP voor teksten:
  • stuur tekst om te tonen via een udp bericht
  • escapes:
    • $C...$ voorgrond kleur
    • $B...$ achtergrond kleur
    • $O...$ outline kleur
      • formaat kleur: xxyyzz waarbij xx een hexadecimale waarden tussen 00 en ff is
    • $o$ zet outline kleur uit
    • $d...$ hoelang de tekst op 't scherm zetten
    • $i$ deze tekst is de "idle tekst"; als er niks anders voorbij scrolled, dan wordt deze tekst (NIET-scrollend) getoond, goed een beetje dan
    • $f$ knipper 'n bietje
    • $a$ add to existing line. use $i$$a$ to add to idle line

Dus bijvoorbeeld:

  • $f$$Cff0000$Hallo! Dit is een rode tekst.
  • $i$Deze tekst wordt getoond als er verder niks te scrollen is.


pixelflut

  • er zit ook een pixelflut server in
  • port 5003: udp berichten met tekst(!)
    • voor iedere pixel (meerdere pixels per udp bericht mogelijk:
      • PX x y rrggbb\nPX x y rrggbb\n
  • port 5004: udp berichten met het "echte" udp pixelflut protocol - dat is het binaire dingetje:
    • 1 byte versie (0x01)
    • 1 byte rgb of rgba (rgba is 0x01, rgb is 0x00) -> de ledticker negeerd vooralsnog het alpha kanaal
    • en dan voor iedere pixel die je wil updaten (meerdere per udp bericht mogelijk):
      • 16 bit x, lsb first
      • 2 bytes y, lsb first
      • 1 byte r
      • 1 byte g
      • 1 byte b
      • [1 byte a]


cron

  • de daily events enzo worden vanuit cron gestart, de cron van root
  • wordt gestart vanuit /etc/rc.local
  • root password is dat ene korte


koppelingen

  • nurdbot: /home/nurdbot/.jsb/releases/NURDbot/jsb/plugs/socket/udp.py (voor berichten van de deur) en myplugs/socket/wautemp.py (voor !ticker bla)
  • asterisk: /usr/local/bin/ticker-send.py en /usr/local/bin/push-it.sh (voor bellers)
  • spacenanny: /usr/local/sbin/deurbel.py ("deurbel!!!")
  • Space status: /opt/status/status.py (space status: open/closed)
  • Scrollert: /usr/local/bin/door-to-ticker.sh (wie doet er de deur open)
  • Scrollert: /usr/local/bin/send-ticker.py (used for periodic messages, see crontab of root user)

Linux CLI example

  • echo -n "test" > /dev/udp/10.208.42.159/5001
  • echo "PX 100 10 00ff00" > /dev/udp/10.208.42.159/5003

links