You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@iota.apache.org by Tony Faustini <to...@litbit.com> on 2016/11/01 04:53:44 UTC

Re: Mac Development environment for iota ....

Hi Dennis, great question. I do all my development for Iota using the IntelliJ community edition so there is a Mac development environment and it works well. One thing that I have been thinking about but haven’t gotten around to is producing a video that would show you how to setup an Intellij environment download iota and start developing iota performers using Scala/Akka. You can run the iota engine on devices as small as a Raspberry or as large as a Mesos cluster. That’s we we do at Litbit. Here is an example of what you would use Intellij to output

1) a set of jar files one for each performer
2) An orchestration which is essentially the network of interacting performers

You could run this on any JVM

Here are some examples of orchestrations (Performers not included)

Here is test orchestration that shows a single performer that is configured to consume from a Kafka cluster - The orchestration doesn’t connect it to anything so it doesn’t do much.

{
  "guid" : "KAFKA-CONSUMER-10",
  "command" : "CREATE",
  "timestamp": "21326329079",
  "name" : "ORCHESTRATION FOR TEST",
  "ensembles" : [
    {
      "guid":"KAFKA-CONSUMER-ENS",
      "command": "NONE",
      "performers":[
        {
          "guid": "KAFKA-PERFORMER-10",
          "schedule": 0,
          "backoff": 0,
          "autoScale": 4,
          "source": {
            "name": "fey-kafka-10.jar",
            "classPath": "org.apache.iota.fey.performer.Kafka_Consumer",
            "parameters": {
              "topic":"test-10p",
              "consumer_number": "2",
              "kafka_properties":"{\"bootstrap.servers\": \"localhost:9092\", \"key.deserializer\": \"org.apache.kafka.common.serialization.StringDeserializer\", \"value.deserializer\":\"org.apache.kafka.common.serialization.StringDeserializer\"}"
            }
          }
        }
      ],
      "connections":[]
    }
  ]
}
Here is a more complex orchestration that runs on a RaspberryPi. It takes the input of many sensors and send them to a ZMQ performer that publishes them. It could equally have been an MQTT or ActiveMQ performer

{
  "guid": "MAESTRO-3",
  "command": "RECREATE",
  "timestamp": "7919767890",
  "name": "DESCRIPTION",
  "ensembles": [
    {
      "guid": "TEMPERATURE",
      "command": "NONE",
      "performers": [
        {
          "guid": "Heartbeat",
          "schedule": 30000,
          "backoff": 0,
          "source": {
            "name": "fey_stream.jar",
            "classPath": "org.apache.iota.fey.performer.Heartbeat",
            "parameters": {
            }
          }
        },
        {
          "guid": "Cherry",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"1ed6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.5} ]}",
              "lrns": "[\"1ed6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Heartbeat": [
            "Cherry"
          ]
        },
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "PRESSURE",
      "command": "NONE",
      "performers": [
        {
          "comment": "This forces a value to be output every 10 seconds",
          "guid": "Heartbeat",
          "schedule": 10000,
          "backoff": 0,
          "source": {
            "name": "fey_stream.jar",
            "classPath": "org.apache.iota.fey.performer.Heartbeat",
            "parameters": {
            }
          }
        },
        {
          "comment": "The Cherry checks to see if it should output something every 1 second",
          "guid": "Cherry",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey-cherry-rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"3fd7aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.1} ]}",
              "lrns": "[\"3fd7aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Heartbeat": [
            "Cherry"
          ]
        },
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "HUMIDITY",
      "command": "NONE",
      "performers": [
        {
          "guid": "Heartbeat",
          "schedule": 30000,
          "backoff": 0,
          "source": {
            "name": "fey_stream.jar",
            "classPath": "org.apache.iota.fey.performer.Heartbeat",
            "parameters": {
            }
          }
        },
        {
          "guid": "Cherry",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"2fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":5.0} ]}",
              "lrns": "[\"2fd6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Heartbeat": [
            "Cherry"
          ]
        },
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "SOUNDDB",
      "command": "NONE",
      "performers": [
        {
          "guid": "Heartbeat",
          "schedule": 10000,
          "backoff": 0,
          "source": {
            "name": "fey_stream.jar",
            "classPath": "org.apache.iota.fey.performer.Heartbeat",
            "parameters": {
            }
          }
        },
        {
          "guid": "Cherry",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"7fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":3.0} ]}",
              "lrns": "[\"7fd6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Heartbeat": [
            "Cherry"
          ]
        },
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "VIBRATION_AGGREGATE",
      "command": "NONE",
      "performers": [
        {
          "guid": "Heartbeat",
          "schedule": 10000,
          "backoff": 0,
          "source": {
            "name": "fey_stream.jar",
            "classPath": "org.apache.iota.fey.performer.Heartbeat",
            "parameters": {
            }
          }
        },
        {
          "guid": "Cherry",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"5fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.02} ]}",
              "lrns": "[\"5fd6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Heartbeat": [
            "Cherry"
          ]
        },
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "VIBRATION",
      "command": "NONE",
      "performers": [
        {
          "guid": "VibrationStream",
          "schedule": 1000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"didVibrationChange\":\"6fd6aed2b028486fa478b3d3f6e7ee61\"}",
              "lrns": "[\"6fd6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "VibrationStream": [
            "ZMQPublisher"
          ]
        }
      ]
    },
    {
      "guid": "SOUND_WAV",
      "command": "NONE",
      "performers": [
        {
          "guid": "Cherry",
          "schedule": 3000,
          "backoff": 0,
          "source": {
            "name": "fey_cherry_rp.jar",
            "classPath": "org.apache.iota.fey.performer.CherryRP",
            "parameters": {
              "cherry": "{\"didSoundChange\":\"9fd6aed2b028486fa478b3d3f6e7ee61\"}",
              "lrns": "[\"9fd6aed2b028486fa478b3d3f6e7ee61\"]",
              "host": "192.168.0.17"
            }
          }
        },
        {
          "guid": "ZMQPublisher",
          "schedule": 0,
          "backoff": 0,
          "source": {
            "name": "fey_zmq.jar",
            "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
            "parameters": {
              "zmq_port": "5559",
              "zmq_target": "192.168.0.139"
            }
          }
        }
      ],
      "connections": [
        {
          "Cherry": [
            "ZMQPublisher"
          ]
        }
      ]
    }
  ]
}
Here is a very simple performer that operators on a schedule specified in an orchestration and simple passes the string “Alive” to anything that it is connected to i the orchestration that uses it.

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.iota.fey.performer

import akka.actor.ActorRef
import org.apache.iota.fey.FeyGenericActor

import scala.collection.immutable.Map
import scala.concurrent.duration._

class Heartbeat(override val params: Map[String, String] = Map.empty,
                override val backoff: FiniteDuration = 1.minutes,
                override val connectTo: Map[String, ActorRef] = Map.empty,
                override val schedulerTimeInterval: FiniteDuration = 30.seconds,
                override val orchestrationName: String = "",
                override val orchestrationID: String = "",
                override val autoScale: Boolean = false) extends FeyGenericActor {

  override def onStart = {
  }

  override def onStop = {
  }

  override def onRestart(reason: Throwable) = {
    // Called after actor is up and running - after self restart
  }

  override def customReceive: Receive = {
    case x => log.info(s"Untreated $x")
  }

  override def processMessage[T](message: T, sender: ActorRef): Unit = {
  }

  override def execute() = {
    propagateMessage("Alive")
  }

}



> On Oct 31, 2016, at 9:32 PM, Dennis Jung <in...@gmail.com> wrote:
> 
> Hello Tony,
> Thanks for notification. Also, do you have a plan to make dev environment for Mac? It seems like it supports Linux only currently.
> 
> BR,
> Dennis
> 
> 2016-11-01 13:27 GMT+09:00 Tony Faustini <tony@litbit.com <ma...@litbit.com>>:
> Hi Hadrian, It’s not on the Wiki yet - will put it there by tomorrow evening to give folks a chance to comment as requested by Justin. Yes the Wiki is quite slow tonight.
> 
> Thanks
> -Tony
> 
> > On Oct 31, 2016, at 9:24 PM, Hadrian Zbarcea <hzbarcea@gmail.com <ma...@gmail.com>> wrote:
> >
> > Looks good.
> >
> > I assume it's in the wiki, but cannot check, the wiki is incredibly slow now.
> >
> > Hadrian
> >
> > On 11/01/2016 12:12 AM, Tony Faustini wrote:
> >> iota
> >>
> >> Open source system that enables the orchestration of IoT devices.
> >>
> >> iota has been incubating since 2016-01-20.
> >>
> >> Three most important issues to address in the move towards graduation:
> >>
> >>  1. Building the developer community
> >>  2. Outreach at events outside the Apache ecosystem to inform and invite participation in the project
> >>  3. Better leadership of the project itself
> >>
> >> Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be
> >> aware of?
> >>
> >> Committers are still very interested in seeing this podling develop.
> >>
> >> How has the community developed since the last report?
> >>
> >> Slowly - mainly 4 individuals that are contributing in spurts of activity. This needs to become consistent with better online leadership.
> >>
> >> How has the project developed since the last report?
> >>
> >> Technical contributions have been made and will continue to be  made but there is a need engage and articulate the vision and architecture more actively on the mailing lists.
> >>
> >> Date of last release:
> >>
> >>  Not released yet - had discussed an initial release at the end of this year but will need to see a stronger ecosystem develop to facilitate such a goal.
> >>
> >> When were the last committers or PMC members elected?
> >>
> >> 10 months ago
> >>
> >> Signed-off-by:
> >>
> >>  [ ](iota) Daniel Gruno
> >>  [ ](iota) Sterling Hughes
> >>  [ ](iota) Justin Mclean
> >>  [ ](iota) Hadrian Zbarcea
> >>
> >> Shepherd/Mentor notes:
> >>
> >>
> 
> 


Re: Mac Development environment for iota ....

Posted by Dennis Jung <in...@gmail.com>.
Hello Tony. Thanks for reply!

It would be good to prepare guide docs about 'combination of scripts and
tools' for new participants like me. It is still bit difficult to support
on with current information on wiki,homepage and github page. Maybe the
comments you left here can be added too.

I'll keep try on, and hope to give some help.

BR,
Dennis.

2016-11-01 21:54 GMT+09:00 Tony Faustini <to...@litbit.com>:

> Hi Dennis, that's another good question. The way I use IntelliJ you can
> develop components using the iota framework and Scala/Akka/Java to generate
> jar files with all their needed dependencies. This is  very convenient with
> the full benefit of a great free ide. Of course you could do this same
> thing with command line tools if you prefer. You can also develop and
> manage your orchestrations in the same Intellij environment.
>
> Your question, if I understand it correctly, is what mechanisms exist in
> this Mac environment to deploy performers (components)  sets of .jar files
> and their associated orchestrations (json files) to a target like a
> RaspberryPI or even a Mesos Cluster? If this is the question then I would
> say the deployment aspect of this is done outside the ide. It would be
> possible to develop plugins to the ids to facilitate deployments but they
> are so varied that having scripts outside the ide for deployment is for the
> moment a more flexible way of deploying orchestrations and performers to
> targets. We use a combination of scripts and tools to achieve this in
> practice (one of which is saltstack). I hope I understood your question.
>
> I would very much like to hear any ideas you have regarding your question.
> If it’s an area you feel you could contribute in then we would be
> most interested in your thoughts and ideas..
>
> -Tony
>
> On Nov 1, 2016, at 3:11 AM, Dennis Jung <in...@gmail.com> wrote:
>
> Hello Tony,
> Thanks! It really helps me. I'm trying to work on it.
> One more, is there some stand-alone build deploy script which work on OSX?
>
> BR,
> Dennis
>
> 2016-11-01 13:53 GMT+09:00 Tony Faustini <to...@litbit.com>:
>
>> Hi Dennis, great question. I do all my development for Iota using the
>> IntelliJ community edition so there is a Mac development environment and it
>> works well. One thing that I have been thinking about but haven’t gotten
>> around to is producing a video that would show you how to setup an Intellij
>> environment download iota and start developing iota performers using
>> Scala/Akka. You can run the iota engine on devices as small as a Raspberry
>> or as large as a Mesos cluster. That’s we we do at Litbit. Here is an
>> example of what you would use Intellij to output
>>
>> 1) a set of jar files one for each performer
>> 2) An orchestration which is essentially the network of interacting
>> performers
>>
>> You could run this on any JVM
>>
>> Here are some examples of orchestrations (Performers not included)
>>
>> Here is test orchestration that shows a single performer that is
>> configured to consume from a Kafka cluster - The orchestration doesn’t
>> connect it to anything so it doesn’t do much.
>>
>> {
>>   "guid" : "KAFKA-CONSUMER-10",
>>   "command" : "CREATE",
>>   "timestamp": "21326329079",
>>   "name" : "ORCHESTRATION FOR TEST",
>>   "ensembles" : [
>>     {
>>       "guid":"KAFKA-CONSUMER-ENS",
>>       "command": "NONE",
>>       "performers":[
>>         {
>>           "guid": "KAFKA-PERFORMER-10",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "autoScale": 4,
>>           "source": {
>>             "name": "fey-kafka-10.jar",
>>             "classPath": "org.apache.iota.fey.performer.Kafka_Consumer",
>>             "parameters": {
>>               "topic":"test-10p",
>>               "consumer_number": "2",
>>               "kafka_properties":"{\"bootstrap.servers\": \"localhost:9092\", \"key.deserializer\": \"org.apache.kafka.common.serialization.StringDeserializer\", \"value.deserializer\":\"org.apache.kafka.common.serialization.StringDeserializer\"}"
>>             }
>>           }
>>         }
>>       ],
>>       "connections":[]
>>     }
>>   ]
>> }
>>
>> Here is a more complex orchestration that runs on a RaspberryPi. It takes
>> the input of many sensors and send them to a ZMQ performer that publishes
>> them. It could equally have been an MQTT or ActiveMQ performer
>>
>> {
>>   "guid": "MAESTRO-3",
>>   "command": "RECREATE",
>>   "timestamp": "7919767890",
>>   "name": "DESCRIPTION",
>>   "ensembles": [
>>     {
>>       "guid": "TEMPERATURE",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "Heartbeat",
>>           "schedule": 30000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_stream.jar",
>>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>>             "parameters": {
>>             }
>>           }
>>         },
>>         {
>>           "guid": "Cherry",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"1ed6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.5} ]}",
>>               "lrns": "[\"1ed6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Heartbeat": [
>>             "Cherry"
>>           ]
>>         },
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "PRESSURE",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "comment": "This forces a value to be output every 10 seconds",
>>           "guid": "Heartbeat",
>>           "schedule": 10000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_stream.jar",
>>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>>             "parameters": {
>>             }
>>           }
>>         },
>>         {
>>           "comment": "The Cherry checks to see if it should output something every 1 second",
>>           "guid": "Cherry",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey-cherry-rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"3fd7aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.1} ]}",
>>               "lrns": "[\"3fd7aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Heartbeat": [
>>             "Cherry"
>>           ]
>>         },
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "HUMIDITY",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "Heartbeat",
>>           "schedule": 30000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_stream.jar",
>>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>>             "parameters": {
>>             }
>>           }
>>         },
>>         {
>>           "guid": "Cherry",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"2fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":5.0} ]}",
>>               "lrns": "[\"2fd6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Heartbeat": [
>>             "Cherry"
>>           ]
>>         },
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "SOUNDDB",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "Heartbeat",
>>           "schedule": 10000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_stream.jar",
>>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>>             "parameters": {
>>             }
>>           }
>>         },
>>         {
>>           "guid": "Cherry",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"7fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":3.0} ]}",
>>               "lrns": "[\"7fd6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Heartbeat": [
>>             "Cherry"
>>           ]
>>         },
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "VIBRATION_AGGREGATE",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "Heartbeat",
>>           "schedule": 10000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_stream.jar",
>>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>>             "parameters": {
>>             }
>>           }
>>         },
>>         {
>>           "guid": "Cherry",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"5fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.02} ]}",
>>               "lrns": "[\"5fd6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Heartbeat": [
>>             "Cherry"
>>           ]
>>         },
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "VIBRATION",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "VibrationStream",
>>           "schedule": 1000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"didVibrationChange\":\"6fd6aed2b028486fa478b3d3f6e7ee61\"}",
>>               "lrns": "[\"6fd6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "VibrationStream": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     },
>>     {
>>       "guid": "SOUND_WAV",
>>       "command": "NONE",
>>       "performers": [
>>         {
>>           "guid": "Cherry",
>>           "schedule": 3000,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_cherry_rp.jar",
>>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>>             "parameters": {
>>               "cherry": "{\"didSoundChange\":\"9fd6aed2b028486fa478b3d3f6e7ee61\"}",
>>               "lrns": "[\"9fd6aed2b028486fa478b3d3f6e7ee61\"]",
>>               "host": "192.168.0.17"
>>             }
>>           }
>>         },
>>         {
>>           "guid": "ZMQPublisher",
>>           "schedule": 0,
>>           "backoff": 0,
>>           "source": {
>>             "name": "fey_zmq.jar",
>>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>>             "parameters": {
>>               "zmq_port": "5559",
>>               "zmq_target": "192.168.0.139"
>>             }
>>           }
>>         }
>>       ],
>>       "connections": [
>>         {
>>           "Cherry": [
>>             "ZMQPublisher"
>>           ]
>>         }
>>       ]
>>     }
>>   ]
>> }
>>
>> Here is a very simple performer that operators on a schedule specified in
>> an orchestration and simple passes the string “Alive” to anything that it
>> is connected to i the orchestration that uses it.
>>
>> /*
>>  * Licensed to the Apache Software Foundation (ASF) under one or more
>>  * contributor license agreements.  See the NOTICE file distributed with
>>  * this work for additional information regarding copyright ownership.
>>  * The ASF licenses this file to You under the Apache License, Version 2.0
>>  * (the "License"); you may not use this file except in compliance with
>>  * the License.  You may obtain a copy of the License at
>>  *
>>  *    http://www.apache.org/licenses/LICENSE-2.0
>>  *
>>  * Unless required by applicable law or agreed to in writing, software
>>  * distributed under the License is distributed on an "AS IS" BASIS,
>>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>  * See the License for the specific language governing permissions and
>>  * limitations under the License.
>>  */
>>
>> package org.apache.iota.fey.performer
>>
>> import akka.actor.ActorRef
>> import org.apache.iota.fey.FeyGenericActor
>>
>> import scala.collection.immutable.Map
>> import scala.concurrent.duration._
>>
>> class Heartbeat(override val params: Map[String, String] = Map.empty,
>>                 override val backoff: FiniteDuration = 1.minutes,
>>                 override val connectTo: Map[String, ActorRef] = Map.empty,
>>                 override val schedulerTimeInterval: FiniteDuration = 30.seconds,
>>                 override val orchestrationName: String = "",
>>                 override val orchestrationID: String = "",
>>                 override val autoScale: Boolean = false) extends FeyGenericActor {
>>
>>   override def onStart = {
>>   }
>>
>>   override def onStop = {
>>   }
>>
>>   override def onRestart(reason: Throwable) = {
>>     // Called after actor is up and running - after self restart
>>   }
>>
>>   override def customReceive: Receive = {
>>     case x => log.info(s"Untreated $x")
>>   }
>>
>>   override def processMessage[T](message: T, sender: ActorRef): Unit = {
>>   }
>>
>>   override def execute() = {
>>     propagateMessage("Alive")
>>   }
>>
>> }
>>
>>
>>
>>
>> On Oct 31, 2016, at 9:32 PM, Dennis Jung <in...@gmail.com> wrote:
>>
>> Hello Tony,
>> Thanks for notification. Also, do you have a plan to make dev environment
>> for Mac? It seems like it supports Linux only currently.
>>
>> BR,
>> Dennis
>>
>> 2016-11-01 13:27 GMT+09:00 Tony Faustini <to...@litbit.com>:
>>
>>> Hi Hadrian, It’s not on the Wiki yet - will put it there by tomorrow
>>> evening to give folks a chance to comment as requested by Justin. Yes the
>>> Wiki is quite slow tonight.
>>>
>>> Thanks
>>> -Tony
>>>
>>> > On Oct 31, 2016, at 9:24 PM, Hadrian Zbarcea <hz...@gmail.com>
>>> wrote:
>>> >
>>> > Looks good.
>>> >
>>> > I assume it's in the wiki, but cannot check, the wiki is incredibly
>>> slow now.
>>> >
>>> > Hadrian
>>> >
>>> > On 11/01/2016 12:12 AM, Tony Faustini wrote:
>>> >> iota
>>> >>
>>> >> Open source system that enables the orchestration of IoT devices.
>>> >>
>>> >> iota has been incubating since 2016-01-20.
>>> >>
>>> >> Three most important issues to address in the move towards graduation:
>>> >>
>>> >>  1. Building the developer community
>>> >>  2. Outreach at events outside the Apache ecosystem to inform and
>>> invite participation in the project
>>> >>  3. Better leadership of the project itself
>>> >>
>>> >> Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be
>>> >> aware of?
>>> >>
>>> >> Committers are still very interested in seeing this podling develop.
>>> >>
>>> >> How has the community developed since the last report?
>>> >>
>>> >> Slowly - mainly 4 individuals that are contributing in spurts of
>>> activity. This needs to become consistent with better online leadership.
>>> >>
>>> >> How has the project developed since the last report?
>>> >>
>>> >> Technical contributions have been made and will continue to be  made
>>> but there is a need engage and articulate the vision and architecture more
>>> actively on the mailing lists.
>>> >>
>>> >> Date of last release:
>>> >>
>>> >>  Not released yet - had discussed an initial release at the end of
>>> this year but will need to see a stronger ecosystem develop to facilitate
>>> such a goal.
>>> >>
>>> >> When were the last committers or PMC members elected?
>>> >>
>>> >> 10 months ago
>>> >>
>>> >> Signed-off-by:
>>> >>
>>> >>  [ ](iota) Daniel Gruno
>>> >>  [ ](iota) Sterling Hughes
>>> >>  [ ](iota) Justin Mclean
>>> >>  [ ](iota) Hadrian Zbarcea
>>> >>
>>> >> Shepherd/Mentor notes:
>>> >>
>>> >>
>>>
>>>
>>
>>
>
>

Re: Mac Development environment for iota ....

Posted by Tony Faustini <to...@litbit.com>.
Hi Dennis, that's another good question. The way I use IntelliJ you can develop components using the iota framework and Scala/Akka/Java to generate jar files with all their needed dependencies. This is  very convenient with the full benefit of a great free ide. Of course you could do this same thing with command line tools if you prefer. You can also develop and manage your orchestrations in the same Intellij environment. 

Your question, if I understand it correctly, is what mechanisms exist in this Mac environment to deploy performers (components)  sets of .jar files and their associated orchestrations (json files) to a target like a RaspberryPI or even a Mesos Cluster? If this is the question then I would say the deployment aspect of this is done outside the ide. It would be possible to develop plugins to the ids to facilitate deployments but they are so varied that having scripts outside the ide for deployment is for the moment a more flexible way of deploying orchestrations and performers to targets. We use a combination of scripts and tools to achieve this in practice (one of which is saltstack). I hope I understood your question.

I would very much like to hear any ideas you have regarding your question. If it’s an area you feel you could contribute in then we would be most interested in your thoughts and ideas..

-Tony

> On Nov 1, 2016, at 3:11 AM, Dennis Jung <in...@gmail.com> wrote:
> 
> Hello Tony,
> Thanks! It really helps me. I'm trying to work on it.
> One more, is there some stand-alone build deploy script which work on OSX?
> 
> BR,
> Dennis
> 
> 2016-11-01 13:53 GMT+09:00 Tony Faustini <tony@litbit.com <ma...@litbit.com>>:
> Hi Dennis, great question. I do all my development for Iota using the IntelliJ community edition so there is a Mac development environment and it works well. One thing that I have been thinking about but haven’t gotten around to is producing a video that would show you how to setup an Intellij environment download iota and start developing iota performers using Scala/Akka. You can run the iota engine on devices as small as a Raspberry or as large as a Mesos cluster. That’s we we do at Litbit. Here is an example of what you would use Intellij to output
> 
> 1) a set of jar files one for each performer
> 2) An orchestration which is essentially the network of interacting performers
> 
> You could run this on any JVM
> 
> Here are some examples of orchestrations (Performers not included)
> 
> Here is test orchestration that shows a single performer that is configured to consume from a Kafka cluster - The orchestration doesn’t connect it to anything so it doesn’t do much.
> 
> {
>   "guid" : "KAFKA-CONSUMER-10",
>   "command" : "CREATE",
>   "timestamp": "21326329079",
>   "name" : "ORCHESTRATION FOR TEST",
>   "ensembles" : [
>     {
>       "guid":"KAFKA-CONSUMER-ENS",
>       "command": "NONE",
>       "performers":[
>         {
>           "guid": "KAFKA-PERFORMER-10",
>           "schedule": 0,
>           "backoff": 0,
>           "autoScale": 4,
>           "source": {
>             "name": "fey-kafka-10.jar",
>             "classPath": "org.apache.iota.fey.performer.Kafka_Consumer",
>             "parameters": {
>               "topic":"test-10p",
>               "consumer_number": "2",
>               "kafka_properties":"{\"bootstrap.servers\": \"localhost:9092\", \"key.deserializer\": \"org.apache.kafka.common.serialization.StringDeserializer\", \"value.deserializer\":\"org.apache.kafka.common.serialization.StringDeserializer\"}"
>             }
>           }
>         }
>       ],
>       "connections":[]
>     }
>   ]
> }
> Here is a more complex orchestration that runs on a RaspberryPi. It takes the input of many sensors and send them to a ZMQ performer that publishes them. It could equally have been an MQTT or ActiveMQ performer
> 
> {
>   "guid": "MAESTRO-3",
>   "command": "RECREATE",
>   "timestamp": "7919767890",
>   "name": "DESCRIPTION",
>   "ensembles": [
>     {
>       "guid": "TEMPERATURE",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 30000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"1ed6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.5} ]}",
>               "lrns": "[\"1ed6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "PRESSURE",
>       "command": "NONE",
>       "performers": [
>         {
>           "comment": "This forces a value to be output every 10 seconds",
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "comment": "The Cherry checks to see if it should output something every 1 second",
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey-cherry-rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"3fd7aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.1} ]}",
>               "lrns": "[\"3fd7aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "HUMIDITY",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 30000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"2fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":5.0} ]}",
>               "lrns": "[\"2fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "SOUNDDB",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"7fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":3.0} ]}",
>               "lrns": "[\"7fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "VIBRATION_AGGREGATE",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"5fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.02} ]}",
>               "lrns": "[\"5fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "VIBRATION",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "VibrationStream",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"didVibrationChange\":\"6fd6aed2b028486fa478b3d3f6e7ee61\"}",
>               "lrns": "[\"6fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "VibrationStream": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "SOUND_WAV",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Cherry",
>           "schedule": 3000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"didSoundChange\":\"9fd6aed2b028486fa478b3d3f6e7ee61\"}",
>               "lrns": "[\"9fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     }
>   ]
> }
> Here is a very simple performer that operators on a schedule specified in an orchestration and simple passes the string “Alive” to anything that it is connected to i the orchestration that uses it.
> 
> /*
>  * Licensed to the Apache Software Foundation (ASF) under one or more
>  * contributor license agreements.  See the NOTICE file distributed with
>  * this work for additional information regarding copyright ownership.
>  * The ASF licenses this file to You under the Apache License, Version 2.0
>  * (the "License"); you may not use this file except in compliance with
>  * the License.  You may obtain a copy of the License at
>  *
>  *    http://www.apache.org/licenses/LICENSE-2.0 <http://www.apache.org/licenses/LICENSE-2.0>
>  *
>  * Unless required by applicable law or agreed to in writing, software
>  * distributed under the License is distributed on an "AS IS" BASIS,
>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  * See the License for the specific language governing permissions and
>  * limitations under the License.
>  */
> 
> package org.apache.iota.fey.performer
> 
> import akka.actor.ActorRef
> import org.apache.iota.fey.FeyGenericActor
> 
> import scala.collection.immutable.Map
> import scala.concurrent.duration._
> 
> class Heartbeat(override val params: Map[String, String] = Map.empty,
>                 override val backoff: FiniteDuration = 1.minutes,
>                 override val connectTo: Map[String, ActorRef] = Map.empty,
>                 override val schedulerTimeInterval: FiniteDuration = 30.seconds,
>                 override val orchestrationName: String = "",
>                 override val orchestrationID: String = "",
>                 override val autoScale: Boolean = false) extends FeyGenericActor {
> 
>   override def onStart = {
>   }
> 
>   override def onStop = {
>   }
> 
>   override def onRestart(reason: Throwable) = {
>     // Called after actor is up and running - after self restart
>   }
> 
>   override def customReceive: Receive = {
>     case x => log.info <http://log.info/>(s"Untreated $x")
>   }
> 
>   override def processMessage[T](message: T, sender: ActorRef): Unit = {
>   }
> 
>   override def execute() = {
>     propagateMessage("Alive")
>   }
> 
> }
> 
> 
> 
>> On Oct 31, 2016, at 9:32 PM, Dennis Jung <inylove82@gmail.com <ma...@gmail.com>> wrote:
>> 
>> Hello Tony,
>> Thanks for notification. Also, do you have a plan to make dev environment for Mac? It seems like it supports Linux only currently.
>> 
>> BR,
>> Dennis
>> 
>> 2016-11-01 13:27 GMT+09:00 Tony Faustini <tony@litbit.com <ma...@litbit.com>>:
>> Hi Hadrian, It’s not on the Wiki yet - will put it there by tomorrow evening to give folks a chance to comment as requested by Justin. Yes the Wiki is quite slow tonight.
>> 
>> Thanks
>> -Tony
>> 
>> > On Oct 31, 2016, at 9:24 PM, Hadrian Zbarcea <hzbarcea@gmail.com <ma...@gmail.com>> wrote:
>> >
>> > Looks good.
>> >
>> > I assume it's in the wiki, but cannot check, the wiki is incredibly slow now.
>> >
>> > Hadrian
>> >
>> > On 11/01/2016 12:12 AM, Tony Faustini wrote:
>> >> iota
>> >>
>> >> Open source system that enables the orchestration of IoT devices.
>> >>
>> >> iota has been incubating since 2016-01-20.
>> >>
>> >> Three most important issues to address in the move towards graduation:
>> >>
>> >>  1. Building the developer community
>> >>  2. Outreach at events outside the Apache ecosystem to inform and invite participation in the project
>> >>  3. Better leadership of the project itself
>> >>
>> >> Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be
>> >> aware of?
>> >>
>> >> Committers are still very interested in seeing this podling develop.
>> >>
>> >> How has the community developed since the last report?
>> >>
>> >> Slowly - mainly 4 individuals that are contributing in spurts of activity. This needs to become consistent with better online leadership.
>> >>
>> >> How has the project developed since the last report?
>> >>
>> >> Technical contributions have been made and will continue to be  made but there is a need engage and articulate the vision and architecture more actively on the mailing lists.
>> >>
>> >> Date of last release:
>> >>
>> >>  Not released yet - had discussed an initial release at the end of this year but will need to see a stronger ecosystem develop to facilitate such a goal.
>> >>
>> >> When were the last committers or PMC members elected?
>> >>
>> >> 10 months ago
>> >>
>> >> Signed-off-by:
>> >>
>> >>  [ ](iota) Daniel Gruno
>> >>  [ ](iota) Sterling Hughes
>> >>  [ ](iota) Justin Mclean
>> >>  [ ](iota) Hadrian Zbarcea
>> >>
>> >> Shepherd/Mentor notes:
>> >>
>> >>
>> 
>> 
> 
> 


Re: Mac Development environment for iota ....

Posted by Dennis Jung <in...@gmail.com>.
Hello Tony,
Thanks! It really helps me. I'm trying to work on it.
One more, is there some stand-alone build deploy script which work on OSX?

BR,
Dennis

2016-11-01 13:53 GMT+09:00 Tony Faustini <to...@litbit.com>:

> Hi Dennis, great question. I do all my development for Iota using the
> IntelliJ community edition so there is a Mac development environment and it
> works well. One thing that I have been thinking about but haven’t gotten
> around to is producing a video that would show you how to setup an Intellij
> environment download iota and start developing iota performers using
> Scala/Akka. You can run the iota engine on devices as small as a Raspberry
> or as large as a Mesos cluster. That’s we we do at Litbit. Here is an
> example of what you would use Intellij to output
>
> 1) a set of jar files one for each performer
> 2) An orchestration which is essentially the network of interacting
> performers
>
> You could run this on any JVM
>
> Here are some examples of orchestrations (Performers not included)
>
> Here is test orchestration that shows a single performer that is
> configured to consume from a Kafka cluster - The orchestration doesn’t
> connect it to anything so it doesn’t do much.
>
> {
>   "guid" : "KAFKA-CONSUMER-10",
>   "command" : "CREATE",
>   "timestamp": "21326329079",
>   "name" : "ORCHESTRATION FOR TEST",
>   "ensembles" : [
>     {
>       "guid":"KAFKA-CONSUMER-ENS",
>       "command": "NONE",
>       "performers":[
>         {
>           "guid": "KAFKA-PERFORMER-10",
>           "schedule": 0,
>           "backoff": 0,
>           "autoScale": 4,
>           "source": {
>             "name": "fey-kafka-10.jar",
>             "classPath": "org.apache.iota.fey.performer.Kafka_Consumer",
>             "parameters": {
>               "topic":"test-10p",
>               "consumer_number": "2",
>               "kafka_properties":"{\"bootstrap.servers\": \"localhost:9092\", \"key.deserializer\": \"org.apache.kafka.common.serialization.StringDeserializer\", \"value.deserializer\":\"org.apache.kafka.common.serialization.StringDeserializer\"}"
>             }
>           }
>         }
>       ],
>       "connections":[]
>     }
>   ]
> }
>
> Here is a more complex orchestration that runs on a RaspberryPi. It takes
> the input of many sensors and send them to a ZMQ performer that publishes
> them. It could equally have been an MQTT or ActiveMQ performer
>
> {
>   "guid": "MAESTRO-3",
>   "command": "RECREATE",
>   "timestamp": "7919767890",
>   "name": "DESCRIPTION",
>   "ensembles": [
>     {
>       "guid": "TEMPERATURE",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 30000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"1ed6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.5} ]}",
>               "lrns": "[\"1ed6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "PRESSURE",
>       "command": "NONE",
>       "performers": [
>         {
>           "comment": "This forces a value to be output every 10 seconds",
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "comment": "The Cherry checks to see if it should output something every 1 second",
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey-cherry-rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"3fd7aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.1} ]}",
>               "lrns": "[\"3fd7aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "HUMIDITY",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 30000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"2fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":5.0} ]}",
>               "lrns": "[\"2fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "SOUNDDB",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"7fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":3.0} ]}",
>               "lrns": "[\"7fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "VIBRATION_AGGREGATE",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Heartbeat",
>           "schedule": 10000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_stream.jar",
>             "classPath": "org.apache.iota.fey.performer.Heartbeat",
>             "parameters": {
>             }
>           }
>         },
>         {
>           "guid": "Cherry",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"op\":\"cov\", \"args\":[{\"string\":\"5fd6aed2b028486fa478b3d3f6e7ee61\"}, {\"float\":0.02} ]}",
>               "lrns": "[\"5fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Heartbeat": [
>             "Cherry"
>           ]
>         },
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "VIBRATION",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "VibrationStream",
>           "schedule": 1000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"didVibrationChange\":\"6fd6aed2b028486fa478b3d3f6e7ee61\"}",
>               "lrns": "[\"6fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "VibrationStream": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     },
>     {
>       "guid": "SOUND_WAV",
>       "command": "NONE",
>       "performers": [
>         {
>           "guid": "Cherry",
>           "schedule": 3000,
>           "backoff": 0,
>           "source": {
>             "name": "fey_cherry_rp.jar",
>             "classPath": "org.apache.iota.fey.performer.CherryRP",
>             "parameters": {
>               "cherry": "{\"didSoundChange\":\"9fd6aed2b028486fa478b3d3f6e7ee61\"}",
>               "lrns": "[\"9fd6aed2b028486fa478b3d3f6e7ee61\"]",
>               "host": "192.168.0.17"
>             }
>           }
>         },
>         {
>           "guid": "ZMQPublisher",
>           "schedule": 0,
>           "backoff": 0,
>           "source": {
>             "name": "fey_zmq.jar",
>             "classPath": "org.apache.iota.fey.performer.ZMQPublisher",
>             "parameters": {
>               "zmq_port": "5559",
>               "zmq_target": "192.168.0.139"
>             }
>           }
>         }
>       ],
>       "connections": [
>         {
>           "Cherry": [
>             "ZMQPublisher"
>           ]
>         }
>       ]
>     }
>   ]
> }
>
> Here is a very simple performer that operators on a schedule specified in
> an orchestration and simple passes the string “Alive” to anything that it
> is connected to i the orchestration that uses it.
>
> /*
>  * Licensed to the Apache Software Foundation (ASF) under one or more
>  * contributor license agreements.  See the NOTICE file distributed with
>  * this work for additional information regarding copyright ownership.
>  * The ASF licenses this file to You under the Apache License, Version 2.0
>  * (the "License"); you may not use this file except in compliance with
>  * the License.  You may obtain a copy of the License at
>  *
>  *    http://www.apache.org/licenses/LICENSE-2.0
>  *
>  * Unless required by applicable law or agreed to in writing, software
>  * distributed under the License is distributed on an "AS IS" BASIS,
>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  * See the License for the specific language governing permissions and
>  * limitations under the License.
>  */
>
> package org.apache.iota.fey.performer
>
> import akka.actor.ActorRef
> import org.apache.iota.fey.FeyGenericActor
>
> import scala.collection.immutable.Map
> import scala.concurrent.duration._
>
> class Heartbeat(override val params: Map[String, String] = Map.empty,
>                 override val backoff: FiniteDuration = 1.minutes,
>                 override val connectTo: Map[String, ActorRef] = Map.empty,
>                 override val schedulerTimeInterval: FiniteDuration = 30.seconds,
>                 override val orchestrationName: String = "",
>                 override val orchestrationID: String = "",
>                 override val autoScale: Boolean = false) extends FeyGenericActor {
>
>   override def onStart = {
>   }
>
>   override def onStop = {
>   }
>
>   override def onRestart(reason: Throwable) = {
>     // Called after actor is up and running - after self restart
>   }
>
>   override def customReceive: Receive = {
>     case x => log.info(s"Untreated $x")
>   }
>
>   override def processMessage[T](message: T, sender: ActorRef): Unit = {
>   }
>
>   override def execute() = {
>     propagateMessage("Alive")
>   }
>
> }
>
>
>
>
> On Oct 31, 2016, at 9:32 PM, Dennis Jung <in...@gmail.com> wrote:
>
> Hello Tony,
> Thanks for notification. Also, do you have a plan to make dev environment
> for Mac? It seems like it supports Linux only currently.
>
> BR,
> Dennis
>
> 2016-11-01 13:27 GMT+09:00 Tony Faustini <to...@litbit.com>:
>
>> Hi Hadrian, It’s not on the Wiki yet - will put it there by tomorrow
>> evening to give folks a chance to comment as requested by Justin. Yes the
>> Wiki is quite slow tonight.
>>
>> Thanks
>> -Tony
>>
>> > On Oct 31, 2016, at 9:24 PM, Hadrian Zbarcea <hz...@gmail.com>
>> wrote:
>> >
>> > Looks good.
>> >
>> > I assume it's in the wiki, but cannot check, the wiki is incredibly
>> slow now.
>> >
>> > Hadrian
>> >
>> > On 11/01/2016 12:12 AM, Tony Faustini wrote:
>> >> iota
>> >>
>> >> Open source system that enables the orchestration of IoT devices.
>> >>
>> >> iota has been incubating since 2016-01-20.
>> >>
>> >> Three most important issues to address in the move towards graduation:
>> >>
>> >>  1. Building the developer community
>> >>  2. Outreach at events outside the Apache ecosystem to inform and
>> invite participation in the project
>> >>  3. Better leadership of the project itself
>> >>
>> >> Any issues that the Incubator PMC (IPMC) or ASF Board wish/need to be
>> >> aware of?
>> >>
>> >> Committers are still very interested in seeing this podling develop.
>> >>
>> >> How has the community developed since the last report?
>> >>
>> >> Slowly - mainly 4 individuals that are contributing in spurts of
>> activity. This needs to become consistent with better online leadership.
>> >>
>> >> How has the project developed since the last report?
>> >>
>> >> Technical contributions have been made and will continue to be  made
>> but there is a need engage and articulate the vision and architecture more
>> actively on the mailing lists.
>> >>
>> >> Date of last release:
>> >>
>> >>  Not released yet - had discussed an initial release at the end of
>> this year but will need to see a stronger ecosystem develop to facilitate
>> such a goal.
>> >>
>> >> When were the last committers or PMC members elected?
>> >>
>> >> 10 months ago
>> >>
>> >> Signed-off-by:
>> >>
>> >>  [ ](iota) Daniel Gruno
>> >>  [ ](iota) Sterling Hughes
>> >>  [ ](iota) Justin Mclean
>> >>  [ ](iota) Hadrian Zbarcea
>> >>
>> >> Shepherd/Mentor notes:
>> >>
>> >>
>>
>>
>
>