Fix #62 - light intensity and duration now on /hugvey_fade
This commit is contained in:
parent
cd87c7a442
commit
2eeee9095f
3 changed files with 102 additions and 52 deletions
|
@ -90,7 +90,7 @@ def getWebSocketHandler(central_command):
|
||||||
|
|
||||||
# client disconnected
|
# client disconnected
|
||||||
def on_close(self):
|
def on_close(self):
|
||||||
WebSocketHandler.rmConnection(self)
|
self.__class__.rmConnection(self)
|
||||||
logger.info("Client disconnected")
|
logger.info("Client disconnected")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -168,7 +168,7 @@ def getWebSocketHandler(central_command):
|
||||||
toRemove.append(client) # If we remove it here from the set we get an exception about changing set size during iteration
|
toRemove.append(client) # If we remove it here from the set we get an exception about changing set size during iteration
|
||||||
|
|
||||||
for client in toRemove:
|
for client in toRemove:
|
||||||
rmConnection(client)
|
wsHandlerClass.rmConnection(client)
|
||||||
|
|
||||||
return WebSocketHandler
|
return WebSocketHandler
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,26 @@
|
||||||
import json
|
|
||||||
import time
|
|
||||||
import logging
|
|
||||||
import re
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import urllib.parse
|
import json
|
||||||
from .communication import LOG_BS
|
import logging
|
||||||
from tornado.httpclient import AsyncHTTPClient, HTTPRequest
|
|
||||||
import uuid
|
|
||||||
import shortuuid
|
|
||||||
import threading
|
|
||||||
import faulthandler
|
|
||||||
from zmq.asyncio import Context
|
|
||||||
import zmq
|
|
||||||
import wave
|
|
||||||
import sox
|
|
||||||
from pythonosc import udp_client
|
|
||||||
import random
|
|
||||||
import pickle
|
|
||||||
import os
|
import os
|
||||||
|
import pickle
|
||||||
|
import random
|
||||||
|
import re
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
from tornado.httpclient import AsyncHTTPClient, HTTPRequest
|
||||||
import traceback
|
import traceback
|
||||||
|
import urllib.parse
|
||||||
|
import uuid
|
||||||
|
import wave
|
||||||
|
import zmq
|
||||||
|
from zmq.asyncio import Context
|
||||||
|
|
||||||
|
from pythonosc import udp_client
|
||||||
|
import shortuuid
|
||||||
|
import sox
|
||||||
|
|
||||||
|
from .communication import LOG_BS
|
||||||
|
|
||||||
|
|
||||||
mainLogger = logging.getLogger("hugvey")
|
mainLogger = logging.getLogger("hugvey")
|
||||||
logger = mainLogger.getChild("narrative")
|
logger = mainLogger.getChild("narrative")
|
||||||
|
@ -1034,6 +1036,16 @@ class Configuration(object):
|
||||||
id = 'configuration'
|
id = 'configuration'
|
||||||
volume = 1 # Volume multiplier for 'play' command
|
volume = 1 # Volume multiplier for 'play' command
|
||||||
nothing_text = "nothing" # When variable is not set, but used in sentence, replace it with this word.
|
nothing_text = "nothing" # When variable is not set, but used in sentence, replace it with this word.
|
||||||
|
light0_intensity = 0
|
||||||
|
light0_fade = 30. # fade duration in seconds
|
||||||
|
light1_intensity = 150
|
||||||
|
light1_fade = 10.
|
||||||
|
light2_intensity = 75
|
||||||
|
light2_fade = 10.
|
||||||
|
light3_intensity = 150
|
||||||
|
light3_fade = 10.
|
||||||
|
light4_intensity = 150
|
||||||
|
light4_fade = 10.
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def initFromJson(configClass, data, story):
|
def initFromJson(configClass, data, story):
|
||||||
|
@ -1041,6 +1053,16 @@ class Configuration(object):
|
||||||
config.__dict__.update(data)
|
config.__dict__.update(data)
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
def getLightPresets(self):
|
||||||
|
c = self.__dict__
|
||||||
|
l = []
|
||||||
|
for i in range(5):
|
||||||
|
l.append({
|
||||||
|
'intensity': int(c[f"light{i}_intensity"]),
|
||||||
|
'fade': float(c[f"light{i}_fade"])
|
||||||
|
})
|
||||||
|
return l
|
||||||
|
|
||||||
|
|
||||||
storyClasses = {
|
storyClasses = {
|
||||||
'Msg': Message,
|
'Msg': Message,
|
||||||
|
@ -1686,7 +1708,8 @@ class Story(object):
|
||||||
})
|
})
|
||||||
|
|
||||||
if message.lightChange is not None:
|
if message.lightChange is not None:
|
||||||
self.hugvey.setLightStatus(message.lightChange)
|
self.fadeLightPreset(message.lightChange)
|
||||||
|
# self.hugvey.setLightStatus(message.lightChange)
|
||||||
|
|
||||||
# 2019-02-22 temporary disable listening while playing audio:
|
# 2019-02-22 temporary disable listening while playing audio:
|
||||||
# if self.hugvey.google is not None:
|
# if self.hugvey.google is not None:
|
||||||
|
@ -1702,6 +1725,15 @@ class Story(object):
|
||||||
self.logger.log(LOG_BS,logmsg)
|
self.logger.log(LOG_BS,logmsg)
|
||||||
self.storeState()
|
self.storeState()
|
||||||
|
|
||||||
|
def fadeLightPreset(self, presetNr: int):
|
||||||
|
if presetNr < 0 or presetNr > 4:
|
||||||
|
self.logger.critical(f"Error parsing light fade preset code '{presetNr}'")
|
||||||
|
return
|
||||||
|
|
||||||
|
preset = self.configuration.getLightPresets()[presetNr]
|
||||||
|
|
||||||
|
self.hugvey.transitionLight(preset['intensity'], preset['fade'])
|
||||||
|
|
||||||
def getCurrentDirections(self):
|
def getCurrentDirections(self):
|
||||||
if self.currentMessage.id not in self.directionsPerMsg:
|
if self.currentMessage.id not in self.directionsPerMsg:
|
||||||
return []
|
return []
|
||||||
|
|
|
@ -1014,7 +1014,7 @@ class Graph {
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel('hr'),
|
crel('hr'),
|
||||||
crel('h2', 'Light setting #0'),
|
crel('h2', 'Light fade setting #0'),
|
||||||
crel(
|
crel(
|
||||||
'label',
|
'label',
|
||||||
"Light intensity: ",
|
"Light intensity: ",
|
||||||
|
@ -1027,7 +1027,7 @@ class Graph {
|
||||||
panopticon.graph.configuration['light0_intensity'] = e.target.value
|
panopticon.graph.configuration['light0_intensity'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light0_intensity') ? this.configuration.light1_intensity : 0
|
'value': this.configuration.hasOwnProperty('light0_intensity') ? this.configuration.light1_intensity : ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel(
|
crel(
|
||||||
|
@ -1036,17 +1036,17 @@ class Graph {
|
||||||
crel('input', {
|
crel('input', {
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'min': 1,
|
'min': 1,
|
||||||
'max': 5,
|
// 'max': 5,
|
||||||
'step': .1,
|
'step': .1,
|
||||||
'on': {
|
'on': {
|
||||||
'change': function(e){
|
'change': function(e){
|
||||||
panopticon.graph.configuration['light0_fade'] = e.target.value
|
panopticon.graph.configuration['light0_fade'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light0_fade') ? this.configuration.light0_fade: 30
|
'value': this.configuration.hasOwnProperty('light0_fade') ? this.configuration.light0_fade: ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel('h2', 'Light setting #1'),
|
crel('h2', 'Light fade setting #1'),
|
||||||
crel(
|
crel(
|
||||||
'label',
|
'label',
|
||||||
"Light intensity: ",
|
"Light intensity: ",
|
||||||
|
@ -1059,7 +1059,7 @@ class Graph {
|
||||||
panopticon.graph.configuration['light1_intensity'] = e.target.value
|
panopticon.graph.configuration['light1_intensity'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light1_intensity') ? this.configuration.light1_intensity : 150
|
'value': this.configuration.hasOwnProperty('light1_intensity') ? this.configuration.light1_intensity : ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel(
|
crel(
|
||||||
|
@ -1068,17 +1068,17 @@ class Graph {
|
||||||
crel('input', {
|
crel('input', {
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'min': 1,
|
'min': 1,
|
||||||
'max': 5,
|
// 'max': 5,
|
||||||
'step': .1,
|
'step': .1,
|
||||||
'on': {
|
'on': {
|
||||||
'change': function(e){
|
'change': function(e){
|
||||||
panopticon.graph.configuration['light1_fade'] = e.target.value
|
panopticon.graph.configuration['light1_fade'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light1_fade') ? this.configuration.light1_fade: 10
|
'value': this.configuration.hasOwnProperty('light1_fade') ? this.configuration.light1_fade: ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel('h2', 'Light setting #2'),
|
crel('h2', 'Light fade setting #2'),
|
||||||
crel(
|
crel(
|
||||||
'label',
|
'label',
|
||||||
"Light intensity: ",
|
"Light intensity: ",
|
||||||
|
@ -1091,7 +1091,7 @@ class Graph {
|
||||||
panopticon.graph.configuration['light2_intensity'] = e.target.value
|
panopticon.graph.configuration['light2_intensity'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light2_intensity') ? this.configuration.light2_intensity : 75
|
'value': this.configuration.hasOwnProperty('light2_intensity') ? this.configuration.light2_intensity : ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel(
|
crel(
|
||||||
|
@ -1100,17 +1100,17 @@ class Graph {
|
||||||
crel('input', {
|
crel('input', {
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'min': 1,
|
'min': 1,
|
||||||
'max': 5,
|
// 'max': 5,
|
||||||
'step': .1,
|
'step': .1,
|
||||||
'on': {
|
'on': {
|
||||||
'change': function(e){
|
'change': function(e){
|
||||||
panopticon.graph.configuration['light2_fade'] = e.target.value
|
panopticon.graph.configuration['light2_fade'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light2_fade') ? this.configuration.light2_fade: 10
|
'value': this.configuration.hasOwnProperty('light2_fade') ? this.configuration.light2_fade: ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel('h2', 'Light setting #3'),
|
crel('h2', 'Light fade setting #3'),
|
||||||
crel(
|
crel(
|
||||||
'label',
|
'label',
|
||||||
"Light intensity: ",
|
"Light intensity: ",
|
||||||
|
@ -1123,7 +1123,7 @@ class Graph {
|
||||||
panopticon.graph.configuration['light3_intensity'] = e.target.value
|
panopticon.graph.configuration['light3_intensity'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light3_intensity') ? this.configuration.light3_intensity : 150
|
'value': this.configuration.hasOwnProperty('light3_intensity') ? this.configuration.light3_intensity : ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel(
|
crel(
|
||||||
|
@ -1132,17 +1132,17 @@ class Graph {
|
||||||
crel('input', {
|
crel('input', {
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'min': 1,
|
'min': 1,
|
||||||
'max': 5,
|
// 'max': 5,
|
||||||
'step': .1,
|
'step': .1,
|
||||||
'on': {
|
'on': {
|
||||||
'change': function(e){
|
'change': function(e){
|
||||||
panopticon.graph.configuration['light3_fade'] = e.target.value
|
panopticon.graph.configuration['light3_fade'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light3_fade') ? this.configuration.light3_fade: 10
|
'value': this.configuration.hasOwnProperty('light3_fade') ? this.configuration.light3_fade: ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel('h2', 'Light setting #4'),
|
crel('h2', 'Light fade setting #4'),
|
||||||
crel(
|
crel(
|
||||||
'label',
|
'label',
|
||||||
"Light intensity: ",
|
"Light intensity: ",
|
||||||
|
@ -1155,7 +1155,7 @@ class Graph {
|
||||||
panopticon.graph.configuration['light4_intensity'] = e.target.value
|
panopticon.graph.configuration['light4_intensity'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light4_intensity') ? this.configuration.light4_intensity : 150
|
'value': this.configuration.hasOwnProperty('light4_intensity') ? this.configuration.light4_intensity : ""
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
crel(
|
crel(
|
||||||
|
@ -1164,14 +1164,14 @@ class Graph {
|
||||||
crel('input', {
|
crel('input', {
|
||||||
'type': 'number',
|
'type': 'number',
|
||||||
'min': 1,
|
'min': 1,
|
||||||
'max': 5,
|
// 'max': 5,
|
||||||
'step': .1,
|
'step': .1,
|
||||||
'on': {
|
'on': {
|
||||||
'change': function(e){
|
'change': function(e){
|
||||||
panopticon.graph.configuration['light4_fade'] = e.target.value
|
panopticon.graph.configuration['light4_fade'] = e.target.value
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'value': this.configuration.hasOwnProperty('light4_fade') ? this.configuration.light4_fade: 10
|
'value': this.configuration.hasOwnProperty('light4_fade') ? this.configuration.light4_fade: ""
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -1259,16 +1259,36 @@ class Graph {
|
||||||
) : 'Auto-generated')
|
) : 'Auto-generated')
|
||||||
);
|
);
|
||||||
|
|
||||||
let lightOptionNone = {'value': null}
|
let lightOptions = [
|
||||||
let lightOptionOn = {'value': 1}
|
crel("option", {'value': null}, "Do nothing")
|
||||||
let lightOptionOff = {'value': 0}
|
];
|
||||||
|
for(let i = 0; i < 5; i++) {
|
||||||
if(msg.hasOwnProperty('light')) {
|
let l = {'value': i};
|
||||||
if(msg['light'] === 1) lightOptionOn['selected'] = 'selected';
|
if(msg.hasOwnProperty('light') && msg['light'] == i) {
|
||||||
if(msg['light'] === 0) lightOptionOff['selected'] = 'selected';
|
l['selected'] = 'selected';
|
||||||
if(msg['light'] === null) lightOptionNone['selected'] = 'selected';
|
}
|
||||||
|
let intensity = "?";
|
||||||
|
if(this.configuration.hasOwnProperty(`light${i}_intensity`)) {
|
||||||
|
intensity = this.configuration[`light${i}_intensity`];
|
||||||
|
}
|
||||||
|
let duration = "?";
|
||||||
|
if(this.configuration.hasOwnProperty(`light${i}_fade`)) {
|
||||||
|
duration = this.configuration[`light${i}_fade`];
|
||||||
|
}
|
||||||
|
lightOptions.push(crel("option", l, `Fade preset #${i} (${intensity} in ${duration}s)`));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// let lightOptionNone = {'value': null}
|
||||||
|
//
|
||||||
|
// let lightOptionOn = {'value': 1}
|
||||||
|
// let lightOptionOff = {'value': 0}
|
||||||
|
//
|
||||||
|
// if(msg.hasOwnProperty('light')) {
|
||||||
|
// if(msg['light'] === 1) lightOptionOn['selected'] = 'selected';
|
||||||
|
// if(msg['light'] === 0) lightOptionOff['selected'] = 'selected';
|
||||||
|
// if(msg['light'] === null) lightOptionNone['selected'] = 'selected';
|
||||||
|
// }
|
||||||
|
|
||||||
let msgInfoEl = crel( 'div', { 'class': 'msg__info' },
|
let msgInfoEl = crel( 'div', { 'class': 'msg__info' },
|
||||||
crel('div', {
|
crel('div', {
|
||||||
'class':'btn btn--delete btn--delete-msg',
|
'class':'btn btn--delete btn--delete-msg',
|
||||||
|
@ -1416,9 +1436,7 @@ class Graph {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
crel('option', lightOptionNone, "Do nothing"),
|
lightOptions
|
||||||
crel('option', lightOptionOn, "Turn on"),
|
|
||||||
crel('option', lightOptionOff, "Turn off")
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in a new issue