Skip to content

Commit 0d39b66

Browse files
committed
update param
1 parent b5e72ec commit 0d39b66

3 files changed

Lines changed: 207 additions & 78 deletions

File tree

uiflow2/html/params.html

Lines changed: 191 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<meta name="viewport" content="width=device-width,initial-scale=1.0">
66
<meta charset="utf-8">
77

8-
<script type="text/javascript" src="js/joy.min.js"></script>
98
<script type="text/javascript">
9+
var stackchan_params=null;
1010
async function set_parameter(name, val){
1111
var value = document.getElementById(val).value;
1212
var data = {'cmd': 'set_param', 'name': name, 'value': value};
@@ -35,21 +35,20 @@
3535
body: JSON.stringify({'cmd':'get_parameters', 'name': name})
3636
} );
3737

38-
const data = await response.json();
39-
restore_config(data);
38+
stackchan_params = await response.json();
39+
restore_config(stackchan_params);
4040
}
4141

4242
function restore_config(data) {
43-
console.log(data);
44-
document.getElementById("motor_type").value = data['motor'];
45-
document.getElementById("motor_pan").value = data['SG90']['pan'];
46-
document.getElementById("motor_tilt").value = data['SG90']['tilt'];
43+
document.getElementById("motor").value = data['motor'];
44+
document.getElementById("SG90_pan").value = data['SG90']['pan'];
45+
document.getElementById("SG90_tilt").value = data['SG90']['tilt'];
4746

48-
document.getElementById("asr_type").value = data['asr'];
47+
document.getElementById("asr").value = data['asr'];
4948
document.getElementById("google_sampleRateHertz").value = data['google']['sampleRateHertz'];
5049
document.getElementById("vosk_host").value = data['vosk']['host'];
5150

52-
document.getElementById("tts_type").value = data['tts'];
51+
document.getElementById("tts").value = data['tts'];
5352
document.getElementById("google_lang").value = data['google']['lang'];
5453
document.getElementById("google_speakingRate").value = data['google']['speakingRate'];
5554
document.getElementById("google_ssmlGender").value = data['google']['ssmlGender'];
@@ -61,105 +60,225 @@
6160
document.getElementById("voicevox_host").value = data['voicevox']['host'];
6261
document.getElementById("voicevox_voice_id").value = data['voicevox']['voice_id'];
6362

64-
document.getElementById("dialog_type").value = data['dialog'];
63+
document.getElementById("dialog").value = data['dialog'];
6564
document.getElementById("gemini_model").value = data['gemini']['model'];
6665
document.getElementById("gemini_lang").value = data['gemini']['lang'];
6766
document.getElementById("openai_model").value = data['openai']['model'];
6867
document.getElementById("prompt").value = data['prompt'];
6968

7069

71-
document.getElementById("web_port").value = data['web_server'];
72-
document.getElementById("camera").value = data['camera_setup'];
70+
document.getElementById("web_server").value = data['web_server'];
71+
document.getElementById("camera_setup").value = data['camera_setup'];
7372
document.getElementById("vflip").value = data['vflip'];
7473
}
74+
75+
async function set_parameters(){
76+
var data = {'cmd': 'set_parameters', 'data': stackchan_params};
77+
const res = await fetch('/command', {
78+
method: "POST",
79+
body: JSON.stringify(data),
80+
});
81+
}
82+
83+
84+
function update_param(ele, key=null){
85+
if(key == null){
86+
key=ele.id.split("_");
87+
}
88+
if(Array.isArray(key)){
89+
if(key.length > 1 ){
90+
var key1 = key.shift();
91+
var key2 = key.join("_");
92+
stackchan_params[key1][key2] = ele.value;
93+
}else{
94+
stackchan_params[key[0]] = ele.value;
95+
}
96+
}else{
97+
stackchan_params[key] = ele.value;
98+
}
99+
ele.style.color="red";
100+
console.log(stackchan_params);
101+
return;
102+
}
75103
</script>
76104
</head>
77105
<body onload="get_params('config')">
78-
<h1>アールティ版<br>スタックチャンの設定</h1>
106+
<h1>アールティ版 スタックチャンの設定</h1>
79107
<!-- <button onclick="get_params('config')">Get</button> -->
108+
<button onclick="set_parameters()">Update Parameters</button>
80109
<h2>モータ</h2>
81-
<ul>
82-
<li>Type: <select id="motor_type">
110+
<table>
111+
<tr><th>モータのタイプ:</th>
112+
<td colspan="2">
113+
<select id="motor" onChange="update_param(this)">
83114
<option value="Dynamixel" /> Dynamixel
84115
<option value="SG90" /> SG90
85-
</select></li>
86-
<ul>SG90 options:
87-
<li>Pan_port: <input id="motor_pan" value="" size="2"/></li>
88-
<li>Tilt_port: <input id="motor_tilt" value="" size="2"> </li>
89-
</ul>
90-
</ul>
116+
</select>
117+
</td>
118+
</tr>
119+
<tr>
120+
<td></td>
121+
<th>SG90 options:</th>
122+
<td>
123+
 横方向: <input id="SG90_pan" value="" size="2" onChange="update_param(this)"><br>
124+
 縦方向: <input id="SG90_tilt" value="" size="2" onChange="update_param(this)">
125+
</td>
126+
</tr>
127+
</table>
91128
<hr>
92129
<h2>音声認識</h2>
93-
<ul>
94-
<li>Service: <select id="asr_type">
130+
<table>
131+
<tr>
132+
<th>音声認識サーバー: </th>
133+
<td colspan="2"><select id="asr" onChange="update_param(this)">
95134
<option value="google" /> Google Speech API
96135
<option value="vosk" /> Vosk server(local)
97-
</select></li>
98-
<ul>Google stt:
99-
<li>sampleRateHertz: <input id="google_sampleRateHertz" value="" /></li>
100-
</ul>
101-
<ul>Vosk:
102-
<li>Host: <input id="vosk_host" value="" /></li>
103-
</ul>
104-
</ul>
136+
</select>
137+
</td>
138+
</tr>
139+
<tr>
140+
<td></td>
141+
<th>Google Speech</th><td></td>
142+
</tr>
143+
<tr>
144+
<td></td>
145+
<td>sampleRateHertz:</td><td> <input id="google_sampleRateHertz" value="" onChange="update_param(this)" /></td>
146+
</tr>
147+
<tr>
148+
<td></td>
149+
<th>Vosk:</th><td></td>
150+
</tr>
151+
<tr>
152+
<td></td>
153+
<td>Host: </td> <td><input id="vosk_host" value="" onChange="update_param(this)" /></td>
154+
</tr>
155+
</table>
105156
<hr>
106157
<h2>音声合成</h2>
107-
<ul>
108-
<li>Service: <select id="tts_type">
158+
<table>
159+
<tr>
160+
<th>音声合成サーバー:</th>
161+
<td colspan="2"><select id="tts" onChange="update_param(this)" >
109162
<option value="google" /> Google Speech API
110163
<option value="voicevox" /> Voicevox_engine server(local)
111-
</select></li>
112-
113-
<ul>Google tts:
114-
<li>Lang: <input id="google_lang" value="" /></li>
115-
<li>speakingRate: <input id="google_speakingRate" value="" /></li>
116-
<li>ssmlGender: <input id="google_ssmlGender" value="" /></li>
117-
<li>voiceName: <input id="google_voiceName" value="" /></li>
118-
<li>pitch: <input id="google_pitch" value="" /></li>
119-
<li>volumeGain: <input id="google_volumeGain" value="" /></li>
120-
<li>sampleRate: <input id="google_sampleRate" value="" /></li>
121-
<li>effectsProfileId: <input id="google_effectsProfileId" value="" /></li>
122-
</ul>
123-
<ul>Voicevox:
124-
<li>Host: <input id="voicevox_host" value="" /></li>
125-
<li>Voice ID: <input id="voicevox_voice_id" value="" /></li>
126-
</ul>
127-
</ul>
164+
</select>
165+
</td>
166+
</tr>
167+
<tr>
168+
<td></td>
169+
<th>Google tts:</th>
170+
<td></td>
171+
</tr>
172+
<tr>
173+
<td></td>
174+
<td>Lang: </td><td><input id="google_lang" value="" onChange="update_param(this)" /></td>
175+
</tr>
176+
<tr>
177+
<td></td>
178+
<td>speakingRate: </td><td><input id="google_speakingRate" value="" onChange="update_param(this)" /></td>
179+
</tr>
180+
<tr>
181+
<td></td>
182+
<td>ssmlGender: </td><td><input id="google_ssmlGender" value="" onChange="update_param(this)" /></td>
183+
</tr>
184+
<tr>
185+
<td></td>
186+
<td>voiceName: </td><td><input id="google_voiceName" value="" onChange="update_param(this)" /></td>
187+
</tr>
188+
<tr>
189+
<td></td>
190+
<td>pitch:</td><td> <input id="google_pitch" value="" onChange="update_param(this)" /></td>
191+
</tr>
192+
<tr>
193+
<td></td>
194+
<td>volumeGain: </td><td><input id="google_volumeGain" value="" onChange="update_param(this)" /></td>
195+
</tr>
196+
<tr>
197+
<td></td>
198+
<td>sampleRate: </td><td><input id="google_sampleRate" value="" onChange="update_param(this)" /></td>
199+
</tr>
200+
<tr>
201+
<td></td>
202+
<td>effectsProfileId:</td><td><input id="google_effectsProfileId" value="" onChange="update_param(this)" /></td>
203+
</tr>
204+
205+
<tr>
206+
<td></td>
207+
<th>Voicevox:</th><td></td>
208+
</tr>
209+
<tr>
210+
<td></td>
211+
<td>Host:</td><td><input id="voicevox_host" value="" onChange="update_param(this)" /></td>
212+
</tr>
213+
<tr>
214+
<td></td>
215+
<td>Voice ID:</td><td><input id="voicevox_voice_id" value="" onChange="update_param(this)" /></td>
216+
</tr>
217+
</table>
128218
<hr>
129219
<h2>音声対話(LLM)</h2>
130-
<ul>
131-
<li>Service: <select id="dialog_type">
220+
<table>
221+
<tr>
222+
<th>音声対話サーバー(LLM)</th>
223+
<td colspan="2"><select id="dialog" onChange="update_param(this)" >
132224
<option value="gemini" /> Google Gemini
133225
<option value="openai" /> OpenAI ChatGPT
134-
</select></li>
135-
<ul>Gemini:
136-
<li>Model: <input id="gemini_model" value="" /></li>
137-
<li>Lang: <input id="gemini_lang" value="" /></li>
138-
</ul>
139-
<ul>ChatGPT:
140-
<li>Model: <input id="openai_model" value="" /></li>
141-
</ul>
142-
<li>Prompt <textarea id="prompt" cols="80"></textarea></li>
143-
</ul>
226+
</select></td>
227+
</tr>
228+
<tr>
229+
<td></td>
230+
<th>Gemini:</th><td></td>
231+
</tr>
232+
<tr>
233+
<td></td>
234+
<td>Model:</td><td><input id="gemini_model" value="" onChange="update_param(this)" /></td>
235+
</tr>
236+
<tr>
237+
<td></td>
238+
<td>Lang: </td><td><input id="gemini_lang" value="" onChange="update_param(this)" /></td>
239+
</tr>
240+
<tr>
241+
<td></td>
242+
<th>ChatGPT: </th><td></td>
243+
</tr>
244+
<tr>
245+
<td></td>
246+
<td>Model:</td><td> <input id="openai_model" value="" onChange="update_param(this)" /></td>
247+
</tr>
248+
</table>
249+
<table>
250+
<tr>
251+
<th>Prompt</th>
252+
<td><textarea id="prompt" cols="80" onChange="update_param(this)"></textarea></td>
253+
</tr>
254+
</table>
144255
<hr>
145256
<h2>Web Server</h2>
146-
<ul>
147-
<li>Port: <input id="web_port" value="" size="8"> </li>
148-
</ul>
257+
<table>
258+
<tr>
259+
<th>Port: </th><td><input id="web_server" value="" size="8" onChange="update_param(this, 'web_server')"> </td>
260+
<tr>
261+
</table>
149262
<hr>
150263
<h2>Camera</h2>
151-
<ul>
152-
<li>Setup: <select id="camera">
264+
<table>
265+
<tr>
266+
<th>開始時の初期化: </th>
267+
<td><select id="camera_setup" onChange="update_param(this, 'camera_setup')">
153268
<option value=true /> Enable
154269
<option value=false /> Disable
155-
</select></li>
156-
<li>V Flip: <select id="vflip">
270+
</select></td>
271+
</tr>
272+
<tr>
273+
<th>上下転置: </th>
274+
<td><select id="vflip" onChange="update_param(this)" >
157275
<option value=true /> Enable
158276
<option value=false /> Disable
159-
</select></li>
160-
</ul>
277+
</select></td>
278+
</tr>
279+
</table>
161280
<hr>
162281

163282
<a href="/">Back to Top</a>
164283
</body>
165-
</html>
284+
</html>

uiflow2/libs/StackChan.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,26 +119,36 @@ def request_command(self, data):
119119
return self.wlan_conf
120120
else:
121121
return self.config
122+
123+
elif cmd_ == 'set_parameters':
124+
params=param.get('data')
125+
print(params)
126+
return True
127+
122128
elif cmd_ == 'set_key':
123129
if param.get('name'):
124130
util.set_config(self.apikeys, param.get("name"), param.get("value"))
125131
return True
126132
elif cmd_ == 'get_key':
127133
res = util.get_config(self.apikeys, param.get('name'))
128134
return res
135+
129136
elif cmd_ == 'save_apikey':
130137
util.save_conf('/flash/apikey.txt', self.apikeys)
131138
return True
139+
132140
elif cmd_ == 'save_config':
133141
util.save_json('/flash/stackchan.json', self.config)
134142
return True
143+
135144
elif cmd_ == 'set_wlan':
136145
if param.get('name'):
137146
util.set_config(self.wlan_conf, param.get("name"), param.get("value"))
138147
return True
139148
elif cmd_ == 'set_wlan':
140149
res = util.get_config(self.wlan_conf, param.get('name'))
141150
return res
151+
142152
elif cmd_ == 'save_wlan':
143153
util.save_json('/flash/wlan.json', self.wlan_conf)
144154
return True

uiflow2/libs/WebServer.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@ def get_file_list(self, data):
6363
param = json.loads(data)
6464
dirname=param['dir_name']
6565
dir_list=os.listdir(param['dir_name'])
66-
lst=[]
66+
flst=[]
67+
dlst=[]
68+
6769
for x in dir_list:
68-
print(x)
6970
if (os.stat(f"{dirname}/{x}")[0] & 0x8000) == 0:
70-
lst.append(x+"/")
71+
dlst.append(x)
7172
else:
72-
lst.append(x)
73-
response = {}
74-
response['data'] = lst
73+
flst.append(x)
74+
response = {'dir_list': dlst, "file_list": flst}
7575
return response
7676
#
7777
#

0 commit comments

Comments
 (0)