Browse Source

Init Commit

Patrick Baumgartner 4 years ago
parent
commit
8e011f6d25
9 changed files with 348 additions and 9 deletions
  1. 1 1
      Jessi/main.py
  2. 108 7
      Stats/DeviceStats.py
  3. 7 0
      Trixy.pyproj
  4. 45 0
      lib/Network.py
  5. 1 1
      main.py
  6. 30 0
      mods/NanoTTSMod/__init__.py
  7. 1 0
      test/__init__.py
  8. 122 0
      test/test_stats_deviceStats.py
  9. 33 0
      test/test_stats_main.py

+ 1 - 1
Jessi/main.py

@@ -72,7 +72,7 @@ class Text:
                 text = self._formatText_DateTime(text,datetime.datetime.now(),"now")
                 text = self._formatText_DateTime(text,datetime.datetime.now() + datetime.timedelta(days=1),"tomorow")
                 text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"yesterday")
-                text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"mordning") #TODO
+                text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"morning") #TODO
                 text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"midday") #TODO
                 text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"evening") #TODO
                 text = self._formatText_DateTime(text,datetime.datetime.now() - datetime.timedelta(days=1),"night") #TODO

+ 108 - 7
Stats/DeviceStats.py

@@ -198,11 +198,11 @@ class DeviceStats(object):
     @angry.setter
     def angry(self, value:float):
         if value<0:
-            self._aroused = 0
+            self._angry = 0
         elif value > self.MAX_VALUE:
-            self._aroused = self.MAX_VALUE
+            self._angry = self.MAX_VALUE
         else:
-            self._aroused = value
+            self._angry = value
         if value > 0:
             self._lastTimeAngry = time.time()
 
@@ -672,8 +672,8 @@ class DeviceStats(object):
         elif n=="temperate": self.temperate = val
         elif n=="shy": self.shy = val
         elif n=="excited": self.excited = val
-        elif n=="toLoud": self.toLoud = val
-        elif n=="toQuiet": self.toQuiet = val
+        elif n=="toloud": self.toLoud = val
+        elif n=="toquiet": self.toQuiet = val
         elif n=="playful": self.playful = val
         elif n=="naiv": self.naiv = val
         elif n=="freezy": self.freezy = val
@@ -684,6 +684,74 @@ class DeviceStats(object):
         else: return False
         return True
 
+    def force(self, name:str, val:float) -> bool:
+        n = name.lower()
+        if n=="angry": self._angry = val
+        elif n=="aroused": self._aroused = val
+        elif n=="hungry": self._hungry = val
+        elif n=="happyness": self._happyness = val
+        elif n=="funny": self._funny = val
+        elif n=="annoyed": self._annoyed = val
+        elif n=="irritated": self._irritated = val
+        elif n=="bored": self._bored = val
+        elif n=="intelligent": self._intelligent = val
+        elif n=="sleepy": self._sleepy = val
+        elif n=="energy": self._energy = val
+        elif n=="exhausted": self._exhausted = val
+        elif n=="depressive": self._depressive = val
+        elif n=="sad": self._sad = val
+        elif n=="useless": self._useless = val
+        elif n=="usefull": self._usefull = val
+        elif n=="compfortable": self._compfortable = val
+        elif n=="temperate": self._temperate = val
+        elif n=="shy": self._shy = val
+        elif n=="excited": self._excited = val
+        elif n=="toloud": self._toLoud = val
+        elif n=="toquiet": self._toQuiet = val
+        elif n=="playful": self._playful = val
+        elif n=="naiv": self._naiv = val
+        elif n=="freezy": self._freezy = val
+        elif n=="hot": self._hot = val
+        elif n=="humanity": self._humanity = val
+        elif n=="lonely": self._lonely = val
+        elif n=="soziality": self._soziality = val
+        else: return False
+        return True
+
+    def lock(self, name:str, val:float) -> bool:
+        n = name.lower()
+        if n=="angry": self._locked_angry = val
+        elif n=="aroused": self._locked_aroused = val
+        elif n=="hungry": self._locked_hungry = val
+        elif n=="happyness": self._locked_happyness = val
+        elif n=="funny": self._locked_funny = val
+        elif n=="annoyed": self._locked_annoyed = val
+        elif n=="irritated": self._locked_irritated = val
+        elif n=="bored": self._locked_bored = val
+        elif n=="intelligent": self._locked_intelligent = val
+        elif n=="sleepy": self._locked_sleepy = val
+        elif n=="energy": self._locked_energy = val
+        elif n=="exhausted": self._locked_exhausted = val
+        elif n=="depressive": self._locked_depressive = val
+        elif n=="sad": self._locked_sad = val
+        elif n=="useless": self._locked_useless = val
+        elif n=="usefull": self._locked_usefull = val
+        elif n=="compfortable": self._locked_compfortable = val
+        elif n=="temperate": self._locked_temperate = val
+        elif n=="shy": self._locked_shy = val
+        elif n=="excited": self._locked_excited = val
+        elif n=="toloud": self._locked_toLoud = val
+        elif n=="toquiet": self._locked_toQuiet = val
+        elif n=="playful": self._locked_playful = val
+        elif n=="naiv": self._locked_naiv = val
+        elif n=="freezy": self._locked_freezy = val
+        elif n=="hot": self._locked_hot = val
+        elif n=="humanity": self._locked_humanity = val
+        elif n=="lonely": self._locked_lonely = val
+        elif n=="soziality": self._locked_soziality = val
+        else: return False
+        return True
+
     def get(self, name:str) -> float:
         n = name.lower()
         if n=="angry": return self.angry
@@ -706,8 +774,8 @@ class DeviceStats(object):
         elif n=="temperate": return self.temperate
         elif n=="shy": return self.shy
         elif n=="excited": return self.excited
-        elif n=="toLoud": return self.toLoud
-        elif n=="toQuiet": return self.toQuiet
+        elif n=="toloud": return self.toLoud
+        elif n=="toquiet": return self.toQuiet
         elif n=="playful": return self.playful
         elif n=="naiv": return self.naiv
         elif n=="freezy": return self.freezy
@@ -717,6 +785,39 @@ class DeviceStats(object):
         elif n=="soziality": return self.soziality
         else: return -1.0
 
+    def raw(self, name:str) -> float:
+        n = name.lower()
+        if n=="angry": return self._angry
+        elif n=="aroused": return self._aroused
+        elif n=="hungry": return self._hungry
+        elif n=="happyness": return self._happyness
+        elif n=="funny": return self._funny
+        elif n=="annoyed": return self._annoyed
+        elif n=="irritated": return self._irritated
+        elif n=="bored": return self._bored
+        elif n=="intelligent": return self._intelligent
+        elif n=="sleepy": return self._sleepy
+        elif n=="energy": return self._energy
+        elif n=="exhausted": return self._exhausted
+        elif n=="depressive": return self._depressive
+        elif n=="sad": return self._sad
+        elif n=="useless": return self._useless
+        elif n=="usefull": return self._usefull
+        elif n=="compfortable": return self._compfortable
+        elif n=="temperate": return self._temperate
+        elif n=="shy": return self._shy
+        elif n=="excited": return self._excited
+        elif n=="toloud": return self._toLoud
+        elif n=="toquiet": return self._toQuiet
+        elif n=="playful": return self._playful
+        elif n=="naiv": return self._naiv
+        elif n=="freezy": return self._freezy
+        elif n=="hot": return self._hot
+        elif n=="humanity": return self._humanity
+        elif n=="lonely": return self._lonely
+        elif n=="soziality": return self._soziality
+        else: return -1.0
+
 
     def Save(self):
         self.textconfig.setValue({

+ 7 - 0
Trixy.pyproj

@@ -11,6 +11,10 @@
     <OutputPath>.</OutputPath>
     <Name>Trixy</Name>
     <RootNamespace>Trixy</RootNamespace>
+    <IsWindowsApplication>False</IsWindowsApplication>
+    <TestFramework>unittest</TestFramework>
+    <UnitTestPattern>test_*.py</UnitTestPattern>
+    <UnitTestRootDirectory>./test</UnitTestRootDirectory>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
     <DebugSymbols>true</DebugSymbols>
@@ -58,6 +62,9 @@
     <Compile Include="Stats\OwnerStats.py" />
     <Compile Include="Stats\TalkingStats.py" />
     <Compile Include="Stats\__init__.py" />
+    <Compile Include="test\test_stats_deviceStats.py" />
+    <Compile Include="test\test_stats_main.py" />
+    <Compile Include="test\__init__.py" />
     <Compile Include="TextConfig\__init__.py" />
     <Compile Include="Tin\konto.py" />
     <Compile Include="Tin\mail.py" />

+ 45 - 0
lib/Network.py

@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import configparser
+import socket
+
+class Network:
+
+
+    def __init__(self):
+        config = configparser.ConfigParser()
+        config.read('config.ini')
+        self.wlan = config["Network"]["wlan"]
+        self.update = config["Network"]["wlan"]
+
+
+    def CheckWLan(self,LanName=""):
+        """
+        Checks for a network
+        :param LanName: The network name to search for
+        :type LanName: str
+        :return: Returns true, when the w-lan was found
+        :rtype: boolean
+        """
+        import sys, subprocess, platform
+        if LanName=="": LanName = self.wlanName
+        cmd = subprocess.Popen('sudo iwlist scan', shell=True, stdout=subprocess.PIPE)
+        for line in cmd.stdout:
+            line = line.strip()
+            if line.find(':')>-1:
+                opt, arg = line.split(':',1)
+                arg = arg.strip('\"')
+                if opt == "ESSID":
+                    if(arg==LanName):
+                        return True
+        del cmd
+        return False
+
+    @staticmethod
+    def getIp():
+        hostname = socket.gethostname()
+        return socket.gethostbyname(hostname)
+
+    @staticmethod
+    def getHostName():
+        return socket.gethostname()

+ 1 - 1
main.py

@@ -22,7 +22,7 @@ if __name__ == "__main__":
     mod.execute("PlaySound", "welcome.mp3", False)
     print("Sound playing...")
 
-    joke = textauswahl.getInstance().executeText("test",["joke","kurzwitz","boomerang"])
+    joke = textauswahl.getInstance().executeText("test",["joke","kurzwitz"])
     print(joke)
     speach.getInstance().Say(joke)
 

+ 30 - 0
mods/NanoTTSMod/__init__.py

@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from mods.BaseMod import BaseMod
+import platform
+
+class NanoTTSMod(BaseMod):
+
+    _isActive:bool=True
+    speaker=None
+
+    def __init__(self):
+        self.sys = platform.system()
+        self.speaker = None
+        if self.sys=="Windows":
+            self._isActive=False
+        else:
+            self._isActive=True
+
+
+    def IsActive(self) -> bool:
+        return self._isActive
+
+    def onSay(self, text):
+        import nanotts
+        if self.speaker==None:
+            self.speaker = nanotts.NanoTTS()
+        if self.speaker != None:
+            self.speaker.speaks(text)
+        else:
+            print("Failed to speak - Speaker is none")

+ 1 - 0
test/__init__.py

@@ -0,0 +1 @@
+

+ 122 - 0
test/test_stats_deviceStats.py

@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import unittest
+
+class test_stats_deviceStats(unittest.TestCase):
+
+    def valueChanged(self,varName:str="") -> bool:
+        from Stats import Stats
+        s:Stats = Stats()
+        # Unlock Angry-Stat
+        s.DeviceStats.lock(varName,-1.0)
+        oldValue:float=s.DeviceStats.get(varName)
+        newValue:float=oldValue+10.0
+        s.DeviceStats.set(varName,newValue)
+        return s.DeviceStats.get(varName)==newValue
+
+    def test_deviceStats_angry_Value_Changed(self):
+        from Stats import Stats
+        s:Stats = Stats()
+        # Unlock Angry-Stat
+        s.DeviceStats._locked_angry=-1.0
+        oldValue:float=s.DeviceStats.angry
+        newValue:float=oldValue+10.0
+        s.DeviceStats.angry=newValue
+        self.assertEqual(s.DeviceStats.angry, newValue)
+
+    def test_deviceStats_aroused_Value_Changed(self):
+        self.assertTrue(self.valueChanged("aroused"))
+
+    def test_deviceStats_hungry_Value_Changed(self):
+        self.assertTrue(self.valueChanged("hungry"))
+
+    def test_deviceStats_happyness_Value_Changed(self):
+        self.assertTrue(self.valueChanged("happyness"))
+
+    def test_deviceStats_funny_Value_Changed(self):
+        self.assertTrue(self.valueChanged("funny"))
+
+    def test_deviceStats_annoyed_Value_Changed(self):
+        self.assertTrue(self.valueChanged("annoyed"))
+
+    def test_deviceStats_irritated_Value_Changed(self):
+        self.assertTrue(self.valueChanged("irritated"))
+
+    def test_deviceStats_bored_Value_Changed(self):
+        self.assertTrue(self.valueChanged("bored"))
+
+    def test_deviceStats_intelligent_Value_Changed(self):
+        self.assertTrue(self.valueChanged("intelligent"))
+
+    def test_deviceStats_sleepy_Value_Changed(self):
+        self.assertTrue(self.valueChanged("sleepy"))
+
+    def test_deviceStats_energy_Value_Changed(self):
+        self.assertTrue(self.valueChanged("energy"))
+
+    def test_deviceStats_exhausted_Value_Changed(self):
+        self.assertTrue(self.valueChanged("exhausted"))
+
+    def test_deviceStats_depressive_Value_Changed(self):
+        self.assertTrue(self.valueChanged("depressive"))
+
+    def test_deviceStats_sad_Value_Changed(self):
+        self.assertTrue(self.valueChanged("sad"))
+
+    def test_deviceStats_useless_Value_Changed(self):
+        self.assertTrue(self.valueChanged("useless"))
+
+    def test_deviceStats_usefull_Value_Changed(self):
+        self.assertTrue(self.valueChanged("usefull"))
+
+    def test_deviceStats_compfortable_Value_Changed(self):
+        self.assertTrue(self.valueChanged("compfortable"))
+
+    def test_deviceStats_temperate_Value_Changed(self):
+        self.assertTrue(self.valueChanged("temperate"))
+
+    def test_deviceStats_shy_Value_Changed(self):
+        self.assertTrue(self.valueChanged("shy"))
+
+    def test_deviceStats_excited_Value_Changed(self):
+        self.assertTrue(self.valueChanged("excited"))
+
+    def test_deviceStats_toLoud_Value_Changed(self):
+        self.assertTrue(self.valueChanged("toLoud"))
+
+    def test_deviceStats_toQuiet_Value_Changed(self):
+        self.assertTrue(self.valueChanged("toQuiet"))
+
+    def test_deviceStats_playful_Value_Changed(self):
+        self.assertTrue(self.valueChanged("playful"))
+
+    def test_deviceStats_naiv_Value_Changed(self):
+        self.assertTrue(self.valueChanged("naiv"))
+
+    def test_deviceStats_freezy_Value_Changed(self):
+        self.assertTrue(self.valueChanged("freezy"))
+
+    def test_deviceStats_hot_Value_Changed(self):
+        self.assertTrue(self.valueChanged("hot"))
+
+    def test_deviceStats_humanity_Value_Changed(self):
+        self.assertTrue(self.valueChanged("humanity"))
+
+    def test_deviceStats_lonely_Value_Changed(self):
+        self.assertTrue(self.valueChanged("lonely"))
+
+    def test_deviceStats_soziality_Value_Changed(self):
+        self.assertTrue(self.valueChanged("soziality"))
+
+
+    def test_deviceStats_Fixed_Value_Changed(self):
+        from Stats import Stats
+        s:Stats = Stats()
+        # Lock Angry-Stat
+        s.DeviceStats._locked_angry = 150.0
+        s.DeviceStats.angry=500
+        self.assertEqual(s.DeviceStats.angry, 150)
+
+
+if __name__ == '__main__':
+    unittest.main()

+ 33 - 0
test/test_stats_main.py

@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import unittest
+
+class test_stats_main(unittest.TestCase):
+
+    def test_stats_getInstance(self):
+        from Stats.main import Stats
+        s:Stats = Stats.getInstance()
+        self.assertIsInstance(s,Stats)
+
+    def test_stats_getDeviceStats(self):
+        from Stats.main import Stats
+        from Stats.DeviceStats import DeviceStats as es
+        s:Stats = Stats.getInstance()
+        self.assertIsInstance(s.DeviceStats,es)
+
+    def test_stats_getHouseStats(self):
+        from Stats.main import Stats
+        from Stats.HouseStats import HouseStats as es
+        s:Stats = Stats.getInstance()
+        self.assertIsInstance(s.HouseStats,es)
+
+    def test_stats_getOwnerStats(self):
+        from Stats.main import Stats
+        from Stats.OwnerStats import OwnerStats as es
+        s:Stats = Stats.getInstance()
+        self.assertIsInstance(s.OwnerStats,es)
+
+
+if __name__ == '__main__':
+    unittest.main()
+