1) MQTT-интерфейс к Asterisk для отслеживания состояний звонков
[openhab-process.git] / mqtt-pulse / DEADJOE
diff --git a/mqtt-pulse/DEADJOE b/mqtt-pulse/DEADJOE
new file mode 100644 (file)
index 0000000..7069859
--- /dev/null
@@ -0,0 +1,147 @@
+
+*** These modified files were found in JOE when it aborted on Fri Sep 23 20:31:28 2016
+*** JOE was aborted because the terminal closed
+
+*** Файл '(БезИмени)'
+mqtt_pulse.py
+
+*** Файл 'mqtt_pulse.py'
+#!/usr/bin/python
+
+from pulsectl import Pulse,PulseLoopStop
+
+import threading
+
+sink_name=None
+muted=False
+volume=None
+
+paLock1=threading.RLock()
+paLock2=threading.RLock()
+stopFlag=False
+
+def Init():
+  global pulse
+  pulse = Pulse("mqtt-pa")
+
+def Reconnect():
+  pulse.close()
+  Init()
+
+def GetDefaultOut():
+  return pulse.server_info().default_sink_name
+
+def GetDefaultSink():
+  sinkname=GetDefaultOut()
+  for sink in pulse.sink_list():
+    if sink.name==sinkname:
+      return sink
+
+def GetDefaultVolume():
+  return pulse.volume_get_all_chans(GetDefaultSink())
+
+def IsDefaultMuted():
+  return GetDefaultSink().mute<>0
+  
+def MuteDefault(mute = True):
+  return pulse.mute(GetDefaultSink(),mute)
+
+def EventListener(callback):
+  pulse.event_mask_set('all')
+  pulse.event_callback_set(callback)
+  pulse.event_listen()
+
+def EventProcess(ev):
+  raise PulseLoopStop
+
+def AcquirePALock():
+  paLock1.acquire()
+  
+  pulse.event_listen_stop()
+  paLock2.acquire()
+
+def ReleasePALock():
+  paLock2.release()
+  paLock1.release()
+
+def StateProcess():
+  global sink_name,muted,volume
+  try:
+    tname=threading.current_thread().name
+#    print tname+">trying to aquire lock"
+    AcquirePALock()
+#    print tname+">lock aquired"
+    current_sink=GetDefaultOut()
+    current_vol=round(GetDefaultVolume(),2)
+    current_muted=IsDefaultMuted()
+    if current_sink<>sink_name:
+      sink_name=current_sink
+      print tname+">sink: "+sink_name
+    if current_vol<>volume:
+      volume=current_vol
+      print tname+">volume: "+str(volume)
+    if current_muted<>muted:
+      muted=current_muted
+      print tname+">muted: "+str(muted)
+  finally:
+    ReleasePALock()
+#    print tname+">lock released"
+
+def PAListener():
+  while not stopFlag:    
+#    print "entering wait loop"
+    EventListener(EventProcess)
+#    print "event or break happened"
+    StateProcess()
+
+def RunBackground(process):
+  stopFlag=False
+  thread = threading.Thread(target=process,name="Background")
+  thread.start()
+
+def StopBackground():
+  global stopFlag
+  stopFlag=True
+  pulse.event_listen_stop()
+
+def CommandGetDefaultOut():
+  try:
+    tname=threading.current_thread().name
+#    print tname+">trying to aquire lock"
+    AcquirePALock()
+#    print tname+">lock aquired"
+    result=GetDefaultOut()
+  finally:
+    ReleasePALock()
+#    print tname+">lock released"
+  return result
+
+def CommandGetDefaultVolume():
+  try:
+    tname=threading.current_thread().name
+#    print tname+">trying to aquire lock"
+    AcquirePALock()
+#    print tname+">lock aquired"
+    result=GetDefaultVolume()
+  finally:
+    ReleasePALock()
+#    print tname+">lock released"
+  return result
+
+def CommandIsDefaultMuted():
+  try:
+    tname=threading.current_thread().name
+#    print tname+">trying to aquire lock"
+    AcquirePALock()
+#    print tname+">lock aquired"
+    result=IsDefaultMuted()
+  finally:
+    ReleasePALock()
+#    print tname+">lock released"
+  return result
+  
+*** Файл '* Startup Log *'
+Processing '/etc/joe/joerc'...
+Processing '/etc/joe/ftyperc'...
+Finished processing /etc/joe/ftyperc
+Finished processing /etc/joe/joerc