My Minecraft Smart Home Internet of Uncanny Things Sascha Wolter - - PowerPoint PPT Presentation

my minecraft smart home
SMART_READER_LITE
LIVE PREVIEW

My Minecraft Smart Home Internet of Uncanny Things Sascha Wolter - - PowerPoint PPT Presentation

My Minecraft Smart Home Internet of Uncanny Things Sascha Wolter @saschawolter January 2017 Source: Mattel's Barbie Hello Dreamhouse, via https://youtu.be/lgax5y7hVpc Speed kills! In 1830 people thought, your brain stops working travelling


slide-1
SLIDE 1

My Minecraft Smart Home

Internet of Uncanny Things

Sascha Wolter @saschawolter January 2017

Source: Mattel's Barbie Hello Dreamhouse, via https://youtu.be/lgax5y7hVpc

slide-2
SLIDE 2

Speed kills!

In 1830 people thought, your brain stops working travelling more than 20 mph. And anyone going at more than 30 mph would have all air sucked out of them and would suffocate to death.

Source:Tony Robinson's Weird World of Wonders! British

slide-3
SLIDE 3

Internet of (Important) Things

Image: https://en.wikipedia.org/wiki/File:RegVarneyATM.jpg, https://www.ucc.asn.au/services/drink.ucc

1967 1982

slide-4
SLIDE 4

100 billion connections will be generated and 2 million new sensors will be deployed every hour by 2025 (Huawei)

slide-5
SLIDE 5

Regular Users don’t Rule the Tech!

Today's Smart Home solutions are not good enough for a mainstream

  • market. These solutions are well

suited to early adopters, but have so far failed to attract mainstream

  • buyers. (see VisionMobile “The Smart

Home Landscape 2015”)

Progressive Thinkers Worriers Antagonists

slide-6
SLIDE 6

Image: Electrolux presents Screenfridge 1999, http://www.electroluxgroup.com/en/history-1990-1999-764/

Value Proposition!

slide-7
SLIDE 7

Image: New York, ca. 1900 (http://ethw.org/Archives:Edison_Electric_Light_Sign/Ad)

slide-8
SLIDE 8

Image: Sascha Wolter

slide-9
SLIDE 9

Conversational User Experience

Amazon Echo: Alexa… Google Home: Okay Google… LingLong DingDong : DingDong DingDong …

slide-10
SLIDE 10

Source: MGM Child's Play (The Lakeshore Strangler), Vivid My friend Cayla

Internet of Uncanny Things

Uncanny Valley of Anticipation

slide-11
SLIDE 11

Worlds of Wonder's Julie doll (1987), which children could train to respond to their voice.

Speech Recognition

Source: https://youtu.be/UkU9SbIictc

slide-12
SLIDE 12

Source: Boris Adryan, 2015-10-20, http://iot.ghost.io/is-it-all-machine-learning/

slide-13
SLIDE 13

Source: http://www.jre-water.com/Suica/index.html

Voice and Facial Recognition

Gender, Age and Mood

slide-14
SLIDE 14

Start doing

a smattering

  • f REST with SSE

See also http://appinventor.mit.edu/

slide-15
SLIDE 15

Minecraft 101

Good to know

  • See http://minecraft.gamepedia.com/
  • Several Versions
  • Pocket Edition (PE, e.g. Android, HoloLens), Pi

Edition, Console Edition (e.g. Xbox, PlayStation), Education, etc.

  • Samples and code in this presentation is

based on Minecraft 1.8.9

  • Gamemodes
  • Survival
  • Creative (to ignore recipes)
  • Inventory and Recipes
  • Redstones

Cheats via t-Key

  • /help
  • /weather clear
  • /weather rain
  • /time set day
  • /time set night
  • /gamemode creative
  • /gamerule doDaylightCycle false
  • /tp Player x y z

Inventory via e-Key 1st-Person via Mouse and AWSD-Keys

slide-16
SLIDE 16
slide-17
SLIDE 17

see also Project Malmo (http://research.microsoft.com/en-US/groups/mip-ai/default.aspx)

Start doing

a smattering

  • f REST with SSE
slide-18
SLIDE 18
slide-19
SLIDE 19

Minecraft Forge: Simple Modding

Bare minimum

Get the Minecraft Forge Mod Development Kit (MDK) from http://files.minecraftforge.net/

slide-20
SLIDE 20

Java and Minecraft Forge: Setup and Lifecycle

@Mod(modid = SmartHomeMod.MODID, version = SmartHomeMod.VERSION) public class SmartHomeMod { public static final String MODID = "smarthomemod"; public static final String VERSION = "0.1"; // Happens as #1 right before Minecraft loads. Used for most registration. @EventHandler public void preInit(FMLPreInitializationEvent event) {} // Happens as #2 when Minecraft loads. @EventHandler public void init(FMLInitializationEvent event) {} // Happens #3 when World generators and alike are loaded. @EventHandler public void postInit(FMLPostInitializationEvent event) {} // Happens #4 right before starting the server. @EventHandler public void registerCommands(FMLServerStartingEvent event) {} }

Event-Subscriber, Items, and Blocks Resources Commands

main Lifecycle

slide-21
SLIDE 21

Minecraft Forge: Simple Command

public class HelloCommand extends CommandBase { public static final String COMMAND_NAME = "hello"; @Override public String getCommandName() { return COMMAND_NAME; } @Override public String getCommandUsage(ICommandSender sender) { return String.format("/%s <name>", COMMAND_NAME); } @Override public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (sender instanceof EntityPlayer) { ... } else { ... } } }

Command Name Command Help Command Code

slide-22
SLIDE 22

Use SmartHome Plug-In via SSE and REST API

  • List of Things via HTTP Get

http://localhost:9998/rest/things

  • Server Sent Events (SSE)

http://localhost:9998/rest/events

  • Helps to check what’s possible and

what’s going on

  • Player
  • Switches
  • Doors
  • Sensor
  • Unique ID is always location
  • Relevant data is separated into

components (channels)

slide-23
SLIDE 23

Minecraft Spigot: Simple Plug-in

Bare minimum

Get the Minecraft Spigot Server, API, and Build Tools from https://www.spigotmc.org/wiki/buildtools

slide-24
SLIDE 24

Minecraft Spigot: SmartHome.java

public class SmartHome extends JavaPlugin { // Fired when plugin is first enabled @Override public void onEnable() { // Register event listener // Could handle PlayerJoinEvent, BlockRedstoneEvent, PlayerInteractEvent, BlockPlaceEvent... // ...using @EventHandler annotation Bukkit.getPluginManager().registerEvents(new BlockChangedListener(), this); // Register command (set an instance of command class as executor) this.getCommand("sendCommand").setExecutor(new SendCommand()); } // Fired when plugin is disabled @Override public void onDisable() { } }

main Lifecycle Commands Events

slide-25
SLIDE 25

Minecraft Spigot: Simple Command

public class SendCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Bukkit.broadcastMessage("onCommand " + args[0]); Bukkit.getLogger().info("onCommand " + args[0]); return false; } }

Command Code Loggin/Messages

slide-26
SLIDE 26

ESH Core Device Bindings Device Bindings Device Bindings Internet of Things Platform ESH Core Device Bindings Device Bindings Device Bindings Internet of Things Platform ESH Core Device Bindings Device Bindings Device Bindings

Developer Community Device Vendor

XY Company Internet of Things Platform ESH Core Device Bindings Device Bindings Device Bindings

Eclipse SmartHome as open technology for Prosumers

slide-27
SLIDE 27

https://github.com/wolter

slide-28
SLIDE 28

Minecraft Binding for Eclipse SmartHome

  • Integrating Devices

into Eclipse SmartHome

  • 1. Create OSGi skeleton
  • 2. Edit identifiers and parameters
  • 3. Add binding logic
  • 4. Export and deploy
  • 5. Test

create_binding_skeleton

slide-29
SLIDE 29

Minecraft Binding for Eclipse SmartHome

@Override public void handleCommand(ChannelUID channelUID, Command command) { switch (channelUID.getId()) { case CHANNEL_POWERED: if (command instanceof OnOffType) { MinecraftThingCommand minecraftCommand = new MinecraftThingCommand(); minecraftCommand.id = id; minecraftCommand.component = new MinecraftThingComponent(); minecraftCommand.component.type = MinecraftThingComponentType.POWERED; minecraftCommand.component.state = command.equals(OnOffType.ON) ? true : false; postState(minecraftCommand); } break; case CHANNEL_OPEN: ... } }

RESTful POST Handle Command

Or delegate to a Bridge.

slide-30
SLIDE 30

Minecraft Binding for Eclipse SmartHome

Runnable runnable = new Runnable() { @Override public void run() { requestState(); } }; refreshJob = scheduler.scheduleAtFixedRate(runnable, 0, refreshInterval, TimeUnit.SECONDS); ... MinecraftThing minecraftThing = gson.fromJson(reader, MinecraftThing.class); MinecraftThingComponent component minecraftThing.getComponentByType(MinecraftThingComponentType.POWERED); OnOffType state = ((Boolean) component.state) ? OnOffType.ON : OnOffType.OFF; updateState(CHANNEL_POWERED, state);

RESTful GET Update Channel

Use SSE instead!

slide-31
SLIDE 31

Source: https://mojang.com/2016/06/weve-sold-minecraft-many-many-times-look/

Why?

slide-32
SLIDE 32

Design and Hybrid Thinking

slide-33
SLIDE 33

Construction Kit

APIs, Services Software-Architecture (e.g. MVVM)

slide-34
SLIDE 34

Value Innovation Practice and Exchange

to find new opportunities.

Source: Siematic, Discovery Channel, BSH, Microsoft, ZDF

slide-35
SLIDE 35

Businesses are coming to realize that attracting developers is the fastest route to innovation. Moreover, attracting developers means attracting external investment, which finances innovation and expansion.

Source: Benno Luthiger, Open-Source-Jahrbuch 2004

MYTHS OF TYPICAL DEVELOPER / BORN TO CODE

Innovation Prosumer: Consumer and Producer

Millions and millions of dollars are being spent to attract developers: The millions of dollars in developer marketing efforts serve one purpose: to persuade developers to use a specific platform, network, tool or API set to generate innovations and to reach more consumers. In short: Developers consume an Platform, API,

  • etc. and produce something based on it.

Source: Developer Economics 2012, www.developereconomics.com

Some Consumers turn into Developers to solve their needs.

Video: youtube/Microsoft

slide-36
SLIDE 36

Responsibility and Dogfooding

Hippocratic Oath and Eating your own Dogfood.

Teaching Responsibility and Enlightenment versus Believe in Wonders (i.e. Politics and Regulation)

Image: Sascha Wolter, Hour of Code 2015, see also https://code.org/learn

slide-37
SLIDE 37

Video: https://youtu.be/xgakdcEzVwgl

My Minecraft Smart Home

Internet of Uncanny Things Sascha Wolter @saschawolter January 2017 more at http://wolter.biz

slide-38
SLIDE 38
  • Software Developer (m/w) Connected Home Runtime
  • Senior Software Developer (m/w) Connected Home Frontend
  • Senior Software Developer (m/w) Connected Home Community
  • Senior Developer Evangelist Connected Home
  • Senior UX Designer

31.01.2017 38

WE ARE HIRING

Jobs

https://telekom.jobs/global-careers (Keyword Connected Home)