Exemplo n.º 1
0
    d = {
      'component': 'Time',
      'label': 'Send makerspace time every minute',
      'icon': 'clock-o',
      'inports': [
        { 'id': 'start', 'type': 'bang' },
      ],
      'outports': [
        { 'id': 'time', 'type': 'string' },
      ],
    }
    self.running = False
    msgflo.Participant.__init__(self, d, role)

  def process(self, inport, msg):
    if self.running:
      self.running = False
      self.ack(msg)
      return
    self.running = True
    gevent.Greenlet.spawn(self.loop)
    self.ack(msg)
    
  def loop(self):
    while self.running == True:
      self.send('time', datetime.datetime.now().isoformat())
      gevent.sleep(60)

if __name__ == '__main__':
  msgflo.main(Time)
    }


class DetectCryptoParty(msgflo.Participant):
    def __init__(self, role):
        d = {
            'component': 'c-flo/DetectCryptoParty',
            'label': 'Detect a CryptoParty event',
            'icon': 'unlock-alt ',
            'inports': [{
                'id': 'current',
                'type': 'array'
            }],
            'outports': [
                {
                    'id': 'palette',
                    'type': 'object'
                },
            ],
        }
        msgflo.Participant.__init__(self, d, role)

    def process(self, inport, msg):
        if len(msg.data) and hasCryptoParty(msg.data):
            self.send('palette', getColorsForDmx())
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(DetectCryptoParty)
Exemplo n.º 3
0
#!/usr/bin/env python2

import sys, os, json, logging
sys.path.append(os.path.abspath("."))

import gevent
import msgflo

class Repeat(msgflo.Participant):
  def __init__(self, role):
    d = {
      'component': 'PythonRepeat',
      'label': 'Repeat input data without change',
      'inports': [
        { 'id': 'in', 'type': 'any' },
      ],
      'outports': [
        { 'id': 'out', 'type': 'any' },
      ],
    }
    msgflo.Participant.__init__(self, d, role)

  def process(self, inport, msg):
    self.send('out', msg.data)
    self.ack(msg)

if __name__ == '__main__':
  msgflo.main(Repeat)

Exemplo n.º 4
0
def main():
    role = os.environ.get('DISPLAY_PREFIX', 'display/X')
    if len(sys.argv) >= 2:
        role = sys.argv[1]
    p = msgflo.main(Participant, role=role)
Exemplo n.º 5
0
class ToggleLights(msgflo.Participant):
  def __init__(self, role):
    d = {
      'component': 'c-flo/togglelights',
      'label': 'Switch traffic light states on every packet',
      'icon': 'toggle-on',
      'inports': [
        { 'id': 'in', 'type': 'bang' },
      ],
      'outports': [
        { 'id': 'out', 'type': 'object' },
      ],
    }
    self.state = {
      'red': 0,
      'yellow': 0,
      'green': 1,
    }
    msgflo.Participant.__init__(self, d, role)

  def process(self, inport, msg):
    if (self.state['green']):
      self.state['green'] = 0
    else:
      self.state['green'] = 1
    self.send('out', self.state)
    self.ack(msg)

if __name__ == '__main__':
  msgflo.main(ToggleLights)
Exemplo n.º 6
0
        self.measurements = [None, 'pm10', 'o3', 'no2', 'so2', 'co']
        msgflo.Participant.__init__(self, d, role)

    def process(self, inport, msg):
        if inport == 'station':
            self.station = msg.data
            self.ack(msg)
            return
        if self.station == None:
            # No station configured, skip
            self.ack(msg)
            return
        url = 'https://luft.jetzt/api/%s' % urllib.parse.quote(
            self.station.encode('utf-8'))
        response = urllib.request.urlopen(url)
        data = json.loads(response.read())
        for measurement in data:
            port = self.measurements[measurement["data"]["pollutant"]]
            if port == None:
                continue
            if measurement["data"]["date_time"] <= self.lastSeen[port]:
                # Already got this data
                continue
            self.send(port, measurement["data"]["value"])
            self.lastSeen[port] = measurement["data"]["date_time"]
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(GetLuftJetzt)
Exemplo n.º 7
0
        response = urllib.urlopen(url)
        data = response.read()
        soup = BeautifulSoup(data, "html.parser")
        table = soup.find_all('table')[0]
        tr_list = table.find_all("tr")

        mate = tr_list[3].find_all("td")
        berliner1 = tr_list[4].find_all("td")
        berliner2 = tr_list[5].find_all("td")
        flora_mate = tr_list[6].find_all("td")
        premium_cola = tr_list[7].find_all("td")
        spetzi = tr_list[8].find_all("td")
        kraftmalz = tr_list[9].find_all("td")

        dict = {
            mate[0].text: available(mate[1].text.strip()),
            berliner1[0].text: available(berliner1[1].text.strip()),
            berliner2[0].text: available(berliner2[1].text.strip()),
            flora_mate[0].text: available(flora_mate[1].text.strip()),
            premium_cola[0].text: available(premium_cola[1].text.strip()),
            spetzi[0].text: available(spetzi[1].text.strip()),
            kraftmalz[0].text: available(kraftmalz[1].text.strip())
        }

        self.send('out', dict)
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(Replicator)
Exemplo n.º 8
0
            ],
            'outports': [
                {
                    'id': 'out',
                    'type': 'string'
                },
            ],
        }
        self.is_enabled = False
        msgflo.Participant.__init__(self, d, role)

    def loop(self):
        while self.is_enabled == True:
            timestamp = datetime.datetime.utcnow().replace(
                tzinfo=datetime.timezone.utc).isoformat()
            self.send('out', timestamp)
            # Wait for a minute
            gevent.sleep(60)

    def process(self, inport, msg):
        if inport == 'start':
            self.is_enabled = True
            gevent.Greenlet.spawn(self.loop)
        elif inport == 'stop':
            self.is_enabled = False
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(Clock)
Exemplo n.º 9
0
                    'id': 'colors',
                    'type': 'object'
                },
            ],
            'outports': [
                {
                    'id': 'palette',
                    'type': 'object'
                },
            ],
        }
        self.palette = None
        self.current_events = []
        msgflo.Participant.__init__(self, d, role)

    def process(self, inport, msg):
        if inport == 'current':
            self.current_events = msg.data
            if self.palette:
                self.send('palette', handleEvents(msg.data, self.palette))
            self.ack(msg)
            return
        if inport == 'colors':
            self.palette = msg.data
            self.send('palette', handleEvents(self.current_events, msg.data))
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(EventColors)
Exemplo n.º 10
0
            if msg.data and msg.data['summary'] == 'circle':
                print "Circle event ongoing"
                self.is_circle = True
                lights = {
                        'red': 1,
                        'yellow': 0,
                        'green': 0,
                        }
                self.send('out', lights)
                self.ack(msg)
                return

            self.is_circle = False
            if self.previous_data:
                # Let lights go to pre-circle state
                self.send('out', self.previous_data)
                self.ack(msg)
                return
            # Otherwise go green
            lights = {
                    'red': 0,
                    'yellow': 0,
                    'green': 1,
                    }
            self.send('out', lights)
            self.ack(msg)
            return

if __name__ == '__main__':
    msgflo.main(DetectCircle)
Exemplo n.º 11
0
  def __init__(self, role):
    d = {
      'component': 'c-flo/IgniteMainhall',
      'label': 'Send true if both inputs are true',
      'icon': 'code-fork',
      'inports': [
        { 'id': 'ignite', 'type': 'boolean' },
        { 'id': 'start', 'type': 'boolean' },
      ],
      'outports': [
        { 'id': 'out', 'type': 'boolean' },
      ],
    }
    self.igniteState = False
    self.startState = False
    msgflo.Participant.__init__(self, d, role)

  def process(self, inport, msg):
    if inport == "ignite":
      self.igniteState = msg.data
    if inport == "start":
      self.startState = msg.data
    if self.igniteState and self.startState:
      self.send("out", True)
    else:
      self.send("out", False)
    self.ack(msg)

if __name__ == '__main__':
  msgflo.main(IgniteMainhall)
Exemplo n.º 12
0
import msgflo


class Repeat(msgflo.Participant):
    def __init__(self, role):
        d = {
            'component': 'PythonRepeat',
            'label': 'Repeat input data without change',
            'inports': [
                {
                    'id': 'in',
                    'type': 'any'
                },
            ],
            'outports': [
                {
                    'id': 'out',
                    'type': 'any'
                },
            ],
        }
        msgflo.Participant.__init__(self, d, role)

    def process(self, inport, msg):
        self.send('out', msg.data)
        self.ack(msg)


if __name__ == '__main__':
    msgflo.main(Repeat)